咸鱼300收了个锐角云,开始折腾这个电子垃圾。
安装 Proxmox
PVE 当然是人见人爱的好东西,但是 PVE 的 Installer 有个问题,他不支持在锐角云内置的EMMC上安装。解决方案一是先安装Debian,然后按官方的教程从 Debian 升级到 PVE。
但是我今天就是要用 PVE 的 Installer 呢?因为 PVE 支持的一些特性,比如 ZFS 在安装 Debian 的时候是很难实现的。可否通过修改 Installer 来安装呢?可以的。
首先下载 PVE 的 ISO,刻录到 U 盘或者用 Ventoy, 插上锐角云,开机按 F7,选择 U 盘启动(这玩意还默认UEFI)。在 GRUB 界面,选择 Install Proxmox (Debug Mode)
然后在启动过程第一次被打断的时候,按 Ctrl + D
继续,在第二次被打断的时候,输入 vi /usr/bin/proxinstall
, 将
} elsif ($dev =~ m|^/dev/[^/]+/hd[a-z]$|) {
return "${dev}$partnum";
} elsif ($dev =~ m|^/dev/nvme\d+n\d+$|) {
return "${dev}p$partnum";
} else {
die "unable to get device for partition $partnum on device $dev\n";
}
改为
} elsif ($dev =~ m|^/dev/[^/]+/hd[a-z]$|) {
return "${dev}$partnum";
} elsif ($dev =~ m|^/dev/nvme\d+n\d+$|) {
return "${dev}p$partnum";
} elsif ($dev =~ m|^/dev/mmcblk\d+$|) {
return "${dev}p$partnum";
} else {
die "unable to get device for partition $partnum on device $dev\n";
}
即可识别到内置的 EMMC 并安装。
开启 VT-D
使用 ZFS 的 PVE 无法使用这一方法
因为使用 ZFS 的 PVE 使用的是 systemd-boot,而不是 GRUB,而且我试了一下,很难修改过来。
VT-D 是 Intel 提供的一种虚拟化技术,主要用来提供 IOMMU 虚拟化,PCI 直通等功能。
锐角云的 BIOS 界面默认并不提供这个功能的开关,但是它可以通过修改 UEFI 变量的方式来实现,具体可见 Cyberpunk2177/AcuteAngle,但是这里的方法有缺陷,因为锐角云没有 BIOS 电池,所以断电后变量会丢失,需要重新修改。安装 BIOS 电池是一种方法,但是我实在不想动手,有没有更简单的方法? 有。
- 首先下载这个 setup_var.mod, 然后将他丢入
/boot/grub/x86_64-efi/
- 修改
/etc/grub.d/00_header
echo -e 'echo "insmod setup_var"\necho "setup_var_3 0x49 0x01"' >> /etc/grub.d/00_header
- 修改
/etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on"
- 生成新的 GRUB 配置
update-grub
- 重启两次,检查是否成功
root@pve:~# dmesg |grep DMAR
[ 0.013559] ACPI: DMAR 0x0000000079AB7820 0000A8 (v01 INTEL EDK2 00000003 BRXT 0100000D)
[ 0.013695] ACPI: Reserving DMAR table memory at [mem 0x79ab7820-0x79ab78c7]
[ 0.058291] DMAR: IOMMU enabled
[ 0.204229] DMAR: Host address width 39
[ 0.204233] DMAR: DRHD base: 0x000000fed64000 flags: 0x0
[ 0.204251] DMAR: dmar0: reg_base_addr fed64000 ver 1:0 cap 1c0000c40660462 ecap 7e3ff0505e
[ 0.204259] DMAR: DRHD base: 0x000000fed65000 flags: 0x1
[ 0.204273] DMAR: dmar1: reg_base_addr fed65000 ver 1:0 cap d2008c40660462 ecap f050da
[ 0.204281] DMAR: RMRR base: 0x00000079a32000 end: 0x00000079a51fff
[ 0.204286] DMAR: RMRR base: 0x0000007b800000 end: 0x0000007fffffff
[ 0.204293] DMAR-IR: IOAPIC id 1 under DRHD base 0xfed65000 IOMMU 1
[ 0.204297] DMAR-IR: HPET id 0 under DRHD base 0xfed65000
[ 0.204302] DMAR-IR: Queued invalidation will be enabled to support x2apic and Intr-remapping.
[ 0.206605] DMAR-IR: Enabled IRQ remapping in x2apic mode
[ 2.988101] DMAR: No ATSR found
[ 2.988107] DMAR: dmar0: Using Queued invalidation
[ 2.988119] DMAR: dmar1: Using Queued invalidation
[ 2.994505] DMAR: Intel(R) Virtualization Technology for Directed I/O
这样就是成功了,如果只有一行
[ 0.058291] DMAR: IOMMU enabled
说明没有成功,可以再重启一次试试。
每次断电重启之后需要再重启一次才能生效
安装 DSM 7
DSM 7的引导已经出了,怎么能不体验一下呢?
- 先下载这个 redpill-tool-chain,不想注册账号的话,请用 蓝奏云
- 安装
docker
和jq
- 解压上面那个压缩包,进到目录里,执行
bash redpill_tool_chain.sh build apollolake-7.0-41890
bash redpill_tool_chain.sh run apollolake-7.0-41890
make build_all
- 构建完成之后,可以看到
images/
下多了redpill-DS3615xs_7.0-41222_b1630169731.img
, 这就是启动镜像。而cache
目录下有ds3615xs_41222.pat
, 这个不要删,后面还有用。 - 我们还要对启动镜像做一点修改,因为默认启动项是 USB,我们要把他改成 SATA。
sudo kpartx -a -v redpill-DS3615xs_7.0-41222_b1630169731.img
TEMP=$(mktemp -d)
sudo mount /dev/mapper/loop0p1 $TEMP
cd $TEMP
sudo vim boot/grub/grub.cfg
把两个 menuentry 调换一下位置,让 SATA 这个在前面
menuentry 'RedPill DS3615xs v7.0-41222 Beta (SATA, Verbose)' {
set root=(hd0,msdos1)
echo Loading Linux...
linux /zImage mac1=001132929610 netif_num=1 earlycon=uart8250,io,0x3f8,115200n8 syno_hdd_powerup_seq=0 vid=46f4 synoboot_satadom=1 syno_hdd_detect=0 pid=0001 console=ttyS0,115200n8 elevator=elevator sn=1240PDN001375 root=/dev/md0 earlyprintk loglevel=15 log_buf_len=32M syno_port_thaw=1 HddHotplug=0 withefi syno_hw_version=DS3615xs vender_format_version=2
echo Loading initramfs...
initrd /rd.gz
echo Starting kernel with SATA boot
}
menuentry 'RedPill DS3615xs v7.0-41222 Beta (USB, Verbose)' {
set root=(hd0,msdos1)
echo Loading Linux...
linux /zImage mac1=001132929610 netif_num=1 earlycon=uart8250,io,0x3f8,115200n8 syno_hdd_powerup_seq=0 vid=46f4 syno_hdd_detect=0 pid=0001 console=ttyS0,115200n8 elevator=elevator sn=1240PDN001375 root=/dev/md0 earlyprintk loglevel=15 log_buf_len=32M syno_port_thaw=1 HddHotplug=0 withefi syno_hw_version=DS3615xs vender_format_version=2
echo Loading initramfs...
initrd /rd.gz
echo Starting kernel with USB boot
}
然后就 sudo umount $TEMP
, sudo kpartx -d -v redpill-DS3615xs_7.0-41222_b1630169731.img
将这个镜像上传到 PVE 备用。
- PVE 创建虚拟机,不用 CDROM, 创建硬盘 1G 大小即可,但需要为 raw 格式(LVM 用户无所谓),网络选择 Virtio
- 先不要开机,在 Hardware 页面里面添加一个硬盘,这是真正的数据盘,按照你需要的大小创建。在 Option 里面,将 SATA0 设置为默认启动项。
- 如果你 PVE 用的是 Directory 模式的 storage,那么
cd /var/lib/vz/images/{虚拟机编号}
并将vm-{虚拟机编号}-disk-0.raw
替换为之前构建的启动盘文件。如果你用的是 LVM,dd if=redpill-DS3615xs_7.0-41222_b1630169731.img of=/dev/mapper/pve-vm--{虚拟机编号}--disk--0
- 局域网内需要有 DHCP 服务器,如果你 proxmox 使用的是 NAT 模式的网络,请自行配置 dnsmasq
- 开机,等待一会,然后打开 find.synology.com 可以找到DSM。
- 安装 DSM, 上传文件时选择之前留下的
ds3615xs_41222.pat
。
未完待续
就先扯到这里,还可能折腾一下上电自启和硬盘转接,等到东西买到手了再说。
没能解决,可以指导吗
By 1 at February 20th, 2022 at 11:11 pm.