Live CD 的 ISO 燒出來?太浪費了!變 Live USB 吧

Linux 老手們可能常常用到 Linux 的 LiveCD 或 LiveCD 式的安裝片,每次下載一個 ISO 檔就要把它燒成 CD 或 DVD 來用,就算燒在 RW 上還是耗費時間,只要你要開的機器可以 usb hd 開機就可以省掉這些手續啦!方法有好幾個,這裡有兩種,不過小弟這邊介紹的更彈性、使用空間更大。

處理這件事的 PC 需求:
Linux 作業系統、grub、還要一點點 grub 開機過程的知識。

今天我們以 Sabayon Linux DVD 為例:

=0=
一般的 Linux LiveCD 要的主要是以下三個檔:

  • vmlinuz  # 核心檔案
  • vmlinuz.img  # mini root 映像檔
  • xxxx  # 占容量最大的檔案,是真正開機後所使用的 squashfs root

=1=
掛上 usb 碟,假設 dbus 把你的 /dev/sdc1 掛在 /media/disk,
不需要 format 用原來的 FAT 即可。

掛載 iso 檔:

# mount -o loop Sabayon_Linux_4.1_amd64_K.iso /mnt/iso

=2=
第一件事找到 /mnt/iso 下占最大容量的檔案或目錄複製到 usb 上:

# du -s /mnt/iso/*
# cp  -R /mnt/iso/xxx /media/disk/

在複製的時間中你可以另開一個 consloe 同時做以下的事

=3=
grub 相關檔案:

# cp -R /boot/grub /medis/disk/
# grub
grub> root (hd?,0)     # 請確認 hd? 是你的 usb
grub> setup (hd?)
Checking if “/boot/grub/stage1” exists… no
Checking if “/grub/stage1” exists… yes
Checking if “/grub/stage2” exists… yes
Checking if “/grub/fat_stage1_5” exists… yes
Running “embed /grub/fat_stage1_5 (hd2)”…  16 sectors are embedded.
succeeded
Running “install /grub/stage1 (hd2) (hd2)1+16 p (hd2,0)/grub/stage2 /grub/menu.lst”… succeeded
Done.

看到以上訊息表示 grub 開機管理程式已經裝在 usb 碟上了。

=4=
打開 /mnt/iso/isolinux/isolinux.cfg
檔案裡的頭尾都可以不要找到像以下這些段落:

LABEL sabayon
menu label ^Start Sabayon 4.1
kernel /boot/sabayon
append root=/dev/ram0 initrd=/boot/sabayon.igz aufs init=/linuxrc cdroot looptype=squashfs max_loop=64 loop=/livecd.squashfs splash=silent,theme:sabayon vga=791 CONSOLE=/dev/tty1 noaccelmanager quiet music —

LABEL sabayonnomusic
menu label ^Start Sabayon 4.1 (No Music)
kernel /boot/sabayon
append root=/dev/ram0 initrd=/boot/sabayon.igz aufs init=/linuxrc cdroot looptype=squashfs max_loop=64 loop=/livecd.squashfs splash=silent,theme:sabayon vga=791 CONSOLE=/dev/tty1 noaccelmanager quiet —

紅色刪去,但 append 那行刪去後要接到上面 kernel 那行後面、綠色是修改成以下、藍色是原行刪去,=等號去掉(不去掉好像也可以),新增到新的一行去。

title Start Sabayon 4.1
kernel /boot/sabayon root=/dev/ram0  aufs init=/linuxrc cdroot looptype=squashfs max_loop=64 loop=/livecd.squashfs splash=silent,theme:sabayon vga=791 CONSOLE=/dev/tty1 noaccelmanager quiet music —
initrd /boot/sabayon.igz

title Start Sabayon 4.1 (No Music)
kernel /boot/sabayon root=/dev/ram0  aufs init=/linuxrc cdroot looptype=squashfs max_loop=64 loop=/livecd.squashfs splash=silent,theme:sabayon vga=791 CONSOLE=/dev/tty1 noaccelmanager quiet —
initrd /boot/sabayon.igz

