无忧启动论坛

标题: 请问下grub4dos设备命名怎么与linux设备名对应起来? [打印本页]

作者: liuzhaoyzz    时间: 2021-1-28 09:07
标题: 请问下grub4dos设备命名怎么与linux设备名对应起来?
本帖最后由 liuzhaoyzz 于 2021-1-28 09:24 编辑

请问下grub4dos的设备命名怎么与linux的设备名对应起来?比如
find --set-root /grldr
结果是(hd0,0),对应于linux下面的设备名可能是sda1,sdb1,hda1,hdb1……这样子的名字,有没有命令参数实现设备名自动转换?建立准确的对应关系?
grub4dos没有命令或者参数可以实现这个转换吧?
那么windows下有没有c/c++/au3/ahk/delphi/pecmd/批处理之类的能够搞定的?



Linux中IDE硬盘,驱动标识符为“hdx-”,其中hd表示设备类型为IDE硬盘,x为盘号,表示第几块硬盘(a为基本盘,b为基本从属盘,c为辅助主盘,d为辅助从属盘),“-”代表分区,前4个分区用数字1到4表示,它们是主分区或扩展分区,从5开始就是逻辑分区(扩展分区不能直接使用,需切割出逻辑分区,逻辑分区的数量没有限制)

Linux中SATA或SCSI硬盘,驱动标识符为“sdx-”,sd表示设备类型为SATA硬盘,如:

hda2:表示第一个IDE硬盘上的第二个主分区或扩展分区

sdb5:表示第二个SATA硬盘上的第一个逻辑分区

作者: wintoflash    时间: 2021-1-28 09:18
本帖最后由 wintoflash 于 2021-1-28 09:19 编辑
请问下grub4dos的设备命名怎么与linux的设备名对应起来?

明确告诉你, GRUB2 / GRUB4DOS 的设备,和 Windows / Linux 里面的设备名,没有必然的联系。
你的电脑要是两者的顺序恰好一一对应,那是巧合,说明制造商想的和你一样。

Linux 下一般用文件系统 UUID 来唯一确定磁盘。
在 GRUB2 下,用如下命令获得分区的文件系统 UUID:
  1. probe --set=aaa -u (hdx,y)
  2. echo $aaa
复制代码

在 GRUB4DOS 下,用 UUID 命令可以获取 UUID。
  1. uuid (hdx,y-1)
  2. echo %?%
复制代码


在 Linux 下,可以用 /dev/disk/by-uuid/$UUID 访问对应磁盘
假设 UUID 是 1234-ABCD,那就是 /dev/disk/by-uuid/1234-ABCD。再用 mount 命令挂载就可以了。

archlinux wiki
作者: qingdao33122    时间: 2021-1-28 09:41
wintoflash 发表于 2021-1-28 09:18
明确告诉你, GRUB2 / GRUB4DOS 的设备,和 Windows / Linux 里面的设备名,没有必然的联系。
你的电脑 ...

有个问题我一直很疑惑,Linux的分区UUID到底是指什么。这个UUID是根据什么来的。还有UUID应该是用很长一串数字表示的,但是有时候却把很短的一串数字也叫UUID。。。
作者: wintoflash    时间: 2021-1-28 09:50
本帖最后由 wintoflash 于 2021-1-28 09:52 编辑
qingdao33122 发表于 2021-1-28 09:41
有个问题我一直很疑惑,Linux的分区UUID到底是指什么。这个UUID是根据什么来的。还有UUID应该是用很长一 ...

你说的是 "分区 UUID" 还是 "文件系统 UUID" ?通常情况下指 "文件系统 UUID",是格式化文件系统的时候写的一个数据。
FAT / NTFS 之类的文件系统本身不支持 UUID,一般指的是 bpb 中的序列号。
比如 FAT 文件系统,UUID 就是 32 位的,一般表示为 "XXXX-XXXX"。NTFS 的是 64 位的。
"分区 UUID" 指的是 GPT 分区表里面分区表项记录的UUID。

作者: liuzhaoyzz    时间: 2021-1-28 10:41
本帖最后由 liuzhaoyzz 于 2021-1-28 10:42 编辑
wintoflash 发表于 2021-1-28 09:18
明确告诉你, GRUB2 / GRUB4DOS 的设备,和 Windows / Linux 里面的设备名,没有必然的联系。
你的电脑 ...

        想请问下,Persistent block device naming持久化命名,udev这些,是现代的主流linux发行版都支持,还是仅仅archlinux及其衍生发行版支持?或者说是从什么linux内核开始支持的?我看了网上好像是说从linux kernel2.6开始支持的?现在的linux内核都发展到5.10了。

       linux知识博大精深,要想搞清楚一个问题,都需要查阅很多知识,需要很多修为才行。

作者: wintoflash    时间: 2021-1-28 10:56
liuzhaoyzz 发表于 2021-1-28 10:41
想请问下,Persistent block device naming持久化命名,udev这些,是现代的主流linux发行版都支 ...

主流发行版都支持 /dev/disk/by-uuid /dev/disk/by-label 这种。
只有少数像 tinycore 这样阉割的发行版不支持。
目前 linux 2.6 都很少见了,更不用说 2.6 之前的。
作者: 2011whp    时间: 2021-1-28 11:46
本帖最后由 2011whp 于 2021-1-28 11:52 编辑

怎么实现,不懂,


但从二进制视角(数据结构--公共规范):
GPT 磁盘:   
          gpt头内有 磁盘GUID
          gpt分区头  有  分区名GUID  分区类型GUID
          分区块  头部: 即BPB内有   序列ID   卷标
           文件系统  内: 文件系统GUID    卷标
MBR磁盘:
           MBR倒数72字节处的  4B为 磁盘 id
           16B的分区项内:文件系统类型   、激活标记  
           分区块  头部: 即BPB内有   序列ID   卷标
           文件系统  内: 文件系统GUID    卷标
作者: liuzhaoyzz    时间: 2021-1-28 16:09
wintoflash 发表于 2021-1-28 10:56
主流发行版都支持 /dev/disk/by-uuid /dev/disk/by-label 这种。
只有少数像 tinycore 这样阉割的发行版 ...

       明白了,感谢!




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