오브리닷넷(Obbli.net)

오픈수세 11.1 - kiwi 로 LiveUSB 만들기 본문

기억소품/오픈수세 다듬기

오픈수세 11.1 - kiwi 로 LiveUSB 만들기

아주가끔은 2009.01.02 06:09
이전에 한번 시도하고 딱 한번 성공했는데 몇 일 뒤 다시 안되던 라이브USB 만드는 방법을 소개 합니다.

현재 오픈수세의 키위(kiwi)는 리눅스 이미징 프로젝트로 개발되고 있으며 주 사이트는 아래와 같습니다.
http://kiwi.berlios.de/
사이트에서 키위 설명서 파일(pdf)을 받을 수 있고, 키위 프로젝트의 svn 저장소나, 기타 배포판(우분투, 페도라 등)에 대한 정보를 얻을 수 있습니다.
이미 많은 메이저 배포판들(우분투, 페도라 등)은 LiveCD iso 이미지를 USB에 담아 사용하는 방법을 제공하고 있습니다. 그것들과 함께 본다면 이 LiveUSB 는 그런 부류라고 생각할 수 있겠지만 이건 약간 다릅니다.
이 LiveUSB 는 읽고/쓰기가 가능함에 따라 USB 메모리에 배포판을 설치 한것과 마찬가지 입니다. 사용에 따라서는 하드디스크를 대신해줄 멋진 도구가 될 수 있고, 웹 서버라던가 기타 서버류를 설치하여 하드디스크를 사용하는 서버 대용으로 사용하여 하드디스크로 인해 생기는 소음에 대한 대책(?)도 마련 할 수 있습니다.
이정도 얘기가 나오면, 요즘 차기 하드디스크로 떠오르고 있는 SSD 처럼 USB 메모리를 하드디스크 대용으로 사용할 수 있을것 같다는 생각을 하게 마련인데 그게 또 그렇지는 않습니다. 현재 흔히 판매되고 있는 USB 메모리는 모두 읽기 속도만 개선 된 MLC 방식이라 SLC 방식의 메모리가 아닌 이상 속도 개선은 기대하기는 힘들고 MLC 라면 CD 읽는것 만큼 느립니다. 그리고 설치 후에는 우리가 늘상 쓰는 저장매체인 "USB메모리"의 용도로는 사용할 수 없습니다.
일단 마련해놓고 넘치는 RAM 메모리를 램디스크로 사용하여 읽기/쓰기 스왑을 그쪽으로 물려서 속도를 개선해보는건 어떨까 생각도 해봤습니다만. 램디스크는 램디스크 나름대로 속도에는 타의 추종을 불허하지만 장치들간의 연관성에 있어서 좋은 효과를 보지는 못한다(안정성 등)는 얘기를 어디서 줏어 들었습니다.
그래도 이게 참 도전해보면 재미난 프로젝트라 어짜피 오픈수세 설치할 때는 이걸 사용하면 무척 빠르니, 남는 2GB USB 메모리가 있다면 재미삼아 담아 보는것도 좋을것 같네요. 그럼 기본적인 예제를 통해 LiveUSB 를 만들어 보겠습니다.

준비물
- 오픈수세 11.1
- LiveUSB 에 사용할 USB 메모리(2G 이상/가능하면 SLC 류)
- 저장공간 최소 6GB 이상


오픈수세 11.1 을 설치 해둡니다.(이건 뭐... 당연하겠죠?) 그리고 사용할 USB를 끼웁니다. "왜이러니..." 하실 필요 없습니다. 순서대로 안하면 안될 수도 있습니다. ㅡㅡㅋ

모든 작업은 관리자(root)로서 이행해야 합니다. kiwi 명령은 sudo 가 안먹히니 이점 알아두세요. su 를 사용하여 관리자 권한을 이행합니다.
예:
$ su ------------------ 관리자 권한 획득
열쇠글: --------------- 관리자 비밀번호 입력

USB가 자동마운트 된다면 마운트 해제해줍니다.
예:
# mount --------------- 마운트 되어 있는지 확인
# umount /dev/sdb ---- /dev/sdb 로 되어 있는 USB를 마운트 해제

아래 명령을 이용해 사용할 kiwi 도구들을 설치해둡니다.
# zypper in kiwi kiwi-config-openSUSE kiwi-desc-usbboot


지금부터 라이브 소스 만들기와 이미지 만들기를 해보겠습니다. 예제로 만들 데스크탑 환경은 KDE4 입니다.

