点击关注我的Telegram群组和微信公众号

MENU

黑群晖DSM引导项 grub.cfg 参数修改测试

2020 年 08 月 26 日 • 阅读: 2310 • 技术,分享,教程

相关文章:

ESXi 下升级黑群晖 DSM 6.2.3 后对 Synoboot 引导项进行的必要修复

搭建 ESXi 6.7 部署黑群晖 DS3617xs 并启用硬盘直通

前言

搭建 ESXi 6.7 部署黑群晖 DS3617xs 并启用硬盘直通一文中使用了 DSM 6.2 Loader 作为黑群晖的引导项,在洗白黑群晖或直通 SATA 控制器时也需要修改该镜像中的 grub.cfg 文件。这篇文章会对该文件中和 SATA 控制器相关的部分进行修改,测试在不同的配置下 DSM 对硬盘的识别情况。

测试环境

  • ESXi 6.7.0 (Build 8169922)
  • 引导盘 v1.03b
  • DSM6.2 23739
  • 修改项默认值为空,也就是 set extra_args_3617=''
  • 在不加载直通物理硬盘时,虚拟硬盘的大小代表了 SATA 控制器位置。比如 20G 的虚拟硬盘代表了(2:0)
  • 引导项虚拟盘永远位于(0:0)
  • boot1~7 默认的 16G 数据盘位于(0:1),boot8~12 位于(1:0)
  • 测试的参数有些是瞎写试的,有的是刻意写的
启动盘参数
boot0default
boot1DiskIdxMap=1000 SataPortMap=28
boot2DiskIdxMap=0800 SataPortMap=28
boot3DiskIdxMap=0800 SataPortMap=24
boot4DiskIdxMap=100800 SataPortMap=188
boot5DiskIdxMap=100400 SataPortMap=148
boot6DiskIdxMap=100400 SataPortMap=144
boot7DiskIdxMap=030400 SataPortMap=144
boot8DiskIdxMap=200400 SataPortMap=244
boot9DiskIdxMap=203000 SataPortMap=244
boot10DiskIdxMap=313000 SataPortMap=244
boot11DiskIdxMap=313000 SataPortMap=114
boot12DiskIdxMap=31300000 SataPortMap=1144
BOOT DISK

测试理论

  • SataPortMap 代表每个 SATA 控制器拥有的 SATA 接口数量,148 代表三个 SATA 控制器分别拥有 1 个、4 个、8 个 SATA 接口
  • DiskIdxMap 代表每个 SATA 控制器接口开始的位置,16 进制,每两位代表一个 SATA 控制器

测试过程

  • 首先只创建默认的 16G 数据盘,导入全部 boot 启动盘,以默认启动盘安装 DSM6.2 23739
  • 查看硬盘状态,每次只替换启动盘

boot0

set extra_args_3617=''

boot0

  • 默认启动参数无法在多 SATA 控制器下读取全部硬盘,读取到了(0:0)(0:1)(1:2)(1:3)

boot1

DiskIdxMap=1000 SataPortMap=28

  • SATA 控制器 2 上的硬盘没有被全部读取到,16G 的数据盘被识别到了错误的位置
    boot1

boot2

DiskIdxMap=0800 SataPortMap=28

  • 基本没有变化,没有被识别的硬盘在外置硬盘中被读取到
    boot2

boot3

DiskIdxMap=0800 SataPortMap=24

boot3

  • 所有盘均被读取,但磁盘顺序错误

boot4

DiskIdxMap=100800 SataPortMap=188

boot4

  • 所有盘均被读取,但 SATA 控制器顺序错误,启动盘和 16G 盘被隐藏

boot4 添加直通硬盘

DiskIdxMap=100800 SataPortMap=188

boot4 pci

  • 没有变化,直通硬盘出现在外置设备中,但缺少一块

boot5

DiskIdxMap=100400 SataPortMap=148

boot5

  • 所有硬盘被读取,但 SATA 控制器顺序错误,启动盘和 16G 盘被隐藏

