2014/09/27

uim 벼루 Qt5 immodule build


우분투 uim 기본 패키지에는 Qt5 immodule이 들어 있지 않아서 Qt5 애플리케이션에서 한글 입력이 안된다. uim 사이트에 가보니 2013/6/30일자 uim-1.8.6 소스가 최신인데 받아 보니 Qt5를 지원하지 않는다. 문서에도 Qt5에 대한 언급이 전혀 없다. 혹시나 해서 github에서 소스를 받아 보니 Qt5 immodule 소스가 있었다. Qt5 모듈을 build하는 문서가 없어서 좀 헤매야 했는데 헤맸던 것들을 정리한다.

결론은, uim Qt5 모듈을 사용하면 Qt5 애플리케이션에서도 한글입력은 잘 되는데, 안정성 문제가 있다. 한글 입력 문제에 관한 한 uim이 ibus보다 좋아 보인다.

uim Build 및 설치

uim 설치 가이드를 따라가면, 소스를 build하기 위해서 아래의 tool 들이 필요하다.

$ sudo apt-get install intltool
$ sudo apt-get install librsvg2-bin libtool ruby git

build에 필요한 header 파일들도 있어야 하고...

$ sudo apt-get install libanthy-dev libgtk2.0-dev libgtk-3-dev libqt4-dev

그런데, Qt5는 우분투 패키지 구성이 꽤 복잡하다. 한마디로 libqt5-dev가 없다. 일단, 아래 정도가 필요해 보인다.

$ sudo apt-get install qtbase5-dev qtbase5-private-dev qt5-default qtdeclarative5-dev

이제 다시 가이드 대로, 소스를 github에서 받아서 build하고 설치까지 문제가 없다. 아, 도중에 폴더 권한이 없다는 오류가 발생했었다. 해당 폴더(/usr/plugins)를 만들어 주고 사용자 권한을 주면 해결된다. Qt5 모듈이 엉뚱한 폴더를 중간 폴더로 사용하고 있었다.

그리고, ./uim/qt5/immodule/quimplatforminputcontext.cpp 파일 윗부분에 debug 사용하도록 define이 있는데 주석 처리하는게 좋다.

$ git clone https://github.com/uim/uim.git
$ cd uim
$ ./make-wc.sh --with-qt5 --with-qt5-immodule
$ make
$ sudo make install

위와 같이 해서 설치하면 /usr/local 하위 폴더들에 uim 파일들이 분산된다. 단, Qt5 모듈은 Qt5 폴더 (/usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts)에 설치된다.

Qt5 모듈은 가야할 위치에 이미 가 있어서 Dynamic loading 문제가 없다. 그런데, GTK 모듈들은 immodules.cache에 등록해 주어야 한다. GTK2는 별로 쓸일이 없을 것 같아서 GTK3 모듈만 아래와 같이 등록하였다.

$ /usr/lib/x86_64-linux-gnu/libgtk-3-0/gtk-query-immodules-3.0 /usr/local/lib/gtk-3.0/3.0.0/immodules/im-uim.so >> /usr/lib/x86_64-linux-gnu/gtk-3.0/3.0.0/immodules.cache

uim 자동 실행

시스템 설정 가이드에 보면 ~/.xinitrc나 ~/.xsession에 아래의 내용을 넣어 주면 된다는데 잘 안되었다.
export GTK_IM_MODULE=uim
export QT_IM_MODULE=uim
export QT4_IM_MODULE=uim
export XMODIFIERS=@im=uim
/usr/local/bin/uim-xim &
그래서, 우분투의 im-config를 사용하기로 하였다. 먼저, ~/.xinputrc에 아래 내용을 등록해 주고,
run_im uim
/usr/share/im-config/data/24_uim.rc 파일을 수정해서 /usr/local 폴더 위치를 잡아 주었다. 그리고 나서 재로그인하면 uim이 잘 기동된다.

uim Qt5 모듈의 문제점

Qt5 애플리케이션에서 한글입력은 아무 문제없다. 심지어 ibus의 Qt5 애플리케이션에서 발생하는 한글입력 문제도 없다. 그런데, 공식 사이트에 Qt5 모듈이 없는 이유를 알게 되었다. 불안정하기 때문이다. 일단, 두어가지 문제를 발견했다.
  • Qt5 애플리케이션을 새로 실행할 때마다 uim-candwin-qt5 프로세스 수가 계속 증가함
  • 애플리케이션을 중지하면 프로세스가 좀 줄어 들지만 다시 새로운 프로세스가 생김
  • Qt5 애플리케이션을 쓰다 보면 컴이 느려지는데 uim-helper-server 프로세스가 CPU를 거의 100% 가까이 잡아먹고 있음

