转载注明来源: 本文链接 来自osnosn的博客,写于 2020-10-05.
参考:
我安装/配置,用的是UnRAID-6.8.2
u盘必须是FAT或FAT32格式,因为FAT,FAT32才支持启动。usb2.0/3.0都行。只是usb3.0的读写快些。据说用SLC芯片的u盘寿命长。
u盘必须有"序列号",最后16位不能是全零,否则unraid不认/不能注册,unraid的GUID是由"VID-PID-设备序列号的后16位"组成。
chipGenius(芯片精灵)工具可以看到,有无: VID,PID,序列号。
一般有品牌的u盘都OK,知名主控芯片的u盘也OK。实在没有序列号,用量产工具自动生成一个序列号刷入。
可以用官方推荐的工具 USB_Creator.exe 写U盘。写之前无需对U盘改名。(它不认无序列号的u盘。导致无法选择U盘,无法继续)
手工写U盘,参看官方文档。也能支持UEFI启动。
make_bootable.bat
。 完成。记得,做了任何配置的更改。都要备份u盘的config/
目录。因为unraid的u盘很容易坏。
备份的办法,很简单,把config目录整个打包成压缩文件(zip,tar,7z都行),copy出来另存即可。
DASHBOARD 中,给主机改个名,缺省名为"Tower".
MAIN 中,添加一个 Disk,(parity,cache按需添加,也可以不添加)。START Array(开启阵列)。看到有个提示"Unmoutable"无法挂载的磁盘,选择 FORMAT 格式化一下。
MAIN->Boot Device->Flash,有个警告,说是被共享了,不安全。点 Flash 进去,在 SMB Security Settings->Export 选 NO,不共享。(按需设置)
SETTINGS->Date and Time, 设置一下时区,按需修改同步用的时间服务器。
如 ntp1.aliyun.com
,time.pool.aliyun.com
,time.nist.gov
,cn.pool.ntp.org
,0.debian.pool.ntp.org
修改/设置 root 的密码。在 USERS 点 root,改密码。(如果忘了密码,官方文档有说明,修改u盘 /config/shadow 文件重置密码)
创建一个普通用户,用来访问共享文件。在 USERS 中创建。
在 SETTINGS->Management Access 中,关闭 TELNET 的访问。留着 SSH 就行了。
unraid 在单位代理服务后面,不能直接访问外网。这有几篇文章(我没试过,不知道行不行):
https://raw.githubusercontent.com/Squidly271/community.applications/master/plugins/community.applications.plg
https://raw.githubusercontent.com/dmacias72/unRAID-NerdPack/master/plugin/NerdPack.plg
ssh 登录 unraid,打命令 sensors,可以显示cpu和主板温度。但 web 界面中没有。
先在NerdTools装perl,再装显示温度的app Dynamix System Temperature
。
https://raw.github.com/bergware/dynamix/master/unRAIDv6/dynamix.system.temp.plg
有个app,叫 "unassigned.devices" , 地址是:
https://github.com/dlandon/unassigned.devices/raw/master/unassigned.devices.plg
,
https://github.com/dlandon/unassigned.devices/raw/master/unassigned.devices-plus.plg
plus 支持 exFat,HFS+
看VedioTalk的视频,看"下集UNRAID NAS系统配置双软路由,完美直通网卡,CPU"
注意, 他视频中的四个网卡是分别在4个group中,所以只要更改一下GUI的启动参数,然后接上显示器,去GUI中创建一个虚拟机的样本(最小内存,硬盘选none,勾上3个直通网卡)保存即可。以后创建虚拟机,就去抄这个样本中的直通代码。如果碰到XML error: Attempted double use of PCI Address '0x05'
这样的错误,就把05改07,08,09,0A,…改到不出错即可。
下次再建新虚拟机,抄完代码又不出错了。奇怪。
还有个简便的方法,就是装VFIO-PCI.CFG
插件,看 unraid如何实现多口网卡直通。勾选之后,创建虚拟机时,直接有直通网卡选择。
https://raw.githubusercontent.com/Skitals/unraid-vfio-pci/master/plugins/vfio.pci.plg
如果你的多个网口,是在同一个group中。我不知道怎么搞,我的机器没这问题。
下载镜像, OpenWrt Downloads -> Stable Release -> x86 -> 64 -> combined-ext4.img , 参考【OpenWrt-官网知多少】。这个是稳定版。
把 openwrt 的 img 镜像 copy 到 /mnt/user/domains/openwrt-xxx/
, 目录名自己定义。多建一层目录是方便管理。
把 目录和img文件的 owner 设为 nobody.users, 目录的权限为 777,文件的权限是666。
如 chown nobody.users openwrt-xxx.img
, chmod 666 openwrt-xxx.img
创建虚拟机VM。修改"名称"和"描述"。
CPU按需给,1个或2个,内存256MB就够了。如果你的实际内存很多,那就分512吧。
Machine: 选 Q35最新版,或者 i440fx最新版,看不出区别。都行。
BIOS:SeaBIOS 传统启动兼容性好。(OVMF是UEFI,不知道openwrt行不行)
Primary vDisk Location: 选 manual,指定openwrt的img文件。 vDisk Bus: 选VirtIO,SATA,或IDE,选SCSI不能启动。
用openwrt-19.07.4-x86-64-combined-ext4.img
这个镜像vm中可以直接用来启动。
root分区252MB,剩余空间220多MB,装东西的话,基本够用。
如果要扩容, 用qemu-img resize
扩容,或者直接在img后添加全零字节dd if=/dev/zero bs=1M count=100 >> combined-ext4.img
用losetup -f combined-ext4.img
挂载到loop4
, 用cfdisk
或fdisk
调整分区。
用partx /dev/loop4
加载分区表到内核。用resize2fs /dev/loop0p2
扩展第二分区(rootfs)。可以fsck
一下。
最后partx -d /dev/loop4
卸载内核分区记录。losetup -d /dev/loop4
卸载loop设备。
openwrt-19.07.4-x86-64-combined-squashfs.img
这个镜像vm中也可以启动。
我知道可以用它来刷路由器。vm中,好像要先创建个磁盘,然后刷进去。下面尝试直接用img启动,并扩容。
直接用这个img启动,第一次启动,网络都无法启动。打命令firstboot;reboot
之后。
overlay只有66kb的空间,连配置都保存不了,重启就恢复出厂。
关闭vm,在unraid中用命令,对刚才的img扩容qemu-img resize combined-squashfs.img +200m
,
再次启动,overlay还是只有66kb,firstboot再重启,还是剩66k。
再测试,重新copy一份原始的combined-squashfs.img,先用命令扩容,再启动。
overlay居然扩容成功了,有190mb空间。(最多可以扩容+256MB)
另: unraid中,如果直接用cfdisk combined-squashfs.img
打开这个文件,可以重新分区。可是改动后,这个img就不能启动了。
应该用losetup -f combined-squashfs.img
挂载到loop设备,再调整分区。应该可以超过256MB限制。
里头有两个分区,squashfs 和 ext4 , 扩的是ext4分区(overlay)。
其他参考: 【OpenWrt全硬盘安装方法】【OpenWrt x86 磁盘扩容】
其他默认吧。
然后,网卡直通,抄一下之前的虚拟机样本中的直通代码。如装了VFIO-PCI.CFG
插件, 直接勾上需要直通的网卡即可, 不用抄代码了。
就可以启动VM看看了。
通过虚拟终端,登录 openwrt,编辑 /etc/config/network
修改 lan 口 IP,重启网络。就可以通过 web 访问 openwrt。
重启网络, 用任意一个指令都行: /etc/init.d/network reload
,/etc/init.d/network restart
,reboot
。
修改/etc/opkg/distfeeds.conf
改为清华大学源 , 把 downloads.openwrt.org 改为 mirrors.tuna.tsinghua.edu.cn/openwrt 即可。
opkg install wget ca-bundle
, 然后把distfeeds.conf中的http:
全部改为https:
为了安全,不建议对外网开放ssh登录,不开放外网的web管理页。(更改端口,再把root的用户名改了,再设置一个超长密码,才考虑开放外网访问)
Network -> Firewall -> General Settings 中,有三个 reject 改为 drop。
参考【设置openwrt路由器的防火墙_允许从外网访问_ipv6服务】关于"默认规则drop/reject"部分。
定时检查网络,不通就重拨。参考【OpenWRT19.07_命令行_重拨wan_重启路由】
改图标,参考 教你UNRAID虚拟机自定义Docker图标icon方法
unraid 可以获取到 ipv6 ,通过 dhcpv6/slaac 得到两个ip。
在 settings -> network settings 中有个 IPv6 privacy extensions
选项。
如果disabled。slaac地址,应该不会变。但实际上得到的是非eui64地址,PD变化,IP也变了。
如果enabled。slaac地址,会变。
如果要改为 eui64。需改 /etc/dhcpcd.conf
文件,并重启 dhcpcd
进程。比较麻烦。
/etc/rc.d/rc.inet1 br0_restart
。这个办法只重启了unraid的br0。vm的直通网口不影响,但连接的br0会丢失。除非再重启vm。sysctl -w net.ipv6.conf.br0.use_tempaddr=0
达到设置eui64的目的。在openwrt中静态分配ipv6地址给 unraid,从而固定它的ipv6后缀。
其实openwrt分配的ipv6后缀和客户机的 DUID 是对应的。基本不变。
不过openwrt改不了客户机的DUID,也不能直接指定客户机的IPv6。见:【设置openwrt路由器的防火墙_允许从外网访问_ipv6服务】
unraid修改自己的DUID,可以通过创建文件解决/var/lib/dhcpcd/duid
,文件内容就一行,自定义的duid 01:02:03:0a:0b:0c:0d:0e:0f:11:12:13
,然后重启dhcpcd
这里给出一个例子(经测试,OK),供大家参考。在config/go 文件中添加一行 /bin/sh /boot/cnofig/modify_dhcpcd.sh
#!/bin/bash
/bin/cp /boot/config/duid /var/lib/dhcpcd/duid
/bin/sed -i 's/^#slaac hwaddr/slaac hwaddr/g;s/^slaac private/#slaac private/g' /etc/dhcpcd.conf
if [ -f /run/dhcpcd-br0-6.pid ]; then
kill $(cat /run/dhcpcd-br0-6.pid )
# 下面这行,自己在unraid中用ps命令查看,记录下参数。然后修改为你自己机器中的参数。
dhcpcd -b -q -t 10 -h myName_Tower -C resolv.conf -6 br0
fi
有了eui64的ipv6地址,就可以【设置openwrt路由器的防火墙_允许从外网访问_ipv6服务】。要考虑开放的服务的安全性。
装个 NextCloud, 有官方版,和LinuxServer版。不知道区别,应该差不多。
还要装个 linuxserver 的 mariadb 配合。image 351MB.
docker 下载慢,参考 Unraid修改docker镜像地址&默认启动, 解决手工设置Docker镜像源 /etc/docker/daemon.json 后重启后丢失失效的问题
bash 中, 少了几个常用的alias。直接修改 .bash_profile , 重启无效。
网上搜了一下,说是要解开 bzroot,修改之后再打包回去。太麻烦。
unraid 启动之后,最后会执行 u盘中 config/go 脚本。执行时的路径是 /boot/config/go 。
所以可以另写个脚本,放在config目录中,然后在 go 脚本中加一行执行自己的脚本,做一些简单的修改。
比如: 添加几行alias到.bash_profile。创建 .ssh/authorized_keys,添加一个key,方便登录。
在config/go 文件中添加一行 /bin/sh /boot/cnofig/modify_roothome.sh
#!/bin/bash
cat >>/root/.bash_profile << EOF
alias l="ls -lF"
alias mv="mv -i"
alias cp="cp -i"
alias rm="rm -i"
export TIME_STYLE=long-iso
EOF
mkdir -m 0700 /root/.ssh
echo "ssh-ed25519 AAAAC6k------a65OhPlz test@localhost" >> /root/.ssh/authorized_keys
chmod 600 /root/.ssh/authorized_keys
unraid 本身是有 crond 服务进程在执行。
CA User Scripts
插件,在app商店中搜索安装。这个插件就是用来创建 root 的 crontab 。DebianBuster
。在里面启动cron服务。缺点是,这个镜像带xfce4桌面,有点大(1.25GB)。Ubuntu-Playground
。这个是纯字符界面的,只有262MB。不过,cron没有,要自己装。Q35-4.2
, OVMF
,1GB
内存,启动镜像用USB
,第一硬盘用SATA
,网卡改e1000
。说找不到硬盘,无法安装。
再换到 Q35-3.0
,找到硬盘了。
再换回 Q35-4.2
, OVMF
,1GB
内存,启动镜像用USB
,第一硬盘用SATA
,网卡改e1000
。又找到硬盘了,奇怪。
启动选择第三项VMWare/ESXI with Jun's Mod v1.02 alpha
,因为是在虚拟机中。
然后,提供安装文件.pat
,2-3分钟就自动重启了。再然后就进入漫长的初始化(超过10分钟)。
装完,群晖在硬盘上开了两个分区。2.4GB
分区中写入了 1.5G 的系统文件,2GB
的分区不知道写了什么。(6.1.1版)。
这个硬盘的剩余空间可以作为数据盘使用(会显示为"未使用磁盘")。
群晖在开/关机时cpu占用挺高,平时占用极低。如果VM支持指定CPU,可以指定非cpu0
。
群晖支持IPv6,可以获取到ipv6地址。其中 slaac 地址是 eui64
。且在"控制面板"->"网络"中没有 private
选项。
如果要改,应该是修改 /etc/sysconfig/network-scripts/ifcfg-eth0
(未测试)。
群晖有时重启后出问题,参看 黑群晖故障(抱歉,您所指定的页面不存在)问题
两个lib文件,在你安装群晖系统用的.pat
文件中找。用7zip可以打开。
libsynopkg.so.1
,libsynoshare.so.6
这两个文件建议放在群晖的 /root 目录中,下次还会再用到的。
装好,放了几天。就故障,一会是"抱歉,您所指定的页面不存在",一会又看不到硬盘了。
无奈再次重装。结果,无论怎么组合,都找不到硬盘。只好放弃玩群晖了。没意思。
下载 amd64-netinst.iso (约350MB), 可以去 华为镜像,阿里镜像,163镜像,清华镜像 找。
把 iso 文件 copy 到 /mnt/user/isos
目录中。我用的是 debian-10.6.0-amd64-netinst.iso。
给 Debian10, 1-2个CPU,最小内存1G,最大2GB内存,硬盘选20GB(qcow2,VirtIO), Q35-4.2 即可。
1GB内存有点紧张,2GB内存足够用。
20GB硬盘,分500MB做boot(一般会用到200MB),swap给1G就好。剩下全给root分区。
启动光盘选择 netinst.iso
debian 安装过程比较人性化,硬盘选择自动分区之后,会显示分区结构,允许你再修改。确认后才写盘安装。
安装时,直接给出国内镜像源的列表,让你选择。
装完系统,再装上nginx,mysql,php,gcc,golang 差不多占3.3GB。只要不装GUI的桌面,怎么都够用了。
NetworkManager , 解决network-manager中wired为unmanaged的问题
allow-hotplug eth0
和 iface eth0 inet dhcp
这两行。否则会分配两个IPv4。(如静态指定IP,不影响)装 postfix 仅作为本地邮件系统,简单而小巧.
装 chrony 对时服务,用 cn.pool.ntp.org
。把服务器的时间搞准。
装 nginx php-cli php-fpm php-curl php-sqlite3 php-xml (默认是安装php7.3)
有了 nginx,可以配置一下webdav。见:【搭建私人的云笔记_使用webdav服务】。
apt install python3 python3-pip; pip3 install virtualenv; pip3虚拟环境
对外开放ssh端口后,总是有很多试密码的。
/etc/ssh/sshd_config
中的几项。改端口Port 1234
。禁止root用密码登录(保留证书登录)PermitRootLogin prohibit-password
。重启sshd。普通用户,用难猜的名字,难猜的密码。fail2ban
, debian10的fail2ban 是支持ipv6的。看【Debian10_Centos8_fail2ban】。vimrc , debian 的vim的缺省配置挺好的。但只要创建了 ~/.vimrc
, 哪怕是空的。缺省配置就丢失了。
~/.vimrc
, 去修改 /etc/vim/vimrc.local
~/.vimrc
第一行加上 source $VIMRUNTIME/defaults.vim
debian-10 的防火墙底层用的是nft。命令行的iptables/ip6tables的规则,其实是转换为nft规则执行的。
默认没有iptables.service,也没有firewalld.service。
所以建议apt install nftables; systemctl enable nfttables; nft -f /etc/nftables.conf
,
你的自定义规则可以写在/etc/nftables.conf
中,系统开机会加载这个文件。
不喜欢直接用nft,可以装ufw,或者firewalld。apt install ufw
或apt install firewalld
。
也可以继续用iptables,用iptables-save
保存规则,开机时,在rc.local
中执行iptables-restore
。
fail2ban
。看【Debian10_Centos8_fail2ban】。firewall-cmd
指令开放对应的端口。安装ros的特别版本。需要指定硬盘的"厂家标识"和"硬盘ID"。
ros 的传统版本。听说是根据硬盘id来认证。ros是离线检测。
ros 的chr版。是在线认证的。ros在运行中,大约每30天自动去你的账号中获取认证。
买这种认证比较划算。可以随意迁移,功能没有任何限制,仅限制工作带宽。
unraid 的 vm 中,关于指定硬盘标识的信息网上很少。搜到一篇竟然看不了,要会员才能看。只好自己摸索。
PVE关于修改硬盘参数的摘抄: PVE导入ROS ESXi ovf模版
镜像转换。用qemu-img convert -p -f vmdk -O qcow2 disk-0.vmdk ROS-xx.qcow2
指定"厂家标识"。我没找到办法。似乎qemu不支持。
指定"硬盘ID"。在<disk>..</disk>
中, 加入<serial>12345678901234567890</serial>
。ros只认前20个字符,超出部分丢弃。
没装成功….
手机扫一扫
移动阅读更方便
你可能感兴趣的文章