以往要將這些 Live Linux OSes 裝進 USB 隨身碟裡,需花不少工夫,不過昨晚找到相關資料,可以使用 GRUB2 直接啟動 ISO image(s),相形之下簡單許多。
準備一枚視自己想塞多少系統進去,而相對剩下多少空間的隨身碟。既有的 FAT 檔案系統就可以了,已有的資料不必清除,但是建議製作這工具碟以前先備份這枚隨身碟的資料,以避免任何腦殘手滑造成的意外導致檔案遺失。
sudo grub-install --no-floppy --root-directory=/media/MBOOT /dev/sdb
其中 /media/MBOOT 是把隨身碟插進電腦後,系統自動掛載的資料夾;/deb/sdb 則是該隨身碟的裝置代號,請自行依自身情況代換。
sudo mkdir /media/MBOOT/iso
在這個隨身碟開一個 iso 目錄(呃,資料夾),放想要拿來直讀的 ISO images。並非任何的 Live CD 都可以用本篇的方法啟動,我測試過至少 Fedora, GeeXboX, Debian GNU/Linux, Clonezilla Live 都不行,得用老方法裝在特別規劃出來的分割區、或將光碟內容解到隨身碟裡另外處理啟動事宜。不過,我想要跑的那幾個救急工具能用就好了。
接著再寫一個 /media/MBOOT/boot/grub/grub.cfg 設定檔:
set color_normal='light-blue/black' set color_highlight='light-cyan/blue' set drive_label=MBOOT menuentry "System Rescue CD" { loopback loop /iso/systemrescuecd-x86-2.8.1.iso linux (loop)/isolinux/rescuecd isoloop=/iso/systemrescuecd-x86-2.8.1.iso setkmap=us docache dostartx initrd (loop)/isolinux/initram.igz } menuentry "Parted Magic Disk Utilities 2012-07-13" { loopback loop /iso/pmagic_2012_07_13.iso linux (loop)/pmagic/bzImage iso_filename=/iso/pmagic_2012_07_13.iso edd=off load_ramdisk=1 prompt_ramdisk=0 rw loglevel=9 vga=normal livemedia noeject max_loop=256 vmalloc=288MiB initrd (loop)/pmagic/initrd.img } menuentry "Ubuntu 12.04 (i386)" { loopback loop /iso/ubuntu-12.04-desktop-i386.iso linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/iso/ubuntu-12.04-desktop-i386.iso noeject noprompt -- initrd (loop)/casper/initrd.lz } menuentry "Ubuntu 12.04 (amd64)" { loopback loop /iso/ubuntu-12.04-desktop-amd64.iso linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/iso/ubuntu-12.04-desktop-amd64.iso noeject noprompt -- initrd (loop)/casper/initrd.lz } menuentry "Arch Linux i686 (Archboot 2012.06)" { loopback loop /iso/archlinux-2012.06-1-archboot-dual.iso linux (loop)/boot/vmlinuz_i686 gpt loglevel=7 rootdelay=10 initrd (loop)/boot/initramfs_i686.img } menuentry "Arch Linux x86_64 (Archboot 2012.06)" { loopback loop /iso/archlinux-2012.06-1-archboot-dual.iso linux (loop)/boot/vmlinuz_x86_64 gpt loglevel=7 rootdelay=10 initrd (loop)/boot/initramfs_x86_64.img } menuentry "Arch Linux i686 (2012.07)" { set isofile="iso/archlinux-2012.07.15-netinstall-dual.iso" loopback loop /$isofile linux (loop)/arch/boot/i686/vmlinuz img_dev=/dev/disk/by-label/$drive_label img_loop=$isofile archisolabel=ARCH_201207 initrd (loop)/arch/boot/i686/archiso.img } menuentry "Arch Linux x86_64 (2012.07)" { set isofile="iso/archlinux-2012.07.15-netinstall-dual.iso" loopback loop /$isofile linux (loop)/arch/boot/x86_64/vmlinuz img_dev=/dev/disk/by-label/$drive_label img_loop=$isofile archisolabel=ARCH_201207 initrd (loop)/arch/boot/x86_64/archiso.img } menuentry "FreeBSD 9.0 i386" { set isofile=/iso/FreeBSD-9.0-RELEASE-i386-disc1.iso loopback loop $isofile kfreebsd (loop)/boot/kernel/kernel iso-scan/filename=$isofile noeject noprompt splash -- kfreebsd_module (loop)/boot/mfsroot.gz type=mfs_root } menuentry "FreeBSD 9.0 x86_64" { set isofile=/iso/FreeBSD-9.0-RELEASE-amd64-disc1.iso loopback loop $isofile kfreebsd (loop)/boot/kernel/kernel iso-scan/filename=$isofile noeject noprompt splash -- kfreebsd_module (loop)/boot/mfsroot.gz type=mfs_root } menuentry "Lenovo PC-DOCTOR" { linux16 /boot/memdisk initrd16 /iso/pc-doctor.img } menuentry "ThinkPad Update" { linux16 /boot/memdisk iso initrd16 /iso/7uuj48uc.iso }
最後把設定檔裡提到的那些 ISO images 檔案都放進 iso 目錄裡,就完工了。
如設定檔所示,我放了 System Rescue CD 這個可以拿來清除 Windows 管理者密碼、救 NTFS 檔案系統的工具,這還只是它諸多功能當中的兩種,推薦每位苦命 MIS 都能準備這工作利器。
Parted Magic 則是拿來做磁碟分割管理、備份的好用工具,可以把它當成開源版本的 Partition Magic。
Ubuntu,這個還需要介紹嗎?雖然我很久以前就因為對它累積許多不滿而棄用,但是哪天出門在外臨時要借用他人電腦,在這枚隨身碟裡擺這一套 desktop 用途的 Live 系統,應該也是蠻好用的。
Arch Linux 是我目前使用的 Linux OS。
因為這枚工具碟不需要將分割區重劃為非 FAT16/FAT32 的檔案系統,所以還可以把 PortableApps 放進來,在 Windows 下也能使用不少可攜式、綠色軟體。
註:如果需要用到 Lenovo 的 PC-DOCTOR 及 ThinkPad BIOS Upadate CD,請另外參考這篇安裝 SYSLINUX/MEMDISK。