레이블이 ubuntu인 게시물을 표시합니다. 모든 게시물 표시
레이블이 ubuntu인 게시물을 표시합니다. 모든 게시물 표시

2018/10/20

Ubuntu 18.10 upgrade


(2019/01/31 추가) 

아래의 Nvidia 드라이버 문제는 다시 구글링 해 보니 쉽게 해결할 수도 있었다.

즉, /etc/gdm3/custom.conf 파일에서 Wayland를 사용하지 않도록 수정해서 저장하면 된다. 아래 내용처럼 해도 되는데 부팅 속도가 좀 느려지는 문제가 있었다.

아무튼, 이런 소소한 점이 문제이긴 하지만, 지금까지 우분투 18.10을 사용해 본 바로는 시스템 안정성이나 성능이나 UI나 매우 만족스럽다.

아래엔 비추천이었지만 강력 추천으로 바뀌었다.

--------------------------------------------------------------------------------------------------------------

어제(현지 시간 10/18) 우분투 18.10 우징어(Cosmic Cuttlefish)가 공식 출시됐다. 데스크탑에서 18.04와 크게 달라진 것은 없지만 Gnome memory leak에 대한 버그를 잡고 GUI 성능 개선에 공을 많이 들였단다. 아무튼 Clean install 보다 Upgrade가 나을 듯해서 업그레이드 했다. 전체 업그레이드 시간은 우분투 Main 서버에서 패키지 받는데 40분, 설치에 40분 해서 80분이 걸렸는데 국내 미러 사이트를 이용하면 1시간도 채 안걸릴듯 하다.

다만, Nvidia 드라이버 문제가 있어서 일반 사용자들에게 우분투 18.10을 추천하기는 어렵다. 이게 새로운 기능이면서 버그일 수도 있다.

우분투 18.10 데스크탑의 새로운 점들

사실은 테마가 Yaru로 바뀌어서 많이 달라진 것 처럼 보인다. Yaru는 일본어로 할 일(To do)이란 뜻이란다(Suru도 같은 뜻인데 친한 사람끼리 쓴다나...). 새로운 점들에 대한 자세한 사항은 우분투 18.10 Release Note를 참고하는 것이 좋겠다.
  • OpenSSL 1.1.1 적용 - TLS v1.3 지원
  • Linux kernel 4.18 탑재 - AMD Radeon, Raspberry Pi, USB 3.2 등 새로운 Hardware 지원
  • 개발 Toolchain 업그레이드 - gcc 8.2, clang 7.0, python 3.6.7/3.7.1 등
  • Gnome 3.30 - dynamic H/W detection, memory leak fix, GUI 성능 개선 등
  • 우분투 커뮤니티가 만든 새로운 테마 Yaru 적용 - 둥글어진 아이콘
  • 노트북 배터리 사용 시간에 대한 고려
  • 지문 인식 스캐너 지원
  • Snap 패키지 지원 강화 - Snapcraft store website를 이용한 sanp 패키지 설치 지원
  • 설치 및 부팅 시간 단축 - 새로운 압축 알고리즘(LZ4/ztsd) 적용
  • Firefox 63.0, LibreOffice 6.1.2 등 수많은 패키지 upgrade
우분투 설치 iso로 부팅/설치시 주의 사항

아래와 같이 initrd에서 예전에 initrd.lz를 사용했는데 그냥 initrd를 사용하는 것으로 바뀌었다.
menuentry "HDD Ubuntu 64-bit iso" {
   set isofile="/boot-isos/ubuntu-18.10-desktop-amd64.iso"
   loopback loop (hd0,9)$isofile
   linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile noprompt noeject
   initrd (loop)/casper/initrd
}
하드디스크나 USB로 부팅시 부트 메뉴 엔트리를 위와 같이 수정해야 한다. 하드디스크로 부팅시에는 /etc/grub.d/40_custom 파일에서 위의 내용으로 수정해 주고 나서,

$update-grub

하고 재부팅하면 된다.

Nvidia 드라이버 문제

업그레이드 하고 나서 재부팅했더니 fsckd-cancel message...가 뜨면서 먹통이 됐다. 강제로 재부팅했더니 처음엔 문제가 없어 보였는데 혹시나해서 몇번 시험삼아 부팅했더니 똑같이 먹통이 반복된다. fsck가 문제인 줄 알고 복구 모드에서 fsck했더니 아무 문제가 없을 뿐만 아니라 결과도 금방 나온다. 그래서,  Nvidia 드라이버 문제라고 추정하게 됐고 nvidia site에서 410.66 버전을 받아서 390 기본 탑재 버전 지우고 재설치 해봤는데 여전히 먹통이었다.

역시나 30년 가까이 이어져 온 리눅스의 전통이자 매력은 삽질 중독증에 걸리게 만드는 것이다. 이전 글의 방법대로 nouveau 드라이버로 복구하고 나서 여러 가지 시험해 보기로 했다. 문제의 근본 원인은 커널 DRM 모드 셋팅이 제대로 이루어지지 않기 때문으로 추정된다. gdm을 띄우지 못하고 먹통이 되기 때문이다. 그래서 Wayland 사용시 설정했던 아래의 옵션을 사용해 보았다.

options nvidia-drm modeset=1

흠, 잘된다. 여러번 부팅해 봤는데 잘된다. 참고로 위의 옵션에서 modeset=0으로 하면 기본 Nvidia 설정으로 부팅하는 것과 같기 때문에 당연히 먹통이 된다. 단, 위의 설정은 update-initramfs 명령을 사용하기 때문에 우분투 복구모드로 진입하면 그래픽이 깨져서 아무것도 할 수 없는 문제가 생긴다. 그래서, 아예 커널 파라미터로 넣고 부팅하는게 낫겠다 싶었다.

/etc/default/grub 파일에서 아래의 내용과 같이 위의 옵션을 넣어 줄 수 있다.

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nvidia-drm.modeset=1"

grub 설정이 바뀌어야 하므로 저장한 후 아래의 명령을 해주고 재부팅해야 한다.

$ update-grub

이렇게 해서 Nvidia 문제가 해결됐다. 참고로 410.66 버전을 사용하고 있지만 기존의 390 버전에서도 문제가 없으리라 추정한다. 구글링해 보니 18.10 설치 후 Nvidia 사용자 들의 버그 리포트가 많이 보인다. 그리고, Nvidia 사이트에서 이와 관련된 단서를 하나 찾았는데 Prime 기능 지원에 대한 내용이다.

참고로, 18.04 내지는 17.10이후 <Ctrl>+<Alt>+<F3> ~ <F6>가 콘솔 모드로 진입하는 키이고 <Ctrl>+<Alt>+<F1> ~ <F2>키가 다시 GUI로 복귀하는 키 조합이 되었다.

그리고, 굳이 Nvidia 드리이버를 사용할 필요가 없는 사용자들은 nouveau도 충분히 빨라졌기 때문에 드라이버 설치에 시간을 허비할 필요는 없다. 더구나 Wayland를 사용하면 성능 향상이 눈에 띈다.

ibus 설정 참고 사항

시험삼아 VirtualBox에 우분투 18.10을 설치해 봤는데 설치/부팅 시간이 빨라졌더라. 기본 한글 입력기인 ibus 설정도 잘 된다.

Settings > Region & Language > Manage Installed Languages 를 click 하면 한글 언어 팩이 없그레이드 된다. Gnome Topbar의 사용자 계정을 click 해서 Log Out 했다가 재로그인 한 후,

Settings > Region & Language > Input Sources> [+] 를 click 해서 Korean(Hangul)을 추가해 주면 곧바로 한글 입력이 된다.

물론, fcitx도 잘된다.

기타 참고 사항

Gnome Shell이 3.30이 되면서 Gnome shell extensions가 문제가 될 수 있는데 내가 사용하는 두 가지 모두 처음엔 오류가 떴다.

Hide Top Bar는 다행히 update가 있어서 문제가 사라졌는데  Pixel Saver는 update가 없더라. 다행히, 해당 git 사이트에 갔더니 patch는 올라왔는데 Gnome 사이트에 반영이 안됐단다. 이슈 게시판에 해결책이 올라와 있어서 문제를 해결했다.

그리고, 우분투 18.04 이후 VirtualBox의 guest ubuntu 환경에서도 Wayland를 체험해 볼 수 있다(host 환경과는 무관함).

맺음말

우분투 18.10은 성능 향상과 새로운 테마가 특징이다. 하지만, 불안정한 부분이 남아 있기 때문에 일반 사용자들은 18.04 LTS를 사용하는 것이 좋겠다.

고급 사용자들에게는 Cannonical이 의도한 바는 아니지만, Nvidia 환경에서 Wayland를 사용해 볼 수 있는 기회가 생겼다. 하지만, 화면 잠금 모드로 들어가는 순간 먹통이 되는 문제는 여전하다. Wayland 환경에서 앱들은 하나씩 빠르게 적응해 가는데 상용 비디오 드라이버 지원 문제가 걸림돌이다.

2018/04/30

Ubuntu 18.04 LTS 설치


지난 주에 우분투 18.04 LTS가 배포됐다. 향후 5년간 지원될 버전이니 이것 만으로도 18.04로 갈아탈 충분한 이유가 될 수 있다. 다만, 17.10 사용자라면 17.10에서 많은 변화가 있었기에 18.04에서 달라진 걸 크게 느끼지 못할 것이다. 원래는 Upgrade하려고 Sofware Update를 실행했는데 뭐가 문제인지 부분 Upgrade를 시킬 것이란 경고가 떴다. 찜찜해서 그냥 하드디스크의 iso 설치 이미지를 이용한 Clean install을 감행했다. 그런데, iso 이미지로 부팅시 오류가 발생해서 부팅이 안된다. iso 이미지 파일 내의 리눅스 커널 명이 vmlinuz.efi에서 vmlinuz로 다시 바뀌었기 때문이다. efi를 지원하면서 vmlinuz.efi로 바뀌었었는데 이제 보편화됐다고 생각한 건지 다시 vmlinuz로 돌아왔다. 다만, Release Note에서 변경 사항이 누락된 점은 아쉽다.

우분투 설치 iso Grub boot menu entry 수정

아래의 예와 같이 Grub boot menu entry에서 linux (loop)/casper/vmlinuz.efi ... 부분을 수정해 주어야 한다. USB에서 우분투 설치 iso 파일을 사용해 설치할 경우에도 커널 명을 수정해 주어야 한다.
menuentry "HDD Ubuntu 64-bit iso" {
   set isofile="/boot-isos/ubuntu-18.04-desktop-amd64.iso"
   loopback loop (hd0,9)$isofile
   linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile noprompt noeject
   initrd (loop)/casper/initrd.lz
}
하드디스크의 우분투 iso 파일을 이용하는 경우에는 grub.cfg 파일을 직접 수정하는 것이 아니므로,

$ sudo update-grub

명령을 실행한 후 재부팅해야 한다. 자세한 내용은 이전 글을 참고하는 것이 좋다.

우분투 18.04의 새로운 점들

리눅스 커널 4.15가 채택되었다. 보안 이슈 해결이나 새로운 하드웨어 지원을 위해 필요한 부분이다. 우분투 자체적으로는 커널 4.0 이후 지원되는 Kernel Live Patching 기능을 Ubuntu One을 통해 지원한다. 우분투 설치시에 사용할 지 물어 본다.

Wayland 대신 X 서버가 다시 기본 display server가 되었고 Wayland는 Option이 되었다. Wayland를 지원하는 앱들이 부족해서 LTS 버전에 적합하지 않다고 판단한 것이다. 원격 데스크탑이나 화면 및 비디오 캡춰 소프트웨어 등이 Wayland 환경에서 동작하지 않는 문제가 대표적이다. 안정성 측면에서도 아직 Wayland를 사용하기에는 이르다는 생각이다.

설치 시에 minimal install 옵션을 제공하는 것도 달라진 점이다. 설치 iso 이미지가 우분투 17.10은 1.5GB였는데 18.04는 1.9GB가 되었다. 아무튼 Web browser와 핵심 시스템 유틸리티만 설치된다고 한다.

Gnome Shell 3.28을 채택했다. 다만 File 관리자(Nautilus)는 구 버전을 customize 했는데 최신 버전에서 Desktop Icon을 지원하지 않기 때문이다. LTS 버전이라 사용자들에게 급격한 변화를 강요하지 않으려는 관점이 들어간 건데 Gnome을 채택했으면 그대로 가져다 쓰는 것이 더 낫다는 관점도 수용할 필요가 있어 보인다. Gnome 3.28은 Thunderbolt 3 기기들을 지원한다. Gnome Shell의 Ubuntu Dock extension에서 앱 아이콘을 click하면 앱이 실행되고 다시 click 하면 minimize가 안되는데 아래와 같이 설정하면 minimize 기능을 사용할 수 있다.

$ gsettings set org.gnome.shell.extensions.dash-to-dock click-action 'minimize'

그런데 위 명령은 오류가 발생했고, dconf-editor를 사용해서 위의 key 값을 변경해 주면 잘 된다.

Color 이모티콘(Emoji)을 지원한다. 우분투 17.10부터 흑백 이모티콘을 지원하기 시작했다. Characters 앱이 이전의 Character Map 앱을 대체했는데 Color 이모티콘을 보다 원활히 지원하려는 의도일 수 있다.

우분투 Software 앱에서 Snap 앱들에 대한 지원을 강화했다. Calculator, Charaters, Logs, System Monitors 앱들은 Snap 앱으로 설치된다.

$ ls -l /snap

이 밖에도 Calendar 앱에서 날씨 예보를 지원하고, To Do 앱이 추가됐다.

또한, 17.10 이후 systemd 로그를 지원하기 위해 Logs 앱이 System Log를 대체했고, Disk Usage Analyzer, Files(Nautilus), Remmina, Settings, Ubuntu Software 앱 들의 UI가 새로운 디자인으로 바뀌었다.

새로운 점들에 대한 더 자세한 내용은 우분투 18.04 Release Note를 참고하기 바란다.

한글 입력기 및 fonts

기본 입력기인 ibus를 사용하거나 fcitx-hangul을 설치해서 사용하면 된다. 우분투 17.10과 설치 방법은 동일하다. ibus 입력기의 경우 Gnome Top Panel에 한글 입력기를 표시하거나 제거하는 올바른 방법은 Settings > Region& Language > Input Sources > + 또는 - [버튼] 으로 Korean (Hangul)을 추가하거나 삭제하면 된다. 다만 fcitx-hangul을 설치할 경우 여전히 ibus 프로세스가 살아 있는 문제는 남아 있으므로 /usr/bin/ibus-daemon 파일을 rename해 줄 필요가 있다.

한글 폰트는 Noto Sans 폰트가 기본 폰트가 되면서 나눔 글꼴 패키지가 기본으로 설치되지 않더라. 아래와 같이 설치할 수 있다.

$ sudo apt install fonts-nanum fonts-nanum-coding fonts-nanum-extra

그런데 우분투 전반적으로 폰트가 커지고 bold체가 강해진 느낌이라 한글 Web Site들이 좀 불편해졌다. firefox 폰트 설정에서 "Allow pages to choose their own fonts, instead of your selections above" 옵션을 끄면 내가 설정한 폰트를 사용할 수 있다.


2017/10/22

Ubuntu 17.10 설치 및 사용


(2018/1/10 추가)

우분투 Meltdown/Spectre kernel patch 관련

오늘(현지 시간 1월 9일) 우분투의 대대적인 kernel patch가 있었다. 그런데 언제부터인가 우분투가 자동으로 kernel을 update해 버리고 있었다. 재부팅하니 NVIDIA로 로그인이 안된다. <Alt>+<Ctrl>+<F3>로 console 로그인은 되었는데 잠시 후 먹통이 돼 버렸다. 참고로 NVIDIA 상용 드라이버가 정상 동작할 때는 console 로그인을 해도 black screen인데 오늘 같은 경우에는 정상 로그인이 되기 때문에 NVIDIA 드라이버가 로딩되지 않았음을 알 수 있다.

강제 재부팅해서 이전 커널 버전으로 부팅하고 NVIDIA 홈페이지 갔더니 1월 4일자 384.111 버전이 올라왔더라. 내려 받은 후 새 커널(4.13.0-25-generic #29)의 recovery mode로 부팅해서 NVIDIA 새 드라이버 설치하고 재부팅하니 새 커널에서 NVIDIA 로그인이 잘 된다.

구글링 해 보니 역시나 우분투에서 커널과 NVIDIA 드라이버를 동시에 patch 했는데, 내가 우분투에 기본 탑재된 NVIDIA 드라이버를 사용하지 않았기 때문에 문제가 발생한 것인지는 확실하진 않다. 다만 NVIDIA 사용자들의 아우성이 곳곳에 보이더라... 커널 patch 후 PC 성능 저하 문제가 생길지는 두고 봐야할 듯...

참고로, 우분투 자동 update 막는 법도 구글링 해 보니, /etc/apt/apt.conf.d/10periodic 파일에서, 아래의 "1"을 "0"으로 바꾸면 자동 update를 막을 수 있단다.
APT::Periodic::Update-Package-Lists "1";

기타 참고 사항

우분투 17.10에 기본 탑재된 커널이 Lenovo, Acer 등 일부 노트북 기종의 BIOS 셋팅을 저장할 수 없게 만드는 문제가 발생해서 캐노니컬이 우분투 17.10 설치 iso 이미지를 우분투 사이트에서 내렸었는데, 새로운 17.10 설치 iso 이미지가 공식적으로 1월 11일에 올라올 예정이란다. 아마 이번 kernel patch까지 반영될 듯하다.

--------------------------------------------------------------

(2017/11/10 추가)

우분투 17.10에 fcitx 설치

우분투 17.10에서 Gnome-shell이 데스크탑이 되고 나니까 기본 입력기인 ibus와 다른 입력기들이 충돌하는 문제가 생긴다. fcitx를 설치해서 언어 설정에서 입력기를 ibus에서 fcitx로 바꾸더라도 ibus 프로세스들이 살아 있는 문제와 Gnome 상단 패널(또는 Top Bar)에 ibus 설정 icon이 남아 있는 등의 문제가 생긴다.

간단한 해결책은, 1) ibus를 지우고, 2) fcitx-hangul을 설치하고 나서, 3) 언어 설정에서 입력기를 fcitx로 지정하고 4) 재부팅 하면 된다. 마지막으로, 5) gnome-shell이 fcitx를 자동 실행하도록 해두는게 좋다.

$ sudo apt remove ibus
$ sudo apt install fcitx-hangul

1) 에서 ibus 지우기 겁나면 ibus 프로세스가 아예 안뜨도록 하면 되는데 가장 좋은 방법은 아래와 같이 파일명을 바꿔 버려도 된다.

$ sudo mv /usr/bin/ibus-daemon /usr/bin/ibus-daemon.org

그리고, 아래 글에 자세히 다루지 않았었는데 Gnome Tweak Tool을 설치해 두면 여러모로 편리하다. 그리고 Gnome extensions를 사용할 경우에는 chrome-gnome-shell 패키지도 유용하다. 이는 Firefox나 Chrome에서 Gnome extensions를 설치/Update/삭제할 수 있게 해 준다.

$ sudo apt install gnome-tweak-tool chrome-gnome-shell

fcitx는 gnome-shell에서 logout 하고 재로그인 하면 자동으로 기동되지 않는 문제가 있다. Gnome Tweak Tool 에서 [Startup Applications] Tab > [+] 버튼을 누른 뒤 나타나는 "Fcitx"를 선택해서 [Add] 해 주면 된다.

fcitx 설정 방법은 예전과 똑같다. fcitx도 ibus처럼 Wayland 환경에서도 잘 동작한다. 다만, 모든 입력기 들이 진정으로 Wayland를 지원하고 있다고 보기는 어렵다.

우분투 17.10 사용 소감 추가

