[우분투] 12.04 커스텀 ISO 서버 이미지 만들어 보기 Computer Tip

그동안 Ubuntu 12.04 LTS ISO 이미지를 이용하여
많은 설치를 해 보았습니다.
대부분의 경우 잘 설치가 되었으나 
몇가지 예외 상황이 발생할 수 있습니다.

  • 설치를 하다보면 사용자가 입력해야할 부분이 여럿 존재합니다. (언어, 네트워크 등)
  • 사용자 개입없이 무인 설치가 필요할 수도 있습니다.
  • 설치를 마치고 지신만의 커스텀 동작을 시킬 필요도 있습니다.
위와 같은 이유 때문에 배포 ISO 이미지를 수정하여 자신만의 커스텀 ISO 이미지를 만들 필요가 있는데
그것에 대해 살펴보도록 하겠습니다.


1) 환경 준비

커스텀 ISO를 만들 환경도 Ubuntu 환경이라고 가정합니다.

iso 이미지가 $HOME 폴터에 복사해 놓습니다.

cd ~
홈 폴더로 이동

ll *.iso
-rw-r--r-- 1 501 dialout 722468864 12월 15 14:49 ubuntu-12.04.5-server-amd64.iso
iso 이미지 확인 (12.04.5 가 최신이네요)

mkdir original-iso custom-iso
작업을 위하여 두 개의 폴더 생성

sudo mount -o loop ubuntu-12.04.5-server-amd64.iso ./original-iso
기존 iso 이미지 마운트

