个人工具

UbuntuHelp:Ko/LiveCDCustomization

来自Ubuntu中文

跳转至: 导航, 搜索

우분투 데스크탑 CD 개인화하기

우분투 데스크탑(라이브) CD 를 다음과 같이 개인화 할 수 있습니다.

  • 자신만의 리눅스/우분투 배포판 만들기
  • 특정 프로그램 강조하기
  • 특정 언어에 맞게 로케일 설정하기
  • 프로그램 패키지 제거하기
  • 프로그램 패키지 추가하기
  • 프로그램 패키지 업데이트하기
  • 시스템 기본값 변경하기(테마, 아이콘, 데스크탑 배경, 패널, 웹브라우저 홈페이지 등)

IconsPage?action=AttachFile&do=get&target=warning.png 이 문서는 데스크탑/라이브 CD 를 위한 안내서입니다. 얼터네이티브(Alternative)나 서버 설치 CD 에 대해서는 다른 페이지를 참조하십시오.

시스템 요구 조건

  • 3-5GB 이상의 하드 디스크 여유 공간
  • 512MB 메모리와 1GB 이상의 스왑(권장)
  • `squashfs-tools`
  • `genisoimage` : `mkisofs` 제공
  • `squashfs` 을 지원하는 우분투 커널(우분투 6.06 이후 버전)
  • QEMU/KVM, 테스트를 위한 VirtualBox 또는 VMware(선택 사항)

작업 과정

먼저 필요한 프로그램들이 설치되어 있는지 확인합니다.

sudo apt-get install squashfs-tools genisoimage

squashfs 모듈을 로드합니다.

sudo modprobe squashfs

http://releases.ubuntu.com/ 에서 공식 데스크탑 CD 를 내려받습니다. (참고: 여기서는 ubuntu-8.10-desktop-i386.iso 데스크탑 CD를 사용합니다.) 내려받은 CD 이미지를 빈 디렉토리로 옮기거나 복사합니다.

mkdir ~/live
mv ubuntu-8.10-desktop-i386.iso ~/live
cd ~/live

CD 이미지 풀기

데스크탑 .iso 이미지를 마운트 합니다.

mkdir mnt
sudo mount -o loop ubuntu-8.10-desktop-i386.iso mnt

.iso 안의 파일들을 'extract-cd' 디렉토리로 풉니다.

mkdir extract-cd
rsync --exclude=/casper/filesystem.squashfs -a mnt/ extract-cd

데스크탑 시스템 풀기

squashfs 파일시스템을 마운트합니다.

mkdir squashfs
sudo mount -t squashfs -o loop mnt/casper/filesystem.squashfs squashfs

squashfs 안의 파일들을 'edit' 디렉토리로 풉니다.

