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.igztitle 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只要它們的檔名+路徑不同即可。
Comments
2 responses to “Live CD 的 ISO 燒出來?太浪費了!變 Live USB 吧”
发现一牛人!这个正是一直需要的。
linux可以搞livecd,完全可以映像到usb上,usb启动就可以直接装系统而不用浪费刻录盘。
您是编程牛人,如果能专门编个这样的工具就好了,就是能把通常的光盘iso能映像到usb上去,设好u盘启动就好像启动光盘一样的东东,不管什么样的iso,都能通用这样的工具。不知道是否有技术难度?
re: goofegg
這可難倒我了,因為每個 live linux 的 squash 映像檔名都不一樣,放置位置也不盡相同,要寫個 ISO 檔轉換成 usb 碟的程式對我來說是相當難的,不過以上我已簡化過,按步驟做一定可以轉換成功的。
唉呀~ 有人做好了啊:
超強一按所有linux liveCD iso即變live USB , 完全easy!