앞서 얘기한 바 있지만 시스템 안정성 문제 때문에, Wayland를 사용하고 싶으면 Nvidia 등의 상용 비디오 드라이버를 설치하지 않는 것이 좋고, 상용 비디오 드라이버를 사용하고 싶으면 Wayland 대신 Xorg 서버 환경에서 우분투를 사용하는 것이 좋다.

기본 우분투 17.10 환경에서 Ubuntu dock외에 Hide top bar와 Pixel saver 2개의 Gnome extension만 사용해도 이전의 Unity Desktop과 비슷한 느낌을 가질 수는 있게 됐다. 초기의 자잘한 UI 버그들이 수정되어 그럭저럭 안정감있게 쓸만하다.


--------------------------------------------------------------

지난 주에 우분투 17.10이 공식 배포돼서 주말에 설치해서 사용해 보았다. 바뀌는 게 많아서 18.04 LTS 버전이 나오면 Clean Install 할까 했는데 17.04에서 Wayland를 써 보고 나니 17.10에서 얼마나 잘 돌아가나 궁금해서 오랜만에 하드디스크의 iso 파일을 이용해 Clean Install을 감행했다.

우분투 17.10에서 달라진 점들은 우분투의 Release Notes를 참고할 필요가 있다. 몇 가지만 소개하면,
  •  Unity Desktop이 Gnome shell 3.26 Desktop으로 대체 
    • 단, Original Gnome shell을 사용하고 싶다면 gnome-session 패키지 설치 필요
    • 기본 Ubuntu Desktop은 Dash to Dock(Ubuntu Dock) 등 gnome 일부 기능을 cusomize 시킴
  • Display server가 Xorg에서 Wayland로 대체
  • Display manager가 lightdm에서 gdm3로 대체
  • Desktop 32-bit 설치 iso 이미지 파일은 공식적으로 중단
  • Network 유틸리티 들이 새롭게 대체됨
    • ifupdown 대신 netplan 사용
    • net-tools(ifconfig/netstat 등 포함)가 기본 설치되지 않고 ip 명령 권장
  • Linux kernel 4.13 채택: Graphics/CPU 성능 향상, 파일시스템 개선 등
이번 버전은 크게 바뀐 것이 많아서 상대적으로 배포까지의 시간이 부족했을 가능성이 높다. 그래서인지 설치 iso 이미지는 Xorg 서버로만 동작하므로 실제로 설치하지 않고는 Wayland 서버를 사용해 볼 수 없다. 

Gnome Desktop 환경

Unity Desktop을 사용하던 사람들은 여러가지 불편함을 느낄 수 있다. Unity Launcher 대신 Dash to Dock(Gnome extension)을 수정한 Ubuntu Dock이 비슷하게 보이지만 Qt 앱의 경우 Dock에 고정시키기도 불편하고 실행시 별개의 아이콘이 뜨는 문제라든가 Minimize 기능 등 자잘하게 안되는 것들이 있다. 무엇보다 Unity의 Global menu가 사라져서 VirtualBox 등에서 화면 수직폭이 다시 늘어나는 불편함이 있다.

개인적으로는 어차피 Gnome extension을 사용할 거라면 Dash to Dock 보다는 Dash to Panel에 Hide Top Bar를 결합한 원래의 Gnome Desktop이 더 마음에 든다. 다만, 그것이 Windows UI와 거의 비슷하기 때문에 우분투 입장에서 꺼려지는 측면이 있었을 것이다.

Javascript를 사용하는 Gnome extensions를 사용해야 하는 것도 장단점이 있어서 사용자들의 호불호가 극단적으로 나뉜다. OS의 일부 기능을 인터넷 상의 누군가에게 의존해야 하는 문제 때문이다. 보안 문제가 생길 수도 있고, 일부 extension 들은 버전 업에 따른 유지보수가 제대로 이루어 지지 않거나 중단되는 경우도 많다. 머, 장점은 좀 알면 내 맘대로 데스크탑을 바꿀 수 있다는 것이다.

기본 Wayland 서버 환경 (Wayland + nouveau Driver)

우분투 17.10을 설치하고 나면 로그인시 사용자 id를 click하면 기어모양의 아이콘이 패스워드 창 밑에 보이는데 이걸 click하면 두개의 Session이 보인다. "Ubuntu"와 "Ubuntu on Xorg"이다. 이 중에서 "Ubuntu"는 곧 "Ubuntu on Wayland"이다. 오리지널 Gnome Shell을 설치하고 재 부팅하면 "Gnome"과 "Gnome on Xorg" 두 개의 Session이 추가 되는데 여기서도 "Gnome" = "Gnome on Wayland"이다. 로그인시 그냥 id와 패스워드를 입력하고 로그인하면 "Ubuntu" Session으로 로그인된다. 그리고 별도로 Nvidia와 같은 상용 드라이버를 설치하지 않았다면 기본 nouveau 드라이버 환경이 된다. 

오랫동안 써 보진 못했지만 Wayland + nouveau Driver 환경은 이전 버전에 비해 상대적으로 매우 빠르다는 느낌을 준다. 그리고, Wayland + Nvidia Driver 환경에 비해 좀 느릴 수도 있지만 훨씬 안정적으로 동작한다.

  • GUI 앱을 터미널에서 root 권한으로 실행할 수 없음
    • 필요한 기능만 PolicyKit로 root 권한을 주는 앱은 실행 가능
    •  아래와 같이 우회적인 방법으로 gparted, synaptic 등 실행 가능
      • $ sudo xhost +SI:localuser:root
  • 잘 알려진 X11 앱들(xkill, xrandr, sdotool, xsel 등)이 Wayland session이나 앱에서 동작하지 않음
  • Game과 같은 특정 앱이 모니터 해상도를 변경할 수 없음
    • 단, 해상도를 먼저 바꾸면 Game 실행 가능할 수도...
  • 보안 문제를 차단하기 위해 일반 앱에서 화면 capture/casting 불가
    • System에서 허용한 앱만 가능
  • 느린 시스템에서 Mouse pointer가 느리게 반응할 수 있음(버그)
  • Keyboard events가 가끔 빠르게 반복될 수 있음(버그)
  • 모든 key 입력이 원격 데스크탑이나 가상 머신에 전달되지 않을 수 있음(버그) 
그리고, Wayland에 관심이 있다면 위의 Fedora 링크를 자세히 숙지해야 할 것이다. 실제로 일반 사용자들은 자신이 로그인한 데스크탑 환경이 Wayland 환경인지 Xorg  환경인지 헛갈릴 수 있고, Wayland 환경 내에서도 실행시킨 GUI 앱이 Wayland 앱인지 Xorg 앱인지 구분하기 어렵다.

Wayland + Nvidia 상용 드라이버 환경

실제로 우분투 17.10에 탑재된 Nvidia 상용 드라이버를 설치하고 재부팅해서 무심코 로그인하면 기존에 Wayland + nouveau 환경을 사용했던 일반 사용자들은 당연히 Wayland + Nvidia 환경이 됐을 거라 착각하기 쉽다. 하지만 logout 한 후에 기어를 click해 보면 "Ubuntu" 세션이 사라지고 "Ubuntu on Xorg" 세션만 남아 있음을 알게 된다. 기본적으로 Nvidia 상용 드라이버 환경에서 별다른 설정을 하지 않으면 Wayland를 사용할 수 없다. 이 부분은 Nvidia 상용 드라이버의 한계라고 볼 수 있기도 하다. 아직 상용 드라이버들이 Wayland 를 제대로 지원하지는 않고 있다는 증거이다.

Nvidia 상용 드라이버 환경에서 Wayland를 사용하려면 앞서 글에서 다룬 바와 같이 nvidia-drm 모듈에 대한 option을 주고 부팅해야 한다. 앞서 글에서 다룬 Nvidia 드라이버 설치 방법을 숙지하는 것이 좋다. 참고로, 우분투 17.10에 탑재된 Nvidia 상용 드라이버는 Nvidia Site에서 제공하는 최신 상용 드라이버와 버전은 같지만 내 PC에서는 option을 주어도 Wayland를 사용할 수 없었다.

Wayland + Nvidia 환경은 일반 사용자들에게 권하고 싶지 않다. 기본적으로는 안정성 문제가 심각하고 Grub Recovery 모드로 부팅시 화면이 깨져서 아무것도 할 수 없는 문제가 생긴다.

안정성 문제는, 가령 절전 모드 진입시에 Gnome Shell이 먹통이 되어 버리는데 ssh로 원격 접속하는 것 말고는 할 수 있는 게 없다. 기본적으로 콘솔은 black screen이기 때문이다. 더구나 Wayland 환경에서는 gdm 서비스를 종료시켜서 콘솔 화면으로 빠져 나올 수 있는 방법도 없다.

그러니까, Nvidia 상용 드라이버 환경에서 Wayland 를 사용하고 싶다면 반드시 사전에 openssh-server를 설치해 두어야 한다. 물론 ssh로 접속할 수 있는 별개의 PC 한대가 더 있어야겠다. 스마트 폰 앱으로도 가능하긴 하지만 불편하니까...

참고로 ssh로 원격 접속해서 Nvidia 환경에서 Xorg로만 다시 사용하기 위해서는 blacklist 파일에 아래와 같이 option을 변경하고 initramfs를 update 한 후 재부팅하면 된다.

options nvidia-drm modeset=0

또는, 아예 상용 Nvidia 드라이버를 제거하고 nouveau 드라이버 환경으로 복귀하면 최초의 우분투 환경으로 돌아올 수 있다.

Xorg 환경

Xorg 환경은 Wayland에 관심이 없거나 잘 모르는 사용자들이 익숙한 환경이다. Unity Desktop이 Gnome Desktop으로 바뀐 것 빼고는 달라진게 없다. Xorg 환경에서는 nouveau 건 상용 Nvidia 드라이버 건 모두 안정적으로 동작하기 때문에, 역설적으로 기존의 우분투 사용자들이 당분간 선호하게 될 환경이기도 하다.

한글 입력기 문제

Gnome Desktop의 기본 한글 입력기는 ibus이다. 우분투 17.10을 설치하고 나서 한글 언어 팩을 자동 설치하고 나서 재로그인 하면 한글입력이 바로 되면 좋은데 재부팅하고 나서야 제대로 동작하더라. 

참고로, fcitx-hangul은 따로 설치해야 하는데, 설치 후 언어 설정에서 입력기를 fcitx로 지정해도 재로그인 후 fcitx 프로세스가 뜨지 않는 문제가 있다. fcitx 프로세스가 동작하려면 입력기 환경변수 들이 ibus 대신 fcitx로 바뀌어야 하는데 자동으로 바뀌지 않는 버그가 있다. 또한, im-config를 실행해도 환경 변수들이 제대로 설정되지 않는 버그도 있다. 내부적으로 im-config를 사용하고 있다면 동일한 버그일 수도 있다. 이에 더해서, 수동으로 입력기 환경변수를 fcitx로 잡아주면 fcitx 프로세스가 뜨지만 ibus 프로세스들 역시 죽지 않아서 fcitx가 제대로 동작하지 않는다. 

사실, Wayland 테스트 하느라 한글 입력기들은 제대로 테스트하지 못했다. ibus를 사용하면 Qt 앱에서도 한글입력이 잘 된다. 당분간은 ibus에 만족해야 할 듯...

맺음말

우분투 17.10에 Gnome Shell 뿐만 아니라 Wayland 서버가 기본 데스크탑이 되면서 우분투 사용 환경이 다소 복잡해진 것이 사실이다. Gnome은 이제 붙박이가 되었으니 그렇다 쳐도, Wayland냐 Xorg냐의 선택과 nouveau냐 Nvidia 상용 드라이버냐의 선택이 있으므로 최소한 4가지 사용 환경이 파생된다. 여기에 기존의 Unity 사용자들은 Gnome 대신 Unity를 계속 사용할 수도 있으니...

굳이 Nvidia  상용 드라이버를 쓸 필요가 없는 일반 사용자 들은 기본 우분투 환경인 Gnome + Wayland + nouveau도 꽤 쓸만하다고 본다. 하지만, CUDA 등 Nvidia 상용 드라이버를 반드시 사용해야 하는 사용자라면 당분간 Gnome + Xorg + Nvidia 환경을 사용해야 할 것이다.

2017/07/29

Ubuntu 17.04 Wayland 사용


우분투 17.10부터 Gnome이 기본 데스크탑 환경으로 될 참이라 이놈도 같이 설치해서 틈틈이 사용해 보고 있는데 로그인 화면에서 Unity 8과 함께 Gnome on Wayland는 선택은 할 수 있지만 로그인하면 먹통이 되는 귀찮은 메뉴들이었다. 더구나 그 간에 구글링해 보면 Nvidia 드라이버 환경에서는 안된다는 글만 보였기 때문이다. Unity 8은 그렇다 치고, Wayland가 내 PC에서 동작하는지 확인하고 싶었는데, 간만에 구글링해 보니 마침 Nvidia 환경에서 Gnome on Wayland가 동작한다는 글이 보였다. 따라해 보았지만, 여전히 먹통이다. 생각해 보니 Unity Desktop의 기본 Display Manager인 lightdm 대신 gdm을 사용해야 될 것 같았고 바꿨더니 역시나 잘 되더라.

이 글에서는 우분투의 Nvidia 드라이버 사용 환경에서 Wayland를 사용하는 방법과 짧은 사용담을  정리한다. Wayland 환경에서 한글입력 문제는 여전히 누군가가 해결해야 할 숙제이다. 그리고, 아직까지는 Nvidia가 Wayland API를 제대로 지원하지는 않고 있다는 점도 참고할 필요가 있다.


우분투 17.04 Nvidia 환경에서 Wayland 사용 절차

1. Nvidia 드라이버 설치

Nvidia 홈페이지에서 최신 Nvidia 드라이버를 내려 받아 설치한다. 내가 사용하는 버전은 381.22이다. 우분투 17.04는 리눅스 커널 4.10을 사용하는데 381.22 미만 버전은 커널 모듈 컴파일시 오류가 발생해서 설치할 수 없다.

Nvidia 드라이버 설치 절차는 이전 글에 올려 놓았는데, Wayland가 동작하려면 이전 글의 "3. 새로운 NVIDIA 드라이버 설치 후 nouveau 드라이버가 로딩되지 않도록 blacklist 파일 생성" 부분에서 blacklist 파일, 즉, /etc/modprobe.d/blacklist-nouveau.conf 파일에 아래의 내용을 한 줄 추가해 주어야 한다. 단, 아래의 옵션 설정에 대한 제약 사항은 여기 참조.

options nvidia-drm modeset=1

그리고 나서, 이전 글의 절차대로 initramfs를 update해 주고 Nvidia 드라이버를 설치하면 된다.

2. Gnome Desktop 설치

Unity Desktop은 당연히 Wayland를 지원하지 않는다. Gnome이나 KDE를 사용해야 하는데 어차피 우분투는 Gnome이 기본 데스크탑이 될 것이므로 Gnome을 설치했다. 참고로, Gnome은 3.22 이후 버전부터 Wayland를 지원하고 있다.

$ sudo apt install ubuntu-gnome-desktop

3. Display Manager 교체

Gnome 설치시에 lightdm 대신 gdm3를 사용하도록 설정해도 되지만, Unity Desktop 사용자들은 lightdm을 사용하고 있으므로 교체 방법을 알아 둘 필요가 있다. 그리고, Wayland를 사용하다가 한글 문제 때문에 lightdm으로 복귀해야 할 경우도 생길 수 있다.

$ sudo dpkg-reconfigure lightdm

위의 명령으로 lightdm 또는 gdm3를 교체할 수 있다. 아래의 명령도 똑 같다고 하는데 내 PC에서는 안되더라.

$ sudo dpkg-reconfigure gdm3

4. Desktop 재기동

단순히 PC를 재부팅해 주면 된다. 즉, Mac PC와 같이 lightdm 서비스를 중지하면 화면이 black screen이 되어 버리는 경우에는 <Alt>+<Ctrl>+<F1>~<F6>키를 눌러서 콘솔로 빠져 나갈 수는 있지만 입력하는 내용이 보이지 않아 오타가 발생하기 쉽다. black screen이 아닌 경우에는 아래와 같이 lightdm 서비스를 내리고 gdm3 서비스를 올려 주면 된다.

$ systemctl stop service lightdm
$ systemctl start service gdm3

5. Wayland로 로그인

Desktop 재기동 후 사용자 id를 선택하고 기어 모양의 아이콘을 클릭하면 "Gnome on Wayland"를 선택할 수 있다. 그리고 나서 로그인하면 완료다.


Wayland 사용담

한글 입력 문제 때문에 Gnome on Wayland를 잠깐만 써보고 다시 Unity Desktop으로 복귀했다. 전반적으로는 훌륭하다는 느낌이다. 빠르고 의외로 대부분의 앱들이 잘 동작한다. 다만 gnome-shell이 죽는 문제가 종종 발생한다. shell extensions 때문인지는 확실하지 않다.

VLC media player로 HD 동영상을 X-Server 환경에서 돌릴 때와 비교해 보면 체감속도 차이가 확난다. 가령 동영상의 중간 시점으로 스크롤해 보면 Wayland 환경에서는 곧 바로 그 시점에서 재생이 되는데 X 환경에서는 화면이 멈춰 있거나 지지거린다.

현재 Wayland 환경에서 문제가 되는 점들은 X-server가 오래된 만큼 버리기 어려운 구닥다리 소프트웨어들이 원하는 대로 잘 동작하지 않을 가능성이 있다는 점이다. 물론 비교적 최신 소프트웨어라 하더라도 Wayland를 잘 지원한다는 보장은 아직 없다. 구닥다리 소프트웨어들은 그래도 XWayland 서버가 지원되고 있어서 어느 정도는 잘 동작한다. 적어도 Gnome Desktop에 딸려오는 소프트웨어들은 Wayland를 잘 지원하는 것으로 보인다. Qt Creator의 경우에는 일부 기능에서 오류가 발생하더라. Qt도 Wayland를 잘 지원하고 있는 편이라서 큰 문제는 아닐 듯 싶다. VirtualBox의 경우에는 3D 가속 옵션을 꺼야 VM이 실행되더라.

역시나 한글 사용자들이 가장 큰 문제다. fcitx는 Wayland를 지원할 예정이라고 하는데 한글 입력이 잘되는 지는 기다려 봐야 한다. ibus는 Gnome의 기본 입력기라 한글이 잘 되어야 할텐데 안된다. 기본적으로는 Wayland 뿐만이 아니라, gdm3 환경에서 한글 입력기들을 사용할 수 없는 것으로 추정된다. gdm3를 사용해서도 Unity Desktop 으로 로그인 할 수 있는데 fcitx든 ibus든 한글 입력이 안된다.


맺음말

우분투 17.10부터 Gnome이 기본 데스크탑이 되면 Wayland 환경이 많이 안정화될 것이고, 사용자들도 급격히 늘어날 가능성이 높다. 생각보다 XOrg 서버가 빨리 퇴출될 수도 있다. 물론 상용 비디오 드라이버들의 지원도 필요하다.

늘 그래왔듯이 한글 사용자들에게는 한글 입력기 개선이라는 숙제가 남아 있다.

2017/04/17

Ubuntu 17.04 Upgrade 및 WSL 잡담


지난 주에 우분투 17.04가 배포돼서 16.10에서 17.04로 Upgrade 시켰다. 소요 시간은 1시간 10분 정도 걸렸다. 수많은 패키지가 Upgrade 되긴 했지만 Desktop 사용자들이 피부로 느낄 수 있는 변화는 그리 많지는 않다.

Ubuntu 17.04...

우선, 17.04부터는 Swap 파티션 대신 2GB 정도의 Swap 파일을 사용한다. 물론 Clean Install 했을 때만 적용된다. 리눅스 커널 4.10에서는 AMD Ryzen이나 Intel Kaby Lake 시스템을 잘 지원한단다. 기본 DNS resolver로써 systemd-resolved를 사용하고 gconf 대신 gsettings를 사용하도록 한다.  그리고 IPP를 이용한 Driverless Printing을 지원한다. 자세한 내용은 Release Notes를 보는게 좋다. 그리고, Unity 8/Mir는 우분투 설치 iso로 부팅하니까 로그인이 되더라. 막상 Upgrade하면 여전히 먹통이다. 일부 프로세스가 죽어 버리는 문제가 있는 듯...