라이브 소스 만들기
아래를 입력하여 라이브 소스에 필요한 설정파일을 건드립니다.
KDE 를 만드려면
# vi /usr/share/openSUSE-kiwi/usb-kde/config.xml

Gnome 을 만드려면
# vi /usr/share/openSUSE-kiwi/usb-gnome/config.xml

내용중 다음을 참조하여 굵은 글씨를 통으로 입력합니다. (gnome 도 다른건 건드리지 말고 같이..)
<preferences>
    <type primary="true" boot="/usr/share/openSUSE-kiwi/usb-kde/myiso" flags="unified">iso</type>
    <type boot="vmxboot/suse-11.1" filesystem="ext3" format="vmdk">vmx</type>
    <type boot="xenboot/suse-11.1" filesystem="ext3">xen</type>
    <!-- type boot="/usr/share/openSUSE-kiwi/usb-kde/myoem" filesystem="squashfs" flags="unified">oem</type -->
    <type boot="/usr/share/openSUSE-kiwi/usb-kde/myoem" filesystem="ext3">oem</type>
    <type boot="usbboot/suse-11.1" filesystem="squashfs">usb</type>
    <version>2.7.0</version>
    <size unit="M">1999</size>
    <packagemanager>zypper</packagemanager>
    <rpm-check-signatures>False</rpm-check-signatures>
    <rpm-force>False</rpm-force>
    <locale>ko_KR.UTF-8</locale>
    <oem-swap>no</oem-swap>
    <oem-boot-title>USB</oem-boot-title>
</preferences>
.....
<repository type="yast2">
    <source path="ftp://ftp2.kr.freebsd.org/opensuse/distribution/11.1/repo/oss/"/>
</repository>

(최근 freebsd.org 한국 미러에서 오픈수세를 미러한다는 소식을 접해서 그것을 사용했습니다.)
라이브 소스를 담을 임시 디렉토리를 만들고 라이브 소스를 만듭니다.
# mkdir /tmp/kiwi-tmp

KDE 는
# kiwi --prepare /usr/share/openSUSE-kiwi/usb-kde --root /tmp/kiwi-tmp --logfile terminal

Gnome 은
# kiwi --prepare /usr/share/openSUSE-kiwi/usb-gnome --root /tmp/kiwi-tmp --logfile terminal

이 작업은 상당한 시간을 요구하므로 중간에 멈춘다고 포기하면 안됩니다. time 으로 시간을 재보니 100MB 랜, 펜티엄4 1.4G, 256램 기준으로 아래 정도가 걸렸습니다.
real    40m59.858s
user    8m34.836s
sys     2m47.978s
가볍게 옵션 명령을 설명해 보자면
  • --prepare 로 사용할 소스의 설정 디렉토리를 지정합니다.
  • --root 로 라이브 소스가 들어갈 위치를 지정합니다.
  • --logfile terminal 로 해두면 화면상으로 진행사항을 보여줍니다. 다른 이름으로 하면 진행로그가 파일로 저장됩니다.

라이브 이미지 만들기
이미지 만드는 도중에 사용되는 .checksum.md5 를 삭제하거나 옮깁니다. 해두지 않으면 오류납니다.
# mv /usr/share/kiwi/image/usbboot/suse-11.1/.checksum.md5 /usr/share/kiwi/image/usbboot/suse-11.1/checksum.md5

이미지 생성에 사용할 설정파일(config.xml)을 수정합니다.
# vi /usr/share/kiwi/image/usbboot/suse-11.1/config.xml

설정파일의 내용 중 아래 굵은 글씨를 참조하여 수정합니다.
<?xml version="1.0"?>
<image schemeversion="2.4" name="initrd-usbboot-suse-11.1">
        <description type="boot">
                <author>Marcus Schaefer</author>
                <contact>ms@novell.com</contact>
                <specification>boot/initrd image for USB stick systems</specification>
        </description>

.....
                <file name="drivers/char/lp.ko"/>
                <file name="drivers/acpi/dock.ko"/>
        </drivers>
<repository type="yast2" status="replaceable">
                <source path="ftp://ftp2.kr.freebsd.org/opensuse/distribution/11.1/repo/oss"/>
</repository>