mkdir edit
sudo cp -a squashfs/* edit/

준비 과정과 chroot

chroot 환경에서 네트워크 접속이 필요하면 다음과 같이 합니다.

sudo cp /etc/resolv.conf edit/etc/

자신의 시스템 설정에 따라 hosts 파일을 복사해야 할 필요가 있을 수도 있습니다.

sudo cp /etc/hosts edit/etc/
sudo mount --bind /dev/ edit/dev
sudo chroot edit
mount -t proc none /proc
mount -t sysfs none /sys

(이는 호스트 시스템의 주요 디렉토리를 마운트하는 과정입니다. 나중에 디렉토리를 삭제하거나 편집하려면 해당 디렉토리가 언마운트되었는지 확인해야 합니다. 그렇지 않으면 호스트 시스템이 재부팅을 하기 전까지 일시적으로 불안정해질 수 있습니다.) 로케일 문제가 발생하는 것을 방지하고 GPG 키를 가져옵니다.

export HOME=/root
export LC_ALL=C

개인화

Apt-get

설치된 패키지들의 크기를 확인합니다.

dpkg-query -W --showformat='${Installed-Size} ${Package}\n' | sort -nr | less

purge 옵션을 사용해 불필요한 패키지를 제거합니다.

apt-get remove --purge package name

GNOME 배경 화면 변경하기

일반적으로 배경 화면 파일은 /usr/share/backgrounds에 있습니다. 배경 화면으로 사용할 파일을 이곳에 복사하고 소유자와 파일 접근 권한을 변경합니다. 그리고 다음 파일들을 수정합니다.

  1. /usr/share/gnome-background-properties/ubuntu-wallpapers.xml
  2. /usr/share/gconf/defaults/16_ubuntu-artwork 또는 같은 디렉토리에 있는 다른 파일.

에서 /usr/share/backgrounds/warty-final-ubuntu.png 을 원하는 파일의 경로로 변경합니다. 다른 설정 파일들도 수정을 하거나 속성을 추가합니다.(예: /var/lib/gconf/debian.defaults/%gconf-tree.xml 또는 /etc/gconf/gconf.xml.defaults/%gconf-tree.xml). 참조: 대퍼(Dapper) 버전의 경우...

gconf 값 수정하기(글꼴, 패널 등)

gconf 속성을 변경하려면 /etc/gconf/gconf.xml.defaults/%gconf-tree.xml 파일에 원하는 속성값을 추가해야 합니다. 파일에 값을 추가하려면 그놈이나 다른 프로그램의 기본값을 변경합니다. 글꼴, 배경, 테마, 커서 모양 등을 변경할 수 있습니다. gedit나 다른 텍스트 편집기 대신 gconftool-2를 이용하여 chroot 환경에서 다음과 같은 명령을 실행합니다.

gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.defaults --type string --set yourkey "yourvalue"

string, yourkey, yourvalue' 부분에 자신이 원하는 값을 입력합니다.

한 번에 여러 가지 gconf 변경하기

각 값들을 하나씩 변경하려면 많은 시간이 걸립니다. 하지만 다음과 같이 하면 손쉽게 여러 가지 설정을 변경할 수 있습니다. 우선 테스트 사용자 계정을 하나 만들고, 해당 계정으로 로그인 한 뒤에 gconf-editor 를 이용해 원하는 값들로 변경을 합니다. 그리고 다음 명령을 이용해 테스트 사용자의 환경을 하나의 파일로 묶습니다.

gconftool-2 --dump /the/settings/branch/you/need > ~/live/your-new-settings.xml
sudo chown root:root ~/live/your-new-settings.xml
sudo mv ~/live/your-new-settings.xml ~/live/edit/your-new-settings.xml

chroot 환경에서 다음 명령을 실행합니다.

gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.defaults --load /your-new-settings.xml
rm /your-new-settings.xml

이 방법을 이용하면 특정 브랜치에 관한 전체 설정을 한번에 가져올 수 있습니다.(예: /apps/panel 은 그놈 패널에 관한 설정)

gfxboot 의 기본 언어 변경하기

이 과정은 chroot 환경이 아닌 일반 환경에서 해야합니다.

sudo -s
apt-get install dpkg-dev gfxboot
apt-get source gfxboot-theme-ubuntu
cd gfxboot-theme-ubuntu*/
make DEFAULT_LANG=ko
sudo cp -af boot/* ../extract-cd/isolinux/
exit

"ko" 값을 원하는 로케일로 변경합니다. 이는 F2 메뉴를 눌러 볼 수 있는 사용 가능한 언어를 변경하지는 안ㅅ습니다. gfxboot 개인화에 관한 더 많은 정보는 Ubuntu Customization Kit를 참조하십시오.

  • 패키지를 재빌드하지 않고 gfxboot 의 기본 언어를 변경하는 다른 방법은 isolinux 디렉토리에 로케일 이름을 포함한 lang 파일을 생성하는 것입니다.

개인화의 한계

개인화를 완료한 뒤에 UID 값이 1000 보다 큰 사용자가 있는지 확인합니다. 그러한 사용자가 있으면 초기 사용자 계정을 사용할 수 없어 부팅되지 않습니다.(/usr/lib/user-setup/functions.sh 와 /usr/lib/user-setup/user-setup-apply 를 확인하십시오.) chroot 환경에서 다음 명령을 실행합니다.

grep '^[^:]*:[^:]*:[1-9][0-9][0-9][0-9]:' /etc/passwd
grep '^[^:]*:[^:]*:[12][0-9][0-9][0-9][0-9]:' /etc/passwd

If you get any hits, try changing the uid:

usermod -u 500 $hit

고급 개인화

라이브 CD 커널

부팅 과정 외에 라이브CD 커널도 변경할 수 있습니다. extract-cd/casper 디렉토리의 vmlinuz 와 initrd 파일을 원하는 버전의 파일로 교체합니다. 예:

sudo cp edit/boot/vmlinuz-2.6.15-26-k7 extract-cd/casper/vmlinuz
sudo cp edit/boot/initrd.img-2.6.15-26-k7 extract-cd/casper/initrd.gz

부트 초기화

edit/usr/share/initramfs-tools/scripts/casper-bottom/* 디렉토리 안의 파일들을 수정합니다. 예를 들어 hostname 이나 livecd 사용자를 변경합니다. 예:

sudo nano edit/usr/share/initramfs-tools/scripts/casper

사용자명이나 호스트명을 변경합니다.

sudo nano edit/usr/share/initramfs-tools/scripts/casper-bottom/10adduser

라이브CD 사용자의 암호를 변경할 수도 있습니다. 참고: 암호화된 암호를 얻으려면 whois 패키지의 mkpasswd 프로그램을 사용해야 합니다.

initrd 재빌드하기

커널과 init 스크립트를 수정하거나 새 커널 모듈을 추가한 다음, casper 디렉토리의 initrd.gz 파일을 재빌드해야 합니다.

sudo chroot edit
mkinitramfs -o /initrd.gz 2.6.15-26-k7

(CD로 부팅할 커널 버전으로 변경합니다. 이는 edit/lib/modules 에서 확인할 수 있습니다.) chroot 에서 나와 이 파일을 extract-cd/casper 디렉토리로 옮깁니다.

exit
mv edit/initrd.gz extract-cd/casper/

작업한 내용 제거하기

작업 과정 중에 사용했던 파일을 삭제하여 CD 의 용량을 줄입니다. chroot 환경에서 작업합니다. 내려받은 패키지 파일 삭제하기

apt-get clean

임시 파일 삭제하기

rm -rf /tmp/*

네임서버 설정 삭제하기

rm /etc/resolv.conf

이제 파일시스템을 언마운트(umount)하고, chroot 에서 빠져나갑니다.

umount /proc
umount /sys
exit
sudo umount edit/dev

CD 로 합치기

manifest를 재생성합니다.

chmod +w extract-cd/casper/filesystem.manifest
sudo chroot edit dpkg-query -W --showformat='${Package} ${Version}\n' > extract-cd/casper/filesystem.manifest
sudo cp extract-cd/casper/filesystem.manifest extract-cd/casper/filesystem.manifest-desktop
sudo sed -i '/ubiquity/d' extract-cd/casper/filesystem.manifest-desktop

파일시스템을 압축합니다.

sudo rm extract-cd/casper/filesystem.squashfs
sudo mksquashfs edit extract-cd/casper/filesystem.squashfs -nolzma

참고: -nolzma 옵션은 하디 버전에서만 사용할 수 있습니다. extract-cd/README.diskdefines 에 이미지 이름을 설정합니다.

sudo chmod +w extract-cd/README.diskdefines
sudo vim extract-cd/README.diskdefines
sudo chmod -w extract-cd/README.diskdefines

오래된 md5sum.txt 를 제거하고 새 md5 sum을 생성합니다.

sudo -s
rm extract-cd/md5sum.txt
(cd extract-cd && find . -type f -print0 | xargs -0 md5sum > md5sum.txt)
exit

("md5sum.txt" 파일에 "./isolinux/boot.cat" 부분이 있는지 확인합니다. 해당 부분이 있으면 삭제합니다.) Iso 파일을 생성합니다.

cd extract-cd
sudo mkisofs -D -r -V "$IMAGE_NAME" -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o ../ubuntu-8.04.1-desktop-i386-custom.iso .

CD 테스트하기

qemu 에뮬레이터를 이용해 테스트합니다.

qemu -cdrom ubuntu-8.04.1-desktop-i386-custom.iso -boot d -m 512

또는 kvm 을 위한 하드웨어 가속기를 이용할 수도 있습니다.

kvm -cdrom ubuntu-8.04.1-desktop-i386-custom.iso -boot d -m 512

그리고 우분투 저장소에서 virtualbox-ose 를 내려받아 테스트할 수도 있습니다.

문제점

라이브CD 리눅스 커널을 변경한 뒤 iso 파일을 만드는 과정 중에 문제가 발생할 수 있습니다. 그럴 경우 F6 를 눌러 부트 화면을 표시합니다. 그리고 splash quite 과 -- 사이로 마우스 커서를 이동시킨 뒤 all_generic_ide 라고 입력합니다.

이미지 파일을 CD 로 굽기

다음 명령을 입력합니다.

cdrecord dev=/dev/cdrom ubuntu-8.04.1-desktop-i386-custom.iso

의견