아무튼 Cannonical이 우분투 18.04 부터는 Unity를 버리고 Gnome Shell이 기본 Desktop이 될 것이라는 소식이 우분투 17.04 정식 출시를 앞두고 전해져서 우분투 17.04에 대한 기대감이 줄어든 것도 사실이다. Unity나 Mir는 오픈소스 프로젝트로 명맥을 유지할 전망이다. 실제로 Unity8을 잠깐 사용해 보니 그리 깊은 감동을 받지 못했다. 이제 우분투가 Gnome Shell로 회귀하면 역설적으로 리눅스 Desktop이 Convergence가 이루어진 것일 수도 있다는... 그동안 Unity를 써온 입장에서 좀 슬프긴 하지만 캐노니컬도 먹고 살아야 하지 않겠나 싶다. 마침 우분투 17.04 Code Name이 Zesty Zapus로써 알파벳 Z까지 다 써 버렸으니 새로운 결정을 하기에 좋은 시기이긴 하다.

17.04로 Upgrade 하면서 NVIDIA 드라이버 문제는 16.04/16.10 설치시와 동일한 문제가 발생했었다. 그런데 우분투 설치 iso에 탑재된 NVIDIA 드라이버가 왜 동작하지 않을까 생각해 보다가 nouveau 드라이버가 로딩되지 않게 blacklist 처리하고 initramfs를 Update해 준 후 재부팅해서 우분투 17.04에 탑재된 NVIDIA 드라이버를 사용하도록 했더니 역시나 잘 동작하더라. 그리고, 다행히 17.04에서는 한글 입력기로써 fcitx가 죽지 않고 잘 되더라.

Windows 10 Creators Update - WSL(Windows Subsystem for Linux)...

마침 Windows 10도 Update가 지난 주 부터 배포가 돼서 Update를 했다. 우분투 17.04 보다 WSL Update가 더 눈에 띈다. 물론 이전 버전에는 우분투 14.04.2였는데 Creators Update에는 우분투 16.04.2가 탑재되었다. 우분투 자체는 버전이 17.04보다 낮지만 WSL Update는 인상적이다. 우분투 14.04.2 사용자는 bash을 전부 지우고 재설치해야 WSL에서 우분투 16.04.2를 사용할 수 있다.

이전 WSL 버전에서는 ifconfig나 ping을 비롯한 네트워크 기능들이 먹통이었는데 네트워크 기능이 그런대로 원활히 동작한다. WSL에서 Linux Desktop이나 GUI App들을 사용하는 것은 이전 버전에서도 열성 분자들이 가능하다는 것을 보여 준 바 있다. X-windows를 Windows 10에 설치하면 모든 것이 가능해 진다. 사실 그래봐야 리눅스 데스크탑보다 느릴게 뻔한데 덕후들을 칭찬해 줄 수 밖에 없다. 이런 덕후들이 있음으로 해서 새로운 아이디어가 생기고 세상이 바뀌는 것도 사실이기 때문이다.

사실 우분투 Bash이 Windows 10에 처음 탑재됐을 때만 해도 WSL 개발자 들은 WSL이 Windows 환경에서 오픈 소스 개발 도구 정도의 기능만 제공해도 된다고 생각했던 듯 싶다. 그런데 덕후들이 더 많은 기능을 요구하기 시작한 것이다. 그 결과로써 이번 WSL Update에서 주목할 만한 것이 Windows와 리눅스간의 Inter-operations 기능을 강화하게 되었고, 리눅스 Daemon 들도 WSL에서 돌아가게 되었다.

WSL의 bash에서 notepad와 같은 Windows App을 실행할 수 있게 됐고, Windows에서도 리눅스 명령을 혼용해서 사용할 수 있게 된 것이다. 물론 아직 한계는 있지만 말이다. 시험삼아 몇가지 테스트 해 봤는데 일단, Windows Powershell과 bash간의 shell script는 변수를 서로 혼용해서 사용할 수 있어서 Windows <-> Linux 명령을 혼용해서 shell script가 동작하도록 할 수 있었다.

또 한가지, WSL에 ssh daemon을 띄워서 remote에서 Windows WSL에 ssh나 sftp로 접속하는 것이 가능한지 시험해 봤는데 잘 되더라. ssh daemon을 띄우는 방법은 여기를 참고하면 되고, remote 접속을 하려면 Windows 10의 방화벽 설정에서 22번 port를 개방하는 정책을 하나 추가해 주면 된다.

사실, 내가 원했던 것은 Windows의 Qt Creator에서 WSL의 git를 사용할 수 있게 하려는 것이었는데, Qt Creator에서 MSYS의 git를 사용하도록 되어 있어서 현재로서는 불가능하다.

맺음말

리눅스 데스크탑 환경은 아직도 많은 데스크탑 오픈소스 프로젝트 들이 돌아가고 있긴 하지만, 우분투가 Unity/Mir 개발을 중단함으로써 systemd와 유사하게 당분간 Convergence가 이루어 질 듯하다. WSL 은 Windows와 Linux 운영체제가 통합될 수도 있다는 가능성을 보여주고 있다.

인공신경망과 같이 미래의 기술은 어디로 튈지 아무도 모른다. 더러는 좋은 놈도 중간에 덜컥 죽어 버리기도 하고 더러는 죽었다가 더 센 놈으로 부활하기도 한다. 우주 만물의 이치가 원래 그런 것인지도...

2016/10/29

Ubuntu 16.10 Upgrade 후 발생한 문제들


우분투 16.04에서 16.10으로 Upgrade하고 나서 생긴 몇가지 문제들에 대해서 정리한다. Clean Install을 했으면 발생하지 않았을 지도 모를 문제들도 있다. 참고로, 우분투 Desktop 설치 iso 파일은 우분투 16.04가 1.4GB였는데 16.10은 1.5GB가 되었다. 그런데, 의외로 Upgrade 시간은 예전엔 2시간 정도 걸렸는데 이번엔 1시간 정도 밖에 안걸렸다.

Nvidia 드라이버 문제

우분투 16.10 업그레이드 후 Nvidia Proprietary Driver(v367.57)를 선택해서 재부팅했더니 16.04와 마찬가지로 black screen 문제가 생겼다. 우분투 16.04 설치시와 동일하게 Nvidia Site에서 367.57버전을 내려 받아서 재설치했더니 문제가 해결됐다. 16.04에서 사용하던 Nvidia 드라이버는 커널 모듈 컴파일시 오류가 발생해서 사용할 수 없었다.

fcitx 문제

fcitx process가 뜨지 않아서 한글을 입력할 수가 없다. 언어 설정에서 fcitx로 설정해서 로그 아웃했다가 재로그인 하면 fcitx가 동작하지만 재부팅하면 fcitx 프로세스가 뜨지 않는다. 참고로, ibus를 사용하면 문제가 없다. 그래도 ibus 보다 fcitx를 선호하는 편이라서 임시 방편의 해결책이 필요했기에 시작 프로그램에 fcitx를 넣어 주는 방법으로 해결했다. 즉, Unity Dash에서 Startup Applications의 Add 명령으로 /usr/bin/fcitx command를 추가해 주었다.

gcc/g++ v6.2 문제

g++에서 기본 언어 설정이 -std=gnu++14가 되었다. gcc 6.x부터 바뀐 모양이다. gcc 5.x까지만해도 -std=c++98이었는데 c++14를 써라는 야그. 하긴 Qt도 5.7부터는 c++11을 지원하지 않는 컴파일러는 사용할 수 없단다.

문제는 gcc/g++의 문제라기 보다 NVIDIA CUDA Toolkit에 딸려오는 nvcc가 gcc/g++ 6.x를 지원하지 않는다는 것이다. Tensorflow 등의 Deep Learning에 관심이 있는 사람들은 우분투 16.10을 설치하고나서 후회할 지도 모른다. 하지만, 아래와 같이 해결하면 된다.

$ sudo apt install gcc-5 g++-5

$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 100 --slave /usr/bin/g++ g++ /usr/bin/g++-5
$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-6 50 --slave /usr/bin/g++ g++ /usr/bin/g++-6

즉, gcc/g++ 5.x와 6.x를 우분투에 동시에 설치해서 선택해서 사용할 수 있는데 위와 같이하면 우선순위가 높은 gcc/g++ 5.x를 자동으로 사용할 수 있다. 참고로 gcc-5 패키지는 gcc v5.4.1인데 CUDA 7.5/8.0의 nvcc에서 사용할 수 있다.

두 가지 버전의 gcc/g++이 설치돼 있으니 아래 명령으로 버전을 수동 선택할 수도 있다.

$ sudo update-alternatives --config gcc

즉, update-alternatives는 Debian 계열 리눅스 명령으로써 동일한 목적의 패키지들을 사용자가 선택해서 사용할 수 있도록 해준다.

Unity 8/Mir

우분투 16.10부터 Unity 8/Mir 데스크탑이 기본으로 탑재되어 있어서 로그인 화면에서 선택해서 로그인 할 수 있다(?). nouveau 환경에서 로그인이 된다는데 iMac의 문제인지 모르지만 로그인하면 먹통이다. 


기타 참고 사항

간만에 블로그에 와 보니 Syntax Highlighter가 또 다시 동작하지 않고 있다. 구글 드라이브에 올려 놓은 javascript나 css파일들이 동작하지 않는다는 것... 구글링해 보니 구글 이 놈들이 본색을 드러내는 것인지 구글 Cloud 사업하려고 다 막아 버린듯... 그런데, 구글링을 하다가 여기서 github 사이트를 이용하면서 우회하는 방법을 발견했다.

2016/06/24

CodeLite에서 cmake plugin 사용


CodeLite은 c++/wxWidgets 기반의 cross-platform 오픈소스 IDE 개발 Tool이다. Code::Blocks가 요즘에도 계속 개발되고 있는지 모르겠는데 중간에 개발이 중단됐었다. Code::Blocks와 유사하면서도 현재까지 명맥을 이어온 몇 안되는 훌륭한 오픈소스 c++ 개발 툴 중의 하나이다. 물론 다른 IDE들 처럼 PHP나 Python 등 다른 언어 개발 Tool로도 사용할 수 있다. Qt Creator가 Qt 기반 프로젝트에 최적화되어 Upgrade 되는데 비해 상대적으로 CodeLite는 wxWidgets 기반 프로젝트에 최적화 되어 발전해 왔다. 하지만 어떤 면에서는 CodeLite가 범용 c++ 프로젝트 개발 Tool로써 더 적합해 보이기도 한다. 머 둘다 훌륭한 개발 Tool이기 때문에 호불호를 따지는게 큰 의미가 있는 건 아니다. 참고로, 우분투 16.04에서 패키지로도 설치할 수 있는데 CodeLite 9.1.0 버전이 설치된다.

clang 기반의 code completion, function/type-info tooltip, debugging, code navigation, code refactoring, reference search, UI theme 같은 기본 기능 외에 막강한 plugin들이 있는데 valgrind, source code formatter, qmake, git, svn, call graph, wxFormbuilder 등의  plugin 외에 cscope과 cmake plugin은 꽤 실용적인 plugin 이다.

여기서는 최근의 Open Source들이 거의 cmake 기반으로 개발되고 있어서 CodeLite에서 cmake plugin을 사용해서 cmake 기반의 Open Source 프로젝트를 import해서 사용하는 방법에 대해서 정리한다. GNU autoconf/automake를 사용하고 있는 오픈소스 프로젝트들은 오래된 프로젝트이거나 한물간 프로젝트일 수도 있는 것이 현실이기 때문이다. cmake plugin은 CodeLite 최신 버전에서 기능이 강화되고 있기도 해서 다른 plugin에 비해 설정이 다소 복잡하다. Qt Creator에서도 cmake 프로젝트를 import할 수 있지만 개인적으로 CodeLite이 소스 분석에 더 도움이 되는 듯하다.

Open Source 프로젝트 import

Workspace Context Menu에서 [Create New Project] 선택 후 나타나는 [New Project Wizard]에서, [Template] > [Custom Makefile] > [New Project]의  [Project name:]을 import 하려는 폴더 명으로 설정하고, [Project path:]는 [...] 버튼을 선택해서 import 하려는 폴더 위치를 찾아서 지정해 주면 된다. 이때 [Create the project under a separate directory] checkbox는 unchecked 상태라야 한다. 이제 [Next >] 버튼을 선택하면 project toolchain을 설정할 수 있는데 [Build System:]에 기본으로 [CMake]로 설정되어 있다. [Finish] 버튼을 선택해서 [New Project Wizard]를 마무리한다.

이제 [Workspace Tree]에 새로운 프로젝트가 추가됐는데 이름만 올라가 있다. 실제 파일들을 import하기 위해서, 새로 생성된 프로젝트 선택 후 마우스 우클릭시 나타나는 Project Context Menu 들 중에 [Import Files From Directory...]를 선택하면 [Import Files] 창이 뜨고 import할 폴더 tree를 보여주고 왼쪽에 checkbox 들이 있는데 tree의 최상위 폴더를 선택하면 하위 폴더들이 모두 선택된다. 창 밑에 확장자들을 보여주는데 이 놈들만 import 한다. [OK] 버튼을 누르면 Workspace에 새로 생성한 프로젝트 밑에 import한 폴더와 파일들을 tree로 확인할 수 있다.

Active Project 설정

Workspace 밑에 여러 개의 프로젝트가 있다면 새로 생성한 프로젝트가 Active Project가 되도록 설정해 주어야 한다. Workspace 탭의 tree에서 새로 import한 프로젝트를 선택해서 Project Context Menu 들 중에 [Make Active(double click)]을 선택하거나, 그냥 프로젝트가 선택된 상태에서 마우스 double click을 해 주면 된다.

CMake Plugin 설정

import한 cmake 기반의 Open Source 프로젝트를 codelite에서 build 하려면 cmake plugin 설정을 해 주어야 한다. 설정은 Project Settings 창에서 해주면 되는데 Workspace tree에서 새로 생성한 프로젝트 선택 후 Project Context Menu 들 중에 [Settings...] 메뉴를 선택하면 된다.

참고로, 아래 설명에서 입력할 실제 값들은 => 후의 [ ] 괄호 안의 것들이다.

1. [Project Settings] 창 > [Customize] > [Custom Build] tab 에서,
1.1 [Working Directory:] => [$(ProjectPath)/build-$(ConfigurationName)] 설정
1.2 [New] 버튼 > [Build Target] 창에서 [Target Name:] => [CMake] 로 하고, [Command:] => [cmake .. -DCMAKE_BUILD_TYPE=Debug -DCMAKE_EXPORT_COMPILE_COMMANDS=1] 설정
설정 완료 후, [Apply] 버튼 선택,

2. [Project Settings] 창 > [General] tab 선택 후,
2.1 [Build] > [Intermediate Folder] => [$(ProjectPath)/build-$(ConfigurationName)] 설정
2.2 [Execution] > [Executable to Run/Debug] => [$(ProjectPath)/build-$(ConfigurationName)/$(ProjectName)] 설정
설정 완료 후, [Apply] 버튼 > [OK] 버튼 선택하면 설정이 끝난다.

사실 위의 설정은 [Debug] 모드에 대한 것이었고 [Release] 모드에서도 위의 1~2의 과정으로 설정해 주어야 한다. [Release] 모드는 Workspace 탭에서 위쪽에 프로젝트명 옆에 [Debug] 선택 상자를 선택하면 나타난다.

다른 설정은 동일 한데 1.2에서 [Command:] => [cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_EXPORT_COMPILE_COMMANDS=1]로 설정해 주면 된다.

CMake Plugin 실행 및 Project Build

이 부분이 좀 직관적이지 않을 수 있는데 CodeLite 최신 버전에서는 프로젝트 선택후 Project Context Menu 들 중에 [Run CMake]가 새로 생겼다. 그런데 이걸 사용하면 안된다. Custom Project로 CMake 프로젝트를 import 한 것이기 때문에 Context Menu 들 중에 [Custom Targets...] > [CMake] 메뉴를 선택해야 한다. 이제 Makefile을 생성하게 되는데 CodeLite의 아랫쪽에 [Output View] > [Build] 탭에 에러가 0개이면 성공한 것이다.

프로젝트를 build 하려면 다시 Project Context Menu 들 중에 [Build]를 선택하면 된다. 성공적으로 build가 됐다면 <Ctrl>+<F5> 단축키나 CodeLite Main Menu의 [Build] > [Run]을 선택해서 실행해 볼 수 있다.

참고 사항

Codelite의 CMake Plugin은 최근에 기능이 강화되고 있는 중이라서 약간의 버그도 있고 설정이 다소 혼란스럽고 직관적이지 않은 면이 있는데, 향후 설정 방법이 달라질 수도 있을 것이다.

2016/05/17

Ubuntu 16.04에 Caffe와 CUDA-7.5 설치


(2016/05/20 추가)

Theano에서 CUDA-7.5 사용

CUDA를 설치한 김에 Theano에서도 GPU를 사용할 수 있게 설정해 보았다. theano-0.8.2가 최신 버전인데 Anaconda에서 theano 패키지를 설치하니까 버전 0.7이었다. theano-0.8.2를 우분투 16.04에 설치하는 방법은 여기를 참고하면 되는데 여기서도 gcc-5.3.1을 구 버전으로 대체하도록 권장하고 있더라. 지금까지 몇가지 시험해 본 바로는 gcc를 새로 설치하지 않아도 CUDA-7.5는 잘 동작하고 있다. 물론, Caffe와 theano-0.7, Python-3.5.1 환경에서만 테스트해 본 것이긴 하다.

아나콘다에서 theano 패키지는 아래와 같이 설치할 수 있다.

$ conda install theano

CUDA-7.5는 아래 글에서 설치했기 때문에 theano가 CUDA를 사용하도록 ~/.theanorc 파일에 아래 내용과 같이 설정해 주기만 하면 된다.

$ gedit ~/.theanorc

[cuda]
root = /usr/local/cuda

[global]
device = gpu
floatX = float32

[nvcc]
flags = -D_FORCE_INLINES

위에서 device=cpu로 바꾸면 theano가 CPU를 사용한다.

참고로, theano 테스트는 아래와 같이 python을 실행해서 theano.test()를 돌려 보라고 하는데 device가 gpu로 되어 있으면 무수한 오류가 발생하더라. cpu로 하면 그나마 나은데 그래도 오류가 좀 생기고 테스트 시간도 엄청 오래 걸려서 중간에 <Ctrl>+<c>로 관뒀다.

$ python
>>> import theano
>>> theano.test()

그런데, theano를 cpu 환경에서 사용하다가 gpu로 처음 설정해서 사용하는 경우에는 cache 폴더를 지우는 것이 좋다. CUDA 컴파일 오류가 생길 수 있다.

$ rm -rf ~/.theano

theano.test()를 돌린 경우에도 엄청난 cache가 쌓여 있을 수 있는데 원래 cache만 지우는 방법은 아래 명령과 같다.

$ theano-cache clear

결론적으로, theano에서 GPU 테스트는 여기의 소스를 돌려 보면 된다. 내 iMac의 CPU는 QuadCore i5-3470 3.20GHz이고, GPU는 NVIDIA GeForce GTX 675MX인데 첫번째 소스를 돌려 봤더니 GPU가 무려 50배 이상 빠른 결과를 보였다(0.5초 : 28초). 물론 어떤 연산을 하느냐에 따라 성능이 달라지겠지만 GPU 연산이 이렇게나 빠를 줄은 몰랐었다.

맺음말

인간들이 python으로 빨리 구현해 볼 수 있어서 python을 애용하는 듯 한데 python은 근본적으로 c/c++ 보다 느리고, process에서는 multi-core를 사용할 수 있지만 thread는 multi-core를 사용할 수 없는 한계가 있다. 더구나, python은 언어 자체가 2.x와 3.x 버전이 호환이 안되고 아직까지도 과도기이기 때문에 처음 python을 접하는 이들에게는 혼란을 줄 수도 있다. 물론, python 언어의 간결함은 성능보다 더 중요한 장점일 수 있다.

