用 mbootu2 製作開機碟

一、 任意資料碟快速製作成開機碟

假設你的電腦已經用 阿貴版 finnix 開機。 你大約可以用每兩分鐘一支的速度, 以 mbootu2 指令 把自己的跟朋友的每一顆隨身碟都變成 finnix 開機碟。 這一節的指令不會傷害你的隨身碟 -- 所有資料會保留。

  1. 檢查電腦上有哪些硬碟/隨身碟: fdisk -s /dev/sd? ; ls -l /dev/sd? [空格跟大小寫請照打!]
  2. 插入隨身碟。
  3. 再次檢查電腦上有哪些硬碟/隨身碟: 按上箭頭、 按 Enter, 重複剛才的指令。 特別注意多出來的那兩列, 確認一下電腦看到的隨身碟容量正確。 以下假設多出來的裝置叫做 /dev/sdz 。
  4. 賜給它生命! mbootu2 -t /dev/sdz -f /cdrom 注意: 如果當初你的電腦是用隨身碟開機而不是用光碟開機, 那應該改成 mbootu2 -t /dev/sdz -f /cdrom/finnix-ckhung16c 之類的, 總之那個目錄底下要看到有 md5sums 及 isolinux.* 等等檔案才對。
  5. 拔掉隨身碟。
  6. 關機收工: shutdown -h now

對, 其實重點只有第四步那一句。 如果有很多顆要做, 重複第四、五兩步即可。

二、 空白隨身碟安裝 lubuntu

假設你的電腦已經用 阿貴版 finnix 開機。 如果你有一顆 8G 或更大的空白隨身碟、 如果你可以耐心地等待 20 到 40 分鐘、 而且如果你的電腦的硬碟裡已經有老師製作好的 lubuntu 系統檔 (lab*.fsa) 那麼你可以用這一節的指令製作 lubuntu 開機碟。 如果隨身碟原先不是空白的也沒關係 -- 這一節的指令會把你的隨身碟整顆燒毀抹光砍掉重練! 以下假設你的隨身碟叫做 /dev/sdz; 你的系統檔放在 /dev/sda99 裡面的 /abc/pqr/lab172-c.fsa 。

  1. 非必須: 按 ctrl-alt-f2 切換到 2 號 virtual terminal 虛擬終端機, 打 w3m https://www.cyut.edu.tw/~ckhung/c/mbootu2.php 查看本頁面。 中文變亂碼沒關係, 等一下可以剪貼指令就夠了。 再按 ctrl-alt-f1 切換回 1 號 vt。
  2. 檢查隨身碟上既有的檔案, 確認可以燒毀沒關係: mount /dev/sda1 ; ls -l /media/sda1 ; umount /dev/sda1
  3. 以唯讀方式掛載存放 lab*.fsa 的硬碟分割: mount -o ro /dev/sda99
  4. 先想好你要給 linux 多少空間, 例如 7168 MB (至少 6000 MB; 不太需要超過 12000 MB)。
  5. 燒毀重練、 賜給它新生命! mbootu2 -t /dev/sdz -f /cdrom -z 7168 注意: 如果當初你的電腦是用隨身碟開機而不是用光碟開機, 請見上一節的說明。
  6. 確認 /dev/sdz5 沒有掛載df ; 萬一有的話, 先卸載: umount /dev/sdz5
  7. 安裝 lubuntu: fsarchiver restfs /media/sda99/abc/pqr/lab172-c.fsa id=0,dest=/dev/sdz5 [打指令或檔案名稱時, 請善用 tab 鍵的 completion 功能。]
  8. 等... 等... 等... (usb 2.0 的隨身碟: 大約 20 到 40 分鐘)
  9. 告訴 boot loader 要從哪裡載入 lubuntu: (需要知 /dev/sdz5 的 UUID, 還需要把最重要的兩個檔案 vmlinuz 跟 initrd 搬到跟 boot loader 放在同一個分割裡。
    df
    mount /dev/sdz1 ; mount /dev/sdz5
    df
    ls /media/sdz1 /media/sdz5
    mkdir /media/sdz1/boot/lubuntu-16.04
    cd /media/sdz5
    cp vmlinuz initrd.img /media/sdz1/boot/lubuntu-16.04
    blkid /dev/sdz5
    nano /media/sdz1/boot/syslinux/extlinux.conf
    
    做適當修改 (見下文)、 存檔, 然後繼續:
    cd ~
    umount /dev/sdz1 /dev/sdz5
    
  10. 重新開機, 測試! reboot

修改 extlinux.conf 的重點 上面所謂的 「適當修改」: 在開機設定檔 extlinux.conf 裡面, 把 debian 7.8 那一整段改掉, 改成如下:

label lubuntu-16.04
	menu label lubuntu-16.04 from ckhung
	kernel /boot/lubuntu-16.04/vmlinuz 
	append initrd=/boot/lubuntu-16.04/initrd.img root=UUID=01234567-89ab-cdef-fedc-ba9876543210

其中 UUID 後面那串十六進位數字請改成 blkid /dev/sdz5 看到的數值。 另外, 最上面的 default finnix-ckhung16c 請改成 default lubuntu-16.04

三、 也可以在虛擬機裡面製作

因為用 fsarchiver 在解壓縮時要等很久, 如果電腦被綁住、 什麼事都不能做, 也很討厭。 其實可以用 qemu-kvm 開虛擬機的方式來執行上述步驟。 有幾個地方需要特別注意:

  1. 如果你把隨身碟丟給 kvm 當成虛擬機的主要硬碟, 那麼在虛擬機裡面會把隨身碟當成 /dev/sda。 mbootu2 預設拒絕處理 /dev/sda。 這時你需要再加上 -o force_sda 參數, 強迫它照樣安裝。
  2. 要啟動虛擬機之前, 都一定要先確認隨身碟已從實體機卸載下來, 以免兩者衝突。