라이브 이미지를 생성할 디렉토리를 생성하고 만들어진 라이브 소스를 참조하여 이미지를 만듭니다.
# mkdir /tmp/kiwi-image
# kiwi --type usb --create /tmp/kiwi-tmp --destdir /tmp/kiwi-image --logfile terminal
...
...
Jan-02 10:50:59 <1> : KIWI exited successfully   done

걸린 시간은 아래..
real    26m30.504s
user    19m12.992s
sys     2m36.146s

이미지가 만들어졌으면 만들어진 이미지를 USB에 밀어넣습니다.
# kiwi --bootstick /tmp/kiwi-image/initrd-usbboot-suse-11.1.i686-2.1.1.splash.gz --bootstick-system /tmp/kiwi-image/openSUSE-11.1.i686-2.7.0
...
...
Jan-02 10:53:13 <1> : ---> 13e6e177c322b0 at /dev/sdb ------------------ 자동으로 USB 장치를 찾아줌
Jan-02 10:53:13 <1> : Your choice (enter device name): /dev/sdb ------- 입력
...
...
Jan-02 07:07:21 <1> : KIWI exited successfully                                                               done

걸린 시간은 아래..
real    13m25.720s
user    0m10.385s
sys     0m9.769s



이상 LiveUSB 만들기가 끝났습니다. 컴퓨터를 재부팅하여 부팅을 USB 메모리로 하면, 언어선택과 시간설정, root 및 사용자 설정이 나옵니다. 하나씩 잘 설정하고 데스크탑 환경에서 화면 해상도를 잘 조절해주면 바로 사용가능합니다.

잘 안되거나 틀린점이 있으면 얘기해주시기바랍니다.
신고
2 Comments
  • 프로필사진 kei 2009.03.14 23:24 신고 라이브 소슬 마는 부분에서 오류나느요
    임시 디렉토리는 만들었는데
    kde명령어 치니까
    [*** back trace follows ***]
    Trace Level 1 at /usr/share/kiwi/modules/KIWIXML.pm line 190
    KIWIXML::new('KIWIXML', 'KIWILog=HASH(0x8f9c9dc)', '/usr/share/openSUSE-kiwi/usb-kde', 'HASH(0x862b89c)', undef, 'ARRAY(0x8dcb8b4)') called at /usr/sbin/kiwi line 265
    main::main() called at /usr/sbin/kiwi line 2088
    Trace Level 2 at /usr/share/kiwi/modules/KIWIXML.pm line 192
    KIWIXML::new('KIWIXML', 'KIWILog=HASH(0x8f9c9dc)', '/usr/share/openSUSE-kiwi/usb-kde', 'HASH(0x862b89c)', undef, 'ARRAY(0x8dcb8b4)') called at /usr/sbin/kiwi line 265
    main::main() called at /usr/sbin/kiwi line 2088
    [*** end ***]
    [*** log excerpt follows, last 1 Kbyte ***]
    Mar-14 23:20:25 <1> : Setting log file to: rerminal
    Mar-14 23:20:25 <1> : Reading image description [Prepare]...
    Mar-14 23:20:25 <1> : EXEC [uname -m]
    Mar-14 23:20:25 <1> : EXEC [xsltproc -o /usr/share/openSUSE-kiwi/usb-kde/config.xml-next /usr/share/kiwi/xsl/convert14to20.xsl /usr/share/openSUSE-kiwi/usb-kde/config.xml 2>&1]
    Mar-14 23:20:25 <1> : XSL: Already at version > 2.0... skipped
    Mar-14 23:20:25 <1> : EXEC [xsltproc -o /usr/share/openSUSE-kiwi/usb-kde/config.xml-next /usr/share/kiwi/xsl/convert20to24.xsl /usr/share/openSUSE-kiwi/usb-kde/config.xml 2>&1]
    Mar-14 23:20:25 <1> : XSL: Already at version 2.4... skipped
    Mar-14 23:20:25 <3> : Scheme validation failed failed
    Mar-14 23:20:25 <3> :
    [*** end ***]

    라고 나오네요.
  • 프로필사진 Favicon of http://blog.obbli.net BlogIcon 아주가끔은 2009.03.15 00:16 신고 kiwi --prepare /usr/share/openSUSE-kiwi/usb-kde --root /tmp/kiwi-tmp --logfile terminal
    로 명령 내리니까 오류가 난단 말이죠?

    보통 보면 config.xml 파일이 잘못된 경우가 많습니다.

    그리고 별도로 지금 제가 해보니까 잘 되던데요?
댓글쓰기 폼