boot5 添加直通硬盘

DiskIdxMap=100400 SataPortMap=148

boot5 pci

  • 所有硬盘被读取,但 SATA 控制器顺序错误,启动盘和 16G 盘被隐藏
  • 直通硬盘被读取为外置设备

boot6 添加直通硬盘

DiskIdxMap=100400 SataPortMap=144

boot6 pci

  • 所有硬盘被读取,但 SATA 控制器顺序错误,启动盘和 16G 盘被隐藏
  • 有一块直通硬盘被读取为外置设备

boot7

DiskIdxMap=030400 SataPortMap=144

boot7

  • 所有硬盘被读取,但 SATA 控制器顺序错误,启动盘没有被隐藏

boot7 添加直通硬盘

DiskIdxMap=030400 SataPortMap=144

boot7 pci

  • 所有硬盘被读取,但硬盘顺序错误,启动盘没有被隐藏
  • 有一块直通硬盘被读取为外置设备

新一组实验

  • 考虑到大多数情况最多只会有两组连接数据盘的 SATA 控制器,所以删除一组 SATA 控制器和虚拟硬盘
  • 将 16G 默认数据盘位置改为(1:0),独享一个 SATA 控制器

boot8

DiskIdxMap=200400 SataPortMap=244

boot8

  • 所有硬盘全部被读取,但硬盘顺序有错误
  • 启动盘和 16G 盘没有被隐藏
  • 硬盘提示错误不是问题,转移群晖数据盘时经常能见到,硬盘没坏的情况下在储存空间管理员中修复即可
  • 2T 盘显示是硬盘 4 是插错了 SATA 接口,不是参数问题

boot9

DiskIdxMap=203000 SataPortMap=244

boot9

  • 虚拟盘全部删除,启动盘没有被隐藏

boot10

DiskIdxMap=313000 SataPortMap=244

boot10

  • 使用了很激进的起始硬盘号保证 DS3617xs 肯定读不到 SATA 控制器 1 和 2
  • 虚拟盘全部删除,启动盘和 16G 盘被隐藏

boot11

DiskIdxMap=313000 SataPortMap=114

boot11

  • 重新添加虚拟盘
  • 启动盘和 16G 盘被隐藏
  • 直通硬盘的编号有错误

boot12

DiskIdxMap=31300000 SataPortMap=1144

boot15

  • 尝试在数据盘中全部使用 00 的 DiskIdMap
  • SataPortMap 中对启动盘和 16G 盘限制到极限值 1
  • 全部数据盘被读取到,顺序完全正确
  • 启动盘和 16G 盘被隐藏
最后编辑于: 2021 年 01 月 13 日
返回文章列表 文章二维码 打赏
本页链接的二维码
打赏二维码
添加新评论

已有 4 条评论
  1. 小冷 小冷

    按照博主的教程(引导盘位于sata0:0,数据盘16G位于sata1:0,又加了一块30G虚拟磁盘位于sata2:0)。然后参数设置为:'DiskIdxMap=3130000000 SataPortMap=11246' 主板为超微X10 C612主板, 主板本身有2个sata控制器(控制器1为4端口,控制器2为6端口)。

    1. @小冷30G盘的SATA控制器在SataPortMap中写了2?DiskIdxMap=3130000000 SataPortMap=11146应该是可以的。另外也许可以尝试把30G虚拟磁盘手动定位到最后去,DiskIdxMap=31300b0000(但这个我没试过)

  2. 小冷 小冷

    问题为:16G和50M隐藏,虚拟30G磁盘显示硬盘1,其它机械硬盘均可识别但编号顺序不对,原磁盘raid5(4块2t)阵列提示有一块硬盘丢失(丢失的磁盘实际在硬盘列表里面但并未被系统识别为原raid成员)。另一个raid5(3快3T)则正常识别。

  3. 小冷 小冷

    因为字数限制,只能尽量简化组织语言,冒昧之处希望见谅哈。