作者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/cn.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