找回密码
 立即注册

QQ登录

只需一步,快速开始

铁威马网络网络存储

[教程分享] 【老骥伏枥-原创】关于黑群晖5.x版硬盘自启动的探讨

  [复制链接]
本帖最后由 f541883216 于 2017-3-3 05:40 编辑

关于黑群晖硬盘自启动+系统救援盘的理念和启动引导的基础架构设计均是老骥伏枥通过NASYUN论坛在全球首发。为的是进行学习,研究和技术交流。你可以用百度,谷歌去全网查查。绝对原创。请坛友们遵守GNU General Public License,未经授权禁止用于商业用途。仅有与本人紧密合作的mojelly论坛管理员和他的团队拥有全权授权。小白和菜鸟们在寻求商业帮助时,请认清正宗团队,谨防受骗。

安装过黑群晖系统的网友们都有这样的经验,先要做一个USB或CD的启动盘。然后就可以用群晖的SynologyAssistant工具从另一台电脑把群晖系统安装起来了。
安装后,每次重启电脑,都需要这个启动盘。这是因为群晖系统主启动程序没有在硬盘中,而只有系统挂载的根目录系统在硬盘中。所以硬盘是不能用来启动的。

对与一个已经安装完成的运行系统来说,需要一个额外的启动盘,实在是有点美中不足。毕竟这是因为黑了群晖系统,转而安装到PC的x86平台上才会产生这个问题。有没有办法让黑群晖的运行系统硬盘自启动呢?首先需要研究一下需求。群晖系统的重安装会,重新创建新的文件卷,都会重写硬盘的分区,并抹去所有的数据。如果我们把bootloader装到硬盘中,当然也会被抹去。因为群晖的原设计就是用硬盘存储数据的。运行群晖自己的平台,根本就不需要什么启动盘。黑群晖才有这个需求。并与群晖的原设计有所冲突。既然黑群晖有这个需求,我们就要想办法解决。如果我们能设计一个非常方便的方法,一键重装bootloader到黑群晖的硬盘,这个问题不就迎刃而解了吗。

能不能把bootloader到黑群晖的硬盘呢?这需要看看黑群晖的硬盘的分区结构。让我们用GParted工具分析一下,可以发现有一个可以利用的100多兆的空间。截图如下:

黑群晖的bootloader很小,只有15兆左右。把它安装在这个空间,问题就解决了。关键是如何才能方便地完成一键重装bootloader到黑群晖的硬盘。

老骥伏枥重新打包了一个用于黑群晖硬盘自启动的boot.img,并专门为它写了一个shell script用于把bootloader安装到黑群晖的硬盘。并做了一个Synology_Harddisk_Boot.zip的压缩包,网友们可以从百度云下载使用。
地址是:http://pan.baidu.com/s/1slctvVB
文件提取码为:
游客,如果您要查看本帖隐藏内容请回复

俗话说“授人以鱼不如授人以渔”;不知到是否有人对x86系统平台上BIOS的bootloader启动引导过程有兴趣,作为“抛砖引玉”我在这里以我打包的boot.img予以简单的介绍:在这个img包中,可以看到有6个文件:
ldlinux.sys
ldlinux.c32
menu.c32
libutil.c32
syslinux.cfg
zImage
但是还有一段代码是看不到的,它是MBR和引导代码,它的扇区位置是固定的。MBR是硬盘的第0个盘片的第0个面的第0磁道的0扇区。这就是为什么我要打包一个img文件而不是把文件发给大家的原因。我三十年前就出版过关于PC机启动引导的书,详细介绍过这方面的技术细节。三十年过去了BIOS引导没有什么变化和更新。黑群晖5.x版的引导技术相当陈旧。6.x版好像开始用grub了,有心的网友可以根据我介绍的思路,制作6.x版的boot.img。

黑群晖的x86系统平台加电后,主板CMOS芯片上的BIOS(Basic Input/Outpu System)程序检测与主板相连的硬件:CPU、内存、光驱、硬盘、软驱键盘等,然后加载系统卷中的引导扇区的MBR引导代码,把它加载到x86实模式的7C00地址并执行这段代码。如果在系统目录下有ldlinux.sys文件且有效,装载并把控制权交给它,如果是64位操作系统,ldlinux.sys将CPU切换到64位模式。之后读取并分析syslinux.cfg文件,根据设定加载并初始化linux内核。zImage是群晖定制的linux内核,在syslinux.cfg你可以看到:
MENU LABEL XPEnology DSM 5.1-5022
KERNEL /zImage
APPEND root=/dev/md0 ihd_num=0 netif_num=4 syno_hw_version=DS3615xs sn=B3J4N01003 vid=0x0EA0 pid=0x2168 loglevel=0 vga=0x305
这些斜体字才是破解群晖的重要参数。引导并不是关键部分。我个人不喜欢黑别家的系统,只愿意做自主知识产权得原创作品,所以也不能解释这些斜体字的参数意义。以下介绍我写的创建自启硬盘脚本,这是自主知识产权得原创作品。