sudo cp -ad original-iso/* original-iso/.disk custom-iso
original-iso 폴더에 있는 모든 파일을 custom-iso 폴더로 복사

sudo umount ./original-iso
iso 이미지 unmount


2) 부트 메뉴 옵션 추가

sudo vi custom-iso/isolinux/txt.cfg

위와 같이 되어 있는 부분에서
두번째 줄에 

label custom
  menu label ^Install Custom Ubuntu Server
  kernel /install/vmlinuz
  append  file=/cdrom/preseed/ubuntu-custom.seed initrd=/install/initrd.gz quiet ks=cdrom:/isolinux/ks-custom.cfg --

내용을 넣어,

와 같이 넣고 저장합니다. (:w!q 명령)


3) Kickstart-ing

Kickstart라는 것은 RedHat 에서 먼저 이용된 무인 설치 관련 패키지인데 나중에 데비안이나 우분투에서 적용되었다 합니다.

sudo apt-get install system-config-kickstart
해당 패키지를 설치합니다.

ksconfig
라고 실행합니다.

그러면 위에처럼 나타나고 기본설정을 위와 같이 했습니다.

설치방법은 CD-ROM 에서 하도록 했구요,

새로운 부트로더를 설치한다고 했습니다.

파티션 정보도 넣구요,

네트워크 설정도 넣었습니다.

인증은 기본 인증만 했구요,

사용자 정보도 넣은 다음,

필요하면 방화벽 설정도 넣으시도록 합니다.

gnome, KDE 말고 LXDE 데스크탑이 있으면 좋으련만 없어서 일단 X-Window 설정은 건너 뛰었습니다.

우분투 KickStart의 버그라고 하던데 위에 내용이 나오지 않습니다.
(나중에 ks.cfg를 직접 수정하면 될듯합니다)

설치전과 설치후는 모두 비워놓고, 

ks.cfg로 저장하고 종료하였습니다.

이제 ks.cfg를 열러봅니다.

cat ks.cfg 
#Generated by Kickstart Configurator
#platform=x86

#System language
lang ko_KR
#Language modules to install
langsupport ko_KR
#System keyboard
keyboard kr_kr104
#System mouse
mouse
#System timezone
timezone Asia/Seoul
#Root password
rootpw --iscrypted $1$sppUU6.F$PYQ0OrURuKSIMYW/SA5Vy/
#Initial user
user toor --fullname "toor" --iscrypted --password $1$JO0rNPz9$5UTFUsxAFVNtK5oFHe0Ub1
#Reboot after installation
reboot
#Use text mode install
text
#Install OS instead of upgrade
install
#Use CDROM installation media
cdrom
#System bootloader configuration
bootloader --location=mbr 
#Clear the Master Boot Record
zerombr yes
#Partition clearing information
clearpart --all --initlabel 
#Disk partitioning information
part / --fstype ext4 --size 1 --grow --asprimary 
part swap --recommended 
#System authorization infomation
auth  --useshadow  --enablemd5 
#Network information
network --bootproto=static --ip=192.168.0.1 --netmask=255.255.255.0 --gateway=192.168.0.254 --nameserver=168.126.63.1 --device=eth0
network --bootproto=static --ip=10.31.31.100 --netmask=255.255.0.0 --gateway=10.31.0.1 --nameserver=168.126.63.1 --device=eth1
#Firewall configuration
firewall --disabled 
#Do not configure the X Window System
skipx

이제 마지막으로 ks.cfg를 지정위치에 복사합니다.

sudo cp ks.cfg custom-iso/isolinux/ks-custom.cfg


4) 패키지 Preseeding

sudo cp custom-iso/preseed/ubuntu-server.seed custom-iso/preseed/ubuntu-custom.seed
와 같이 복사를 합니다.

이전에 지정한 file=/cdrom/preseed/ubuntu-custom.seed 에 의하여
설치 시 묻는 것을 미리 지정할 수 있는데요,
그것을 미리 확인해 볼 수 있다 합니다.

sudo apt-get install debconf-utils
우선 debconf-utils 패키지를 설치합니다.

sudo debconf-get-selections | grep openssh
[sudo] password for toor: 
openssh-server ssh/use_old_init_script boolean true
openssh-server ssh/vulnerable_host_keys note
openssh-server ssh/encrypted_host_key_but_no_keygen note
openssh-server ssh/disable_cr_auth boolean false

와 같은 방법으로 해당 패키지를 선택하는 것에 대한 
결정을 미리 내려볼 수 있다 합니다.

(아직 어떻게 적용될 지는 좀 더 확인해 봐야 되겠습니다)


5) 기타 추가 패키지 설치

위와 같이 되어 있는데 마지막에 다음을 추가해 봅니다.

sudo vi custom-iso/isolinux/ks-custom.cfg
을 열어 마지막에 
#Package install information
%packages
openssh-server
build-essential

와 같이 추가하여 설치에 필요한 패키지를 지정할 수 있습니다.


6) 오프라인 설치

온라인과 달리 네트워크에 연결되어 있지 않다면 패키지를 다운받을 수 없으므로 다른 조치를 취해야 합니다.

apt-get (aptitude)를 이용하면 알아서 설치파일(*.deb)의 의존성을 찾아 설치를 해 주지만,
이것을 수동으로 찾아서 설치하는 것은 만만한 일이 아닙니다.
(/var/cache/apt/archives 에 있는 deb 도 이용해 보기는 했습니다만...)

그래도 다음과 같은 방법을 취하면 도움이 됩니다.

  • 가상머신에서 원 CD 이미지로 네트워크 연결된 상태로 설치합니다.
  • 새로 설치한 우분투 서버로 부팅한 다음 cd가 mount 상태이고 /etc/apt/sources.list 에 cdrom 지시자가 있는 상태입니다.
    sudo mount -o loop ubuntu-12.04.5-server-amd64.iso /media/cdrom
    sudo vi /etc/apt/sources.list
    마지막 줄에 다음 내용 추가
    deb file:///media/cdrom precise main restricted
    패키지 업데이트
    sudo apt-get update
  • 추가 설치가 필요한 패키지들을 apt-get install 로 설치합니다.
  • 추가로 설치된 deb를 백업하기 위하여 /var/cache/apt/archives 에 있는 *.deb를 백업합니다.
마지막에 /var/cache/apt/archives 에 있는 *.deb를 $HOME/extradebs 폴더에 백업합니다.

cd ~
mkdir extradebs
cp -f /var/cache/apt/archives/*.deb extradebs

sudo mkdir -p custom-iso/dists/stable/extras/binary-i386
sudo mkdir -p custom-iso/pool/extras/
sudo cp ./extradebs/*.deb custom-iso/pool/extras/

pushd custom-iso
  apt-ftparchive packages ./pool/extras/ > /tmp/Packages
  sudo mv /tmp/Packages dists/stable/extras/binary-i386/Packages
  sudo gzip ./dists/stable/extras/binary-i386/Packages
popd

위와 같이 별도의 패키지를 만듦니다.


7) 새로운 커스텀 ISO 생성

cd ~
sudo apt-get install genisoimage
sudo mkisofs -joliet-long -J -l -b isolinux/isolinux.bin -no-emul-boot -boot-load-size 4 -boot-info-table -z -iso-level 4 -c isolinux/isolinux.cat -o ./ubuntu-12.04.5-custom-server-amd64.iso custom-iso/


어느분께는 도움이 되셨기를....


핑백

  • 지훈현서 : [Ubunt 12.04] USB 메모리에 저장소를 만들어 apt-get 설치하기 2014-12-18 18:45:19 #

    ... m 모두 y 를 선택하고 설치하면...설치가 잘 됨을 알 수 있습니다. USB가 아니라 CD-ROM 으로 해도 동일한 방법으로 적용가능합니다. 참고로, Custom 우분투 서버 ISO 만들기를 참고하시면우분투 OS 뿐만 아니라 모든 설치까지 한번에 할 수 있는ISO DVD-ROM 을 만들 수 있습니다.(CD-ROM 보다는 용량이 크겠 ... more

  • Ubuntu Install Automation | gumdaeng 2015-06-10 11:14:39 #

    ... amd64.iso custom-iso/ References: [1] [우분투] 12.04 커스텀 ISO 서버 이미지 만들어 보기, 지훈현서, http://mcchae.egloos.com/11145086 [2] [SOLVED] system-config-kickstart not working in Ubuntu 14.04, http://w ... more

덧글

댓글 입력 영역

구글애드텍스트