无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 2615|回复: 49
打印 上一主题 下一主题

[求助] 如何用iso镜像的内置grub4dos整体启动wifislax。

[复制链接]
跳转到指定楼层
1#
发表于 2024-6-12 12:50:11 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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、请问下内置菜单如何修才能启动呢。

点评

辛苦了  发表于 2024-6-14 19:49

评分

参与人数 1无忧币 +2 收起 理由
yyz2191958 + 2 淡定

查看全部评分

2#
发表于 2024-6-12 14:23:53 来自手机 | 只看该作者
这是grub2区,发错区了。再说livemedia后的参数hd0,0首先确保磁盘设备输入正确,是都在第一个硬盘的第一个分区?路径大小写正确,大小写不同视为不同文件,输入错了,文件找不到。

点评

iso文件确实在(hd0,0)  详情 回复 发表于 2024-6-12 14:32
回复

使用道具 举报

3#
发表于 2024-6-12 14:25:00 来自手机 | 只看该作者
再有其余得英文字母不要用中文的全角字符,用英文状态的字母和符号,

点评

每个字母都是在英文输入法下打字的。  详情 回复 发表于 2024-6-12 14:33
回复

使用道具 举报

4#
 楼主| 发表于 2024-6-12 14:32:10 | 只看该作者
本帖最后由 2012zhiwen 于 2024-6-12 14:38 编辑
my9823 发表于 2024-6-12 14:23
这是grub2区,发错区了。再说livemedia后的参数hd0,0首先确保磁盘设备输入正确,是都在第一个硬盘的第一个 ...

iso文件确实在(hd0,0),大小写也注意到了,感觉就是找不到iso文件才启动不了。
回复

使用道具 举报

5#
 楼主| 发表于 2024-6-12 14:33:00 | 只看该作者
my9823 发表于 2024-6-12 14:25
再有其余得英文字母不要用中文的全角字符,用英文状态的字母和符号,

每个字母都是在英文输入法下打字的。
回复

使用道具 举报

6#
发表于 2024-6-12 14:41:33 | 只看该作者
好久好久不玩 grub4dos 了
回复

使用道具 举报

7#
发表于 2024-6-13 15:50:11 | 只看该作者
不要加grub下的磁盘号,linux不认。
livemedia=/ISOS/wifislax64-3.3-final.iso

点评

刚刚测试了,启动不了  详情 回复 发表于 2024-6-14 11:30
我试下  详情 回复 发表于 2024-6-13 16:09
回复

使用道具 举报

8#
发表于 2024-6-13 16:03:26 | 只看该作者
iOS?

点评

对,整体启动iso  详情 回复 发表于 2024-6-13 16:10
回复

使用道具 举报

9#
 楼主| 发表于 2024-6-13 16:09:40 | 只看该作者
wintoflash 发表于 2024-6-13 15:50
不要加grub下的磁盘号,linux不认。
livemedia=/ISOS/wifislax64-3.3-final.iso

我试下
回复

使用道具 举报

10#
 楼主| 发表于 2024-6-13 16:10:42 | 只看该作者

对,整体启动iso
回复

使用道具 举报

11#
 楼主| 发表于 2024-6-14 11:30:08 | 只看该作者
wintoflash 发表于 2024-6-13 15:50
不要加grub下的磁盘号,linux不认。
livemedia=/ISOS/wifislax64-3.3-final.iso

刚刚测试了,启动不了
回复

使用道具 举报

12#
发表于 2024-6-14 11:45:12 来自手机 | 只看该作者
这个需要看看它的initrd是如何处理这个参数的,内核后边的参数有的是内核处理,有的是initrd或者initramfs处理

点评

这个要怎么处理呢  详情 回复 发表于 2024-6-14 11:48
回复

使用道具 举报

13#
 楼主| 发表于 2024-6-14 11:48:26 | 只看该作者
my9823 发表于 2024-6-14 11:45
这个需要看看它的initrd是如何处理这个参数的,内核后边的参数有的是内核处理,有的是initrd或者initramfs ...

这个要怎么处理呢

点评

你原来不是在grub4dos区发贴了吗?怎么又发到grub2区来了。 不知道你现在要操作什么? 对于linux启动参数的处理,一般是依照安装光盘的参数来操作。除非你对这个系统非常熟悉了,对于镜像的内容也了然,就可以  详情 回复 发表于 2024-6-14 13:20
回复

使用道具 举报

14#
发表于 2024-6-14 13:20:46 | 只看该作者
2012zhiwen 发表于 2024-6-14 11:48
这个要怎么处理呢

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

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

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

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

回复

使用道具 举报

15#
发表于 2024-6-14 16:52:46 | 只看该作者
initrd/boot/initrd.xz
看到这句没?先用xz -d initrd.xz解开,再用file命令查看initrd格式,确定解压方法。
找个ext3或者ext4分区,因为linux中有硬链接,其他分区格式怕丢失文件。
如果是基于slackware的应该不是systemd启动,一般是脚本,找吧!

点评

请问下,下面的两个参数如何用呢 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  详情 回复 发表于 2024-6-14 18:29
回复

使用道具 举报

16#
发表于 2024-6-14 17:00:55 | 只看该作者
拿partedmagic来说,它基于slackware,看看/etc/inittab,/etc/rc.d/rc.S这个脚本。
回复