用这个压缩包可以方便地制作一个黑群晖硬盘自启动。具体步骤如下:
1. 下载Synology_Harddisk_Boot.zip压缩包
2. 解压后有两文件:boot.img 和 setboot.sh
3. 在黑群晖的硬盘卷上创建一个share folder。例如:可以起名为hard_disk_boot
4. 把这两个文件上载到这个share folder。截图如下:

5. 从控制台或用ssh登陆到黑群晖。我是用PuTTY通过ssh连到黑群晖的。注意:登陆时一定要用root而不是用admin。密码是你初次安装黑群晖时设定的密码。admin和root的密码其实是一样的。截图如下:

6. 登陆后,切换到share folder。并设置文件的权限。
  1. cd /volume?/your_share_folder_name
  2. chown root:root boot.img
  3. chown root:root setboot.sh
  4. chmod 666 boot.img
  5. chmod 755 setboot.sh
复制代码


截图如下:

7. 执行 fdisk –l 查看一下你的硬盘分区情况和名称。截图如下:

从截图中可以看到,我的黑群晖系统现在挂载了两硬盘,每个8GB。一个是/dev/sdc,另一个是/dev/sdd。其中/dev/sdc1和/dev/sdc2是两个linux raid分区,这是黑群晖的根目录系统。/dev/sdc3是扩展分区,/dev/sdc5是linux raid的扩展逻辑分区,用做数据卷。在x86系统平台上,每个硬盘只容许有4个基本分区。sdc1,sdc2,sdc3用了三,幸好还为我们留了最后一个sdc4,让我们可以用来做黑群晖硬盘自启动。我想这可能是群晖系统设计时留下准备将来有什么用途的吧。不管怎样,我们现在可以用来做硬盘自启。另一个硬盘/dev/sdd的结构也是一样的。不管系统有多少硬盘,自启的bootloader只要安装到其中一个硬盘即可。一般我会选择安装到第一个硬盘。

8. 执行我写的shell script创建自启硬盘。这个脚本需要两个参数,第一个是硬盘的设备名,第二个是bootloader的映像文件名。例如,从当前目录执行时:
  1. ./setboot.sh  /dev/sdc  ./boot.img
复制代码


截图如下:

执行后,黑群晖的自启硬盘就生成了。你可以shutdown黑群晖,拔掉USB或CD的启动盘。试试让硬盘自启吧。祝你好运。

如果你想查看一下安装的情况,可以执行 fdisk –l 来查看。截图如下:


可以看到在/dev/sdc4,我们安装来自启的bootloader。

注意事项:
1, 安装硬盘自启会修改硬盘分区,一般情况下是不会破坏硬盘数据的。但还是会一定的有风险,论坛和发布文章的人不承担任何责任,后果自负。请无必事先备份好硬盘数据,以防万一。
2, 这是黑群晖5.1-5022版硬盘自启动,切勿用于6.x版。如果你想为6.x版做硬盘自启,请参见本文前面提到的抛砖引玉介绍。

老骥伏枥,祝大家新年快乐。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

评分

参与人数 2云币 +10 金条 +11 +10 收起 理由
baidwwy + 1 boot error错误,到PE里重建MBR就好了。YES
灰色头像。 + 10 + 10 + 10 很给力!

查看全部评分

使用道具 举报 回复 印象
无线音乐盒

【老骥伏枥-原创】黑群晖5.2-5967版硬盘自启动并带Win7PE的映像

本帖最后由 f541883216 于 2017-1-17 03:23 编辑

发表了关于黑群晖5.x版硬盘自启动的探讨之后,很多坛友感觉对于老主板没有USB启动的主板有救了 ,你的主板只有4个SATA接口都可以安装一样大的硬盘,每个硬盘都可以利用起来了,再也不用小硬盘浪费一个接口了。但由于大多数坛友习惯用Windows,而不习惯Linux。所以希望我能为硬盘自启动映像加上Win7PE工具盘。因为群晖的硬盘的分区结构在做对齐时留下非常有限的127-133兆左右的可利用空间。所以根据坛友jiangjcdqjcy的要求,和他提供的5.2-5967boot映像。非常谢谢他的协助。我为大家打包了一个专门用于黑群晖5.2最终版的带Win7PE工具的硬盘自启映像。