아무튼 Tensorflow도 그렇고 theano도 그렇고 python을 사용해서 모델을 빨리 만들고, 정확도가 좀 떨어지더라도 금방 결과를 볼 수 있다는 것이 생산성 측면에서는 큰 도움이 되는 것이 사실이다. 사용자들은 python만 알아도 되겠지만 backend에서는 c/c++을 여전히 사용하고 있다는 점을 간과해선 안될 것이다.

----------------------------

심심풀이로  Berkeley Vision and Learning Center(BVLC)에서 만든 c++ 기반의 오픈소스 Deep Learning Framework인 Caffe를 우분투 16.04에 설치해 보았다. 구글의 Tensorflow도 CPU only 옵션으로 설치해 봤는데 우분투 16.04에 그럭저럭 설치된다. NVIDIA CUDA는 Caffe 설치시 필요하기 때문에 설치했다. Tensorflow에서도 GPU를 연산에 사용하려면 CUDA를 설치해서 소스로 build 해 주어야 하는데 Caffe에 더 관심이 있어서 Tensorflow는 Anaconda 환경에서 binary 버전으로 설치했다. CUDA를 제목에 붙여 놓은 이유는 우분투 16.04에서 cuda-7.5 설치가 안된다는 글들이 보여서 약간의 도움을 주려는 의도이다.

Caffe 설치 절차는 여기를 따라가면 되는데 우분투에서는 이 곳을 참조해도 된다. 우선, 다음과 같이 Caffe framwork에서 필수로 사용하는 놈들과 옵션인 놈들이 있다. 옵션인 놈들 중에서도 OpenCV를 제외하고는 필수라고 보는게 좋을 듯하다. 옵션이라는 놈들을 설치하지 않으면 예제를 돌려 볼 수 없더라. 추가 옵션이 하나 더 있는데 NVIDIA cuDNN이다. 이놈은 NVIDIA site에 등록해야 받을 수 있는데 귀찮아서 제외했다.
  • NVIDIA CUDA 6.5+
  • BLAS: Atlas(기본) 또는 MKL 또는 OpenBLAS
  • Boost 1.55+
  • protobuf, glog, gflags, hdf5
  • (옵션) OpenCV, leveldb, snappy, lmdb
  • (옵션) NVIDIA cuDNN
NVIDIA CUDA/cuDNN을 제외하면 나머지는 모두 우분투 16.04의 패키지로 설치할 수 있다.

1. NVIDIA CUDA 7.5.18 설치

NVIDIA에서 CUDA 7.5를 내려 받아서 설치했다. deb 패키지로 내려 받거나 run 파일을 내려 받을 수 있는데, cuda_7.5.18_linux.run 파일을 내려 받아서 설치했다. deb으로는 안해 봐서 어느 방법이 좋은 지는 모르겠다. 이전 글의 NVIDIA 드라이버 설치 방법을 참고해서 복구 모드나 콘솔 모드로 부팅해서 실행하면 된다.

다만, 설치 문서를 보면 우분투 16.04의 gcc 버전이 5.3.1인데 gcc 4.9 이전 버전까지만 지원한다고 되어 있고 실제로 설치가 안된다. 하지만 무시하고 설치할 수 있는 --override 옵션을 보여 준다. 즉, 아래와 같이 설치하면 된다.

$ sudo sh cuda_7.5.18_linux.run --silent --override

그런데, 주의할 점은 이 놈이 NVIDIA 드라이버를 포함하고 있어서 기존에 설치된 드라이버를 대체해 버린다. iMac에서는 우려했던 대로 CUDA를 설치하고 나서 GUI로 로그인이 안되는 문제가 발생했다. 이전 글에 있는 대로 복구모드에서 NVIDIA-Linux-x86_64-352.63.run으로 드라이버를 다시 설치했다. 드라이버가 CUDA에 같이 들어 있는 이유는 아마 드라이버와 CUDA 라이브러리 버전이 일치해야 하기 때문일 텐데, 352.63이 구 버전이긴 해도 1년도 안된 것이라 호환성에 문제가 없으리라 예상했고 잘 돌아 가더라.

재부팅 후에 ~/.bashrc 파일 끝에 CUDA path를 아래 두 줄과 같이 잡아 준다.

$ gedit ~/.bashrc

export PATH=/usr/local/cuda-7.5/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-7.5/lib64:$LD_LIBRARY_PATH

설치는 끝났고 잘 동작하는지 위의 설치 문서대로 테스트 해 봐야 한다. 터미널을 새로 열어서 Sample 프로그램을 build 하고 실행해 봐야 한다. 단, 그 전에 아래 명령과 같이 samples 이하 폴더들에게 사용자(aaa라 가정) 접근 권한을 부여해야 한다.

$ sudo chown -R aaa:aaa /usr/local/cuda/samples

$ cd /usr/local/cuda/samples/5_Simulations/nbody
$ make

make를 하면 우분투 16.04의 gcc 버전이 gcc 4.9 초과 버전이라 build가 안된다. 아래와 같이 /usr/local/cuda/include/host_config.h 파일에서 gcc 버전 check하는 부분을 코멘트 처리해 버린다.

$ sudo vi /usr/local/cuda/include/host_config.h
......
/* AAA
#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 9)

#error -- unsupported GNU version! gcc versions later than 4.9 are not supported!

#endif
*/
/* __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 9) */
......

이제 다시 make 하면 잘 된다.

$ make
$ ./nbody

nbody를 실행해서 불꽃놀이 창이 뜨면 CUDA가 제대로 동작하는 것이다.

2. Caffe에 필요한 우분투 패키지 설치

NVIDIA CUDA/cuDNN을 제외한 나머지는 아래와 같이 설치하면 된다.

$ sudo apt install libatlas-base-dev

$ sudo apt install --no-install-recommends libboost-all-dev

$ sudo apt install libprotobuf-dev protobuf-compiler libgoogle-glog-dev libgflags-dev libhdf5-serial-dev

$ sudo apt install libopencv-dev libleveldb-dev libsnappy-dev liblmdb-dev

3. Caffe build 및 설치

Caffe 소스는 github에서 받을 수 있다. git가 설치되어 있지 않다면 git를 먼저 설치해야 한다.

$ sudo apt install git
$ git clone https://github.com/BVLC/caffe

Caffe를 build하기에 앞서 Makefile.config 파일을 생성해서 수정해야 한다.
$ cd ./caffe
$ cp Makefile.config.example Makefile.config
$ gedit Makefile.config

OpenCV는 선택 사항인데 예제를 돌려 보려면 leveldb와 lmdb가 필요하다.

USE_OPENCV := 0
USE_LEVELDB := 1
USE_LMDB := 1

이외에도 Python API를 사용하려면 Path를 제대로 잡아 주어야 한다. 이제 Caffe를 make로 build 하는데 CPU core 갯수가 2개 이상이라면 -j<core 수> 옵션을 주는 것이 좋다. 

$ make all -j4
역시 여기서도 오류가 발생했는데 아래와 같이 NVIDIA 컴파일러에서 memcpy 함수를 못찾는 오류다. 소스를 보면 inline 함수를 사용해야 하는 상황인데 이걸 못 찾고 있는 거였다.

NVCC src/caffe/util/math_functions.cu
/usr/include/string.h: In function ‘void* __mempcpy_inline(void*, const void*, size_t)’:
/usr/include/string.h:652:42: error: ‘memcpy’ was not declared in this scope
   return (char *) memcpy (__dest, __src, __n) + __n;
                                          ^
Makefile:585: recipe for target '.build_release/cuda/src/caffe/util/math_functions.o' failed
make: *** [.build_release/cuda/src/caffe/util/math_functions.o] Error 1

Makefile을 수정해서 아래와 같이 NVCC가 inline 함수를 사용하도록 해준다.
$ gedit Makefile

NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)

참고로 cmake로 build할 경우에는 CMakeLists.txt 파일의 맨앞에 아래 한 줄을 넣어 주면 된다.
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_FORCE_INLINES")

다시 make 하고 test를 진행한다.

$ make all -j4
$ make test -j4
$ make runtest -j4

runtest에서 다시 오류가 발생했는데 아래와 같이 libhdf5 라이브러리를 못찾겠다는 오류다.

.build_release/tools/caffe: error while loading shared libraries: libhdf5_hl.so.10: cannot open shared object file: No such file or directory
Makefile:523: recipe for target 'runtest' failed
make: *** [runtest] Error 127

실제로 libhdf5_hl.so.10과 libhdf5.so.10 라이브러리는 libhdf5-serial-dev 패키지를 설치할 때 설치되지 않았더라. 소스로 부터 다시 build 하는 게 정석일 수도 있는데 직감으로 아래와 같이 해결했다.

$ cd /usr/lib/x86_64-linux-gnu
$ sudo ln -s libhdf5_serial_hl.so.10 libhdf5_hl.so.10
$ sudo ln -s libhdf5_serial.so.10 libhdf5.so.10

다시 runtest를 돌리니 잘 되더라.

$ make runtest -j4

4. Caffe Test

Caffe 설치 절차에 있는 내용에 따라 여기를 참고하여 MNIST 예제를 돌려 볼 필요가 있다

$ cd $CAFFE_ROOT
$ ./data/mnist/get_mnist.sh
$ ./examples/mnist/create_mnist.sh
$ ./examples/mnist/train_lenet.sh

참고로, 내 iMac에서 기본 GPU 사용 옵션으로 5분 10초 걸렸다(CPU 사용시 13분 47초 - 2.7배 GPU가 빠름). 학습횟수는 기본 설정값인 10,000회였고, 정확도는 99.1%였다.

나머지 설명은 Caffe 홈페이지에 잘 되어 있으니 이만 마쳐야 겠다.

2016/04/23

Ubuntu 16.04 LTS 설치 소감


(2016/07/15 참고사항 추가)

어제 software-updater와 upgrade 명령으로 daily update를 했더니 gcc가 v5.3.2에서 v5.4.0으로, 커널은 v4.4.0-28에서 v4.4.0-31로 upgrade 됐다. 문제는 커널 업그레이드 과정에서 NVIDIA 드라이버 v352.63을 사용중이었는데 커널 모듈 컴파일 에러가 발생했다.

새로운 커널을 계속 사용하려면 NVIDIA 드라이버를 교체하는 수 밖에 없는데 그 과정에서 아래 NVIDIA 관련 삽질을 또다시 반복하는 사태가 벌어졌다. 아무튼 아래의 NVIDIA 설치 방법을 써먹을 기회(?)가 생겼고, 최신 NVIDIA 드라이버 v367.27을 설치해서 문제가 해결됐다. NVIDIA 드라이버 설치 후 로그인이 되지 않는 문제까지 생겨서 dconf db를 지우고 데스크탑 설정을 다시 해주어야만 했다.

그런데 이것이 리눅스 커널 Secure Boot와 관련된 문제인지 아닌지는 확실하지 않다. iMac에서 발생한 상황인지라 Mac은 기본적으로 Secure Boot를 사용하지 않기 때문이다. 일반 PC인 경우에는 BIOS/UEFI firmware Setup에서 Secure Boot를 끄면 문제가 안생기는 것인지 모르겠다.

참고로, Secure Boot를  disable 시키지 않고 부팅하려면 인증된 커널을 사용하면 되는데 여기를 참고하거나 아래 URL 참고... 그런데 너무 복잡하고 커널 업그레이드 될 때마다 인증을 해 주어야 하는 건 아무래도 무리일듯...

https://wiki.ubuntu.com/SecurityTeam/SecureBoot

그리고, 참고 삼아 VirtualBox도 업그레이드 됐는데 홈페이지 갔더니 v5.1도 새로 나왔더라. 빠르고 좋대서 5.1로 설치했다. 아직 제대로 안써봐서 머가 좋은지는...

추가하는 김에, Qt 5.6부터는 수정된 ibus immodule이 탑재되어 있어서 ibus를 기본 입력기로 사용해도 Qt Creator나 Qt App에서 한글입력이 잘된다.

-----------------------------------------------------------------------------

어제 따끈따끈한 우분투 16.04 LTS가 떳길래 반가운 마음에 우분투 설치 iso 이미지를 내려 받아
서 iMac에 설치하였다. LTS 버전이라 Clean Install을 감행했다. HDD의 iso 이미지로 설치하니까 10분도 안걸려 설치가 끝났다. 머 우분투 설치 자체야 쉽지만 예전에 쓰던 상태로 다시 만들기 위해 소프트웨어들을 다시 설치하고 모든 설정을 다시 해 주는게 보통 일은 아니다. 그간에 사용하던게 왜 이리 많은지 환경을 맞추는데만 2시간 넘게 소요된 것 같다.

그런데 문제는 우분투에 기본 탑재된 NVIDIA Proprietary driver(v361.42)를 설치하고 재부팅한 후부터 옛날에 경험했던 삽질들을 다시 하느라 엄청난 시간을 허비해야 했다. 공포의 Black(또는 Blank) Screen 문제가 발생한 것이다. 이 놈이 부팅할 때마다 서너 번에 한 번은 제대로 동작하는데 대부분의 경우에 Black Screen 문제가 생긴다. 우분투 15.04나 15.10에서는 기본 탑재된 NVIDIA 드라이버들이 아무 문제 없었기 때문에 당연히 아무 문제가 없으리라 예상했는데 리눅스에 항상 아쉬운 부분으로 남는다. 물론 nouveau 드라이버는 깔금하게 동작한다.

아무튼 지금은 모든 문제가 해결됐다. 우분투가 전반적으로 빨라진 느낌도 든다. 나중에 우분투 16.04를 설치하는 사람들에게 참고가 되길 바란다. Unity 8과 Mir는 사용할 수는 있지만 아직은 완성도가 떨어지는 모양이다. 기본적으로 NVIDIA 환경에서 동작하지 않는다. 우분투 15.10에서 설치해 봤는데 nouveau 환경에서도 로그인 조차 안돼서 포기했다.

우분투 16.04 LTS의 새로운 것들

이 곳을 참고하거나 Release Note를 참고하면 우분투 16.04에서 달라진 것들을 쉽게 확인할 수 있다.

Linux kernel 4.4, Python 3.5, Golang 1.6, PHP 7, OpenSSH 7.2p2, Apt 1.2, LibreOffice 5.1, Firefox45 등을 비롯한 수많은 S/W가 upgrade 되었다. 참고로, 패키지 관리자인 Apt는 apt-get대신 apt 명령으로 사용할 수 있고, 새로운 기능들을 추가로 사용할 수 있다. 이 곳을 참고하면 주요 배포판의 패키지 명령들을 비교해서 기능을 쉽게 익힐 수 있다.

Unity 7.4 데스크탑 기능도 많이 안정화 됐고 기능도 강화됐는데, 아래의 명령으로 화면 왼쪽의 Launcher를 아랫쪽으로 옮길 수도 있다.

$ gsettings set com.canonical.Unity.Launcher launcher-position Bottom

그 동안에 Privacy 문제로 논란이 됐던 Dash에서의 On-line 검색은 기본 설정에서는 동작하지 않도록 바뀌었다. Overlay Scrollbar는 15.10부터 바뀐 것이다. [System Settings] > [Appearance]와 Unity Tweak Tool을 설치해서 함께 사용하면 대부분의 Unity 데스크탑 환경을 필요한 대로 설정할 수 있게 되었다. HUD의 단축키가 <Alt>로 되어 있어서 국내 사용자들이 한영키 설정시 혼란을 많이 겪었었는데 <Alt>+<Space> 키로 바뀐 것도 고무적이다. 이 곳을 참고하면 유니티 데스크탑 환경 설정에 도움이 된다.

무겁고 느려 터져서 논란이 됐던 Ubuntu Software Center도 Gnome Shell의 Software로 대체되었다. 제목은 Ubuntu Software가 됐고 아이콘이 그대로라 바뀐 줄 모를 수도 있다. 이와 함께 Gnome Shell의 Calendar도 일정관리를 위해 사용할 수 있고, On-line 계정과 연동하여 동기화할 수도 있다.

이외에도, Snap 패키징, LXD(LXC hypervisor), ZFS 파일시스템을 우분투에서 사용할 수 있다. 리눅스에서는 License와 특허 등의 문제로 ZFS 파일시스템 대신 Btrfs 개발에 힘을 실어 왔는데 우분투가 ZFS를 밀기로 한 것인지는 모르겠다. ZFS는 역사가 깊고 대규모 서버 환경에서 검증됐기 때문일 수도 있다. 참고로, Btrfs와 ZFS는 기능적으로는 유사하지만 설계부터 다르고, Btrfs가 리눅스 커널에 포함되어 있는데 반해 ZFS는 라이센스 문제 때문에 kernel module로만 사용할 수 있다.

AMD Radeon 그래픽 카드 사용자들은 당분간 우분투 16.04를 사용하지 말라는 경고도 있다. fglrx 대신 오픈소스 radeon과 amdgpu 드라이버가 개발 중인데 아직 성능이 그닥이란다.

NVIDIA 드라이버 재설치 방법

전에 올렸던 우분투 복구모드에서의 NVIDIA 드라이버 설치 방법으로는 nouveau 모듈이 로딩되는 것을 막지 못해서 NVIDIA 드라이버 설치 후에 로그인이 되지 않는 문제가 생겼다. 그래서 구글링해서 찾은 방법대로 성공했기에 다시 정리한다.

NVIDIA 홈페이지에 가보니 우분투 16.04에 기본 탑재된 v361.42가 최신 stable 버전이더라. 같은 놈이라서 문제가 생길 소지가 있어서(나중에 해봤더니 이 버전은 설치시 오류가 생기더라) 15.10에서 잘 동작했던 NVIDIA-Linux-x86_64-352.63.run을 내려 받아서 설치했다.

우분투 16.04에 기본 탑재된 NVIDIA 드라이버에 문제가 생겨 GUI를 쓸 수 없기 때문에 nouveau 드라이버로 복구하는 일 부터 다시 해야 했다. 참고로, iMac에서는 UEFI 모드에서는 NVIDIA 드라이버가 정상 동작하더라도 <Alt>+<Ctrl>+<F1> ~ <F6> 키로 console을 띄우면 Black Screen이라 복구모드 외에는 작업할 수 있는 방법이 없다. NVIDIA가 아직 지원하지 않는단다. 그런데 복구 모드에서는 Copy & Paste가 안되기 때문에 GUI 환경에서 작업하는게 좋다.

0. 우분투 복구 모드에서 파일 시스템 Check

나의 경우에는 NVIDIA가 동작하는지 확인하느라 재부팅을 몇 번이나 했는데 이 과정에서 Power 버튼으로 Hard 부팅을 해야 했기에 파일 시스템이 좀 깨져 있었다. 혹시 모르니 복구 모드로 부팅해서 fsck를 돌려 볼 필요가 있다.

1. 우분투 복구 모드에서 문제가 있는 NVIDIA 드라이버 제거

복구 모드에서 파일 시스템 check를 하면 자동으로 디스크 파티션을 rw 모드로 mount 해주는데, fsck를 돌리지 않았다면 수동으로 mount해 주어야 한다.

$ mount -o remount,rw /
$ mount -a

우분투 복구 모드 활용에서 다룬대로 복구 모드로 부팅한 후, 아래의 명령으로 NVIDIA 드라이버를 모두 제거한다.

$ apt-get remove --purge nvidia*

만약, 아래 3번에서 이미 blacklist 파일을 생성했었다면 nouveau 드라이버로 부팅하기 위해서, 파일을 삭제하거나 편집기로 아래와 같이 '#' 으로 comment 처리해야 한다.

$ nano /etc/modprobe.d/blacklist-nouveau.conf

#blacklist nouveau
#options nouveau modeset=0

$ reboot

2. 우분투로 정상 부팅 후 nouveau 드라이버 복구

