→ kdjf: 以現在的環境來說,用grub+隨便找有isoboot的distro的kernel 01/11 23:18
→ kdjf: 直接chainload進去finnix的環境應該是比較快的 01/11 23:18
→ kdjf: mendisk可以成功帶表你可能也可以用grub2直接掛iso讀kernel 01/11 23:23
→ kdjf: 進去,剩下的找到rootfs都是自己initrd的事情 01/11 23:27
後來發現就算用 memdisk 還是會有問題,
多數發行版的光碟都會在啟動後去找光碟本身,
載入其它存在光碟的壓縮好的映像檔。
但因為是用光碟映像檔案,所以開機後就找不到光碟,
像 ubuntu finnix 都會卡在這一步。
部份有準備的發行版就會丟一個 busybox shell 給你,
告訴你找不到光碟,要你想辦法把光碟掛載到 /cdrom 下,
他才有辦法繼續開機。
用 grub2 是能直接掛載光碟,看到裡面的檔案系統,
但就要找出 kernel 和 initrd 放在光碟裡的哪裡,
手動載入開機。
且還是會有上面開機就後找不到光碟的問題。
後來回去用了以前用過的 easy2boot ,能解決這個問題。
他的作法是把隨身碟切成二個分割區,
第一個放 e2b 本身,第二個可能是用來模擬成光碟,
開機後 os 就會以為第二個分割是光碟?
詳細不清楚他是怎麼做的。
※ 編輯: Gold740716 (140.116.252.152), 01/12/2019 11:03:12
→ kdjf: boot=casper iso-scan/filename=$isofile 其它請自己看完 01/12 13:12
→ kdjf: 不過這些只對debian/ubuntu系列用make-live出來的CD有效 01/12 13:20
這就是我覺得麻煩的地方,每個發行版的參數都不一樣,
還是直接燒成開機碟比較方便。
後來寫了個腳本可以把隨身碟燒成開機碟後,
還能還原原來的樣子。
https://github.com/GHolk/loco/blob/master/bin/flash-iso-recovery.sh
※ 編輯: Gold740716 (140.116.252.152), 01/12/2019 14:50:21
→ HamalAri: @kdjf: 如果只是要解 finnix 這很容易,可是 memdisk 為 01/12 16:27
→ HamalAri: 什麼會壞掉你有什麼比較深入見解嗎? 01/12 16:27
→ HamalAri: 我也常愈到 memdisk 掛 iso 在某些機器就是開不了 01/12 16:28
→ HamalAri: @Gold740716: 參數不一樣是一定的,因為 live cd 就是要 01/12 16:28
→ HamalAri: 在正常的 initramfs 裡塞一堆東西讓一般的系統可以變成 01/12 16:29
→ HamalAri: live ,這些東西全部都是各 distro 自已寫的 01/12 16:29
→ HamalAri: 並不是大家都想自已造輪子,而是 live 本來就是客製化 01/12 16:30
→ kdjf: 只支援uefi的機器是透過iso module模擬bios like環境給iso 01/13 15:17
→ kdjf: 你從uefi grub chainload memdisk還勉強OK,memdisk想直跳到 01/13 15:18
→ kdjf: iso執行,沒有bios compatible的環境自然死給你看 01/13 15:19
→ kdjf: 有的bios為了避免這樣的問題會不分青紅皂白讓所有的bios服務 01/13 15:20
→ kdjf: 都直接暴露出來,但畢竟是個未定義的東西,用了死掉不奇怪 01/13 15:21
→ kdjf: 上面的iso是指cdrom才對 01/13 15:22
看不太懂。
是因為 memdisk 開光碟是在已經開機完的狀態,
要再回到 bios ,但原本機器的 bios 是模擬出來的,
只有在開機時存在,所以失敗嗎?
※ 編輯: Gold740716 (140.116.252.152), 01/13/2019 23:12:06
→ kdjf: uefi是一套全新的韌體,bios是舊的韌體,提供不同的abi 01/14 09:18