链接: https://pan.baidu.com/s/1eiqlen1tpIi2vSIt5ppIzw
俗话说“授人以鱼不如授人以渔”;不知到是否有人对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。并设置文件的权限。
- cd /volume?/your_share_folder_name
- chown root:root boot.img
- chown root:root setboot.sh
- chmod 666 boot.img
- 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的映像文件名。例如,从当前目录执行时:
- ./setboot.sh /dev/sdc ./boot.img
复制代码
截图如下:
( )
执行后,黑群晖的自启硬盘就生成了。你可以shutdown黑群晖,拔掉USB或CD的启动盘。试试让硬盘自启吧。祝你好运。
如果你想查看一下安装的情况,可以执行 fdisk –l 来查看。截图如下:
( )
可以看到在/dev/sdc4,我们安装来自启的bootloader。
注意事项:
1, 安装硬盘自启会修改硬盘分区,一般情况下是不会破坏硬盘数据的。但还是会一定的有风险,论坛和发布文章的人不承担任何责任,后果自负。请无必事先备份好硬盘数据,以防万一。
2, 这是黑群晖5.1-5022版硬盘自启动,切勿用于6.x版。如果你想为6.x版做硬盘自启,请参见本文前面提到的抛砖引玉介绍。
老骥伏枥,祝大家新年快乐。