우분투로 부팅하면 nouveau가 아직 복구된게 아니므로 GUI가 뜨긴 하지만 로그인이 안된다. 하지만 이 상태에서는 <Alt>+<Ctrl>+<F2> 키로 정상적인 console 로그인이 가능하다. 아래의 명령으로 필요한 패키지를 재설치 한다.

$ sudo service lightdm stop
$ sudo apt-get install --reinstall xserver-xorg-core libgl1-mesa-glx
$ sudo service lightdm start

참고로, 위의 명령이 우분투 16.04에서도 동작하긴 했지만 우분투 15.04이후 systemd를 사용하고 있기 때문에 아래와 같이 systemctl 명령이 올바른 것일 수 있다.

$ sudo systemctl lightdm.service stop

이제 재부팅하면 nouveau 드라이버로 로그인 할 수 있다. 그런데 만약 재부팅 후에도 로그인이 되지 않을 경우가 발생할 수 있는데(삽질하다 보니 발생하더라...) 아래와 같이 dconf database를 삭제하면 로그인 할 수 있다. 다만, 주의할 점은 dconf database를 삭제하면 Unity Desktop 설정을 모두 다시 해 주어야 한다.

$ mv ~/.config/dconf/user ~/.config/dconf/org.user
$ sudo reboot

3. 새로운 NVIDIA 드라이버 설치 후 nouveau 드라이버가 로딩되지 않도록 blacklist 파일 생성

$ sudo nano /etc/modprobe.d/blacklist-nouveau.conf

nouveau 모듈이 로딩되지 않도록 편집기로 아래의 두 줄을 넣어 저장한다.
blacklist nouveau
options nouveau modeset=0
blacklist lbm-nouveau
alias nouveau off
alias lbm-nouveau off

$ sudo nano /etc/modprobe.d/nouveau-kms.conf

커널의 nouveau가 동작하지 않도록 편집기로 아래의 내용을 넣어 저장한다.
options nouveau modeset=0

아래의 명령으로 수정한 blacklist가 제대로 동작하도록 initramfs를 update해 준다.
$ sudo update-initramfs -u

$ sudo reboot

4. 다시 우분투 복구 모드로 부팅 후, 새로운 NVIDIA 드라이버 설치

$ mount -o remount,rw /
$ mount -a

$ sh NVIDIA-Linux-x86_64-352.63.run
$ reboot

5. 재부팅 후 NVIDIA 드라이버 환경에서 정상 로그인이 되는지 확인

부팅 후 NVIDIA 버전은 아래 명령으로 확인할 수 있다.

$ nvidia-smi

참고 사항

위의 4번처럼 우분투 복구모드로 부팅하지 않고 부팅시 Grub 메뉴엔트리를 수정하여 콘솔 모드로 부팅해서 작업해도 된다. 기본 Ubuntu 부팅 메뉴가 선택된 상태에서 <e> 키를 누르면 Grub edit 모드로 진입하는데 커널 부팅 옵션(linux로 시작하는 부분)의 "quiet splash $vt_handoff" 부분을 지우고 "3 nomodeset"으로 대체한 후 <F10>키를 누르면 수정된 옵션으로 부팅한다. 참고로 3은 Linux runlevel 이다. 이렇게 부팅하면 rw mode로 이미 mount된 상태이므로 mount 명령은 필요 없다.

구글 chrome 설치 오류

구글에서 chrome을 내려 받아 설치하면 오류가 생겨서 처음부터 약간 기분이 나빠진다. 그런데 알고 보니 우분투에서 긴급 패치를 한 것 같다. 구글 chrome을 설치하기 전에 우분투 16.04 daily update부터 해주면 누락된 라이브러리가 먼저 설치되기 때문에 오류가 발생하지 않는다. [System Settings] > [Software & Updates] > [Ubuntu Software] > [Download from] > "Main Server"로 바꿔주고 나서,

$ sudo apt-get update
$ sudo apt-get upgrade

하면 우분투 daily update를 설치할 수 있다. 사실 우분투 설치하고 나서 이걸 항상 가장 먼저 해주는게 좋다.

VirtualBox 설치시 참고 사항

VirtualBox 5.0.18 설치는 오라클 VirtualBox 설치 방법을 따라가면 되는데, /etc/apt/sources.list 파일의 저장소 설정은 아래와 같이 해도 잘 된다.

deb http://download.virtualbox.org/virtualbox/debian xenial contrib

버추얼박스 설치 후에 VirtualBox Extension Pack을 내려 받은 후 설치하기 위해서는 아래의 명령을 실행해 주면 된다.

$ sudo VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-5.0.18-106667.vbox-extpack

언제부터 바뀐 것인지 모르겠는데 Guest Additions iso 이미지가 설치되어 있지 않더라. 가상머신 실행 후, [Devices] > [Insert Guest Additions CD Image]를 선택하면 On-line으로 내려 받아 ~/.VirtualBox 폴더에 저장된다.

기타 참고 사항

iMac에서 이전의 우분투 버전에서는 Broadcom Proprietary WIFI 드라이버를 별도로 수작업으로 설치했어야 했는데 16.04에서는 잘 잡아 주더라.

또한, 한글 입력은 fcitx를 사용하면 잘 된다. Qt5.5에서 Qt Creator나 Qt App에서 한글 입력이 안되던 문제가 생겼었는데 한글 입력도 잘 된다. 다솜 입력기도 잘 된다는데 우분투 패키지에 포함되지 않아서 아쉽다.

다만, 아직 본격적으로 우분투 16.04를 써 본건 아니라서 어떤 문제가 있을지는 두고 볼 일이다.

2016/04/07

구글 chrome에 대한 잡상


지난 번에 블로그에 글을 올리면서 스크린 샷을 블로그에 올리려고 했더니 구글 blogger 가라사대, "Drag & Drop 한번 써 봐라!" 우분투의 Nautilus 파일 관리자에서 스크린 샷 이미지 파일을 구글 chrome에 Drag & Drop 했더니 블로그에 쏙 들어왔다. 이게 지난 3월에 새로 추가된 기능이었다. Firefox에선 당연히 안된다.

물론, 블로그 내에서 이미지를 예전에는 중앙에 밖에 배치할 수 없었는데 좌우 어디든 배치할 수 있는 기능도 추가됐다. 국내 블로그 들은 이미 이런 기능을 제공하고 있었으니 블로그 기능 자체는 구글이 개선해야 할 게 아직도 참 많다. 국내 블로그의 가장 큰 장점인 Category 관리 기능이 구글 블로그에 없다는게 신기할 정도니까...

하지만 chrome만 놓고 보면 구글이 chrome OS를 만들었을 정도니까 내가 모르는 기능들이 더 있을 거란 생각이 들어서 숨겨진 기능들을 구글링해 보았다. 역시나 숨겨진 기능들을 잘 정리해 놓은 글들이 보인다. 시간 있으면 26가지 숨겨진 Chrome의 기능들에 대한 PC 매거진 기사를 읽어 보기를... 이외에도 우분투 Unity 사용자들은 chrome에서 파일 다운로드 시에 진행율을 Launcher에서 확인할 수 있다.

26가지 중에 나에게 실질적인 도움이 되는 한가지 기능을 발견했는데, 동영상을 파일 관리자에서 chrome에 Drag & Drop해서 볼 수 있다는 것이다. 물론 파일 관리자의 Open With... 기능을 종종 사용하긴 했었지만 Drag & Drop까지는 미처 생각못했다. 그러고 보면 우분투에 VLC니 3rd Party CODEC이니 하는 것들을 굳이 설치할 필요도 없겠다 싶다. 걍 chrome으로 보면 되니까... Windows에서도 별개의 동영상 Player를 설치해서 사용했었는데 앞으로는 동영상은 chrome으로 보게 될 듯...

근데, 한편으로는 chrome에 중독되는게 무섭다는 생각도 든다. 알게 모르게 구글에 너무 의존하게 되어가는 내 자신을 발견하게 된다. chrome 하나만 놓고 보더라도 Usage Report를 보내지 않도록 설정해서 사용하고는 있지만 무슨 기능이 숨어 있을지 사용자는 알 수 없기 때문이다. 구글의 창업 모토인 "Don't be evil."을 아직까지는 어느 정도 믿고는 있지만 세상은 변하기 마련이니까...

2016년 1월을 기점으로 구글 chrome이 Windows Internet Explorer 점유율을 앞섰다는 소식도 있는 걸로 보아 나만 중독되어 가는 건 아닌 듯 하니 다행이네. 응?

우분투 사용자들이 chrome에 중독되도록 한가지 소식을 더 전한다. 흠냐... 구글이 2016년 3월부로 리눅스에서 32-bit chrome 지원을 중단했다. 그래서 64-bit 우분투 사용자들은 우분투 daily update시에 google repository를 못 읽어와서 오류가 발생한다.

해결방법은, 아래와 같이 gedit 등의 편집기로 repository 정보 파일을 열어서

$ sudo gedit /etc/apt/sources.list.d/google-chrome.list

아래의 내용과 같이 수정한다.

deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main

그리고 나서 repository 정보를 아래의 명령으로 update해 주면 오류가 사라진다.

$ sudo apt-get update


2016/04/01

Windows 10에 우분투 bash 탑재 소식


Windows 10에 우분투 bash을 탑재할 거란 소식이 있었는데, Microsoft Build 개발자 컴퍼런스에서 구체적인 시연이 있었나 보다. Windows 10의 bash 환경에서 우분투 binary가 실행된다. 기본적인 GNU 유틸리티는 물론, gcc를 통해 새로운 리눅스 binary를 만들어서 Windows에서 돌릴 수도 있다. 가상 머신이나 우분투 컨테이너를 통한 것이 아니라 Windows 커널에서 ELF binary의 System Call을 처리해 주는 방식이다. WINE과는 반대라고 이해하면 될 듯...

흠, Microsoft CEO가 바뀌고 나서 이처럼 어마 무시한 일이 현실이 되다니 정말 놀라운 세상이다. 하루하루 급변하는 세상 속에 살고 있음을 실감하게 해준다. GNU License 문제를 어떻게 해결할지는 잘 모르겠는데 설마 Windows 10도 오픈소스로 풀어 버릴려는 건 아니겠지?

Microsoft는 결코 손해보는 장사는 아닐 것이다. 우분투 가상머신을 사용하는 Cloud 서버 관리자들이 이젠 Windows만 가지고도 모든 작업을 할 수 있을 테니까. 또한, 오픈 소스 개발자들을 Windows 환경으로 끌어 들이는 것까지도 가능할 것이다.

그러면, 우분투가 얻는 것은 무엇일까? 돈 못버는 Cannonical이 푼돈 벌려고 몸을 판 것은 아닐 것인데...  뭐, 여전히 Windows에서도 우분투는 사용자 mode로만 동작하니까 리눅스 서버 시장에 영향을 미치진 않는다. 우분투 패키지 환경을 그대로 제공해 주는 것이니까 우분투 사용자가 늘어나는 셈이라고 볼 수도 있긴 하다.

아무튼 OS 사용자 입장에서는 선택의 폭이 넓어졌고 편의성이 늘어나는 것이니까 환영할 만한 일이다. 뭐 캐노니컬이 우분투 정신을 살려서 돈 보다는 공익적인 목적으로 그리 결정했을 수도 있다. 충분히 그럴 수 있는 회사이다.

웬만해서는 Windows Desktop에 우분투 가상 데스크탑을 설치할 필요도 없게 되었고, cygwin 등을 사용할 일이 없어졌다는 것... 그리고, Linux binary 들을 굳이 Windows로 Porting할 필요 없어졌다는 것... 등이 지금 당장 영향을 줄 일 들이다.

미래에 또 어떤 양상으로 리눅스와 Windows가 통합될지는 모르겠지만 아무튼 OS 통합의 단초가 될지도 모를 사건이 아닐 수 없다.

---

하지만 우리에게 당장 더 중요한 것은 선거다. 젊었을 적에는 선거가 별거 아니라 생각할지 모르지만 선거는 우리의 삶에 직간접적으로 많은 영향을 준다. 영화나 드라마에서 보면 기득권을 가진 자들은 기득권을 지키기 위해 별의별 짓을 다하는데, 힘 없는 자들은 세상을 조금이라도 바꾸기 위해 최소한의 노력도 하지 않더라... 그 나라의 정치적 수준은 국민의 의식 수준과 일치한다는 사실... 누구를 찍든 투표를 꼭 하길...

(2016/4/14 Update)

이번 선거 결과를 예측한 사람은 거의 없었을 것이다. 변화를 갈망하는 국민의 의지가 반영된 것으로 보인다. 젊은 세대들의 투표율이 올라간 것도 상당히 큰 역할을 한 듯하다. 젊은이들이 자신감을 가지고 세상을 바꿔 나가려고 한다면 얼마든지 바꿀 수 있음을 보여준 결과라고 본다.

언론과 여론 조사 결과에 휘둘리지 않았다는 점도 대단하다고 본다. 지역이나 세대, 이념에 의한 분열을 조장하는 세력들이 큰 힘을 발휘하지 못한 것도 긍정적으로 본다. 어느 정치인이 한 얘기 같은데 새는 좌우의 날개로 난다는 말... 진화론적 관점에서도 다양한 생각을 용인하는 기업이나 국가가 미래에 생존할 가능성이 높기 때문이다.

개인적으로는 70세 이상이 된 노인들은 젊었을 때 아무리 뛰어난 업적을 쌓았다고 하더라도 자발적으로 정치나 공직, 기업의 요직에서 물러나야 국가가 발전한다고 본다. 나도 곧 노인이 될 것이고, 고령화 사회가 더욱 심화될지라도 말이다. 조력자 역할은 얼마든지 할 수 있을 테니 말이다. 세상의 변화속도가 그만큼 빠르기 때문에 젊은 세대들이 주도하는 사회에 미래가 있다고 본다.

어쨌든 이제야 시작이겠지만 희망을 보았다.

2015/11/21

Windows 10 Build 10586 Upgrade


어제 Windows 10 버전 1511 (Build 10586.11) 업그레이드가 떴길래 업그레이드 했다. Windows 10 출시 당시 버전은 Build 10240이었다. 첫번째 Windows 10 major update인 셈이고 예전 Windows로 치면 Service Pack1에 해당하는 업그레이드인 셈이다.  업그레이드 과정을 보니 Windows 10을 새로 설치하는 것과 똑같다. 참고로, 이번 Upgrade시 대략 1시간 반 정도 걸린 듯하다. 예전에 Windows 10 Clean Install에 대해 글을 올리면서 엄청난 노가다 불평을 늘어 놨었는데, 새로운 버전은 노가다를 많이 줄일 수 있을 듯하다.

그 이유는 Microsoft가 이번 Windows 10 Upgrade 버전부터 Windows 7이나 Windows 8 License Key를 Windows 10 설치 후 Activate할 수 있도록 풀어 놓았기 때문이다. 즉, 이전 버전 Windows 사용자 들도 곧바로 Windows 10 Clean Install을 할 수 있게 됐다는 것이다.

이로 인해 Windows 10 사용자가 많이 늘어 날 수 밖에 없을 것이다. Microsoft가 초기에 DOS를 공짜로 풀어 놓던 시절과 비슷한 정책을 사용하려는 것 같다. Windows 10을 공짜로 풀고 사용자가 늘어나면 1 Device당 Windows 1개라는 정책이 상당한 효과를 보게 될 것이기 때문이다.

아무튼, 여기를 보면 실제로 몇가지 달라진 점이 있지만, 구 버전 Product Key를 사용할 수 있게 함으로써 Clean Install이 매우 쉬워 졌다는 점이 어쩌면 이번 Upgrade의 중요한 Point가 아닌가 한다. Windows 10 설치 iso 파일은 여기서 내려 받을 수 있다.

Windows 10의 몇가지 문제들: Display, 부팅 시간, 일부 설정 기능 먹통 증상 

Windows 10을 설치한 PC가 2대인데 하나는 내장 Intel Graphics Card와 NVIDIA Graphics Card가 탑재된 초기 Optimus 방식을 사용하는 Dell Alienware 노트북이고, 하나는 NVIDIA가 탑재된 iMac이다.

Alienware의 경우엔 두 개의 Display Adaptor Driver가 모두 설치되는데 Windows 10에서 화면이 아예 Black Screen으로 나타나거나 해상도가 낮아지는 문제가 발생할 수 있다. 이 경우엔 제어판의 [장치관리자] > [디스플레이 어댑터]에서 둘 중 하나를 "사용 안함"으로 설정 후 재부팅하면 문제가 해결된다.

iMac의 경우엔 NVIDIA 드라이버만 설치했는데 문제는 부팅속도가 1~2분 정도로 매우 느려지는 문제가 생긴다. Windows 10 처음 Clean Install 했던 때부터 발생한 문제였는데 우분투를 주로 쓰다보니 큰 문제라고 생각하지 않았었다. 구글링해 보니 Windows 10 사용자들 중에 부팅속도가 느리다는 불만이 의외로 많더라. 해결방법도 가상메모리를 고정시키거나 Fast Startup 옵션을 해제하는 법 등 여러가지가 있었는데 모든 방법을 다 해보아도 Alienware의 Widows 10 부팅속도와 비교하면 엄청나게 느리다. 혹시나해서 [장치관리자]에서 NVIDIA 디스플레이 어댑터를 "사용 안함"으로 설정하니 부팅속도가 20초 정도로 줄어 들었다. 3D 가속을 사용하지 않을 경우엔 이 방법을 당분간 사용하기로 했다.

Windows 10 부팅 속도 문제는 Windows 10 출시 전부터 발생한 문제인듯 하고, 현재 Upgrade에서도 해결되지 않은 듯하다. 일부 PC에서만 발생하기 때문에 일반적인 문제는 아니다. 구글링해 보면 Clean Install 하면 해결될 수 있을 것이라는 글도 있지만, iMac의 경우엔 Clean Install 했는데도 문제가 생기는 걸 보면 Windows 10의 미해결 문제인듯 하다.

iMac의 경우에 Boot Camp 드라이버를 설치하면 Windows 10에서 모든 장치가 제대로 동작하는데, OS X 디스크 파티션도 Windows에서 사용할 수 있게 보여준다. 문제는 Windows 10의 [시작 메뉴] > [설정] > [시스템] > [저장 공간] 이나 일부 다른 기능을 선택하면 프로세스가 먹통이 된다. 이 역시 Windows가 HFS 파일 시스템을 인식하지 못하기 때문일 거라는 생각에 [디스크 관리]에서 드라이버 문자를 삭제했더니 문제가 해결됐다.

Windows 10 Upgrade 도중 grub rescue> 모드 진입

Windows 10 OS 파티션을 넉넉하게 잡아 놓은 탓에 Upgrade 도중 재 부팅시 grub rescue> 모드로 진입하는 일이 벌어졌다. 알고 보니 OS X El Capitan 업그레이드 시와 동일하게 Windows 복구 파티션을 자동으로 Windows OS 파티션 끝을 쪼개서 추가해 버렸기 때문에 발생한 문제였다.

이번에 Grub을 복구하면서 예전의 "Ubuntu BIOS 및 UEFI Grub 복구" 게시물을 보완하였다. grub recue> 모드에서의 Grub 복구 방법을 참고하면 된다.

Grub을 복구한 후 다시 Windows를 선택해서 부팅하면 정상적으로 Upgrade를 완료할 수 있게 된다.

맺음말

Windows 10을 사용하고자 하는 이들에게 이번 Upgrade가 상당히 매력적인건 사실이다. 하지만, 나도 모르게 Windows 정책에 종속되게 된다는 점 또한 잊지 말아야 할 것이다. 구 버전의 Windows 들을 버리지 말고 유산으로 잘 간직해 두길...

2015/10/28

Ubuntu 15.10 Upgrade


지난 주에 우분투 15.10이 나왔는데 주말에 15.04였던 놈을 Software Updater를 사용해서 15.10으로 Upgrade했다. 대개는 Clean Install을 했었는데 우분투 홈페이지에서 15.10의 새로워진 점을 보았더니 크게 사용자가 느낄 정도로 달라진 점은 없어 보였기 때문이다. 대략 1시간 반 정도 걸렸다. 우분투 15.10에 대한 새로운 기능들은 여기를 참고하면 더 도움이 된다.

