在 M515 電腦教室用隨身碟開機
[適用於 107 上學期朝陽資管 M515 教室 「作業系統」、 「人工智慧應用」 兩門課程。]
一、 第一次上課如何開機
- 老師幫你的隨身碟加持/祝福一下。 這會建立一個開機選單、 用掉大約 100MB 的空間。
- 電腦關機。
- 插入隨身碟。
- 開機, 迅速按下 F9。
- 在 (主機板上的韌體) BIOS 的開機選單畫面裡, 找到 "Hard Disk" 底下的某個 "USB-HDDx" (應該會看到你的隨身碟的廠牌名稱)
- 如果出現兩個同名稱選項, 一個是 legacy, 另一個是 UEFI, 請選 legacy。
- 進入第二層開機選單 (看到朝陽空拍圖) 時, 請選 「M515 bionic forgetful」。 這是 live 版, 有點像還原卡的效果, 你所做的一切, 在關機時會完全被遺忘! (除非你特地指定要把某些檔案存入隨身碟。)
- 設定網路:
sudo bash
變身成 root、ip link
查看網卡名稱 (忽略 lo, 那個是假的)、nano /etc/network/interfaces
按照 這篇 填寫。 網卡名稱 (eth0) 可能要改。 其他數字也要按照教室螢幕右下角的數字更改。 (開機隨身碟上的 /boot/interfaces 也有參考範例。)ifup eth0
啟動網卡、echo 'nameserver 8.8.8.8' > /etc/resolv.conf
設定 DNS。 更多網路設定與除錯教學, 請見 「網路基本指令」
二、 自製更多開機隨身碟
以下只需要做一次 (從伺服器抓取開機所需的最基本檔案、 存入硬碟)
mkdir /mnt/live df mount /dev/mapper/m515-live /mnt/live df # 確認比先前多出一列 cd /mnt/live ls -l wget https://v.im.cyut.edu.tw/ftp/18/m515-boot-files.tar ls -l md5sum m515-boot-files.tar # 確認跟網頁上的 00md5sum.txt 內容相同 umount /dev/mapper/m515-live df # 確認比先前少了一列
每做一支開機隨身碟都需要重複一次以下的動作:
ls /dev/sd* fdisk -s /dev/sd? # 現在插入隨身碟 ls /dev/sd* fdisk -s /dev/sd? # 確認多出一顆隨身碟, 容量正確。 # 以下請將 /dev/sdz 改成正確的名稱 mbootuz.py mkboot /dev/sdz # 建立開機選單!只有這個動作非在 linux 下做不可 # 以下都只是複製/解壓縮, 在 windows 底下也可以做。 mount /dev/sdz1 mount /dev/mapper/m515-live /mnt/live df # 確認多出兩列 cd /media/sdz1 ls -l tar xvf /mnt/live/m515-boot-files.tar ls -l # 多出 grml-g18B/ 跟 bionic-g18E/ ## 如果希望在 M515 之外的地方也能用 ## grml linux (純命令列救援版) ## 需要多佔 0.5G 的空間 # tar xvf /mnt/live/g.tar ## 從此以後, 空拍畫面選單上的 「grml ... boot to ram」 就可以使用 ## 如果希望在 M515 之外的地方也能用 ## lubuntu linux "bionic beaver" (上課用的完整版) ## 需要多佔 5G 的空間 # tar xvf /mnt/live/b.tar ## 從此以後, 空拍畫面選單上的 「lubuntu ... forgeful」 ## 跟 「lubuntu ... boot to ram」 就可以使用 umount /dev/mapper/m515-live umount /dev/sdz1 df # 確認少了兩列
四、 在隨身碟上製作 「有記憶版」
隨身碟上的 「有記憶版」 稱為 persistence
技術。 它需要再多佔用 2G 的隨身碟空間。
只要把隨身碟掛載起來, 然後 gunzip
<
/media/sdz1/boot/persistence0.img.gz
>
/media/sdz1/bionic-g18E/stux.img
(耐心! 需要等幾分鐘...) 再卸載隨身碟,
下一次拿它開機時, 到了朝陽空拍畫面, 即可選擇
「lubuntu 18.04 g18E persistence」 這個選項。
以這種方式開機之後, 如果下 df 指令, 應該要看到有一列大約 2G 大小的 persistence/loop1 裝置; 如果沒看到, 有可能是設定檔寫錯, 或 stux.img 放錯地方。 如果有看到這一列, 從此以後你的工作階段就可以延續下去了。
以後如果不小心把系統玩爛掉了, 也可以用相同的方式重新建立一個乾淨的 stux.img 效果類似於 (只在當次) 還原到最原始的狀態。
五、 製作 M515 教室的 「有記憶版」
以上的使用方式, root file system
都是放在一個很大的、 唯讀的壓縮檔裡面, 所以才可以很省空間;
但也因此讓寫入資料變得很麻煩。 請下
df
查看, 其中有一列的掛載點名為
...squashfs, 且已用百分比為 100% ,
這就是那個 「很大的、 唯讀的壓縮檔」。 用 ls
...
查看, 會看到 bin、 dev、
etc、 lib、 usr、 ... 等等目錄,
這些就是完整的 linux 所需要的檔案。
- 把 /dev/mapper/m515-CLASSNAME 掛載起來。 (請把 CLASSNAME 改成 c_os 或 c_ai)
- 把上述 ...squashfs 目錄下所有檔案與子目錄全部複製到 /dev/mapper/m515-CLASSNAME 的掛載點。 (耐心! 需要等幾分鐘...)
- 用
blkid /dev/mapper/m515-CLASSNAME
查看它的 UUID - 編輯 m515-CLASSNAME 底下的 etc/fstab , 把原先被註解掉的 UUID=... 那一句打開, 並且改成正確的 UUID。
- 編輯 m515-CLASSNAME 底下的 etc/network/interfaces 及 etc/resolv.conf
- 修改隨身碟上的設定檔 boot/syslinux/extlinux.conf 把 m515-bionic-CLASSNAME 那一段的兩處 CLASSNAME 改掉, 以後開機開到朝陽空拍畫面時, 即可選擇最後一個 (完整版) 的選項, 而且網路設定會記起來, 不再需要每次重開機就重設一次。
重開機之後, 建議在 /etc/fstab 裡面加上這兩列:
/dev/mapper/m515-live /mnt/live auto user,noauto 0 2 /dev/mapper/m515-data /mnt/data auto user,noauto 0 2並且建立那兩個掛載點, 以後比較方便。
六、 下一步
想要在其他電腦上用隨身碟開機, 也是一樣開機時需要按某個鍵才能看見開機選單。 但到底該按哪個鍵? 每部電腦不一樣。 「百毒不侵救命碟」 使用入門。
再來, 到這一頁: 「從零開始的 linux 學習指南」 從 「安裝成功之後」 開始你的電腦自由之旅吧!
七、 進階: 在隨身碟上建立 zfs、 安裝完整版
隨身碟上若要安裝完整版, 採用 zfs 會是較佳的選擇。 本節的動作會 燒毀你的隨身碟, 所有資料會消失!
- 掛載 /dev/mapper/m515-data 、 把先前下載的 bionic-6-apps.zsnap.gz 複製到那個 logical volume 去。
- 燒毀!
mbootuz.py wipe -L 12G -t bf /dev/sdz
清空 sdz 整顆隨身碟的資料、 第二分割預留 12G 給 linux 將製成 zfs (type bf)。 其餘空間配給第一分割儲存資料, 可與 windows 交換檔案。 - 建立開機選單:
mbootuz.py mkboot /dev/sdz
- 把先前開機隨身碟的 extlinux.conf 複製過來。
- 先設定一個名字:
export ZPNAME=你(選)的名字
例如老師有好幾顆 sandisk blade, 所以這樣命名:export ZPNAME=sanBLa
- 在 /dev/sdz2 上面建立一個 zpool:
zpool create $ZPNAME /dev/sdz2
- 把整個作業系統搬到第二分割裡:
zcat /mnt/data/bionic-6-apps.zsnap.gz | zfs receive -d -Fu $ZPNAME
- 上面那個指令要等很久。 此時可以先把 /dev/sdz1 掛載起來,
編輯 boot/syslinux/extlinux.conf , 裡面加一個選項類似這樣:
label zfs-bionic menu label lubuntu 18.04 on zfs kernel /bionic-g18E/vmlinuz-4.15.0-24-generic append initrd=/bionic-g18E/initrd.img-4.15.0-24-generic apm=power-off vga=791 nomce net.ifnames=0 boot=zfs root=剛剛選的名字/ROOT/bionic
改完之後, 卸載 /dev/sdz1 。 - 另外, 也請把開機所需的兩個檔案 (kernel 跟 initrd) 複製到正確的位置 (bionic-g18E/ )。
- (等到搬完之後) 暫時變更 root file system 的掛載點:
zfs set mountpoint=/mnt/t1 $ZPNAME/ROOT/bionic
- 掛載:
zfs mount $ZPNAME/ROOT/bionic
- 確認 /mnt/t1/etc/fstab 裡面, root file system 那一句被註解掉了。 另外, /mnt/t1/etc/network/interfaces 裡面預設的那些複雜設定, 是為了 在 ubuntu 底下建立 kvm 虛擬機的網路, 可以不要去動它, 也可以改成簡單的 dhcp。
- 卸載:
zfs umount $ZPNAME/ROOT/bionic
- 把 root file system 的掛載點改回來:
zfs set mountpoint=/ $ZPNAME/ROOT/bionic
- 移除隨身碟之前必須先
zpool export $ZPNAME
有一點類似 umount /dev/sdz2 的意思, 但因為它是 zpool , 所以用的指令不同。
附錄、 linux 電腦開機過程的重要檔案