참고 사이트

https://code.google.com/p/uim/wiki/InstallUim
https://code.google.com/p/uim/wiki/UimSystemConfiguration

2014/09/25

하드디스크의 우분투 설치 iso로 우분투 설치


(2014/10/29 오류 수정)

Facebook 우분투사용자모임에 USB 플래시 메모리 없이 하드디스크(HDD)로 우분투를 재설치 할 수 없느냐는 질문이 있어서 겸사겸사 정리해 보기로 했다. 이미 우분투가 설치되어 있는데 우분투를 업그레이드 하기 위해 Clean Install 하고자 한다면 굳이 USB를 사용하지 않아도 되기 때문에 매우 편리한 우분투 설치 방법이다.

우분투 설치를 USB를 사용하지 않고 하드디스크를 이용해서 설치하는 것은 우분투 설치 USB 만들기를 응용하면 쉽게 할 수 있다. 하드디스크를 USB라고 생각하면 되기 때문이다. 다만, 하드디스크에 Grub이 설치되어 있지 않다면 USB가 반드시 필요하기는 하다. 여기서는 우분투가 이미 설치되어 있는 경우에 하드디스크에 저장된 우분투 설치 iso로 우분투를 재설치하는 방법이다. Grub이 당연히 설치되어 있기 때문이다.

우분투를 재설치하려면 우분투 홈페이지에서 내려 받은 우분투 설치 iso 파일은 우분투를 새로 설치할 파티션과는 다른 파티션에 있는 것이 좋다. 평소에 OS와 데이터 파티션을 분리해서 사용하는 것은 여러모로 장점이 많다. Windows를 같이 사용하고 있다면 Windows 파티션에 iso 파일을 복사해서 사용해도 된다. 파티션이 하나 밖에 없다면 parted로 파티션을 분리하는 것이 좋고, 그게 어려우면 iso 폴더를 만들어서 우분투 설치 시에 덮어쓰기로 설치할 수도 있기는 하다.

우분투 설치 iso 파일 위치 확인

기존에 데이터 파티션은 /home에 마운트해서 사용하고 있고 aaa라는 사용자의 Downloads 폴더에 우분투 설치 iso를 내려 받았다고 가정한다. 향후에도 우분투 iso 이미지를 가지고 하드디스크에서 부팅해서 설치할 경우를 대비해서 아래와 같이 /home/boot-isos 폴더를 만들고 사용자 권한을 부여해 두면 좋다. 내려 받은 iso 이미지들은 모두 /home/boot-isos 폴더로 몰아 넣는다.