原理我在上一篇文章中已经详细介绍过了。这里就不再赘述了。应为要打包Win7PE工具盘,所以这个映像比较大。
地址是:http://pan.baidu.com/s/1pLyIJHp
文件提取码为:
游客,如果您要查看本帖隐藏内容请回复



这个压缩包安装的方法和步骤与我上一篇文章介绍的相同。我个人比较喜欢用Linux的脚本来安装,所以我写了脚本来方便大家安装。但也有坛友喜欢用Win7PE工具盘来安装。请参考jiangjcdqjcy的教程分享 ---  黑群晖NAS服务器硬盘自启动安装图片 http://www.nasyun.com/thread-28661-1-2.html


群晖5.2-5967最终版的硬盘设备名都多加了一个字符,例如:  原来的/dev/sde变成了 /dev/sdae;原来的/dev/sdf变成了 /dev/sdaf;不知道群晖为什么要这样做?可能是想给不太了解Linux的坛友添点麻烦吧。请看截图:

执行我写的shell script创建自启硬盘时。这个脚本需要两个参数,第一个是硬盘的设备名,第二个是bootloader的映像文件名。例如,要让设备/dev/sdaf变成自启动硬盘,从当前目录执行时:

  1. ./setboot.sh  /dev/sdaf  ./boot52-5967.img
复制代码

如果你想查看一下安装的情况,可以执行 fdisk –l 来查看。截图如下:

黑群晖启动后,你有10秒钟的时间选择项目,截图如下:

可以看到Win7PE工具盘了。希望大家喜欢我的作品。谢谢!

注意事项:
1, 安装硬盘自启会修改硬盘分区,一般情况下是不会破坏硬盘数据的。但还是会一定的有风险,论坛和发布文章的人不承担任何责任,后果自负。请无必事先备份好硬盘数据,以防万一。
2,请确认你安装的黑群晖是使用主引导记录MBR和MS-DOS标准分区表的老主板,而不是使用UEFI分区格式的GPT分区表的新主板。
3,安装硬盘自启前请严格检查大小版本号是否与本映像一致,切勿盲目安装。以免造成不能硬盘自启。
4,如果版本号不同,请使用你当前版本的zImage文件替换本映像中的zImage文件,对映像版本进行修正。如果曾经用算号器洗白,请修正本映像中syslinux.cfg文件中的sn系列号和mac地址,以保证洗白的硬盘自启。




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
使用道具 举报 回复 支持 反对 印象
经坛有友实际测试,这种方法只能用2t以下的硬盘,2t以上的硬盘不成功,2t以上的硬盘分区是用的GPT分区,不能设置活动分区,2t以下的传可以设置活动分区,看来还需要搞一个6.02的带uefi启动的winpe x64位的win8.1pe和win10的pe映象。
使用道具 举报 回复 支持 1 反对 0 印象
看看,谢谢
使用道具 举报 回复 印象
hgjhgjghjghjghjgh
使用道具 举报 回复 支持 反对 印象
使用道具 举报 回复 印象
谢谢楼主分享
使用道具 举报 回复 支持 反对 印象
一般人很难弄明白啊
使用道具 举报 回复 支持 反对 印象
试一下。。。
使用道具 举报 回复 印象
装的是这个http://www.nasyun.com/thread-24296-1-1.html
不行。 开机说 boot error
使用道具 举报 回复 支持 1 反对 0 印象
Ken_Diskstation> fdisk -l

Disk /dev/sda: 750.1 GB, 750156374016 bytes
255 heads, 63 sectors/track, 91201 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks  Id System
/dev/sda1               1         311     2490240  fd Linux raid autodetect
Partition 1 does not end on cylinder boundary
/dev/sda2             311         572     2097152  fd Linux raid autodetect
Partition 2 does not end on cylinder boundary
/dev/sda3             588       91201   727848912   f Win95 Ext'd (LBA)
/dev/sda4   *         572         588      130048   e Win95 FAT16 (LBA)
Partition 4 does not end on cylinder boundary
/dev/sda5             589       91189   727744480  fd Linux raid autodetect

Partition table entries are not in disk order

Disk /dev/synoboot: 7747 MB, 7747397632 bytes
4 heads, 32 sectors/track, 118215 cylinders
Units = cylinders of 128 * 512 = 65536 bytes

        Device Boot      Start         End      Blocks  Id System
/dev/synoboot1   *           1         252       16096+  e Win95 FAT16 (LBA)
Ken_Diskstation> reboot

Broadcast message from root@Ken_Diskstation
        (/dev/pts/1) at 22:32 ...
使用道具 举报 回复 支持 反对 印象
新人路過,學習一下
使用道具 举报 回复 支持 反对 印象
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回列表 搜索 官方QQ群