오래전, 십여 년 전에 라이브시디를 제작했을 때, 사용했던 방법입니다. 이 글의 첫 판을 쓸 당시에 제작된 라이브시디는 지금 없습니다. 근래에 제작된 라이브시디가 있긴 하지만, 테스트된 바가 없습니다.
어쨌든, 이 글은 라이브시디를 제작했지만, 설치를 지원하지 않을 때, 자신이 만든 라이브시디를 하드디스크에서 동작하도록 하는 방법입니다. 라이브시디에 저장된 전체의 내용을 가져오고, 시스템 자원들의 정보를 새로운 기계에 맞게 수정하는 과정입니다.
소개
보통 설치를 지원하는 라이브시디와 설치를 지원하지 않는 라이브시디가 있습니다. 사실 설치를 지원해도 라이브시디처럼 되는 것이 아니기 때문에, 마음에 꼭 드는 라이브시디를 만났을 때, 이것을 자신의 하드디스크에서 사용하고 싶은 욕망이 생길 것입니다.
이 문서는, 기술적으로 아무런 언급도 없이, 라이브시디를 하드디스크로 옮겨 부팅이 가능하도록 도와주는 역할을 할 것입니다. 가장 중요한 부분은 부팅이 가능하도록 도와주는 부트로더를 설정하는 부분입니다.
설치
vmware 구하기
필자는 별도의 하드디스크에서 설치를 한 것이 아니고, vmware라는 가상 기계(컴퓨터)를 사용해서 본 과정을 수행했습니다. 과정 자체는 전혀 다르지 않으니, 이 글을 읽는 분들도 가상 기계에서 먼저 설치해 볼 것을 권합니다.
부팅
Vmware의 문서를 읽고 가상 기계를 하나 만듭니다. 조건은 대략 아래와 같습니다.
- 램 : 256 메가
- 하드디스크 제어기 : BusLogic
- 하드디스크 용량 : 4기가 이상
- 네트워크 연결 : NAT
하드디스크 제어기는 아무것이나 상관이 없을 것으로 생각이 들지만, 부팅이 되지 않으면 커널에서 제어기가 빠진 경우입니다.
파티션 나누기
파티션은 스왑 한 개와 루트 한 개, 총 2개의 최소한으로 했습니다. 실제 사용하실 때에는 목적에 맞게 파티션을 하십시오.
- fdisk /dev/sda
파티션 | 용량 | 기능 |
/dev/sda1 | 512메가 | 스왑영역 |
/dev/sda2 | 나머지 전부 | 루트(/) |
복사
나누어진 파티션을 각각의 역할에 맞게 파일 시스템을 아래와 같이 만들고, 사용할 준비를 합니다. 루트 파티션은 /mnt/gentoo에 마운트를 합니다.
- mkswap /dev/sda1
- swapon /dev/sda1
- free
- mkfs.ext3 /dev/sda2
- mount -t ext3 /dev/sda2 /mnt/gentoo
불필요한 디렉토리(프로세서 정보 등)는 제외하고, 프로그램 관련된 디렉토리만 루트 파티션으로 사용할 /dev/sda2로 아래와 같이 복사를 합니다.
- cp -a bin/ boot/ etc/ home/ lib/ opt/ root/ sbin/ tmp/ usr/ var/ /mnt/gentoo/
fstab수정
이제 새로운 루트로 들어가서 부팅에 필요한 정보를 수정해 줍니다. 가장 먼저 해야 할 일은 /etc/fstab의 정보를 수정하는 일입니다.
- nano /etc/fstab
/dev/sda2 / ext3 defaults 0 1
/dev/sda1 none swap sw 0 0
/dev/cdrom /mnt/cdrom iso9660 noauto,ro 0 0
/dev/fd0 /mnt/floppy auto noauto 0 0
proc /proc proc defaults 0 0
none /dev/shm tmpfs nodev,nosuid,noexec 0 0
이전 수정사항 복원하기
라이브시디이기 때문에 수정해야 하는 부분이 있습니다. 이 내용을 읽고 적용이 된 사항이 있으면 복원해 주시기 바랍니다.
자료 내려받기
라이브시디가 제한된 공간에 많은 프로그램을 넣다 보니, 불필요하다고 생각되는 부분을 제거하고 시디로 만들어 냅니다. 그러다 보니, 하드디스크에 설치했을 때 필요한 부분도 같이 삭제되는 경우가 있습니다. 임시 디렉토리는 없어도 상관없지만, 커널 등 중요한 자료는 내려받기해서 복원할 필요가 있습니다.
여기를 눌러서 내려받은 파일을 아래와 같이 풀어줍니다.
- rm -rf /boot
- rm -rf /usr/share/doc
- rm -rf /var/db
- tar -jxvf boot.tar.bz2 -C /
- tar -jxvf usr-share-doc.tar.bz2 -C /
- tar -jxvf var-db.tar.bz2 -C /
Kernel and Grub
내려받은 커널로 부팅이 가능하도록 아래와 같이 약간의 수정을 합니다.
- cd /boot/grub
- ln -sf grub.conf menu.lst
이제 아래와 같이 그럽 설정을 수정해 줍니다.
- nano /etc/grub/menu.lst
timeout 30
default 0
splashimage=/boot/grub/BlackE.xpm.gz
title Gentoo GNU/Linux kernel-2.6.14-ut4
root (hd0,1)
kernel /boot/kernel-genkernel-x86-2.6.14-ut4 udev root=/dev/ram0 init=/linuxrc ramdisk=8192 real_root=/dev/sda2 vga=0x314 doscsi
initrd /boot/initramfs-genkernel-x86-2.6.14-ut4
title Gentoo GNU/Linux kernel-2.6.14-ut4 (No FB)
root (hd0,1)
kernel /boot/kernel-genkernel-x86-2.6.14-ut4 udev root=/dev/ram0 init=/linuxrc ramdisk=8192 real_root=/dev/sda2 doscsi
initrd /boot/initramfs-genkernel-x86-2.6.14-ut4
이제 그럽을 MBR에 올리는 과정만 남았습니다. 아래와 같은 방법으로 해 줄 수 있습니다.
- cd /
- grep -v rootfs /proc/mounts > /etc/mtab
- grub
grub> root (hd0,1)
grub> setup (hd0,1)
grub> quit
처음 부팅후 해야 할 일
아래와 같이 컴퓨터를 재시작합니다. 시디가 아니라 하드디스크로 부팅하는지 확인을 하세요.
- reboot
처음해야 할 일은 라이브시디에서 없거나, 또는 있는 암호를 바꾸는 일입니다.
- passwd
부팅 후에 약간은 이상한 메시지를 만날 수 있습니다. 디바이스 관련 디렉토리를 복사를 하지 않았기 때문에 생기는 문제입니다. 아래와 같이 바로 잡아 주세요.
- mkdir -p /mnt/fixit
- mount --bind / /mnt/fixit
- cp -a /dev/* /mnt/fixit/dev/
- umount /mnt/fixit
- rmdir /mnt/fixit
- mv /etc/issue.devfix /etc/issue
주의사항
최초 부팅 시에 루트 파티션을 찾고 나서 수 분 동안 하드디스크를 사용하면서 무슨 일을 하는 것처럼 보였습니다. 두 번째부터는 정상적으로 부팅이 되었습니다.