无忧启动论坛

标题: 如何用iso镜像的内置grub4dos整体启动wifislax。 [打印本页]

作者: 2012zhiwen    时间: 2024-6-12 12:50
标题: 如何用iso镜像的内置grub4dos整体启动wifislax。
本帖最后由 2012zhiwen 于 2024-6-15 13:52 编辑

1、请教下liuzhaoyzz大神,用你的grub4dos菜单(http://bbs.wuyou.net/forum.php?mod=viewthread&tid=429989,在10楼的回复)可以启动wifislax,但是如果把此菜单内置于iso文件镜像内,就不能启动。我启动步骤如下:
开机启动本地硬盘的grub4dos ->自动加载RUN模块 ->利用RUN模块的自动列表功能找到wifislax64-3.3-final.iso ->按确认键启动该iso文件。然后就出现如下的错误。整理磁盘碎片也不行,重新复制文件消除碎片,也不行。



2、之后我又把内置菜单做如下的修改:
title grub4do整体启动:wifislax(内置菜单)(成功)
find --set-root /ISOS/wifislax64-3.3-final.iso
find --set-root /boot/vmlinuz
kernel /boot/vmlinuz livemedia=(hd0,0)/ISOS/wifislax64-3.3-final.iso noload="000-PAE;012-x" autoexec=telinit~4
find --set-root /boot/initrd.xz
initrd/boot/initrd.xz
启动如下图

3、请问下内置菜单如何修才能启动呢。

作者: my9823    时间: 2024-6-12 14:23
这是grub2区,发错区了。再说livemedia后的参数hd0,0首先确保磁盘设备输入正确,是都在第一个硬盘的第一个分区?路径大小写正确,大小写不同视为不同文件,输入错了,文件找不到。
作者: my9823    时间: 2024-6-12 14:25
再有其余得英文字母不要用中文的全角字符,用英文状态的字母和符号,
作者: 2012zhiwen    时间: 2024-6-12 14:32
本帖最后由 2012zhiwen 于 2024-6-12 14:38 编辑
my9823 发表于 2024-6-12 14:23
这是grub2区,发错区了。再说livemedia后的参数hd0,0首先确保磁盘设备输入正确,是都在第一个硬盘的第一个 ...

iso文件确实在(hd0,0),大小写也注意到了,感觉就是找不到iso文件才启动不了。
作者: 2012zhiwen    时间: 2024-6-12 14:33
my9823 发表于 2024-6-12 14:25
再有其余得英文字母不要用中文的全角字符,用英文状态的字母和符号,

每个字母都是在英文输入法下打字的。
作者: martin313    时间: 2024-6-12 14:41
好久好久不玩 grub4dos 了
作者: wintoflash    时间: 2024-6-13 15:50
不要加grub下的磁盘号,linux不认。
livemedia=/ISOS/wifislax64-3.3-final.iso
作者: szwp    时间: 2024-6-13 16:03
iOS?
作者: 2012zhiwen    时间: 2024-6-13 16:09
wintoflash 发表于 2024-6-13 15:50
不要加grub下的磁盘号,linux不认。
livemedia=/ISOS/wifislax64-3.3-final.iso

我试下
作者: 2012zhiwen    时间: 2024-6-13 16:10
szwp 发表于 2024-6-13 16:03
iOS?

对,整体启动iso
作者: 2012zhiwen    时间: 2024-6-14 11:30
wintoflash 发表于 2024-6-13 15:50
不要加grub下的磁盘号,linux不认。
livemedia=/ISOS/wifislax64-3.3-final.iso

刚刚测试了,启动不了
作者: my9823    时间: 2024-6-14 11:45
这个需要看看它的initrd是如何处理这个参数的,内核后边的参数有的是内核处理,有的是initrd或者initramfs处理
作者: 2012zhiwen    时间: 2024-6-14 11:48
my9823 发表于 2024-6-14 11:45
这个需要看看它的initrd是如何处理这个参数的,内核后边的参数有的是内核处理,有的是initrd或者initramfs ...

这个要怎么处理呢
作者: hilsonma    时间: 2024-6-14 13:20
2012zhiwen 发表于 2024-6-14 11:48
这个要怎么处理呢

你原来不是在grub4dos区发贴了吗?怎么又发到grub2区来了。

不知道你现在要操作什么?

对于linux启动参数的处理,一般是依照安装光盘的参数来操作。除非你对这个系统非常熟悉了,对于镜像的内容也了然,就可以按自己的意愿去设置参数。

启动参数是要跟镜像内容匹配的,如果不熟悉镜像的内容,也不熟悉参数的具体运用,那还是照搬安装光盘为好。


作者: my9823    时间: 2024-6-14 16:52
initrd/boot/initrd.xz
看到这句没?先用xz -d initrd.xz解开,再用file命令查看initrd格式,确定解压方法。
找个ext3或者ext4分区,因为linux中有硬链接,其他分区格式怕丢失文件。
如果是基于slackware的应该不是systemd启动,一般是脚本,找吧!
作者: my9823    时间: 2024-6-14 17:00
拿partedmagic来说,它基于slackware,看看/etc/inittab,/etc/rc.d/rc.S这个脚本。
作者: 2012zhiwen    时间: 2024-6-14 18:29
my9823 发表于 2024-6-14 16:52
initrd/boot/initrd.xz
看到这句没?先用xz -d initrd.xz解开,再用file命令查看initrd格式,确定解压方法 ...

请问下,下面的两个参数如何用呢
livemedia=/dev/sdX => Tell the init script which partition
  contains the Wifislax64 Live OS you want to boot. This can
  become necessary if you have another copy of Wifislax64 Live
  installed in another partition.  Also accepted: UUID or LABEL

livemain=directoryname => Use this if you copied the content
  of the ISO to a different directory than "wifislax64".
作者: my9823    时间: 2024-6-14 19:15
livemedia字面上应该是启动介质吧?应该写成/dev/sdx这种,如:/dev/sda1表示第一个sata硬盘的第一个分区,也可以使用UUID和磁盘卷标来定位吧?livemain后面跟着目录名。
作者: my9823    时间: 2024-6-14 19:16
本帖最后由 my9823 于 2024-6-14 19:18 编辑

百度来的:因为只见过hdx和sdx这种表示设备的方法,没用过nvme硬盘,百度了下!
IDE硬盘:早期的 IDE 接口硬盘被命名为hd[a-d],其中 hd 表示硬盘(Hard Disk),后面的字母 a 至 d 代表系统中第一至第四个 IDE 硬盘。不过,随着 SATA 接口硬盘的普及,这种命名方式已经变得不那么常见。

SATA/SCSI硬盘:这类硬盘被命名为 sd[a-z],sd 代表 SCSI 盘,尽管 SATA 硬盘并不直接使用 SCSI 接口,但 Linux 内核通过 SCSI 子系统来处理这些设备,因此也使用 sd 作为前缀。后续的字母代表不同的硬盘,例如 sda 是第一个 SATA/SCSI 硬盘,sdb 是第二个,依此类推。当超过 26 个硬盘时,命名会使用多个字母,如 sdaa、sdab 等。

NVMe硬盘:随着 NVMe 接口硬盘的出现,Linux 采用了新的命名规则,即 nvme[0-9]n[1-9],其中 nvme 是固定的前缀,第一个数字表示控制器的编号,n 是固定字符,第二个数字表示该控制器下的命名空间编号。例如,nvme0n1 表示第一个 NVMe 控制器下的第一个命名空间,即第一个 NVMe 硬盘。

分区:Linux 中的磁盘分区也遵循一定的命名规则。对于 IDE、SATA 和 SCSI 硬盘,分区被表示为硬盘名称后跟一个数字,例如 sda1、sda2 等,分别表示 sda 硬盘的第一和第二个分区。对于 NVMe 硬盘,分区命名在硬盘名之后直接加上分区号,例如 nvme0n1p1、nvme0n1p2,分别代表 nvme0n1 硬盘的第一和第二个分区。
作者: my9823    时间: 2024-6-14 19:25

比如我的硬盘就三个分区,第一个分区esp分区,第二个分区ext4分区,最后一个ntfs分区。如果有多个硬盘,不知道哪个是sda1,这得看脚本是如何查找判断的?

作者: my9823    时间: 2024-6-14 19:28
hd0,0是grub和grub4dos的表示设备的方法,linux中无法识别这种表示方法。/dev/hda1,/dev/hdb1,/dev/sda1,/dev/sdb1.......
作者: hilsonma    时间: 2024-6-14 20:12
本帖最后由 hilsonma 于 2024-6-14 20:31 编辑
2012zhiwen 发表于 2024-6-14 18:29
请问下,下面的两个参数如何用呢
livemedia=/dev/sdX => Tell the init script which partition
  cont ...

livemedia 是指定iso所在位置,或者iso解开后放置的分区
livemain 是放置live os的文件夹。默认根目录下的 wifislax64 文件夹,如果live os不是放在根目录下的 wifislax64 的话就需要使用此参数指定live os 文件夹。


vmlinuz 相当于winpe 的 bootmgfw.efi
initrd 相当于 winpe 的 boot.sdi
vmlinuz 后面的参数就相当于winpe 的bcd配置
    livemedia 相当于winpe 的 osdevice
    livemain 相当于winpe 的 systemroot
作者: my9823    时间: 2024-6-14 21:42
加载vmlinuz内核后,把initrd释放到内存盘中,initrd本身就是一个迷你版linux,,解开initrd会发现它的目录结构和linux的目录一样。根目录有个init有时候是个脚本。如果不是看看/sbin目录有没有init,或者/etc目录有没有inittab等。如果是systemd启动,init就是systemd的软连接。
作者: wintoflash    时间: 2024-6-14 22:06
我服了。你照原帖抄都能抄偏了。不懂就别瞎几把乱改。

find --set-root /ISOS/wifislax64-3.3-final.iso
uuid ()
find --set-root /boot/vmlinuz
kernel /boot/vmlinuz livemedia=%?_UUID%:/ISOS/wifislax64-3.3-final.iso noload="000-PAE;012-x" autoexec=telinit~4
find --set-root /boot/initrd.xz
initrd/boot/initrd.xz
作者: 2012zhiwen    时间: 2024-6-15 00:45
wintoflash 发表于 2024-6-14 22:06
我服了。你照原帖抄都能抄偏了。不懂就别瞎几把乱改。

find --set-root /ISOS/wifislax64-3.3-final.iso ...

大神出手。果然厉害。可否写个用卷标参数来处理的菜单呢,感谢感谢🙏
作者: 2012zhiwen    时间: 2024-6-15 00:47
my9823 发表于 2024-6-14 21:42
加载vmlinuz内核后,把initrd释放到内存盘中,initrd本身就是一个迷你版linux,,解开initrd会发现它的目录 ...

感谢解答,这几天在折腾中。
作者: 2012zhiwen    时间: 2024-6-15 00:49
hilsonma 发表于 2024-6-14 20:12
livemedia 是指定iso所在位置,或者iso解开后放置的分区
livemain 是放置live os的文件夹。默认根目录下 ...

感谢给出这么详细的解答。
作者: 2012zhiwen    时间: 2024-6-15 00:50
my9823 发表于 2024-6-14 19:25
比如我的硬盘就三个分区,第一个分区esp分区,第二个分区ext4分区,最后一个ntfs分区。如果有多个硬盘, ...

(⊙o⊙)哇,这样就清晰很多了
作者: wintoflash    时间: 2024-6-15 09:05
2012zhiwen 发表于 2024-6-15 00:45
大神出手。果然厉害。可否写个用卷标参数来处理的菜单呢,感谢感谢🙏

用卷标不好。
作者: szwp    时间: 2024-6-15 12:32
iOS不是苹果的么
作者: 孟仁飞    时间: 2024-6-15 13:48
1
作者: hilsonma    时间: 2024-6-15 13:50
2012zhiwen 发表于 2024-6-15 00:45
大神出手。果然厉害。可否写个用卷标参数来处理的菜单呢,感谢感谢🙏

用卷标跟用uuid是一样的用法,只不过是使用卷标代替uuid而已。
我认为,uuid用于根据标志文件找分区,而卷标则用于自定义卷标。
如果有统一命名卷标的话,使用卷标的方法会更好,否则建议使用uuid.

uuid用法如:
(iso跟vmlinuz、initrd 放同一个文件夹)
  1. title wifislax
  2.     find /wifislax/vmlinuz | set dev=
  3.     uuid %dev%
  4.     set uu=%?%
  5.     kernel %dev%/wifislax/vmlinuz kbd=us xkb=us locale=zh_CN.utf8 tz=Asia/Shanghai rw toram livemedia=%uu%:/wifislax/wifislax30.iso
  6.     initrd %dev%/wifislax/initrd.xz
复制代码


(iso跟vmlinuz、initrd 不是同一个文件夹)
  1. title wifislax
  2.     find /isos/wifislax30.iso | set dev=
  3.     uuid %dev%
  4.     set uu=%?%
  5.     find /wifislax/vmlinuz | set dev=
  6.     kernel %dev%/wifislax/vmlinuz kbd=us xkb=us locale=zh_CN.utf8 tz=Asia/Shanghai rw toram livemedia=%uu%:/wifislax/wifislax30.iso
  7.     initrd %dev%/wifislax/initrd.xz
复制代码


卷标用法如:
(将iso所在分区卷标命名 MYISO )
  1. title wifislax
  2.     find /wifislax/vmlinuz | set dev=
  3.     kernel %dev%/wifislax/vmlinuz kbd=us xkb=us locale=zh_CN.utf8 tz=Asia/Shanghai rw toram livemedia=MYISO:/isos/wifislax30.iso
  4.     initrd %dev%/wifislax/initrd.xz
复制代码

作者: 2012zhiwen    时间: 2024-6-15 13:50
wintoflash 发表于 2024-6-15 09:05
用卷标不好。

想看看用卷标,是如何写的
作者: 2012zhiwen    时间: 2024-6-15 13:51
szwp 发表于 2024-6-15 12:32
iOS不是苹果的么

ISO
作者: 2011whp    时间: 2024-6-15 14:21
也可以 试试用 run 的方法 (比修改镜像 方便)

http://wuyou.net/forum.php?mod=r ... &fromuid=413782
作者: szwp    时间: 2024-6-15 16:43
2012zhiwen 发表于 2024-6-15 13:51
ISO

发现了么,grub2和grub4dos也是不同的。
作者: 2012zhiwen    时间: 2024-6-15 19:54
hilsonma 发表于 2024-6-15 13:50
用卷标跟用uuid是一样的用法,只不过是使用卷标代替uuid而已。
我认为,uuid用于根据标志文件找分区,而 ...

如果不知道卷标的话,这样的菜单如何写呢。
作者: hilsonma    时间: 2024-6-15 20:54
2012zhiwen 发表于 2024-6-15 19:54
如果不知道卷标的话,这样的菜单如何写呢。

29楼不是说了么,用卷标不好
他说的就是你这种情况

用卷标是linux的一大优势,但只是对善用卷标的人而言。
如果连卷标都不知道,为什么要用卷标呢,这时使用uuid 更好。
因为,别忘了,有相当一部分人,他们的一些分区,连卷标都没有的,卷标是空的。
作者: 财源茂盛    时间: 2024-6-15 21:25
提示: 作者被禁止或删除 内容自动屏蔽
作者: 2012zhiwen    时间: 2024-6-16 09:29
hilsonma 发表于 2024-6-15 20:54
29楼不是说了么,用卷标不好
他说的就是你这种情况

有道理




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net./) Powered by Discuz! X3.3