使用道具 举报

17#
 楼主| 发表于 2024-6-14 18:29:45 | 只看该作者
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".

点评

livemedia 是指定iso所在位置,或者iso解开后放置的分区 livemain 是iso解开后放置的文件夹 (默认wifislax64 文件夹,如果不是的话就需要指定)。如果livemedai指定的是iso而不是解开的分区,就不需要此参数。  详情 回复 发表于 2024-6-14 20:12
回复

使用道具 举报

18#
发表于 2024-6-14 19:15:04 | 只看该作者
livemedia字面上应该是启动介质吧?应该写成/dev/sdx这种,如:/dev/sda1表示第一个sata硬盘的第一个分区,也可以使用UUID和磁盘卷标来定位吧?livemain后面跟着目录名。
回复

使用道具 举报

19#
发表于 2024-6-14 19:16:25 | 只看该作者
本帖最后由 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 硬盘的第一和第二个分区。
回复

使用道具 举报

20#
发表于 2024-6-14 19:25:34 | 只看该作者

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

点评

(⊙o⊙)哇,这样就清晰很多了  详情 回复 发表于 2024-6-15 00:50
回复

使用道具 举报

21#
发表于 2024-6-14 19:28:58 | 只看该作者
hd0,0是grub和grub4dos的表示设备的方法,linux中无法识别这种表示方法。/dev/hda1,/dev/hdb1,/dev/sda1,/dev/sdb1.......
回复

使用道具 举报

22#
发表于 2024-6-14 20:12:02 | 只看该作者
本帖最后由 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

点评

感谢给出这么详细的解答。  详情 回复 发表于 2024-6-15 00:49
回复

使用道具 举报

23#
发表于 2024-6-14 21:42:07 来自手机 | 只看该作者
加载vmlinuz内核后,把initrd释放到内存盘中,initrd本身就是一个迷你版linux,,解开initrd会发现它的目录结构和linux的目录一样。根目录有个init有时候是个脚本。如果不是看看/sbin目录有没有init,或者/etc目录有没有inittab等。如果是systemd启动,init就是systemd的软连接。

点评

感谢解答,这几天在折腾中。  详情 回复 发表于 2024-6-15 00:47
回复

使用道具 举报

24#
发表于 2024-6-14 22:06:25 | 只看该作者
我服了。你照原帖抄都能抄偏了。不懂就别瞎几把乱改。

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

点评

好人  发表于 2024-6-15 21:03
大神出手。果然厉害。可否写个用卷标参数来处理的菜单呢,感谢感谢🙏  详情 回复 发表于 2024-6-15 00:45

评分

参与人数 1无忧币 +2 收起 理由
yyz2191958 + 2 赞一个!

查看全部评分

回复

使用道具 举报

25#
 楼主| 发表于 2024-6-15 00:45:03 | 只看该作者
wintoflash 发表于 2024-6-14 22:06
我服了。你照原帖抄都能抄偏了。不懂就别瞎几把乱改。

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

大神出手。果然厉害。可否写个用卷标参数来处理的菜单呢,感谢感谢🙏

点评

用卷标跟用uuid是一样的用法,只不过是使用卷标代替uuid而已。 我认为,uuid用于根据标志文件找分区,而卷标则用于自定义卷标。 如果有统一命名卷标的话,使用卷标的方法会更好,否则建议使用uuid.\ uuid用法如  详情 回复 发表于 2024-6-15 13:50
用卷标不好。  详情 回复 发表于 2024-6-15 09:05
回复

使用道具 举报

26#
 楼主| 发表于 2024-6-15 00:47:20 | 只看该作者
my9823 发表于 2024-6-14 21:42
加载vmlinuz内核后,把initrd释放到内存盘中,initrd本身就是一个迷你版linux,,解开initrd会发现它的目录 ...

感谢解答,这几天在折腾中。
回复

使用道具 举报

27#
 楼主| 发表于 2024-6-15 00:49:37 | 只看该作者
hilsonma 发表于 2024-6-14 20:12
livemedia 是指定iso所在位置,或者iso解开后放置的分区
livemain 是放置live os的文件夹。默认根目录下 ...

感谢给出这么详细的解答。
回复

使用道具 举报

28#
 楼主| 发表于 2024-6-15 00:50:46 | 只看该作者
my9823 发表于 2024-6-14 19:25
比如我的硬盘就三个分区,第一个分区esp分区,第二个分区ext4分区,最后一个ntfs分区。如果有多个硬盘, ...

(⊙o⊙)哇,这样就清晰很多了
回复

使用道具 举报

29#
发表于 2024-6-15 09:05:57 | 只看该作者
2012zhiwen 发表于 2024-6-15 00:45
大神出手。果然厉害。可否写个用卷标参数来处理的菜单呢,感谢感谢🙏

用卷标不好。

点评

想看看用卷标,是如何写的  详情 回复 发表于 2024-6-15 13:50
回复

使用道具 举报

30#
发表于 2024-6-15 12:32:44 来自手机 | 只看该作者
iOS不是苹果的么

点评

ISO  详情 回复 发表于 2024-6-15 13:51
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-25 16:05

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表