대체로 이번 Upgrade는 15.04의 버그 Fix 및 gcc를 비롯한 주요 패키지들이 버전 업 됐다는 것에 만족해야 할 듯 하다. 15.10이라는 버전에 걸맞지 않는다는 의견들도 상당히 있더라. 몇일 써본 봐로도 겉보기에 15.04와 크게 달라진 점은 별로 없어 보인다.

하지만, 우분투를 새로 설치하려는 이들에게는 굳이 우분투 14.04.3 LTS 버전을 설치하기 보다는 많이 안정화됐고 systemd와 같은 새로운 환경에 빨리 적응할 수 있도록 우분투 15.10을 적극 추천하는 바이다.

우분투 15.10 Desktop에서 새로워진 점

Linux kernel 4.2가 탑재되었다. 최신 AMD Radeon GPU 사용자들에겐 희소식일 수 있다. kernel 4.0 이후에 도입된 kernel live patching 기능은 배포판 사용자 들에겐 그리 큰 의미가 있는 것은 아니었다. 어차피 커널 보안 패치는 배포판 서버에서 제공하는 것을 받아야 하니까. 서버 사용자이면서 중요한 커널패치를 실시간으로 적용하고자 할 때는 도움이 된다. 이외에도 Intel Broxton 등 새로운 드라이버들이 새 커널에 많이 포함되었단다.

Unity 7.3.2 데스크탑에서는 주로 Dash쪽 기능들이 개선됐는데 눈에 띄는 부분은 Dash에서 검색한 App을 바탕화면이나 Unity Launcher에 Drag & Drop으로 끌어다 놓을 수 있는 점이다. 그리고, Gnome 3.16에 기반하여 Unity가 동작하는데 대표적으로 Scrollbar가 Gnome Overlay Scrollbar로 바뀌었다. 사실 Unity Scrollbar는 별로 편하다고 생각되진 않았고 굳이 그런데 공들일 필요가 있나 싶겠다는 생각도 있었는데, Canonical이 Upstart를 버린 것처럼 포기할 건 과감히 포기하는 모습은 좋아 보인다. 좀 아쉬운 점은 Gnome 3.16의 패키지들이 모두 Ubuntu 15.10에 Update되진 않았다. 대표적으로 gedit나, Nautilus 파일 관리자가  그것들이다.

이외에도, 개발자들을 위한 Ubuntu Make(umake)가 Android 개발 환경을 비롯해서 다양한 platform과 framework 들을 통합 지원한단다. 우분투에서 Game을 즐기는 이들에게는 Steam Controller가 제공된다는 점도 희소식이 될 것이다. 또한, Persistent Network Interface Name이 도입되어서 eth0 같은 네트워크 인터페이스명 대신 다소 복잡하면서도 영구적인 명칭을 갖게 되었다. 다만, 나처럼 Upgrade한 경우에는 eth0를 그대로 사용하는 듯 하다. VirtualBox에 설치해 보았더니 enp0s3라는 인터페이스가 생겼다. 아래 명령으로 확인할 수 있다.

$ ifconfig

이 밖에, 배경화면을 포함해서, gcc 5.2.1, Firefox 41.0.2, Libre Office 5.0.2.2 등등 수 많은 패키지가 Update 되었다.

한글 패키지와 다솜(dasom) 입력기에 대한 바램

한글 관련 패키지는 언제나처럼 [System Settings] > [Language Support]를 선택하면 설치되는데 fcitx가 기본 패키지로 포함되어 있어서 ibus 대신 쉽게 바꿔 사용할 수 있다. 최근에 우분투 한국 커뮤니티에 다솜 입력기를 정식 출시했던데, 다음 우분투 버전에는 다솜 입력기도 한글 패키지에 포함됐으면 하는 바램이다. ibusfcitx 한글 관련 설정은 우분투 14.10 이후의 방법들을 사용하면 되므로 다시 언급하지는 않겠다.

참고로, 다솜 입력기에서는 한글 마지막 입력 후 마우스 이동시 한글이 따라 다니는 끝 글자 버그를 해결했단다. 고생하신 개발자 분께 감사드린다. 한편으로는, 다른 한글 입력기들의 고질적인 유지보수 문제를 해결하기 위해서 더 많은 사람들이 관심과 참여를 가질 수 있기를 바라고, 혼자서 프로젝트를 끌고 가려고 하지말고 나같은 노친네들보다는 후배들이 많이 참여할 수 있도록 해 주시길 바란다. Mir나 Wayland로 X-Window 환경이 바뀌게 되면 또 다른 노력이 필요할 것이고 미래에도 새로운 기술 환경에 적응해서 살아 남아야 하기 때문이다.

우분투 15.10 Upgrade 후 생긴 자잘한 문제들

우분투 15.10으로 Upgrade하고 나서 우분투로 부팅하면 Unity 로그인 화면이 나타나야 하는데 공포의 black screen이 나타났다. 다시 전원을 끄고 부팅했더니 제대로 나타났다가 또 부팅하면 다시 black screen이다. 그런데, Volume을 좀 키웠더니 다행히 black screen 문제는 공포의 black screen 증상은 아니었다. 우분투 부팅시 북 두드리는 소리가 들렸기 때문이다. <Ctrl><Alt><F2> 눌렀다가 <Alt><F7>을 눌렀더니 로그인 화면이 나타났다. 혹시나 해서 ~/.cache 폴더를 지우고 lightdm을 다시 설치했더니 이 문제가 해결된 듯 했는데 재발하더라. [System Settings] > [Software & Updates] > [Additional Drivers] Tab에서 Nouveau 드라이버를 선택했다가 재부팅 후 다시 Nvidia 드라이버를 선택하고 재부팅했더니 더이상 재발하지 않는다.

이 외에 VirtualBox 5.0.8이 죽는 문제가 있었는데 한번만 생기고 더이상 발생하지는 않고 있다. 그리고 chrome이나 chromium 기동시 기본 브라우저로 설정할지를 계속 물어 보는데 더 이상 묻지 않기를 click하면 된다.

기타 참고 사항

우분투 15.10부터 바뀐 것인지 아니면 chrome/chromium에서 제공하는 기능인지 모르겠는데 다운로드시 다운로드 진행상태가 Unity Launcher의 아이콘에 표시된다. firefox는 안된다.

VirtualBox UEFI 모드 Guest 부팅 문제 해결

이전 게시물에서 해결하지 못했던 문제를 해결했는데, 우분투 14.10 이후 버전부터 VirtualBox에서 UEFI 모드로 Guest를 설치하면 가상머신으로 부팅할 수 없었던 문제가 있었다. 15.10에서도 역시 같은 증상이었는데 구글링해 보니 해결 방법이 있었다. UEFI Shell에서 startup.nsh 스크립트 파일이 있으면 이놈을 먼저 실행하는데 여기에 grubx64.efi path를 넣어 주면 UEFI 모드로도 부팅할 수 있다. VirtualBox나 btrfs 파일시스템의 문제는 아니었다. 다만, 우분투 14.04에서는 별다른 설정 없이도 가능했는데 왜 그런지는 모른다. VirtualBox에서 우분투 설치 iso로 부팅한 후 아래와 같이 startup.nsh를 새로운 가상 머신의 EFI System Partition(ESP)의 / 폴더에 생성해 주고 가상머신을 재부팅하면 된다.

$ sudo mount /dev/sda1 /mnt
$ cd /mnt
$ sudo echo '\EFI\ubuntu\grubx64.efi' > startup.nsh

2015/10/07

Grub과 gdisk를 이용한 Windows UEFI/BIOS 설치 USB 만들기


OS X El Capitan으로 Upgrade하면서 우분투 설치 USB가 잘 동작이 안됐던 문제 때문에 USB를 갖고 놀다가 실수로 USB를 지워 버렸다. 우분투 설치 USB를 다시 만드는 김에 Windows 설치 겸용으로도 사용할 수 있도록 Grub과 gdisk를 이용해서 다시 만들었다.

USB 굽기 Tool을 사용하지 않는 방식의 장점은 USB 용량이 커지고 있기 때문에 저장공간을 최대한 활용할 수 있다는 것이다. All-in-one multi-OS 설치 USB 까지는 아니더라도 USB 1개로 BIOS 방식이든 UEFI 방식이든 가리지 않고 우분투와 Windows 설치가 가능하도록 하려는 것이다. 우분투나 OS X에서는 GPT 파티션이든 Hybrid MBR 파티션이든 어떻게 만들어도 상관없는데 이전 글에서 다룬 바와 같이 Windows는 GPT 파티션에 대한 제약 사항이 많다. 이 때문에 우분투를 비롯한 리눅스는 여러개 배포판 또는 버전을 1개의 USB에 iso 파일로 담으면 되지만, Windows는 1개의 버전만 가능하다. 엄밀히 말하면, 아래의 Windows USB 제약사항 들 때문에 Grub2를 사용할 경우  Windows 1개 버전에 대해서는 UEFI/BIOS 설치가 가능하고 2개의 BIOS용 Windows 버전을 추가할 수는 있다.

Grub2를 이용한 Windows 설치 USB 만들 때의 제약사항
  • 우분투처럼 Windows 설치 iso 파일을 이용하여 직접 부팅할 수는 없다. Windows 설치 파티션에 Windows 설치 iso의 내용물을 모두 복사해야 한다. 뭐 syslinux/isolinux로 가능할 수도 있단다. 다만, 이 경우 3~4GB의 Windows 설치 파일을 모두 메모리에 로딩하기 때문에 메모리 제약사항이 생긴단다.
  • Windows 설치 파일들은 USB 상에서는 반드시 첫번째 파티션에 있어야 하고 FAT 파일시스템을 사용해야 한다. 하드디스크는 상관없는데 USB는 Windows에서 저장장치로 쳐주지 않는다. 단, BIOS 모드로 Windows 설치시에는 Grub2의 drivemap 기능을 사용할 수 있으므로 다른 파티션에 있어도 된다. Grub2의 drivemap은 UEFI 모드에서는 사용할 수 없더라.
  • BIOS 모드로 Windows 설치시에는 GPT 파티션을 인식하지 못한다. 이 때문에 Hybrid MBR 파티션을 사용해야하고 EFI Protetive 파티션을 제외한 나머지 3개의 MBR 파티션을 사용할 수는 있다.
  • Hybrid MBR 파티션을 사용하는 USB는 Windows 설치시에는 문제가 없지만, Windows에서 사용하고자 할 때에는 제약사항이 생긴다. EFI 모드의 Windows는 그나마 GPT 파티션들을 인식할 수 있지만 BIOS 모드의 Windows는 USB 파티션들을 아예 인식하지 못할 수 있다.

gdisk를 이용한 USB 파티션 만들기

위의 Windows USB 제약 사항을 고려하여 아래와 같이 gdisk로 파티션을 나누었다. 당연히, 빈 USB에서 작업해야 하고, GPT 파티션 Table을 먼저 만들어야 한다.

$ sudo gdisk /dev/sdb
[sudo] password for aaa:
GPT fdisk (gdisk) version 0.8.10

Partition table scan:
  MBR: hybrid
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with hybrid MBR; using GPT.

