作者Gold740716 (項為之強)
看板Linux
標題[問題] memdisk 還能用嗎?
時間Fri Jan 11 21:28:46 2019
最近看到原來 syslinux 的 memdisk 能在 grub 裡運作,
也就能在 grub 裡用 memdisk 直接以光碟開機。
但我在 grub 的 shell 裡試著用指令載入 memdisk ,
會卡在該光碟的開機畫面。
我下的指令如下:
linux16 /boot/memdisk iso raw
initrd16 /boot/iso/finnix-ckhung16c.iso
boot
在載入 initrd 時有點久,之後也能開機到光碟,
可是進到光碟就不會動了,
方向鍵、游標、光碟的開機倒數也停在一開始。
但我用 qemu-system-x86_64 -hda /dev/sdb
測隨身碟上面的指令是能正常進到光碟的,
也不會畫面凍結在光碟開機的畫面。
會不會是筆電太新?
memdisk 好像一段時間沒更新了,
他的 kernel 版本也有點舊。
但我的筆電是二年內的算新,是用 uefi 開機。
有人最近在 grub 下成功用 memdisk 從光碟檔開機成功的嗎?
不然可能要跳回 grub4dos 了。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.116.252.152
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Linux/M.1547213329.A.D1A.html
1F:→ kdjf: 以現在的環境來說,用grub+隨便找有isoboot的distro的kernel 01/11 23:18
2F:→ kdjf: 直接chainload進去finnix的環境應該是比較快的 01/11 23:18
3F:→ kdjf: mendisk可以成功帶表你可能也可以用grub2直接掛iso讀kernel 01/11 23:23
4F:→ 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
6F:→ kdjf: boot=casper iso-scan/filename=$isofile 其它請自己看完 01/12 13:12
7F:→ 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
8F:→ HamalAri: @kdjf: 如果只是要解 finnix 這很容易,可是 memdisk 為 01/12 16:27
9F:→ HamalAri: 什麼會壞掉你有什麼比較深入見解嗎? 01/12 16:27
10F:→ HamalAri: 我也常愈到 memdisk 掛 iso 在某些機器就是開不了 01/12 16:28
11F:→ HamalAri: @Gold740716: 參數不一樣是一定的,因為 live cd 就是要 01/12 16:28
12F:→ HamalAri: 在正常的 initramfs 裡塞一堆東西讓一般的系統可以變成 01/12 16:29
13F:→ HamalAri: live ,這些東西全部都是各 distro 自已寫的 01/12 16:29
14F:→ HamalAri: 並不是大家都想自已造輪子,而是 live 本來就是客製化 01/12 16:30
15F:→ kdjf: 只支援uefi的機器是透過iso module模擬bios like環境給iso 01/13 15:17
16F:→ kdjf: 你從uefi grub chainload memdisk還勉強OK,memdisk想直跳到 01/13 15:18
17F:→ kdjf: iso執行,沒有bios compatible的環境自然死給你看 01/13 15:19
18F:→ kdjf: 有的bios為了避免這樣的問題會不分青紅皂白讓所有的bios服務 01/13 15:20
19F:→ kdjf: 都直接暴露出來,但畢竟是個未定義的東西,用了死掉不奇怪 01/13 15:21
20F:→ kdjf: 上面的iso是指cdrom才對 01/13 15:22
看不太懂。
是因為 memdisk 開光碟是在已經開機完的狀態,
要再回到 bios ,但原本機器的 bios 是模擬出來的,
只有在開機時存在,所以失敗嗎?
※ 編輯: Gold740716 (140.116.252.152), 01/13/2019 23:12:06
21F:→ kdjf: uefi是一套全新的韌體,bios是舊的韌體,提供不同的abi 01/14 09:18