Linux下安装黑群晖

本文中安装黑群晖用到的硬件设备为暴风二期
虽然本文写的是群晖7.1,但是对于6.1、6.2,除了修改vid和pid时对应的文件内容不一样外,其他所有流程都是一致的
本文建立在读者已经有一定Linux基础的前提下,如何使用和退出vim之类的问题不会涉及

一、准备工作

  1. 一个U盘
  2. 一台Linux电脑,有无桌面环境不重要,什么发行版不重要(虚拟机应该也行,但你需要知道如何把U盘直通给虚拟机里的系统)
  3. 引导文件下载,系统文件下载(链接: https://pan.baidu.com/s/1VnGkEPI8OujT6QqRa-d07A 提取码: h3nv)
  4. 搞明白U盘的英文品牌名和型号之类的信息(如:SanDisk、Kingston),这个不是必须的,但是弄明白这后面操作会方便很多

二、引导U盘制作

由于使用Linux做引导U盘全程是在命令行下操作,因此我下面的描述均为输入+输出的结构

1. 查看U盘的vid和pid

输入:lsusb

输出:

Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 005: ID 0bda:c821 Realtek Semiconductor Corp. Bluetooth Radio 
Bus 001 Device 003: ID 0bda:0129 Realtek Semiconductor Corp. RTS5129 Card Reader Controller
Bus 001 Device 006: ID 046a:00ca Cherry GmbH USB 2.0 Hub            
Bus 001 Device 004: ID 17ef:6087 Lenovo 
Bus 001 Device 007: ID 0781:5571 SanDisk Corp. Cruzer Fit
Bus 001 Device 002: ID 14cd:8601 Super Top 4-Port hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

找到自己的U盘,通过U盘的品牌和型号来确定哪个是U盘,我的U盘是闪迪的,因此通过“SanDisk Corp. Cruzer Fit”来确定这一行就是我U盘的信息,前面的是vid(0781),后面的是pid(5571)。

如果你不知道U盘品牌或者无法准确区分哪个是U盘,那么就先不插U盘执行lsusb,把输出的内容记录下来,再插上U盘执行lsusb,多出来的那一行就是你的U盘。

2. 查看U盘的设备号

输入:sudo fdisk -l

输出:

Disk /dev/loop0: 172.98 MiB, 181358592 bytes, 354216 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/sda: 238.49 GiB, 256060514304 bytes, 500118192 sectors
Disk model: SK 256GB        
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 12B4F1FC-CC46-40E7-9AE1-F476DB7C48A9

Device       Start       End   Sectors  Size Type
/dev/sda1     2048   1050623   1048576  512M EFI System
/dev/sda2  1050624 500117503 499066880  238G Linux filesystem


Disk /dev/sdb: 14.93 GiB, 16005464064 bytes, 31260672 sectors
Disk model: Cruzer Fit      
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x724ec7ef

Device     Boot Start      End  Sectors  Size Id Type
/dev/sdb1  *     2048 31260671 31258624 14.9G  c W95 FAT32 (LBA)

Disk代表硬盘,通过容量和Disk model判断哪个是U盘,我的是/dev/sdb

Device代表分区,如果有分区的话,记录下来,我的是/dev/sdb1

3.删除分区

如果通过上一步查询出来有分区,需要将分区删除

查看U盘是否挂载,输入df -h

输出:

df: /run/user/1000/doc: Operation not permitted
Filesystem      Size  Used Avail Use% Mounted on
udev            1.8G     0  1.8G   0% /dev
tmpfs           372M  2.1M  370M   1% /run
/dev/sda2       234G   50G  172G  23% /
tmpfs           1.9G  5.2M  1.9G   1% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/sda1       511M  3.4M  508M   1% /boot/efi
/dev/loop0      173M  173M     0 100% /run/wine
tmpfs           372M   20K  372M   1% /run/user/1000
/dev/sdb1        15G  254M   15G   2% /media/xxx/UNRAID

从上面找设备号/dev/sdb后面带数字的,如果找到了,就是挂载了。我的就被自动挂载了,文件系统是/dev/sdb1

umount /dev/sdb1

准备删除

输入sudo fdisk /dev/sdb

输入d

如果只有一个分区,会直接删除,如果有多个分区会提示输入分区编号,每次输入一个,多次删除即可,最后输入w 进行保存

删除分区后,建议将U盘拔插一次,避免下一步出现莫名其妙的错误。

3. 写入img

开始写入,输入:

sudo dd if=/你的实际路径/xxx.img of=/dev/sdb bs=4M

等待写入完成,查看写入情况,输入:sudo fdisk -l

输出:

Disk /dev/sdb: 14.93 GiB, 16005464064 bytes, 31260672 sectors
Disk model: Cruzer Fit      
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x1ef471e9

Device     Boot  Start    End Sectors Size Id Type
/dev/sdb1         2048 133119  131072  64M 83 Linux
/dev/sdb2       133120 319487  186368  91M 83 Linux
/dev/sdb3       319488 327679    8192   4M 83 Linux

可以看到Device部分,已经有3个分区了(有些时候是两个,不太清楚为什么),注意/dev/sdb1(64M那个),下一步要用到。

4. 修改vid、pid

挂载U盘,可能你的系统已经帮你自动挂载了,df -h查看一下

Filesystem      Size  Used Avail Use% Mounted on
udev            1.8G     0  1.8G   0% /dev
tmpfs           372M  2.1M  370M   1% /run
/dev/sda2       234G   50G  172G  23% /
tmpfs           1.9G  5.2M  1.9G   1% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/sda1       511M  3.4M  508M   1% /boot/efi
/dev/loop0      173M  173M     0 100% /run/wine
overlay         234G   50G  172G  23% /var/lib/docker/overlay2/b220553329618635a1ec793d64e4d4214cd5fcfa6e25993e1c85825aaa8a3988/merged
overlay         234G   50G  172G  23% /var/lib/docker/overlay2/fb0c3316cac2ec0215f611b0c97317276cbdae84d08b7b6db5b162531666d63d/merged
overlay         234G   50G  172G  23% /var/lib/docker/overlay2/f2e3b093e08c6163858478d72378af8ab9069ee7378b98e5e8e89cc3e2aaec60/merged
tmpfs           372M   20K  372M   1% /run/user/1000
/dev/sdb1        63M   34M   30M  53% /media/liyang/436C-B718
/dev/sdb2        89M   10M   74M  12% /media/liyang/6e79e2b6-ad9a-4f16-a017-baf3a1bd2408

如果看到了设备号后面加数字,就说明已经挂载了,我的已经自动挂载了,因此我就不用挂载了,如果没有自动挂载,执行下面的命令手动挂载

输入:

mount /dev/sdb1 /mnt/sdb1 /mnt/sdb1不是固定的,随便写一个存在的文件夹地址就行。

看清楚/dev/sdb1对应的挂载点,准备修改,输入

sudo vim /media/liyang/436C-B718/boot/grub/grub.cfg

群晖7.1的文件内容如下:(做了一部分简化)

# 删掉了一些没用的东西

menuentry 'RedPill DS3615xs v7.1.0-42661 (USB, Verbose)' {
    savedefault
    set root=(hd0,msdos1)
    echo Loading Linux...
    linux /zImage withefi earlyprintk syno_hw_version=DS3615xs console=ttyS0,115200n8 netif_num=1 pid=0x5571 earlycon=uart8250,io,0x3f8,115200n8 syno_port_thaw=1 mac1=001132DA580C sn=1740LWN008763 vid=0x0781 elevator=elevator loglevel=15 HddHotplug=0 DiskIdxMap=0002 syno_hdd_detect=0 vender_format_version=2 syno_hdd_powerup_seq=0 log_buf_len=32M root=/dev/md0 SataPortMap=22 
    echo Loading initramfs...
    initrd /rd.gz /custom.gz
    echo Starting kernel with USB boot
}

menuentry 'RedPill DS3615xs v7.1.0-42661 (SATA, Verbose)' {
    savedefault
    set root=(hd0,msdos1)
    echo Loading Linux...
    linux /zImage withefi earlyprintk syno_hw_version=DS3615xs console=ttyS0,115200n8 netif_num=1 pid=0x5571 earlycon=uart8250,io,0x3f8,115200n8 synoboot_satadom=1 syno_port_thaw=1 mac1=001132DA580C sn=1740LWN008763 vid=0x0781 elevator=elevator loglevel=15 HddHotplug=0 DiskIdxMap=0002 syno_hdd_detect=0 vender_format_version=2 syno_hdd_powerup_seq=0 log_buf_len=32M root=/dev/md0 SataPortMap=22 
    echo Loading initramfs...
    initrd /rd.gz /custom.gz
    echo Starting kernel with SATA boot
}

主要修改menuentry 'RedPill DS3615xs v7.1.0-42661 (USB, Verbose)'menuentry 'RedPill DS3615xs v7.1.0-42661 (SATA, Verbose)'中的内容

分别修改两个代码段中的vid和pid,如果你有全白或半白的mac和sn,也可以一起改了。

修改DiskIdxMap= SataPortMap= SasIdxMap=参数,如何修改看这里

https://wp.gxnas.com/10940.html

如果你用的是6.1或6.2的引导,可以直接在此文件中搜一下vid和pid,一眼就能看到,非常明显。

至此,引导盘制作完成。

三、安装系统

不详细说了,网上有的是,做好引导盘后剩下的流程都是一样的。

  1. 将U盘插入黑群晖机器,开机
  2. 找到群晖IP
  3. 安装

这里有一个坑,如果你的硬盘之前装过群晖,那么很可能会提示你恢复系统,恢复的话就可能变成死循环,我的解决方法是将机身自带的SSD,插入的硬盘通过PE格式化一下。