把這個存檔的檔案覆蓋到 /media/disk/grub/menu.lst 上去,之後 usb 開機會對照這個檔,也做開機處理。

=6=
最後對照以上的 menu.lst 檔,check =0= 所需要的三個主要檔案,最大檔在 =2= 複製好了,所以在這個例子裡依相對位置複製到 /media/disk 裡:

# cp -R /mnt/iso/boot /media/disk/

本例子最後只要這樣子就 OK 了:

# ls -lR /media/disk
/media/disk
總計 1978112
drwxr-xr-x 2 paar root       4096 2009-04-30 12:14 boot
drwxr-xr-x 2 paar root       4096 2009-04-30 12:14 grub
-rwxr-xr-x 1 paar root 2025205760 2009-04-30 11:45 livecd.squashfs

/media/disk/boot:
總計 12040
-rwxr-xr-x 1 paar root  103328 2009-04-30 12:14 memtest
-rwxr-xr-x 1 paar root 5962880 2009-04-30 12:14 sabayon
-rwxr-xr-x 1 paar root 6256659 2009-04-30 12:14 sabayon.igz

/media/disk/grub:
總計 188
-rwxr-xr-x 1 paar root    197 2009-04-30 11:26 default
-rwxr-xr-x 1 paar root     30 2009-04-30 11:26 device.map
-rwxr-xr-x 1 paar root   8056 2009-04-30 11:26 e2fs_stage1_5
-rwxr-xr-x 1 paar root   7904 2009-04-30 11:26 fat_stage1_5
-rwxr-xr-x 1 paar root     16 2009-04-30 11:26 installed-version
-rwxr-xr-x 1 paar root   8608 2009-04-30 11:26 jfs_stage1_5
-rwxr-xr-x 1 paar root   3497 2009-04-30 12:14 menu.lst
-rwxr-xr-x 1 paar root   7324 2009-04-30 11:26 minix_stage1_5
-rwxr-xr-x 1 paar root   9632 2009-04-30 11:26 reiserfs_stage1_5
-rwxr-xr-x 1 paar root    512 2009-04-30 11:26 stage1
-rwxr-xr-x 1 paar root 108356 2009-04-30 11:26 stage2
-rwxr-xr-x 1 paar root   9276 2009-04-30 11:26 xfs_stage1_5

這時可以拿來開機了。

以這個方法做的好處是它還是 FAT 檔案格式,你仍可以拿剩下的空間當隨身碟使用,更靈活的運用方式是它甚至可以和 NoName 放在一起,用 grub 去選要開啟哪個 Live 系統,但要合併使用 NoName 你必須先使用它網頁上所指的 hp 格式化功具來 format,只要修改好 menu.lst 檔就 OK,之後你可以用同樣的方式調換你想要的 Live Linux ISO只要它們的檔名+路徑不同即可。


Posted

in

by

Comments

2 responses to “Live CD 的 ISO 燒出來?太浪費了!變 Live USB 吧”

  1. goofegg Avatar

    发现一牛人!这个正是一直需要的。
    linux可以搞livecd,完全可以映像到usb上,usb启动就可以直接装系统而不用浪费刻录盘。
    您是编程牛人,如果能专门编个这样的工具就好了,就是能把通常的光盘iso能映像到usb上去,设好u盘启动就好像启动光盘一样的东东,不管什么样的iso,都能通用这样的工具。不知道是否有技术难度?

  2. paar Avatar

    re: goofegg
    這可難倒我了,因為每個 live linux 的 squash 映像檔名都不一樣,放置位置也不盡相同,要寫個 ISO 檔轉換成 usb 碟的程式對我來說是相當難的,不過以上我已簡化過,按步驟做一定可以轉換成功的。
    唉呀~ 有人做好了啊:
    超強一按所有linux liveCD iso即變live USB , 完全easy!