우분투 라이브 디스크 만들기(수동)

  1. 공통 작업
    #만약 Grub2 부트매니져를 설치하신다면
    #sudo grub-install /dev/sdb1

  2. 라이브 파일 시스템 생성

1-1. 이미지파일을 이용하는 경우(FAT32파티션에 파일이 위치한다면 4G제약이 있음)

#4G파일시스템 생성(ext2부분은 바꿀 수 있음)
dd if=/dev/zero of=casper-rw bs=1M count=4000
mkfs.ext2 -F casper-rw

1-2. 파티션을 이용하는 경우(파티션의 크기만큼을 사용함 - 권장함)
sudo gparted
파티션을 알아서 분할 하시되 LABEL을 casper-rw로 만듦

  1. 부팅디스크및 부트메뉴

3-1. ISO이미지를 이용한 부팅 (라이브 이미지로 부팅)
sudo cp ubuntu.iso /boot

#/boot/grub/custom.cfg 편집
menuentry "Ubuntu Live" {
    insmod fat
    insmod ntfs
    insmod loopback
    search -s -f /boot/ubuntu.iso
    loopback lo /boot/ubuntu.iso

    #persistent 옵션을 빼버리면 디스크에 변경사항이 저장되지 않음
    linux (lo)/casper/vmlinuz boot=casper iso-scan/filename=/boot/ubuntu.iso persistent quiet splash 
    initrd (lo)/casper/initrd.lz
}

3-2. CDROM 파티션을 이용한 부팅 (파티션을 시디롬으로 인식함)
#CDROM파티션 생성
gksudo gparted
#크기는 대략 800메가정도로…
#CD내용 복사
dd if=ubuntu.iso of=/dev/sda2

#/boot/grub/custom.cfg 편집
menuentry "Ubuntu Live" {
    insmod fat
    insmod ntfs
    insmod iso9660
    search -s -f /casper/vmlinuz

    #persistent 옵션을 빼버리면 디스크에 변경사항이 저장되지 않음
    linux /casper/vmlinuz boot=casper persistent quiet splash 
    initrd /casper/initrd.lz
}

3-3. 시디롬내용을 복사한 디렉토리로 부터 부팅
#시디롬 내용 복사
mkdir /tmp/t
sudo mount ubuntu.iso /tmp/t -o loop
sudo rsync -av --progress /tmp/t/ targetdir/

#/boot/grub/custom.cfg 편집
menuentry "Ubuntu Live" {
    insmod fat
    insmod ntfs
    insmod iso9660
    search -s -f targetdir/casper/vmlinuz

    #persistent 옵션을 빼버리면 디스크에 변경사항이 저장되지 않음
    linux targetdir/casper/vmlinuz live-media-path=targetdir/casper boot=casper persistent quiet splash 
    initrd targetdir/casper/initrd.lz
}
  1. HOME 데이터의 분리
    casper-rw의 경우와 비슷하나 이름만 home-rw로 하시면 됩니다.
    그럴 경우 /home은 home-rw에 /는 casper-rw에 저장됩니다.

  2. GRUB4DOS를 이용할 경우
    5-1. GRUB4DOS 설치
    GRLDR, GRLDR.MBR, MENU.LST를 부팅디스크의 최상위 디렉토리에 복사

    5-1-1. GRUB4DOS를 기본 부트매니져로 사용할 경우
    #리눅스의 경우는 실행권한을 부여하면 bootlace.com실행가능
    bootlace.com 0x80 (두번째 디스크는 0x81)
    5-1.2. XP 부트매니져에 GRUB4DOS 등록
    attrib -s -h -r C:\boot.ini
    notepad c:\boot.ini
    C:\GRLDR="GRUB4DOS"
    5-1.3. 윈7에 GRUB4DOS 등록
    bcdedit /create /d "GRUB4DOS"/application bootsector (화면에 GUID나 나옴 형식은 {3db17c4f-c51b-11dd-a7b9-001fd09ce35f} 이런식임 복사하신후)
    bcdedit /set GUID device boot
    bcdedit /set GUID path \grub.mbr
    bcdedit /displayorder GUID /addlast
    5-1.4. GRUB2에 GRUB4DOS 등록
    menuentry "GRUB4DOS" {
    search -s -f /grub4dos/grub.exe
    linux16 /grub4dos/grub.exe
    }
    5-2. 위의 GRUB2부트메뉴를 GRUB4DOS부트메뉴로 변경하기 (/boot/custom.cfg ===>/menu.lst)
    menuentry "GRUB4DOS" { ===> title GRUB4DOS
    } ===> 지움
    insmod xxx ===> 지움
    loopback lo /ubuntu.iso ===> map /ubuntu.iso (0xff) || map --mem /ubuntu.iso (0xff)
    map --hook
    (lo) ===> (0xff)
    linux /casper/vmlinuz ===> kernel /casper/vmlinuz
    search -s -f ===> find --set-root
    5-3. GRUB4DOS 부트메뉴에서 GRUB2 부트메뉴로 연결
    title Chainload to GRUB2
    kernel /boot/grub/coreboot.img

  3. 라이브디스크의 문제점
    casper-rw나 home-rw를 파티션이 아니라 파일로 할 경우
    해당 파티션을 /isodevice로 마운트 해버림(읽기전용) - 그러므로 파티션을 이용한 퍼시스턴트 추천함

패키지 업그레이드시 update-initramfs를 호출하는 경우 (예를 들면 grub이라던가 linux-image-xxx 그외 모듈관련 등등)
오류를 뿜어냄

아마도 /cow 마운트 포인트가 숨겨지고 /는 unionfs로 되어 있기 때문일텐데…
/boot를 마운트하도록 하면 되지 않을 까 싶음 (개인적으론 update-initramfs를 수정해서 썼음)

/boot가 casper-rw내에 있을 경우 GRUB이나 커널이미지를 업데이트하더라도 그 내용은 casper-rw내에 존재하게 되고…
부팅시 사용한 GRUB부트매니져, 커널 및 이미지는 외부에 있으므로 GRUB, 커널및 모듈 버젼이 일치 하지 않음.

라이브 시디 만들 때 자료를 한참 찾았는데… 좋은 정보 감사합니다^_^