MacOS 环境下为破旧的联想笔记本安装黑群晖并挂载 exfat 硬盘

因为大一时候购买的联想笔记本闲置,今天心血来潮折腾了一下黑群晖,在此记录一下。

Why 群晖

群晖是现在主流的家用 NAS 解决方案,其提供的DSM(DiskStation Manager)深受用户喜爱,周边生态也很好,唯一的缺点是正版硬件太贵,在学校中暂时用不上正版套装,故使用黑群晖的解决方案搭建群晖操作系统。
现在市场上的大部分教程都是在 Windows 下操作,我的教程是有关如何在 macOS 下为二手笔记本电脑安装黑群晖操作系统。

开始

首先需要准备:一个内网环境,一个U 盘,一台破旧的二手笔记本(需支持 UEFI 启动),若干块用来做存储的硬盘。

下载引导文件,刻录镜像

下载synoboot.img 文件(文件抽空再上传,明天还有考试),然后写入硬盘,写入硬盘之后手动挂载 EFI 分区并更改 grub 的启动参数。
刻录方法:
打开终端,在终端中输入 diskutil list。找到U 盘的文件描述符。我的输出如下:

➜  DS3615xs+6.1+Jun's+Mod+V1.02-alpha diskutil list
/dev/disk0 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *251.0 GB   disk0
   1:                        EFI EFI                     209.7 MB   disk0s1
   2:                 Apple_APFS Container disk1         250.1 GB   disk0s2

/dev/disk1 (synthesized):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      APFS Container Scheme -                      +250.1 GB   disk1
                                 Physical Store disk0s2
   1:                APFS Volume Macintosh HD            221.9 GB   disk1s1
   2:                APFS Volume Preboot                 21.8 MB    disk1s2
   3:                APFS Volume Recovery                506.6 MB   disk1s3
   4:                APFS Volume VM                      4.3 GB     disk1s4

/dev/disk2 (disk image):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        +134.2 MB   disk2
   1:                  Apple_HFS synology-assistant-6... 134.2 MB   disk2s1

/dev/disk3 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *16.0 GB    disk3
   1:                        EFI NO NAME                 15.7 MB    disk3s1
   2:           Linux Filesystem                         31.5 MB    disk3s2
   3:        Bios Boot Partition                         4.2 MB     disk3s3

所以可以知道我们的U 盘为/dev/disk3,使用 dd 命令将 img 文件写入到磁盘中。

sudo dd if=synoboot.img of=/dev/disk3 bs=2048

注意,先要 cd 到有 synoboot.img 的文件夹中,注意盘符不要弄错了,否则效果=rm -rf /

手动挂载 U 盘的EFI 分区

等待上述 dd命令完成之后,查看系统分区情况使用仍然使用 diskutil list,我的输出如下(省略了部分不相关的内容)。

/dev/disk3 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *16.0 GB    disk3
   1:                        EFI NO NAME                 15.7 MB    disk3s1
   2:           Linux Filesystem                         31.5 MB    disk3s2
   3:        Bios Boot Partition                         4.2 MB     disk3s3

我们可以知道 /dev/disk3s1代表的是有 EFI 分区的盘符,我们需要将这个盘符手动挂载上,然后编辑一些参数。
我的做法是

mkdir /tmp/1
sudo mount -t msdos /dev/disk3s1 /tmp/1
cd /tmp/1
ls grub/grub.cfg

grub/grub.cfg即为我们需要编辑的文件。
我们需要更改两处内容,第一处是 pid,另外一处是 vid,(这两个紧挨着)。
这个 pid 就是Product ID,vid 就是Vendor ID,我们需要讲这两个参数替换成我们 U 盘的pid 和 vid。
使用命令system_profiler SPUSBDataType,获得 U 盘的 pid 和 uid,也可以使用关于本机->系统报告查看。在我的机器上system_profiler SPUSBDataType 的输出内容为(省略了部分内容):

          Extra Operating Current (mA): 0

            Extreme:

              Product ID: 0x5580
              Vendor ID: 0x0781  (SanDisk Corporation)
              Version: 0.10
              Serial Number: AA010523161815470431
              Speed: Up to 5 Gb/sec
              Manufacturer: SanDisk
              Location ID: 0x14610000 / 19
              Current Available (mA): 900
              Current Required (mA): 400
              Extra Operating Current (mA): 0
              Media:
                Extreme:
                  Capacity: 31.38 GB (31,376,707,072 bytes)
                  Removable Media: Yes
                  BSD Name: disk2
                  Logical Unit: 0
                  Partition Map Type: GPT (GUID Partition Table)
                  USB Interface: 0
                  Volumes:
                    NO NAME:
                      Capacity: 15.7 MB (15,728,640 bytes)
                      Available: 7.6 MB (7,579,648 bytes)
                      Writable: Yes
                      File System: MS-DOS FAT16
                      BSD Name: disk2s1
                      Mount Point: /private/tmp/1
                      Content: EFI
                      Volume UUID: EA224783-0ABB-3605-9542-8B66C5302852
                    disk2s2:
                      Capacity: 31.5 MB (31,457,280 bytes)
                      BSD Name: disk2s2
                      Content: Linux Filesystem
                    disk2s3:
                      Capacity: 4.2 MB (4,177,408 bytes)
                      BSD Name: disk2s3
                      Content: Bios Boot Partition