Command (? for help): p
Disk /dev/sdb: 31703040 sectors, 15.1 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): 9D794CCE-5719-43A0-A5A7-D8DFBE8488D3
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 31703006
Partitions will be aligned on 2048-sector boundaries
Total free space is 2014 sectors (1007.0 KiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048         8390655   4.0 GiB     0700  UWRoot
   2         8390656         8800255   200.0 MiB   EF00  UESP
   3         8800256         8802303   1024.0 KiB  EF02  BIOS boot partition
   4         8802304        17190911   4.0 GiB     0700  UWData
   5        17190912        31703006   6.9 GiB     8300  ULData

Command (? for help): x

Expert command (? for help): o

Disk size is 31703040 sectors (15.1 GiB)
MBR disk identifier: 0x01AEFD5F
MBR partitions:

Number  Boot  Start Sector   End Sector   Status      Code
   1      *           2048      8390655   primary     0x07
   2               8390656      8800255   primary     0xEF
   3               8802304     17190911   primary     0x07
   4                     1         2047   primary     0xEE

Expert command (? for help):
위의 내용은 이미 만들어진 USB 파티션을 보여 준 것인데 이것을 참고하여 파티션을 만들면 된다. 먼저 gpt 파티션들을 만들고 파티션 Tpye code를 위와 같이 지정해 준다. 5개의 gpt 파티션을 만들었는데 필수 파티션은 앞의 1~3의 3개 파티션이다. 1번 파티션이 Windows 설치 파티션(4GB)이고, 2번은 ESP(EFI System Partiton; 200MB), 3번은 Grub BIOS Boot Partition(1MB)이다. 1번이 반드시 Windows 설치 파티션이어야 하기 때문에, ESP로 2번 파티션을 사용하고 있다. 참고로 4번은 Windows Data용 파티션이고 5번은 리눅스 설치 iso들을 집어 넣기 위한 파티션이다.

파티션을 나누고 나서 gparted를 이용하여 파일시스템을 만들어 준다. 1과 2번은 fat32로 format 해야 하고, 3번은 포맷할 필요 없다. 4번은 fat32, 5번은 ext4로 포맷하였다. 

gparted로 포맷하고 나서, 다시 gdisk로 Hybrid MBR 파티션을 만들어 주어야 한다. 참고로, gparted로 포맷한 후 gdisk에서 확인해 보니 Hybrid MBR 파티션이 만들어져 있었다. 하지만, 이것을 사용하면 안되고, 위의 마지막 4개의 파티션과 같이 gdisk에서 gpt 1, 2, 4번 파티션을 Hybrid MBR 파티션으로 새로 만든다. 위에 만들어진 Hybrid 파티션을 보면 4번이 EFI Protective 파티션이 되었음에 주의할 필요가 있다.

결과적으로, 아래와 같이 파일시스템이 만들어졌다. parted/gparted에서는 Hybrid MBR 파티션 정보를 볼 수 없다.

$ sudo parted /dev/sdb print
Model: USB Flash Disk (scsi)
Disk /dev/sdb: 16.2GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: pmbr_boot

Number  Start   End     Size    File system  Name                 Flags
 1      1049kB  4296MB  4295MB  fat32        UWRoot               msftdata
 2      4296MB  4506MB  210MB   fat32        UESP                 boot, esp
 3      4506MB  4507MB  1049kB               BIOS boot partition  bios_grub
 4      4507MB  8802MB  4295MB  fat32        UWData               msftdata
 5      8802MB  16.2GB  7430MB  ext4         ULData
USB에 UEFI 및 BIOS Grub 설치

UEFI Grub은 파일만 복사하면 되므로 아무 리눅스에서나 작업이 가능하지만, BIOS Grub을 설치하려면 BIOS 모드로 부팅한 리눅스에서 작업해야 한다. BIOS 모드로 설치된 리눅스가 없다면 Virtual Box로 하나 만들어 두는게 좋다.

UEFI Grub 파일들을 우분투 12.04.2 이후의 64bit 우분투 설치 iso에서 USB ESP 파티션(2번)에 아래와 같이 복사한다.

$ sudo mkdir /tmp/mnt
$ sudo mount ~/Downloads/ubuntu-15.04-desktop-amd64.iso /tmp/mnt

$ sudo mount /dev/sdb2 /mnt
$ sudo cp -R /tmp/mnt/EFI /mnt
$ sudo cp -R /tmp/mnt/boot /mnt

BIOS Grub은 아래와 같이하면, 2번 파티션 외에 USB의 MBR Boot Sector와 3번 Grub BIOS Boot Partition에 설치 된다.

$ sudo grub-install --recheck --boot-directory=/mnt/boot /dev/sdb

우분투 설치 iso 파일들을 USB에 복사

우분투 설치용으로도 USB를 사용할 것이기 때문에 우분투 설치 iso들을 아래와 같이 5번 ext4 파티션에 복사하였다.

$ sudo umount /mnt
$ sudo mount /dev/sdb5 /mnt
$ sudo mkdir /mnt/boot-isos

$ sudo cp ~/Downloads/ubuntu-15.04-desktop-amd64.iso /mnt/boot-isos
$ sudo cp ~/Downloads/ubuntu-15.04-desktop-i386.iso /mnt/boot-isos
$ sudo sync

Windows 설치 파일 복사

USB 1번 파티션에 Windows 설치 iso 이미지 파일 내의 모든 폴더/파일 들을 복사한다.

$ sudo umount /mnt
$ sudo mount /dev/sdb1 /mnt

$ sudo umount /tmp/mnt
$ sudo mount ~/Downloads/windows.iso /tmp/mnt
$ sudo cp -R /tmp/mnt/* /mnt
$ sudo sync

Grub Boot Menuentry 설정

아래의 Grub 부트 엔트리를 USB 2번 ESP 파티션의 /boot/grub/grub.cfg에 추가한다. 원래의 grub.cfg 파일을 지우고 새로 만드는 편이 좋다.

$ sudo umount /mnt
$ sudo mount /dev/sdb2 /mnt
$ sudo rm -f /mnt/boot/grub/grub.cfg
$ sudo nano /mnt/boot/grub/grub.cfg

$ cat /mnt/boot/grub/grub.cfg
menuentry "[USB] Ubuntu 64-bit Install" {
   set isofile="/boot-isos/ubuntu-15.04-desktop-amd64.iso"
   loopback loop (hd0,5)/$isofile
   linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile noprompt noeject
   initrd (loop)/casper/initrd.lz
}

menuentry "[USB] Ubuntu 32-bit Install" {
   set isofile="/boot-isos/ubuntu-15.04-desktop-i386.iso"
   loopback loop (hd0,5)/$isofile
   linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile noprompt noeject
   initrd (loop)/casper/initrd.lz
}

menuentry "[USB] UEFI Mode Windows 8+ Install" {
   insmod part_gpt
   insmod fat
   set root='(hd0,gpt1)'
   chainloader (${root})/efi/boot/bootx64.efi
}

menuentry "[USB] BIOS Mode Windows Install" {
   insmod part_gpt
   insmod fat
   set root='(hd0,gpt1)'
   drivemap -s (hd0) ${root}
   ntldr (${root})/bootmgr
}
참고로 마지막 "[USB] BIOS Mode Windows Install" 메뉴에서 drivemap은 불필요 하지만, BIOS 모드의 Windows 설치 파티션이 USB의 첫번째 파티션이 아닐때 사용할 수 있다.

Windows 버전에 대한 고려 사항

위의 Grub 부트 엔트리 들 중 "[USB] UEFI Mode Windows 8+ Install" 메뉴엔트리는  Windows 8 이후 버전 들에만 적용된다. Windows 설치 iso 파일에 /efi/boot/bootx64.efi 파일이 추가됐기 때문이다.

Windows에서 UEFI를 지원하기 시작한 것은 Windows Vista 이후이고 64bit 버전에만 적용된다. Windows Vista에서 현재의 Windows 10까지 모든 Windows 버전에서 UEFI Windows Boot Manager로 사용될 수 있는 파일이 있는데 bootmgfw.efi라는 파일이다. 이 파일은 Windows 설치 iso 이미지 안에 포함된 /sources 폴더에 install.wim 파일 안에 포함되어 있다. 이미 다른 PC에 설치된 Windows가 있다면, C:\Windows\Boot\EFI\bootmgfw.efi 파일을 사용해도 된다.

가령, UEFI 모드로 Windows 7을 설치하고자 할 때에는, bootmgfw.efi 파일을 현재 폴더에 복사해 놓았다면 아래와 같이 USB의 Windows 설치 파티션에 /efi/boot/bootx64.efi 파일로 복사해 주면 된다.

$ sudo umount /mnt
$ sudo mount /dev/sdb1 /mnt

$ sudo mkdir /mnt/efi/boot
$ sudo cp ./bootmgfw.efi /mnt/efi/boot/bootx64.efi

설치 USB Test

PC BIOS/Firmware 설정이 UEFI냐 BIOS/CSM 모드냐에 따라 Grub 메뉴에서 UEFI Mode인지 BIOS Mode인지를 확인해서 맞는 놈을 선택해서 부팅해야 한다. 우분투 메뉴는 UEFI/BIOS를 따로 구분하지 않는다. 해당 모드의 Grub이 자동으로 부팅시에 결정되기 때문이다.

Mac PC에서 USB 부팅시 참고사항

Mac에서는 USB를 꽂고 부팅시 <Option> Key를 누르고 있으면 USB Icon으로 부팅 가능한 옵션이 추가되어 표시되는데, 아이콘 밑에 Windows로 표시된 놈은 Windows 부팅 옵션이 아니고, BIOS 모드로 부팅하기 위한 옵션이다. 이 글대로 설치 USB를 만들면 Windows로 표시된 아이콘 외에 EFI Boot로 표시된 아이콘이 두 개가 보인다. 하나는 EFI 모드의 Windows 설치 파티션으로 부팅하고, 하나는 EFI 모드의 Grub으로 부팅되는데 어느 놈이 어느 놈인지 구분할 수 없다. rEFInd에서는 구분이 가능하다. 또한, Windows로 표시된 아이콘을 선택하면 BIOS 모드의 Grub으로 부팅된다.

즉, Mac은 BIOS/Firmware 설정이 따로 없는 대신에 UEFI와 BIOS/CSM 부팅을 동시에 지원한다. Boot Camp가 이 BIOS/CSM 모드를 이용하는 것이고 BIOS/CSM 모드에서는 Hybrid MBR 파티션을 사용한다.

2015/10/02

OS X El Capitan 설치 후 Ubuntu Grub 복구


새로운 OS가 나오면 무작정 설치하는 안좋은 습관이 있다. 이로 인해 발생하는 문제들도 참 다양하다. 남들보다 먼저 문제를 겪으면 구글링해도 답을 찾기 어려운 경우가 많다. 아무튼 Mac OS X El Capitan Upgrade가 떴길래 걍 설치했다. 우분투로 부팅이 안되는 경우는 이번이 처음은 아니다.

El Capitan Upgrade 후 발생한 문제들

<Option> Key를 눌렀을때 Grub으로 부팅할 수 있도록 해 놓은 것이 작동 안하는 것은 그러려니 한다. 그런데, 하드디스크의 Grub은 물론이고, 전에 만들어 놓은 우분투 설치 USB로도 부팅이 안된다. Windows 10과 새로운 OS X 10.11로만 부팅이 된다. 또, 한가지 문제가 더 생겼는데 OS X 데이터 파티션이 안잡힌다. OS X의 터미널에서 파티션을 확인해 보니 파티션들은 잘 있다.

$ diskutil list

그런데, 가만히 보니 OS X Recovery 파티션이 하나 더 생겼다. 이전 복구 파티션들을 안지웠더니 Recovery 파티션만 3개가 되었다. 문제는 리눅스 파티션이 뒤쪽에 있기 때문에 복구 파티션 하나가 새로 생김으로 인해 파티션 번호가 하나씩 밀려 버린다는 것이다. 당장 예상되는 문제가 Grub 메뉴엔트리의 파티션 번호가 달라지기 때문에 Grub이 당연히 동작하지 않으리란 것이다. 예전에는 리눅스의 /etc/fstab에서도 파티션 번호를 사용했었는데 요즘은 각 디바이스 파티션의 UUID를 사용하기 때문에 리눅스 파일시스템이 mount 되지 않는 문제는 없다.

구세주 rEFInd Boot Manager

아무튼 이 모든 문제를 해결하기 위해서는 어떻게든 우분투로 부팅할 수 있어야 한다. OS X를 새로 Upgrade하면 보통은 rEFInd를 새로 설치해 주면 우분투로 부팅할 수 있다. 그런데, El Capitan에서는 Rootless Mode 라는 새로운 보안 정책이 추가되면서 rEFInd를 설치해도 부트 엔트리에 rEFInd가 추가되지 않는 듯 하다. Rootless Mode라는 것이 얼핏 구글링 한 바로는 root 권한으로도 맘대로 시스템 파일들을 건드리지 못하도록 한단다. OS X Recovery 파티션으로 부팅해서 해제하면 된다는데 아직 모르는 게 많아서 꺼려진다. 쉬운 방법을 선택하기로 했다. rEFInd를 기본 boot loader로 만들어 버리는 것이다.

참고로, rEFInd는 OS가 부팅하기 이전에 부팅하므로 OS dependency가 없다. 어떤 OS 환경이든지 binary 파일들이 같다는 얘기다. 다만, rEFInd 0.8.4 미만 버전의 경우 OS X에서 설치하면 기본 설치 위치가 OS X 파티션이었는데 이후의 버전들은 OS에 상관없이 ESP(EFI System Partition) 파티션에 설치된다. OS X Yosemite 이후 OS X 파티션에서는 rEFInd로 부팅할 수 없단다. 또 한가지 참고할 사항은  rEFInd를 만든 이가 바로 gdisk의 저자라는 것이다.

아래와 같이 ESP를 마운트 한 후, 기본 boot loader인 bootx64.efi 파일을 refind_x64.efi로써 대체한다. 당연히 rEFInd가 설치되어 있어야 한다.

$ sudo mkdir /mnt
$ sudo mount -t msdos /dev/disk0s1 /mnt
$ cd /mnt/EFI/Boot
$ cp -f ../refind/refind_x64.efi ./bootx64.efi

이제 OS X를 재부팅 한 후 <Option> Key를 누르고 있으면 EFI 부트 엔트리가 보이는데 이 놈을 선택하면 rEFInd가 뜨고 다시 부트 엔트리들이 나타난다. 여기서 grubx64.efi를 선택해 봐야 파티션 넘버가 달라져서 우분투로 부팅할 수 없다. rEFInd는 계속 Upgrade되고 있는데 최신 버전에서는 리눅스 커널로 바로 부팅할 수가 있다. 커널로 부팅하려면 rEFInd 부트 엔트리 중에서 다시 rEFInd를 선택하면 된다. 이렇게 두 번 선택하는 이유는 처음에는 기본 부트로더가 된 rEFInd로 부팅한 것이지만 설정 파일(refind.conf)을 읽지 못하기 때문에 ESP 파티션의 boot loader들만 보여주기 때문이다.

최근에 사용했던 리눅스 커널을 선택하니 우분투로 깔끔하게 부팅이 된다.

Ubuntu에서 Grub 복구

우분투로 정상 부팅했으니 아래의 명령만으로도 Grub이 복구될 줄 알았다.

$ sudo update-grub
$ sudo reboot

위의 명령으로 최소한 /boot/grub/grub.cfg의 부트 엔트리들에 있는 파티션 넘버는 교정이 된다. 그런데, 우분투로 부팅이 안된다. 아래와 같이 오류 발생...

Error: unknown filesystem.
grub rescue>

----------------------------------------------------------------------------------------------------------------
참고: grub rescue> 모드에서 우분투로 부팅하기

아래와 같이 grub rescue 모드에서 우분투의 boot 파티션을 알아 낼 수 있다.

grub rescue> ls
(hd0) (hd1) (hd1,gpt1) (hd1,gpt2) ......

grub rescue> ls (hd1,gpt9)/
/boot ......

위와 같이 /boot 폴더가 보이는 파티션이 리눅스 boot 파티션이다. 이제 아래와 같이 하면 Grub으로 부팅할 수 있다.

grub rescue> set prefix='(hd1,gpt9)/boot/grub'
grub rescue> insmod normal
grub rescue> normal
----------------------------------------------------------------------------------------------------------------

이렇게 해서 Grub으로 부팅한 후,

$ sudo apt-get install --reinstall grub-efi
$ sudo update-grub
$ sudo reboot

다시 부팅했으나 역시 매한가지다. grub rescue>....

grub-efi 패키지를 재설치해도 해결이 안되는 걸 보니 혹시 무슨 cache 파일같은 찌꺼기 때문일지도 모른다는 생각이 들어서 우분투로 재부팅한 후,

$ sudo apt-get install grub

하니, grub-efi 패키지를 지우고 db를 갱신하겠냐고 물어본다. 패키지만 설치된 상태에서 Ctrl-c로 빠져 나왔다. 그리고 다시 grub-efi 패키지 설치...

$ sudo apt-get install grub-efi
$ sudo reboot

이렇게 하니까 예전의 우분투 Grub으로 완전히 복구되었다.

그런데, 돌이켜 보면 이전에 정리했던 UEFI Grub 복구 절차만 충실히 따라 했어도 복구되었을지 모른다는 생각이 든다. 위의 내용과 비교해서 빠진 부분이 grub-install 명령 실행 부분인데 이 명령을 사용하지 않았던 이유는 "efibootmgr -v" 명령으로 확인시 우분투 boot entry가 멀쩡히 살아 있었기 때문이다. grub-efi 패키지를 새로 설치하면 grub-install 명령이 자동으로 수행된다. grub-install 명령이 NVRAM에 우분투 boot entry를 등록해 주는 일 외에 파티션 변경에 따른 설정을 추가로 해줄 수도 있기 때문이다.

OS X 데이터 파티션 복구

이제 우분투가 정상이 되었으니 나머지 문제들은 쉽게 처리할 수 있다. OS X 데이터 파티션은 gdisk에서 확인해 보니 Microsoft Basic Data(0700) 파티션으로 파티션 코드가 설정되어 있었다. 이 놈은 Apple HFS/HFS+(AF00) 이었던 놈이다. 코드를 바꿔주고 OS X로 재부팅했더니 데이터 파티션이 제대로 복구되었다.

gdisk에 대한 다른 글 들에서 언급한 바 있지만 서로 다른 OS의 파티션 Tool들을 혼용해서 사용할 경우에는 반드시 gdisk로 파티션 테이블에 변화가 생겼는지 확인해 볼 필요가 있다. Recovery 파티션을 OS X Upgrade시 추가하면서 파티션에 변화가 생긴 것인데 OS X 파티션 조차 몰라 보다니... :-(

각종 부팅 설정 원상 복구

일단 rEFInd도 최신 버전으로 재설치했고, Mac 부팅시 <Option> Key를 눌렀을 때 Grub이 뜨도록 다시 설정하였다. 그리고 부팅 순서도 우분투 Grub으로 먼저 부팅하도록 efibootmgr로 재설정 하였다.

남은 일

우분투 설치 USB로 왜 부팅이 안되는지 알아 볼 필요가 있고, 불필요한 OS X Recovery 파티션도 제거해야 겠다.

(2015/10/06 Update)

우분투 설치 USB로 부팅이 안됐던 이유는 USB에서 gdisk로 Hybrid MBR 파티션을 만들면서 EFI Protective Partition(0xEE)의 위치를 맨 앞이 아니라, 맨 뒤로 바꿨기 때문이었다. 이 상태에서는 Hybrid MBR 파티션 들 중 첫번째 FAT 파일시스템을 ESP로 인식해 버리더라. 이전 우분투 설치 USB 만들기 방법에 문제가 있었던 것은 아니었다.

Grub이 이상해졌네...

그런데, 우분투 15.04 설치 후 Grub이 몇번 update 됐는데 그 때문인지 아니면 El Capitan Upgrade 후에 뭔가 바뀐 것인지 잘 모르겠는데, /dev/sda인 하드디스크를 Grub에서 hd0가 아니라 hd1으로 인식하고 있더라... USB를 꽂은 채로 Grub 부팅시 다시 확인해 보면 USB는 hd0로 인식하고, 하드디스크는 hd2로 인식한다. 그런데, /boot/grub/grub.cfg 파일의 부트 메뉴엔트리에는 하드디스크 hint가 hd0로 되어 있어도 UUID를 먼저 참고하기 때문에 하드디스크로 부팅하는데 문제가 생기지는 않는다. 다만, 하드디스크의 우분투 설치 iso파일로 부팅할 때는 grub.cfg에서 hd0가 hd1으로 바뀌어야만 부팅이 된다. 이 때는 hint가 아니고 정확한 위치를 지정하고 있기 때문이다.

아무튼, Grub이 update 되면서 벌레가 생긴 것인지, 아니면 첫번째 하드디스크를 hd0에서 hd1으로 하기로 한건지, 또는 OS X El Capitan 때문에 발생한 문제인지는 확실하지 않다.

2015/09/12

BIOS GPT 하드디스크를 이용한 Windows 10 Clean Install


이전 글에서는 UEFI를 지원하는 PC에서 Windows 10 Clean Install 한 것에 대해 얘기했었는데, 여기서는 GPT(GUID Partition Table) 파티션을 사용하는 BIOS PC에서 Windows 10 Clean Install 한 것에 대해 얘기해 보려고 한다.

구입한지 5년된  Dell 11" Alienware(m11x)에는 Windows 7과 Ubuntu 외에 Hackintosh를 시험삼아 설치했었다. 결과적으로 Hackintosh 설치 당시에는 m11x가 최신 PC였기 때문에 설치는 했지만 네트웍과 Nvidia 3D 가속이 안돼서 이 후로 쓰지 않고 방치해 놓고 있었다. 참고로, 당시에 성능과 휴대성을 갖춘 노트북으로 Dell 12" 모델이 단종되는 바람에 이 놈을 산 것이었다. m11x  출시 후에 11" Macbook Air가 나왔다. 11인치는 너무 작고 최대 해상도가 1366x768 이라 답답하다. 최근에는 베젤 공간을 없앤 12인치 노트북 모델들이 아마 휴대성과 성능을 겸비한 노트북들이지 않을까 싶다.

아무튼 이 놈은 UEFI를 지원하지 않았기 때문에 Multi-OS를 설치하기 위한 방법을 찾아야 했다. 그 때 찾은 것이 Grub BIOS-GPT 파티션이다. BIOS PC에서 GPT 파티션을 사용하면서 Multi-OS booting이 가능한 방법이다. 이 파티션에 대해서는 "Ubuntu UEFI 모드 설치 USB 만들기"에서도 언급한 바 있다. GPT 파티션을 사용하려면 모든 것을 지우고 새로 설치해야 했기에 위의 USB를 만들어서 작업했었다. 나에게 있어서 OS에 관한 한 항상 모든 문제의 시작은 Windows였고 그 끝도 Windows였다. Windows에서는 아래와 같은 제약 사항이 있는데 당시에는 주로 USB에서 테스트했기에 제약 사항조차 제대로 파악하기 어려워서 매우 헤맸었다.

Windows에서 GPT 파티션 사용시 제약 사항
  • Windows Vista 이후 UEFI를 지원하면서 HDD(하드디스크)에서 GPT를 지원하기 시작했지만, BIOS 모드로 Windows 설치시  GPT 파티션을 인식하지 못함
  • Windows 10을 포함해서 UEFI 환경에서조차 HDD에서는 GPT 파티션을 지원하지만 USB는 1개의 파티션만 인식함
  • 결과적으로, BIOS 모드 Windows 환경에서 GPT 파티션을 사용하려면 Hybrid-MBR 파티션을 사용해야 하나, 여기서도 USB는 1개의 파티션만 인식함
우분투 설치 USB는 UEFI와 BIOS를 모두 지원할 수 있지만, 위의 Windows 제약 사항들 때문에 UEFI와 BIOS를 모두 지원하는 Windows 설치 USB는 만들기가 매우 어렵다. All-in-one Multi-OS 설치 USB를 만들어 보려고 한 사람들이 나 말고도 꽤 있을 것이다. 사실, 아예 불가능한 것은 아니다. USB에 UDF 영역을 별개로 만들어서 Windows 설치 iso를 구우면 USB의 UDF 영역을 CD로 인식하기 때문에 UEFI 환경에서는 UEFI 모드로 부팅하고, BIOS 모드에서는 BIOS 모드로 부팅한다. 다만, 이 영역을 만들기 위해서는 전문적인 USB Tool을 사용해야 한다. 이 USB에 앞서의 USB 만들기 글을 적용하면 All-in-one에 근접한 Multi-OS 설치 USB가 된다. Grub2와 Grub4Dos를 같이 사용하면 All-in-one Multi-OS 설치 USB를 만들 수 있을지도 모른다.

Windows 10 Clean Install 노가다를 다시 시작할 수 밖에 없었던 사연

사실, Windows 7도 훌륭한 OS이다. 전에 Windows 10 설치 노가다를 한 경험이 있어서 다시는 하고 싶지 않은 일이었다. 문제는 애초에 Windows 파티션을 너무 작게 잡은데서 비롯된 것이다.


위의 화면과 같이 WRoot(/dev/sda3) 파티션에 Windows 7을  50GB 할당했었다. 당시에는 넉넉해 보였다. 나중에 알았지만 Windows 7은 Update를 계속할수록 디스크를 갉아 먹는다. 최근에 Update 했더니 여유 공간이 200MB 정도 밖에 없어서 Update 조차 불가능한 상황이 되었다. Windows 7에서 제공하는 디스크 정리 도구를 사용해서 불필요한 시스템 Backup 파일까지 제거해도 1GB 정도 밖에 남지 않았다. 웬만하면 OS 이외의 앱들은 D: 드라이브인 WData(/dev/sda4) 파티션에 설치하는데도 이런 일이 생긴 것이다. 다행히, iTunes를 포함한 Apple 앱들과 Data 공간을 싸그리 지웠더니 6GB정도의 공간이 남았다. Windows 8 이후부터는 Windows Update 후에도 공간을 어느정도 정리해준단다. 하지만, Windows 7은 Update 후 공간이 부족할 때마다 또 다른 노가다를 해야 한다. 이런 상황에서 Windows 10 무료 업그레이드 예약하라고 자꾸 귀찮게 하는 놈이 눈에 띄었다.

Windows 10으로 Clean Install 하면 OS 공간이 대략 18GB밖에 되지 않는다. 그래서 이 참에 이 노가다나 저 노가다나 비슷하다는 생각이 들어서 Windows 10 Clean Install을 결심하게 되었다. 그래서 바로 무료 업그레이드 예약을 해 버렸다. 뭐 10분 정도 지나니까 Windows 10으로 Upgrade하란다. Upgrade 시간이 오래 걸리는 것을 알기 때문에 그냥 Upgrade 걸어 두었다.  Windows Clean Install을 진행하기에 앞서 Upgrade 후에 Windows 정품인증이 됐는지 확인할 필요가 있는데 잘 돼 있더라.

참고로, Windows 10 Upgrade에 필요한 최소 공간이 3GB 정도란다. Windows 10 설치파일 용량 정도이다. 그런데, Windows 10으로 Upgrade 한 후 한달 이내에는 다시 Windows 7으로 복원할 수 있단다. 상식적으로 현재 여유 공간이 6GB 밖에 안남았는데 Windows 7과 Windows 10을 동시에 디스크에 남겨놓을 순 없기에 아마 MS 서버에 Backup을 하는 것 같다. 기존에 설치된 앱들이 많기 때문에 역시나 Upgrade 시간도 상당한 시간이 걸렸다. Windows 10으로 Upgrade를 마치고 나서 OS 공간이 얼마나 남았나 보았더니 똑같이 6GB 정도 남았더라. Windows.old 폴더가 있긴 한데 5GB 정도 밖에 안되고... 이것이 Windows Clean Install을 하지 않으면 안되는 이유이다. Windows 10 Clean Install 후에는 역시 18GB 정도 밖에 OS 파티션을 잡아먹지 않는다.

Windows 10 Upgrade 시에 또 한가지 참고할 점은 기존의 Grub 설정을 건드리지 않는다는 점이다. 즉, MBR 영역을 건드리지 않는다. 하지만, 나중에 Windows 10을 Clean Install 하면 MBR을 덮어 버리므로 Grub을 복구해 주어야 한다.

BIOS 모드에서 GPT-MBR Hybrid Partition 사용

위의 gparted 화면에서 알 수 있듯이 gparted에는 GPT 파티션 순서와 용량 정보는 있지만 Hybrid MBR 파티션 정보는 보이지 않는다. Hybrid MBR 파티션을 만들어 주는 도구는 리눅스에 기본 설치된 gdisk이다. gdisk로 다시 들여다 본 것이 아래의 화면이다.


위의 화면 아랫 부분에 4개의 MBR 파티션이 보인다. 이 파티션들은 gdisk의 "recovery and transformation options (experts only)" 메뉴에서 "make hybrid MBR" 메뉴를 이용해서 만든 것이다. 기존에 생성한 GPT 파티션 중에서 MBR 파티션에 어떤 놈을 보여 줄지를 지정하면 된다. 단, MBR 파티션은 Windows에서 사용하는 파티션이므로 vfat 또는 ntfs 파티션이어야 한다. gdisk의 GPT 파티션 상에서는 code가 0700(Microsoft Basic Data)인 놈들 중에서 골라야 한다. Hybrid-MBR에서는 EFI Protective Partition이 기본적으로 필요하기 때문에 실제로 사용자가 사용할 수 있는 파티션 갯수는 3개까지이다. 위의 화면에서 0xEE는 gdisk가 자동으로 지정한 파티션이다.

gdisk가 좋은 점은 파티션에 별짓을 다했다가도 "write table to disk and exit" 명령만 사용하지 않으면 실제로 파티션 변경이 일어나지 않는다는 것이다. "quit without saving changes" 명령으로 빠져 나오면 안전하다.

gdisk를 이용한 파티션 재구성

Windows 10을 Clean Install 하기로 한 마당에 더이상 사용하지 않는 Hackintosh 파티션인 MRoot(/dev/sda2)를 WRoot 파티션과 합쳐서 Windows OS 공간을 늘리기로 했다. 또, Grub에서 사용하는 BIOS boot partition(/dev/sda10)이 sector 순으로 보면 /dev/sda3가 됐어야 하는데 맨 나중에 생성하는 바람에 10번째 파티션이 되어 버린 것도 gdisk의 "sort partitions" 메뉴를 이용해서 재정렬할 필요가 있었다. 이것 때문에 gparted 실행시 경고 메시지가 뜬다.

그런데, 이 시점에서 Windows 10 설치 USB를 다시 만들어야 하는 문제가 있었다. 예전에 만들어 놓은 USB는 우분투 설치 USB에 함께 들어 있어서 Grub2에서 UEFI 모드로만 동작하기 때문이다. 별개의 USB를 사용하기 보다는 HDD에 4GB의 Windows 10 설치 파티션을 따로 만들어서 설치 iso의 파일들을 모두 복사해 놓고 Grub2를 사용하면 HDD를 이용해서 Windows를 설치할 수 있겠다는 생각이 들었다.

위의 고려 사항들을 종합해서 결과적으로 아래 화면과 같이 파티션을 재구성하였다. 파티션 재구성 작업시에는 앞서 만든 우분투 설치 USB로 부팅해서 작업해야 한다.


기존의 Grub BIOS 파티션을 지우고 EFI System Partition(ESP) 다음에 새로 만들었다. 그 다음에는 Windows 10 설치 파티션(WInst)을 만들고, 그 다음에 WRoot 파티션을 다시 만들었다. 파티션 재 구성시 주의할 점은 기존의 중요한 Data 파티션 들과 우분투 파티션은 건드리면 안된다는 것이다. 우분투 파티션은 Grub을 이용해서 Windows 10 설치 파티션으로 부팅시 사용해야 한다. 참고로, BIOS 모드에서는 ESP 파티션을 만들 필요는 없다. 다만, 공간도 그리 많이 차지하지 않고 UEFI 환경과 비슷하게 만들어 사용하는 것이 좋은 습관이 될 듯해서 그냥 둔 것이다.

gdisk에서 파티션을 생성한 후에 gparted를 사용하여 WInst와 WRoot 파티션을 ntfs로 포맷하였다. 아예 gparted로 파티션 작업을 할 수도 있겠지만 gdisk가 세부 정보를 보여 주기 때문에 편리한 점이 있다. 포맷을 완료 한 후에 gdisk에서 아래 화면과 같이 Hybrid MBR 파티션을 지정해 주어야 한다.


gdisk와 gparted 또는 다른 OS의 partition tool을 혼용해서 사용할 경우에는 항상 gdisk로 파티션 table에 변경사항이 없는 지 확인해야 한다. 실제로, gdisk에서 Hybrid MBR 파티션을 생성하고 나서 gparted에서 ntfs 파티션 포맷만 하더라도 Hybrid MBR 파티션 정보가 날아가 버린다. 이 정보가 날아가면 BIOS 환경에서 Windows로 부팅할 수 없게 된다.

또한, 위의 경우와 같이 Grub BIOS 파티션을 새로 생성하는 경우에는 우분투 파티션의 BIOS Grub을 다시 설치해 주어야 우분투로 부팅할 수 있다. Grub 재설치 방법은 이전 글인 "Ubuntu BIOS 및 UEFI Grub 복구"를 참고하면 된다.

Grub2와 HDD의 Windows 설치 파티션을 이용한 Windows 10 설치

우분투 설치 USB에서 파티션을 재구성한 후 우분투로 부팅해서 Windows 10 iso의 파일들을 WInst 파티션에 모두 복사한다. 그리고 나서, update-grub 하면 자동으로 Windows  Recovery 메뉴엔트리가 Grub에 추가된다. 참고로 우분투 14.04 환경이다. 이전 버전에서는 자동으로 안될 수도 있는데 이 때에는 수동으로 Grub menuentry를 /etc/grub.d/40_custom 파일에 만들어 주고 update-grub을 해 주어야 한다.

$ sudo update-grub
$ sudo reboot

재부팅 후 Windows Recovery 메뉴로 부팅해서 Windows 10 Clean Install을 진행하면 된다. Windows 설치 자체는 뭐 큰 어려움이 없다. 다만, 설치시에 설치할 파티션을 WRoot 파티션으로 지정해 주어야 한다.

Windows 10 설치 후 WInst 파티션은 D: 드라이브로 잡혀 있다. 이 놈은 숨겨 두는게 좋은데, 디스크 관리자에서 드라이버 문자만 제거해 주면 된다.

Windows 10 설치 후 Driver 문제

Windows 7에서 10으로 Upgrade 한 상태에서는 모든 Driver가 정상 동작했었는데 Windows Clean Install 후에 제어판의 장치관리자에서 확인해 보니 Video 드라이버도 기본 저해상도 드라이버로 잡혀 있고, 알 수 없는 장치로 표시된게 대부분이었다. 혹시나해서 드라이버 업데이트를 On-line에서 검색해서 설치하도록 했는데 대부분 잘 잡아 준다.

참고로, Dell 사이트에서는 m11x 드라이버는 Windows 7 밖에 지원하지 않는다. 그리고, Windows 7 드라이버의 설치 프로그램이 Windows 10에서는 아예 실행되지 않는다. 일단, 알수 없는 장치 두 개는 드라이버 업데이트를 할 수 없었고  Bluetooth도 안잡혀 있었다. Bluetooth는 Dell site에서 Windows 10을 지원하는 Bluetooth 4.0 드라이버를 다른 랩탑 모델 다운로드 사이트에서 시험삼아 설치해 봤는데 잘 된다. 알 수 없는 장치는 장치관리자의 상세 정보를 이용해서 구글링해 보니까 키보드 콘트롤 드라이버하고 낙하센서 드라이버인 듯 하다. 이외에도 키보드 LED Backlight 를 비롯한 LED 제어 드라이버도 필요하긴 한데 PC 쓰는데 큰 지장이 있는 것들은 아니어서 그런대로 만족이다.

Grub 복구

Windows를 설치하고 나서 우분투를 다시 사용하기 위해서 우분투 설치 USB로 다시 부팅해서 Grub 복구 작업을 다시 해 주어야 한다. "Ubuntu BIOS 및 UEFI Grub 복구"를 참조하면 된다.

노가다 소감

Windows 7 디스크 공간 문제 때문에 Windows 10 Clean Install 노가다를 했는데 그런대로 만족이다. 어차피 파티션 정리작업을 한번쯤 하려고 했었기 때문에... 더구나, BIOS GPT 환경에서 Hybrid MBR을 사용하는 유일한 PC이기도 했기 때문에 잊어버리기 전에 다시 여러가지 문제들을 정리할 기회가 되기도 했으니까.

보통 OS 설치시 USB를 많이 사용하는데 HDD를 사용해서 Windows를 설치하는 것도 괜찮은 방법인것 같다. 더구나 BIOS GPT 환경에서는 Windows의 제약 사항때문에 무척 편리한 방법이라는 것도 새삼스럽게 느껴진다.

2015/08/09

Windows 10과 Ubuntu Unity Desktop


Windows 10을 몇일 써 보니 Ubuntu Unity Desktop과 겉보기에는 다르지만 근본적으로는 비슷한 기능들이 보여서 사용자 관점에서 간단히 비교해 보기로 하였다. 사실, OS 들도 서로 모방하면서 발전하는 경향이 있기 때문에 단순히 우분투나 리눅스가 더 낫다고 주장하려는 것은 아니다.

Windows 8과 우분투 Unity Desktop - 사라진 "시작 메뉴"

Windows 8에서 Windows Tile의 등장으로 Windows Desktop은 Windows 앱 중의 하나로 전락했다. 더구나 Windows Desktop으로 진입한 후에도 "시작 메뉴"에 자신이 설치한 앱들이 나타나지 않는 것이 많은 사용자들을 당황하게 만든 것 같다. 오른쪽 위 언저리에 마우스를 갖다 대야 나타나는 앱 검색 기능은 Windows 8을 직접 설치한 사람이 아니라면 사용 방법도 모를 것이다. 사실, Windows 8을 설치하고 나서 Gnome Shell을 모방한게 아닌가 하는 생각이 들었었다. 우분투 Unity도 Gnome Shell과 Mac OS X 짬뽕인 것처럼 느껴지듯이...

"시작 메뉴"의 기원은 Windows 였고, "시작 메뉴"를 Desktop에서 처음 없앤 것은 Gnome Shell이었을 것이다. 우분투의 Unity Desktop에도 "시작 메뉴"가 없다. Windows 7까지의 Desktop 환경에 익숙한 사용자들은 마우스로 자신이 설치한 앱을 "시작 메뉴"에서 찾아 사용하던 습관을 버리기 어렵다. "시작 메뉴"가 사라진 Windows 8과 마찬가지로 우분투 Unity Desktop도 처음 우분투를 접하는 사용자들에게는 거부감을 줄 수 있다. 리눅스 Mint 사용자들이 우분투 사용자 보다 늘어나게 된 주요 원인 중 하나도 "시작 메뉴" 때문일 듯 하다. 더구나 "시작 메뉴"는 키보드에 [Windows] key가 배치되면서  더욱 사용자들에게 익숙해져 버렸다. 리눅스 Desktop 환경에서도 이 [Windows] key를 [Super] key로 사용하기 때문에 "시작 메뉴"는 Windows 사용자뿐만 아니라 리눅스 데스크탑 사용자들에게도 익숙한 것이다.

키보드가 있는 PC 환경에서는 "시작 메뉴"에서 마우스로 앱을 찾아 들어가 클릭하여 실행하는 것보다는, Gnome Shell이나 Unity Desktop에서 처럼 [Super(Windows)] key를 눌러서 앱이나 파일을 키워드로 검색하여 실행하는 것이 훨씬 효율적이다. Windows 8이나 우분투 Unity Desktop이 Touch 환경까지 고려해서 만든 것이지만, 키보드가 없는 Touch Pad 환경에서는 키워드 검색보다는 Touch로 "시작 메뉴"의 앱을 찾아 들어가 실행하는 것이 더 나을 수 있다.

그러나, Windows 8이나 Unity Desktop이나 "시작 메뉴"는 사라졌다. 그렇다고 Touch가 불가능한 것도 아니다. Windows 8에서는 앱들이 Tile에 배치되고 Unity Desktop에서도 Unity Launcher나 Dash에서 앱 아이콘을 Touch 할 수 있다. 그러나, 익숙한 카테고리 별로 앱들이 분류된 "시작 메뉴"와는 달리 일일이 원하는 앱을 찾기는 무척이나 힘들다.

Windows 10 "시작 메뉴" 부분 복귀와 우분투 Unity Desktop - 검색 기능

Windows 10에서는 부팅 후 Desktop이 기본 환경이 되었고 "시작 메뉴"도 부분적으로 부활했다.  Windows 7까지의 "시작 메뉴"와는 달리 카테고리가 알파벳 또는 가나다 순으로 배치되었다. 자주 사용하는 앱은 "시작 메뉴"의 Tile에도 배치할 수 있도록 Windows 8의 Tile 기능을 수정했다.

그렇지만, 자신이 설치한 앱이 "시작 메뉴"에 바로 나타나지 않기 때문에 "시작 메뉴" 복귀를 원했던 사용자들은 여전히 실망할 것이다. 참고로 "시작 메뉴"에서 모든 앱 보기로 가나다 순으로 배치된 앱을 찾아서 Tile에 앱 아이콘을 끌어다 놓으면 "시작 메뉴"의 Tile에 자주 사용하는 앱을 배치하는 것이 그리 어려운 일은 아니다. Tile 내에서도 수직으로 아이콘을 Tile이 없는 곳에 조금 더 밑으로 끌어다 놓으면 새로운 카테고리도 등록할 수 있다.

Windows 10에서 이 보다 더 주목할만 한 것은, 앱/설정/파일 검색기능을 "시작 메뉴" 및 Task bar에 배치함으로써 키워드 검색 기능을 Windows 8보다 더욱 강화시켰다. Windows 8에서는 검색기능이 숨어 있다는 점 외에도 사용자가 앱/설정/파일을 별도로 지정해서 검색해야만 원하는 결과를 얻을 수 있었지만, Windows 10에서는 인터넷 검색까지 포함해서 통합 검색 결과를 보여준다. 이는 우분투 Unity Desktop의 검색 기능과 거의 유사하다고 볼 수 있는 것이다.


하지만, Windows 10의 키워드 검색 기능은 다음과 같이 우분투 Unity Desktop/Gnome Shell 보다는 아직 한 수 아래다.
  • 앱 사용 목적에 따른 키워드 검색 지원이 안된다. Unity Desktop에서 "internet" 또는 부분 문자열인 "int"로만 검색해도 인터넷과 관련된 앱들을 보여주는데, Windows 10에서는 internet이라는 단어가 들어간 앱인 internet explorer만 검색된다.
  • 또한, 최근에 만든 문서 검색은 키워드 검색 후 [내 장치]에서 검색을 한번 더 선택해야 보여 준다. 탐색기에서 최근에 사용한 문서나 폴더를 볼 수도 있기는 하다. 하지만, Unity에서는 통합 검색 결과를 사용자들에게 유용한 형태로 보여준다.
  • 추가적으로, Windows에서는 파일 확장자 별로 기본 앱이 할당되어 있음에도 확장자로 검색하면 기본 앱을 보여주지 않는다. Unity는 확장자 검색도 지원된다. 가령, ppt를 검색하면 ppt 파일 뿐만아니라, Libre Office Impress도 검색된다.
이 외에도 한글 키워드 들이 제대로 동작하지 않는 것은 Unity나 Windows 10이나 비슷하다고 볼 수 있다. 가령, "word"로 검색하면 Office Word가 검색되지만, "워드"로 검색하면 워드패드만 검색되는 식이다. Windows 10의 키워드 검색 기능이 우분투보다 좋은 한 가지는 구글 검색처럼 한글 변환키를 누르지 않은 상태에서 한글 키워드 검색이 가능하다는 점이다. 가령, "메모" 대신 "apah"라고 검색해도 메모장을 보여주는 식이다.


참고로, 우분투 Unity에서는 Lens 확장 기능을 이용해서 야릇한(?) 것들에 대한 검색도 지원한다. 구글 검색에서 시도하는 것들을 다 집어 넣으려는 것인지 모르겠지만... 가령, 우분투 15.04의 Unity에서 "10*300"을 검색하면 계산기 앱을 띄워서 "3000"이라는 결과를 보여준다. 뭐 이런 것까지 지금 당장 필요해 보이지는 않지만 미래의 OS에는 야릇한 기능 들이 일상 기능이 될지도...

결론적으로, 우분투 Unity Desktop에서는 "시작 메뉴"가 없어도 키워드 검색만으로 충분하지만, Windows 10은 좀더 개선할 필요가 있다.

Windows 10 가상 데스크탑과 우분투 작업공간

Windows 10에서 처음으로 가상 데스크탑을 지원하기 시작했다. 가상 데스크탑의 수는 Gnome Shell처럼 동적으로 늘렸다 줄였다 할 수 있는 것이 특징이다. Taskbar의 검색 기능 바로 옆에 새로운 아이콘이 하나 생겼는데 이것이 가상 데스크탑 아이콘이다. 물론 Windows 3.1 시절부터 가상 데스크탑을 만들어 주는 앱들을 사용할 수는 있었지만 OS에서 지원하는 것이 아니다 보니 성능이 떨어질 수 밖에 없었다.


반면에 리눅스에서는 X-Window 초기 시절 부터 Workspace라는 이름으로 존재해 왔다. 거슬러 올라가면 리눅스의 Workspace도 Unix를 모방한 것이다. 우분투의 경우에는 [All Settings] > [Appearance] > [Behavior] Tab에서 [Enable workspace] checkbox에 설정을 해 주어야 Unity Launcher에 4분할 작업공간 icon이 나타난다. 작업공간 갯수는 4개가 기본이지만 더 늘릴 수도 있다.

리눅스 데스크탑에서는 각 작업공간에 실행 중인 앱을 마우스로 이쪽에서 저쪽으로 쉽게 Drag & Drop이 가능하다. Windows 10에서도 가능하긴 한데 좀 불편하다. 큰 창에 있는 앱을 화면 아래의 원하는 곳의 작은 가상 데스크탑으로 끌어다 놓아야 한다.


한편으로, Windows의 가상 데스크탑들은 현재 실행 중인 앱 정보가 데스크탑 별로 보안이 잘 유지된다. 우분투에서는  Unity Launcher에서 전체 Workspace에서 실행 중인 앱들을 어느 Workspace에서나 볼 수 있다. 우분투의 장점은 Workspace의 위치에 상관 없이 앱 전환을 빠르게 할 수 있는데 반해 Workspace 간의 실행 앱들에 대해 비밀 보장이 안된다. 뒤집어 얘기하면 Windows 10의 가상 데스크탑의 장점은 한쪽에서 게임을 하다가 다른 데스크탑으로 재빨리 이동하면 다른 사람들에게 들키지 않을 수도 있다는 말이다.

Windows 10 Edge Browser

우분투도 webbrowser라는 Qt 기반의 가벼운 자체 Web browser를 제공하고 있는데 공식적으로 자랑하고 있지는 않고, 기능도 그다지 좋은 편은 아니라서 Windows 10의 새로운 기본 Web Browser인 Edge와 비교하기는 좀 그렇다.

Edge는 잘 알려진대로 ActiveX를 지원하지 않고 타 Web Browser 들에 비해 성능도 무척 좋다. 한편, 각종 정보가 Edge를 통해 Microsoft로 새나갈 수 있다는 얘기도 있다. 다른 Browser에서 볼 수 없는 한가지 새로운 기능이 있는데, 특정 Web에 접속한 후 메모를 하고 저장할 수 있다. Screenshot으로 메모를 쉽게 저장할 수 있는 점은 유용해 보인다.

맺음 말

Windows 10과 우분투 Desktop 중 유사한 기능 들에 대해 간단히 비교했는데 누가 더 낫다기 보다는 이런 기능도 각각 필요해 보인다는 정도로 이해하면 될 것이다.

종합적으로는 Windows 10에서 키워드 검색기능이 더 보완되면 "시작 메뉴"가 더이상 필요하지 않을 수도 있다는 점을 강조하고 싶고, 우분투 사용자들에게는 이미 사라진 "시작 메뉴"에 연연해 할 필요가 없다는 점을 알려 주고 싶다.