$ sudo mkdir /home/boot-isos
$ sudo chown aaa:aaa /home/boot-isos
$ mv ~/Downloads/*.iso /home/boot-isos

이제, /home이 어느 파티션인지 알아야 한다. 아래와 같이 /dev/sda9 파티션임을 알 수 있다.

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda8        92G   22G   65G  26% /
none            4.0K     0  4.0K   0% /sys/fs/cgroup
udev            3.9G  4.0K  3.9G   1% /dev
tmpfs           793M  1.4M  791M   1% /run
none            5.0M     0  5.0M   0% /run/lock
none            3.9G   17M  3.9G   1% /run/shm
none            100M   76K  100M   1% /run/user
/dev/sda11      145G  129G  8.7G  94% /opt
/dev/sda9        92G   29G   59G  34% /home
/dev/sda1       197M   48M  150M  25% /boot/efi

우분투 설치 iso 파일에 대한 Grub boot menu entry 등록

Grub에서 우분투 설치 iso로 부팅하려면 Grub boot entry를 새로 추가하되, 하드디스크 파티션 정보와 파일 경로를 지정해 주어야 한다. 위에서 /dev/sda9 파티션이니까 디스크의 9번째 파티션이다. 디스크는 첫번째 하드디스크이다. 즉, 아래 menu entry의 (hd0,9)에 해당한다. USB 메모리로 부팅할 경우에도 USB 메모리가 첫번째 디스크가 되므로 hd0이다. 또한, iso 파일 경로는 파티션을 기준으로 하기 때문에 /home/boot-isos/...가 아니라 /boot-isos/ubuntu-14.04.1-desktop-amd64.iso가 됨에 유의할 필요가 있다.
menuentry "HDD Ubuntu 64-bit iso" {
   set isofile="/boot-isos/ubuntu-14.04.1-desktop-amd64.iso"
   loopback loop (hd0,9)$isofile
   linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile noprompt noeject
   initrd (loop)/casper/initrd.lz
}
위의 내용을 nano등의 편집기를 사용하여 /etc/grub.d/40_custom 파일 맨 끝에 추가한다.

$ sudo nano /etc/grub.d/40_custom

/boot/grub/grub.cfg를 새로 생성하기 위해서는,

$ sudo update-grub

이제 재부팅 해서 Grub 메뉴 중 위에 만든 "HDD Ubuntu 64-bit iso" 메뉴를 선택한 후, 다시 "Try Ubuntu without installing" 메뉴를 선택해서 우분투 live CD 환경으로 부팅하면 iso 이미지로 부팅해서 우분투를 설치할 수 있게 된다.

$ sudo reboot

우분투 설치 iso로 재부팅 후 우분투 설치전에 해야 할 일

우분투 14.10을 이 게시물 대로 하드디스크의 iso 이미지로 설치하다가 뭔가 빠졌음을 알게 되었다. 우분투 설치 파일을 마구 복사하면서 빨리 설치가 진행되어야 하는데  File System을 인식하지 못해 설치가 진행되지 않고 계속 멈춰 있는 증상이다.

설치 중에 파티션 테이블을 건드리는데 하드디스크의 iso 이미지를 사용하기 위해 하드디스크를 mount 상태로 두고 있으니 파티션 테이블을 수정할 수 없게 된다. 물론 설치 과정 중에 unmount 할지 물어보고 yes라고 해도 root 권한이 없으니 unmount가 안된다.

우분투 설치 icon을 click 하기 전에 <Ctrl>+<Alt>+<t>로 터미널을 띄워서 아래와 같이 umount 해주면 된다.

$ sudo umount -l /isodevice

ibus 기동 방지 및 uim 벼루 설치


우분투 14.04에서 ibus 대신 uim 벼루와 같은 다른 입력기를 테스트 해보려고 ibus를 삭제하면 불상사가 생기니 삭제하지 말고 ibus 프로세스만 기동되지 않도록 하는 방법을 찾을 필요가 있었다.

ibus를 삭제하면

우분투 14.04에서 ibus를 삭제하면 아래 스크린 샷과 같이 [시스템 설정] 메뉴가 대폭 사라지는 일이 생긴다.


원래의 [시스템 설정] 스크린 샷은 아래와 같다.


아래에서 알 수 있듯이 삭제 명령 실행시 ibus만 지워지는게 아니기 때문이다. 한마디로 ibus를 붙박이로 써라는 엉뚱하고도 고약한 패키지 dependency이다.

$ sudo apt-get remove ibus ibus-hangul
[sudo] password for aaa: 
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다       
상태 정보를 읽는 중입니다... 완료
다음 패키지가 자동으로 설치되었지만 더 이상 필요하지 않습니다:
  libhangul-data libhangul1
Use 'apt-get autoremove' to remove them.
다음 패키지를 지울 것입니다:
  ibus ibus-hangul ibus-pinyin ibus-table ubuntu-desktop unity-control-center
  unity-control-center-signon webaccounts-extension-common xul-ext-webaccounts
0개 업그레이드, 0개 새로 설치, 9개 제거 및 0개 업그레이드 안 함.
이 작업 후 8,654 k바이트의 디스크 공간이 비워집니다.
계속 하시겠습니까? [Y/n] 
다시 복구하기 위해서 아래와 같이 하면 ibus와 ibus-hangul 두 개만 달랑 설치된다.

$ sudo apt-get install ibus ibus-hangul

아래와 같이하면 ibus도 같이 설치되고 [시스템 설정]도 원래의 상태가 된다.

$ sudo apt-get install ubuntu-desktop unity-control-center unity-control-center-signon webaccounts-extension-common xul-ext-webaccounts

로그인시 ibus 프로세스가 자동 시작 방지 및 uim 벼루 설치

ibus를 삭제하려던 원래 이유는 uim 벼루와 같은 다른 입력기를 테스트해 보기 위해서 였다.

예를 들어, uim/uim-byeoru를 아래와 같이 설치하고 나서,

$ sudo apt-get install uim uim-byeoru

[시스템 설정] > [언어 지원]에서 [키보드 입력기]를 uim으로 바꾸고 재로그인해도 ibus 프로세스들이 같이 떠 있다. 구글링해 보니 굳이 ibus를 지우지 않아도 ibus 프로세스가 로그인시 기동되지 않도록 하는 방법이 있었다.

$ gsettings set org.gnome.settings-daemon.plugins.keyboard active false

위와 같이하고 다시 로그인하면 더이상 ibus 프로세스가 기동되지 않는다.

추가적으로, 기존에 ibus 환경에서 <Shift>+<Space> 등의 키를 한영 변환키로 사용했는데 uim에서도 같은 키조합을 사용하려면 [시스템 설정] > [텍스트 입력창]에서 단축 키를 다른 키로 바꿔 주어야 한다. 단축 키에 대한 우선권이 거기에 있기 때문이다.

Unity 상단 패널의 키보드 indicator도 ibus에서만 사용하는 것이므로 안보이도록 설정하려면,

$ gsettings set com.canonical.indicator.keyboard visible false

uim에서 한영키를 등록하려면 uim-pref-gtk를 실행시켜서 [벼루 키 설정 1]에 한영키("hangul")를 추가해 주면 된다.

$ uim-pref-gtk

uim 벼루의 제약 사항

일단, 두가지 제약 사항이 있다. 하나는 Unity 상단 패널에 uim indicator가 등록되지 않아 한영 상태를 구분하기 어렵다는 것이고, 다른 하나는 Qt5 애플리케이션에서 한글입력이 안된다는 것이다.

참고로, Mint 17에서는 uim indicator가 정상 동작한다.

2014/09/24

btrfs Snapshot을 이용한 Roll-back


btrfs 파일시스템이 나온지도 꽤 됐지만 올해 처음으로 VirtualBox에 우분투 설치하면서 btrfs 를 기본 파일시스템으로 설정해서 설치해 보았다. 몇 달 써 봤는데 역시 가장 실용적인 장점은 Snapshot 기능이었다. Snapshot을 만들어 두었다가 불안정한 Software를 설치 후 문제가 생겨서 roll-back 할 때 실제로 매우 유용하게 써먹고 있다. btrfs 파일시스템은 지금도 리눅스 kernel 단에서 활발히 개선되고 있다.


btrfs 파일시스템 사용에 대한 고려 사항

Snapshot 기능 외에 나중에 몇가지 테스트 해 보고 싶은 것은 Subvolume 압축과 Sanpshot을 다른 Machine으로 ssh를 이용해 send/receive 하는 기능이다. 이외에도 서버 사용자라면 btrfs 파일시스템이 LVM을 대체할 수 있고 RAID 구성도 가능하며, Subvolume quota 기능도 유용할 수 있다.

btrfs 파일시스템이 장점만 있는 것은 아니다. 일단, Meta 정보를 따로 관리해야 하기 때문에 디스크 용량이 실제 데이터 용량보다 더 많이 소모될 수 있다. 실제로 Snapshot을 과도하게 사용하다보면 Meta Data 량이 과도하게 증가한다. 또한, 파일시스템 특성 상 디스크 사용량을 실시간으로 정확히 파악하기 어렵다. 서버 사용자라면 Disk full이 언제 발생할지 예측하기 어렵다. 기존의 df나 du와 같은 디스크 용량 정보는 거의 의미가 없다. 가능한 디스크 용량을 정확히 계산하기 위한 Tool을 만들려고 노력은 하고 있단다. 또한, 디스크 성능 이슈도 발생할 수 있다. 성능이 개선되고는 있지만 ext4 파일시스템에 비해 빠르지는 않은 듯하다. 이외에도 파일시스템 안정성은 이미 크게 개선이 된듯하다.

btrfs Subvolume

btrfs 파일시스템에서는 Subvolume 단위로 파일시스템을 관리할 수 있는데 Snapshot도 일종의 Subvolume이다. 또한, Subvolume은 폴더와 비슷하게 관리할 수 있는 장점이 있다. Subvolume 내에 또 다른 Subvolume을 생성할 수 있는 구조이다. Subvolume에 대해 mv나 rm도 가능하지만 rm을 직접 사용하는 것은 권장하지 않는다. Subvolume 간의 작업은 독립적이다. 즉, Subvolume 내에 하위 Subvolume이 있어도 상위 Subvolume의 Snapshot은 하위 Subvolume을 포함하지 않는다. 

우분투에서 설치시에 파일시스템을 btrfs로 선택해서 설치하면 @와 @home 두 개의 Subvolume을 자동으로 만들어 준다. @는 /(root) 파티션에 해당하고 @home은 /home 파티션에 해당한다. 즉, OS와 사용자 데이터를 Subvolume으로 나누어서 관리하도록 해준다. 그리고, 예전에는 Grub이 btrfs 파일시스템을 지원하지 않아서 /boot 파티션을 ext4 등으로 따로 만들어야 했던 문제는지금은 해결이 됐다. 참고로, Subvolume명 앞에 @를 사용할 필요는 없지만 @를 앞에 붙이는 것이 관리상 편리하다.

btrfs-tools

모든 btrfs 파일시스템 관리는 btrfs 명령으로 이루어지는데 우분투에서는 btrfs-tools 패키지에 들어 있다. 설치 시에 btrfs 파일시스템으로 지정하면 기본으로 btrfs-tools가 설치되지만, ext4 등의 다른 파일시스템으로 지정한 경우에는 별개로 설치해 주어야 한다. 참고로, ext2~4 파일시스템은 btrfs-tools를 이용해 btrfs 파일시스템으로 전환할 수 있고, 이렇게 변환된 btrfs 파일시스템을 다시 ext2~4 파일시스템으로 재변환 할 수도 있다. 다만, 원래부터 btrfs 파일시스템으로 우분투를 설치했다면 ext2~4 파일시스템으로의 전환은 불가능하다.

btrfs Subvolume Snapshot 만들기

우분투 처음 설치했을 때의 btrfs Subvolume은 아래와 같이 확인할 수 있다.

$ sudo btrfs subvolume list /
ID 258 gen 2987 top level 5 path @home
ID 286 gen 2988 top level 5 path @
우분투 OS 부분만 Backup 해 두기 위해 아래와 같이 @에 대해 @backup 이라는 Snapshot Subvolume을 아래와 같이 만든다.

$ sudo btrfs subvolume snapshot @ @backup

Snapshot을 이용한 Roll-back

이제 불안정한 Software를 설치했는데 문제가 생겨서 원래 우분투 OS 설치 상태로 돌아가고 싶으면 앞서 만든 스냅샷을 이용해서 아래와 같이 복원할 수 있다.

먼저, 파티션이 여러 개라면 / 폴더가 위치한 파티션을 알아 둘 필요가 있다. 아래에서 /dev/sda2임을 알 수 있다.

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2        19G   12G  5.5G  69% /
none            4.0K     0  4.0K   0% /sys/fs/cgroup
udev            991M   12K  991M   1% /dev
tmpfs           201M  888K  200M   1% /run
none            5.0M     0  5.0M   0% /run/lock
none           1001M  152K 1001M   1% /run/shm
none            100M   52K  100M   1% /run/user
/dev/sda2        19G   12G  5.5G  69% /home
/dev/sda1       197M  8.2M  189M   5% /boot/efi
아래와 같이 /dev/sda2를 마운트해서 roll-back 작업을 수행한다.

$ sudo mount /dev/sda2 /mnt
$ cd /mnt && ls -l
drwxr-xr-x 1 root root 226  9월 24 21:12 @/
drwxr-xr-x 1 root root 204  6월 13 01:32 @backup/
drwxr-xr-x 1 root root  12  6월 26 18:04 @home/
drwxr-xr-x 1 root root  58  6월 13 01:25 ubiquity-apt-clone/
drwxr-xr-x 1 root root   6  6월 13 01:25 var/
문제가 있는 @를 @problem이라는 Subvolume으로 옮기고 나서,

$ sudo mv @ @problem

@backup 스냅샷에 대한 스냅샷으로 다시 @를 만들어 roll-back 함으로써 @backup 스냅샷을 계속 보존할 수 있다.

$ sudo btrfs subvolume snapshot @backup @

이제 원복한 파일시스템을 사용하기 위해서 재부팅이 필요하다.

$ sudo reboot

재부팅 후, 모든 것이 정상임을 확인한 후에 문제가 됐던 @problem Subvolume을 삭제하려면,

$ sudo btrfs subvolume delete @problem

btrfs 명령어 축약

btrfs 명령이 너무 길기 때문에 사용하기 불편한데 아래와 같이 명령어를 단축할 수 있다.

subvloume = sub, snapshot = snap, filesystem = file, delete = del

예를 들어, 위에서 @backup Snapshot을 만들 때의 명령은 아래와 같이 해도 동일하다.

$ sudo btrfs sub snap @ @backup

사실은, 하위 명령어가 중복되지 않는 범위에서 하위 명령어들을 최대한 축약해도 된다. 즉, 위의 명령은 아래와 같이 해도 된다.

$ sudo btrfs su sn @ @backup

기타 btrfs 명령어

$ sudo btrfs filesystem show
Label: LRoot  uuid: 7f51f770-fe96-4f1f-860d-95215173b0f2
    Total devices 1 FS bytes used 11.00GiB
    devid    1 size 18.80GiB used 17.04GiB path /dev/sda2

Btrfs v3.12
$ sudo btrfs filesystem df /
Data, single: total=14.01GiB, used=10.33GiB
System, DUP: total=8.00MiB, used=16.00KiB
System, single: total=4.00MiB, used=0.00
Metadata, DUP: total=1.50GiB, used=691.88MiB
Metadata, single: total=8.00MiB, used=0.00
$ sudo btrfs filesystem defragment /


참고 사이트

https://btrfs.wiki.kernel.org

2014/09/04

Ubuntu WINE 한글 설정 및 iso 이미지/CD 교체


우분투에 WINE 1.7을 설치하고 나서 Windows Application에서 한글이 잘 보이도록 설정하는 법과 Game 등 두 개 이상의 CD를 사용해서 소프트웨어를 설치 해야 하는데 iso 이미지들을 사용하여 교체하는 법에 대해서 정리한다.

WINE 기본 환경 설정

먼저, ~/.bashrc 파일에 아래의 환경 변수들을 설정해 둘 필요가 있다. 64-bit 우분투를 사용하는데 Windows 소프트웨어가 대부분 32-bit이므로 여기에 맞춰 줄 필요가 있다.
export WINEARCH=win32           # WINE architecture for 32-bit
export WINEPREFIX=~/.wine32     # WINE default folder for 32-bit
export WINEDEBUG=-all           # disable WINE debug messages
export LANG=ko_KR.utf8          # 한글 입출력
WINE 기본 환경설정은 winecfg를 실행해서 바꿔주면 된다.

$ winecfg

[응용 프로그램] 탭에서 실행 환경의 윈도우즈 버전을 Windows NT 4.0과 같이 맞춰줄 수도 있고, [그래픽] 탭에서 [가상 테스크탑 흉내내기]를 선택하여 적절한 데스크탑 크기를 지정할 수 있다.

WINE Windows 프로그램에서 한글 설정

Windows 프로그램에서 한글 입출력을 사용하려면 기본적으로 위의 LANG 환경 변수를 ko_KR.utf8로 반드시 설정해 주어야 한다. ibus 환경에서도 한글 입출력은 잘 된다.

registry 편집기에서 한글 폰트를 바꾸거나 일부 애플리케이션에서 한글 글꼴이 네모로 보이는 문제를 해결하려면 "아무도안" 블로그 중 "Wine 1.7 한글 글꼴 설정"을 참고하면 된다. 

Windows용 카카오톡에서 한글 입력을 하려면 아래의 패키지를 winetricks로 설치하고 나서 카카오톡을 설치해야 한다.

$ winetricks gdiplus wmp10 reiched20

WINE 프로그램에서 iso 이미지를 이용한 CD 교체

주로 게임 소프트웨어 설치시 여러 장의 CD로 구성되어 있어서 CD를 교체하라고 할 때가 있다. 요즘은 CD 대신 iso 이미지를 마운트해서 사용하므로 WINE에서 iso 이미지를 교체할 필요가 있다. 첫 번째 iso 이미지에서 setup 실행은 문제가 없는데 CD 교체하라고 할때 winecfg의 [드라이브] 탭에서 CD 경로를 바꾸어 주어도 안된다.

d: 드라이브가 CD 드라이브라면, CD를 교체하라는 메시지가 나오면 아래와 같이 해주고 확인을 선택하면 된다.

$ cd ~/.wine32/dosdevices
$ ln -sf <iso 파일 명을 포함한 경로> d::

예를 들어, ~/iso 폴더에 iso 이미지 들이 들어 있다고 가정하면,

$ mkdir ~/iso/cdrom
$ mount ~/iso/CD_install_1.iso ~/iso/cdrom
$ wine ~/iso/cdrom/setup.exe

첫번째 iso 이미지에서 설치가 끝나고 두 번째 CD를 넣으라고 하면,

$ umount ~/iso/cdrom
$ mount ~/iso/CD_install_2.iso ~/iso/cdrom
$ cd ~/.wine32/dosdevices
$ ln -sf ~/iso/CD_install_2.iso d::
$ ls -l
lrwxrwxrwx 1 aaa aaa 30 Aug 16 19:29 d: -> /home/aaa/iso/cdrom/
lrwxrwxrwx 1 aaa aaa 41 Aug 16 19:36 d:: -> /home/aaa/iso/CD_install_2.iso
위의 예에서와 같이 d: 드라이브가 마운트 폴더인 ~/iso/cdrom 폴더에 소프트 링크되어 있고, d::는 d: 드라이브에 대한 실제 iso 이미지 파일의 소프트 링크가 되어야 한다.

2014/09/03

Windows와 Ubuntu에서 삼성 프린터 WIFI


삼성 복합기 프린터 SL-C463W에서 무선 공유기로 WIFI 연결을 해야하는데 시행착오 끝에 겨우 연결했다. 의외로 우분투에서는 오픈소스 드라이버로 쉽게 연결된다. 문제는 Windows에서 드라이버 설치 후 무선으로 인쇄가 안되었다. OS 설치할 때마다 발생하는 문제라 정리해 둔다. HP WIFI 프린터 들은 일반 TCP/IP 설정으로 잘 되는데 삼성 프린터는 잘 안되고 복잡하다. 참고로, 프린터에서 고정 IP를 지정하였다.

Windows에서 삼성 프린터 WIFI 연결

제어판에서 프린터 추가할 때 Local Printer 선택해서 TCP 포트에 프린터 IP 주소 넣어서 추가한다. Windows Update에서 Printer Driver를 가져오도록 하고나서 Samsung C460 드라이버를 설치한다. 기본 프린터로 설정하고 나서 Test Page 인쇄하면 잘되는 듯 싶지만 인쇄 오류가 발생한다.

삼성 사이트에서 SL-C463W 다운로드 페이지에 들어가면 소프트웨어가 있는데 Easy Wireless Setup이라는 놈이 있다. 이 놈을 내려 받아서 실행하면 프린터의 WPS 버튼을 누르라고 한다. 이걸 눌러 주면 WIFI 연결이 된다.

Ubuntu 삼성 프린터 WIFI 연결

위의 삼성 사이트에 Linux용 드라이버가 있는데 그걸 써도 되고, 오픈소스 드라이버를 써도 프린트하는 데는 문제없다.

[System Settings] > [Printers] > [Add] > [Select Device] > [AddSocket/HP JetDirect] 선택 후 오른 쪽의 [Location of network printer] > [Host]에 프린터 IP 주소를 지정하고, [Forward] > [Choose Driver] > [Select Driver] > [Select printer from database] > [Generic] > [Forward] 하면 [PCL 6/PCL XL] > [PCL 6/PCL XL Printer Foomatic/pxlcolor[en] (recommended)] 오픈소스 드라이버를 추천해 준다. [Forward] > [Describe Printer] > [Printer Name]에 프린터 명을 지정해 주면 프린터가 추가된다.

Test Page를 인쇄하려면 추가된 프린터를 선택해서 마우스 우클릭해서 [Properties] > [Settings] > [Print Test Page]를 선택하면 된다.

Kubuntu 한글 설정 및 ibus 사용


Kubuntu 14.04를 Virtual Box에 설치해 보았다. 쿠분투는 한글 사용 환경이 개판이다. 설치부터 한글이 깨져서 영문으로 설치해야 했다.

한글을 사용하기 위해서 해 주어야 했던 작업 들을 기억나는 대로 정리한다.

언어 추가

[System Settings] > [Locale] > [Laguage] 탭 > [Korean] 추가

나눔 폰트 설치

$ sudo apt-get install fonts-nanum fonts-nanum-coding fonts-nanum-extra
$ sudo fc-cache -fv

폰트 설치 후 나눔 폰트를 지정하기 위해서는 [System Settings] > [Apperance] > [Fonts] 에서 나눔 글꼴 선택

ibus 설치

$ sudo apt-get install ibus ibus-hangul

환경변수 설정

~/.bashrc 또는 ~/.profile에 아래 환경 변수 추가
export LC_ALL="ko_KR.UTF-8"
export LANG="ko_KR.UTF-8"
export LANGUAGE="ko_KR:ko:en_GB:en"

export GTK_IM_MODULE=ibus
export QT_IM_MODULE=ibus
export XMODIFIERS=@im=ibus

ibus를 KDE 시작시 기동하도록 추가

[시스템 설정] > [시스템 관리] > [시작 및 종료] > [자동 시작] > [데스크톱 파일] > [프로그램 추가] 에서 아래 두개 항목을 추가한 후 재 로그인 필요
ibus-daemon --xim -d
/usr/lib/ibus/ibus-x11
참고로, 원래는 --xim 옵션만 주면 ibus-x11이 떠야 하는데 안뜬다. Arch wiki에도 KDE 환경에 대해 비슷한 설명이 있다. 특히, LibreOffice 섹션을 참고할 필요가 있다.

ibus에서 한영키 사용 설정

$ ibus-setup

실행 후 [일반] 탭 > [다음 입력기] > [...] > [키 코드] 에 Hangul 추가 후 [확인]

기타 참고 사항

쿠분투 14.04 KDE에서 locale이 꼬이는 버그가 있다.

2014/09/02

Dell 복구 파티션을 이용한 Windows 7 복구


Windows 8.1로 Upgrade 했던 Dell PC가 있는데 Windows 7으로 다운그레이드 해 달라는 가족의 압력에 구글링을 통해 복구에 성공했다. 다시 복구할 일이 생길지 모르니 잊어 버리기 전에 정리한다.

imagex.exe 프로그램 준비

Windows AIK iso 이미지를 내려 받아서 설치하면(Windows 8.1에서) imagex.exe 프로그램이 있는데, 64-bit PC이므로 amd64 폴더에 있는 것을 사용한다. USB나 D: 드라이브에 복사해 놓는다. 다행히 항상 OS와 Data 파티션을 분리해 놓고 있어서 OS 재설치시 Data Backup이 따로 필요하지 않은 게 다행이다.

Windows 7 설치 USB로 부팅해서 Recovery Partition의 이미지 복원

혹시나 Windows 8 파일과 뒤섞이지 않도록 USB로 부팅한 뒤 C: 드라이브를 포맷해 버렸다. <Shift>+<F10>키를 눌러 명령창(Command Prompt)을 연다. USB로 부팅하면 명령창에서는 드라이브 문자가 뒤죽박죽이다. 명령창을 열었을 때 기본 드라이브가 X:, Dell Recovery Partition은 C:, Windows 8이 설치됐던 파티션은 E:, Data 파티션은 D:로 할당되어 있었다.

Dell Recovery Partiton은 파일들이 숨겨져 있어서 "dir /a" 명령으로 폴더를 볼 수 있다. 아래와 같이 한 후 재부팅하면 복구된 Windows 7으로 부팅할 수 있다.
C:\> dir /a 
C:\> cd dell\image
C:\> d:imagex.exe /apply FACTORY.WIM 1 E: /ref FACTORY1.WIM /ref FACTORY2.WIM
위에서 Dell의 복구 이미지 파일이 3개이고, E: 드라이브로 Windows 7을 복구한다는 의미이다.

처음에는 구글링 결과 아래와 같이 해도 되는 줄 알았는데 100%까지 복원이 끝난 후 오류가 발생하였기 때문에 위와 같이 했더니 잘 되더라.
C:\> d:imagex.exe /apply FACTORY.WIM 1 E:
참고로, 이미지 파일의 내용을 보고 싶다면 아래와 같이 하면 된다. imagex 명령의 옵션에 숫자 1이 항상 따라 붙는데 이미지 파일 번호이다.
C:\> d:imagex.exe /dir FACTORY.WIM 1

기타 참고 사항

Windows 7에서는 부팅 후 <F8>키로 부팅 옵션을 선택할 수 있는데 Windows 8+에서는 <F8>키가 작동하지 않는다. Windows 8에서 복구 모드로 진입하려면 <Shift> 키를 누른 상태에서 전원 재시동 버튼을 클릭하면 된다.


참고 사이트

http://bolsiroo.tistory.com/253
http://technet.microsoft.com/en-us/library/cc748966(v=ws.10).aspx