解释一下为什么这次输出的容量为32G 而使用 diskutil list 输出为16G,因为我使用了两个不一样的U 盘安装了两次系统,这两个输出分别来自两个不一样的U 盘,不过对整个过程不影响。
更改 grub/grub.cfg文件中的pid 和 vid 为
Product ID、Vendor ID 后的值,这里要使用你机器上的 pid 和 uid 哦,抄我的是不能正常运行的(经过尝试可以正常启动但是无法正常安装镜像)。
更改完成之后使用 umount /tmp/1将磁盘退出,然后就可以在破旧笔记本上安装了。

笔记本要做的操作

首先要确定笔记本是否支持 UEFI 启动,不支持 UEFI 启动的机器是无法安装群晖6.x 版本的(据传言),不过稍微新一点的主板应该都支持 UEFI 启动了。调整启动顺利让电脑从 U 盘开始启动。

安装

从 U 盘启动之后…唔…没有截图了,选择第一个进入就好了。从网上找了一个截图,选择第一个。

然后会变成这样的。

是的,没有任何 log…也不知道机器的 IP 是什么,反正稀里糊涂就起来了。
作者讲可以去http://find.synology.com去找到机器的位置,如果运气好的话(受网络拓扑结构影响较大,网页版使用的是请求 datastation.local这个主机名,如果得到响应的话则判断存在群晖机器),在我的网络拓扑结构下我的mbp 无法通过主机名找到破旧笔记本,于是使用 nmap 进行网段扫描。

nmap 192.168.1.1/24 -sP
或者
nmap 121.xxx.xxx.1/24 -p 5000 --open

第一种适用于路由器内网,找到存活主机就可以大概知道破旧笔记本的IP,我的网络是直接连接的上级交换机,由学校的路由器分配地址,使用主机名的方式无法找到 NAS 机器的位置,所以我使用 nmap 对 C 段中5000端口开放的机器进行了一轮扫描,然后成功找到我的机器。
找到 IP 之后,可以按照 https://www.nas2x.com/threads/dsm-6-1-4-15217-20171107.29/ 继续安装。
安装过程不再赘述。

挂载 exfat 格式的硬盘

群晖6.1自带了 exfat的收费插件,不过该插件限制较多(只能在同一个群晖 ID 的同一台 NAS 上使用),我们的黑群晖购买起来很麻烦,于是找到现有的轮子luckylz2git/exfat-synology
根据 README 一步一步来就好。大致步骤为:
开启 SSH 服务->登录 SSH 服务->下载并解压 deb 包->将二进制文件mount.exfat-fuse加入到/bin(path) 下
安装好了 mount.exfat-fuse 之后,作者的推荐是

Go back to Synology DiskStation, [Control Panel] -> [Shared Folder], create a shared folder on volume1, e.g. usbexfat.

This will create a sub-dir /volume1/usbexfat/usbshare[1…n] will be used as mountpoint, usbshare[1…n] same as the volumeUSB[1…n] mountpoint.

e.g.

volumeUSB1/usbshare will be mapped to /volume1/usbexfat/usbshare1

volumeUSB2/usbshare will be mapped to /volume1/usbexfat/usbshare2

volumeUSB[n]/usbshare will be mapped to /volume1/usbexfat/usbshare[n]

这里没怎么看懂…不过一看到 automatic 就感觉不是很靠谱,于是自己手动挂载了一下磁盘。
首先使用 fdisk 获取磁盘位置

Disk /dev/sdu: 1.8 TiB, 2000365289472 bytes, 3906963456 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
Disklabel type: gpt
Disk identifier: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Device      Start        End    Sectors  Size Type
/dev/sdu1      40     409639     409600  200M EFI System
/dev/sdu2  411648 3906961407 3906549760  1.8T Microsoft basic data

如果直接挂载会显示权限不足。使用上面安装的mount.exfat-fuse 才能正常挂载,这里我在 Docker 目录下新建了一个文件夹,然后将/dev/sdu2 挂载在这个文件夹下(Linux 万物皆文件嘛 hh)。

mount.exfat-fuse /dev/sdu2 /volume1/Docker/x

挂载成功。

最后

为了散热可以选择把笔记本的后盖拿下来~~

更新

早起来之后发现由于宿舍断电的原因,笔记本自带的续航撑不过一晚…为了解决这个得买个 UPS,就很得不偿失了。

点赞
  1. fht's lover说道:

    嘻嘻,我看过这台联想电脑,它很大。程序员用它在床上写代码

    1. admin说道:

      这个都被你发现了哈哈哈

发表评论

电子邮件地址不会被公开。 必填项已用*标注