UnRAID_6.8.2_配置_设置
阅读原文时间:2023年07月13日阅读:3

转载注明来源: 本文链接 来自osnosn的博客,写于 2020-10-05.

参考:

UnRAID download

Getting_Started

Official Documentation

unraid forums

unRaid系列二:认识界面并配置教程

QEMU(4) q35,SeaBIOS(2)-硬件架构

NAS最强攻略:使用UNRAID系统,搭建ALL IN ONE全过程

下载,安装,参考官方文档。

  • 我安装/配置,用的是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启动。

    • 确定u盘是fat32,否则格式化为fat32.
    • 把unraid的文件解压到u盘根目录。把卷标名改为"unraid"
    • 打开dos窗口,执行u盘根目录的 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 在单位代理服务后面,不能直接访问外网。这有几篇文章(我没试过,不知道行不行):

装APP商店

显示主板温度

  • ssh 登录 unraid,打命令 sensors,可以显示cpu和主板温度。但 web 界面中没有。

  • 参考: unRaid系列八:显示主板、CPU传感器温度

    先在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中。我不知道怎么搞,我的机器没这问题。

命令行工具

  • 用 NerdPack 装,这些命令行工具是装在 U盘中的。跟着unraid系统的。
  • 比如: tmux, python3, p7zip, unrar, vim, tcpdump, … (看自己需要吧)

安装OpenWRT

  • 下载镜像, 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吧。

    • (仅拨号上网占不到60M,再跑4个大进程才用到168MB内存,比如radiusd)
  • 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, 用cfdiskfdisk调整分区。

        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 即可。

    • 安装wget的https支持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方法

Lean 的 Openwrt

  • 下载 Lean Openwrt
  • 安装方法一样。
  • 这个版的,用的最新测试的snapshot。比上面那个官方稳定版openwrt新,特性会更新,但可能有bug。

unraid 的 ipv6

  • unraid 可以获取到 ipv6 ,通过 dhcpv6/slaac 得到两个ip。

    在 settings -> network settings 中有个 IPv6 privacy extensions 选项。

  • 如果要改为 eui64。需改 /etc/dhcpcd.conf 文件,并重启 dhcpcd 进程。比较麻烦。

    • config/go 脚本执行时机晚于 dhcpcd的执行。
    • 重启 dhcpcd,
      • 办法1,杀了它,再按原参数重新运行。
      • 办法2,执行 /etc/rc.d/rc.inet1 br0_restart。这个办法只重启了unraid的br0。vm的直通网口不影响,但连接的br0会丢失。除非再重启vm。
    • (未测试)似乎不能在config/go中直接修改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

    filename: config/modify_dhcpcd.sh

    用途: unraid-6.8.2 中 modify dhcpcd.conf , duid

    这个文件config/duid自己创建。(自定义DUID,格式)->"00:01:02:03:0d:0e:0f:cc"

    /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服务】。要考虑开放的服务的安全性。

  • ddns 参考【Linux中获取本机的最新IPv6地址_更新ddns的脚本_获取openwrt的IP地址】。

docker

设置开机启动的东西

  • Array(阵列自动启动)。 在SETTINGS->Disk Settings 中,第一项auto start.
  • VM 设置,哪个虚拟机自动启动。
  • docker 设置,哪个docker自动启动。

unraid 的 shell 用着不习惯

  • 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

    filename: config/modify_roothome.sh

    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

执行定时脚本(crontab)

unraid 本身是有 crond 服务进程在执行。

  • 可是,登录unraid命令行,在 root 用户下创建的 crontab,重启后都会丢失。
  • 用 config/go 脚本在每次启动时创建 root 的 crontab,太过于麻烦。
  • 安装 CA User Scripts 插件,在app商店中搜索安装。这个插件就是用来创建 root 的 crontab 。
    • 使用方法,不算麻烦。在这里创建的定时任务,重启之后还是有效。
  • 如果需要执行的定时任务,与 unraid 本身无关。
    • 可以装个docker,在app商店中搜索DebianBuster。在里面启动cron服务。缺点是,这个镜像带xfce4桌面,有点大(1.25GB)。
    • 可以装个docker,在app商店中搜索Ubuntu-Playground。这个是纯字符界面的,只有262MB。不过,cron没有,要自己装。
    • 或者创建个VM,装个Linux,那就随便搞了。

装群晖 VM

  • unRAID 虚拟群晖DSM系统|unRaid下黑群晖|VMware虚拟机安装黑群晖DSM6.2|D

  • 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 目录中,下次还会再用到的。

  • 装好,放了几天。就故障,一会是"抱歉,您所指定的页面不存在",一会又看不到硬盘了。

    无奈再次重装。结果,无论怎么组合,都找不到硬盘。只好放弃玩群晖了。没意思。

装 Debian 的 VM

  • 下载 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的问题

    • 启用network-manager, 需要注释掉 /etc/network/interfaces 中 allow-hotplug eth0iface 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服务】。

    Linux中获取本机的最新IPv6地址_更新ddns的脚本_获取openwrt的IP地址

    设置openwrt路由器的防火墙_允许从外网访问_ipv6服务

  • 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, 哪怕是空的。缺省配置就丢失了。

  • 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 ufwapt install firewalld

    • 也可以继续用iptables,用iptables-save保存规则,开机时,在rc.local中执行iptables-restore

装 CentOS8 的 VM

  • CentOS-8 对比一下 Debian-10 ,玩玩两个系统有什么不同。
  • 下载 x86_64-boot.iso (约630MB), 我用的是 CentOS-8.2.2004-x86_64-boot.iso
  • 给 CentOS-8, 1-2个CPU,2GB内存,硬盘20GB也足够玩玩了。不装GUI,占用硬盘比debian多一点,但也不超过4GB。
  • 安装过程中,选择/使用网络源安装,见【CentOS8_在线安装_网络源_网络镜像源填写格式_以及其他笔记】。
  • centos8 的硬盘分区。
    • 如果选择自动分区,下一步就是确认写盘,也不显示分区结构。
    • 如果选择手工,当你手工删除原有分区后,有一个选项是自动分配。可以试试。
  • sshd 改端口。禁止root用密码登录。
  • fail2ban。看【Debian10_Centos8_fail2ban】。
  • CentOS-8 默认防火墙是激活的,用的是firewalld,底层是nft表。
    • 如果安装了网络服务,记得要用firewall-cmd指令开放对应的端口。

装 ROS

  • 安装ros的特别版本。需要指定硬盘的"厂家标识"和"硬盘ID"。

  • ros 的传统版本。听说是根据硬盘id来认证。ros是离线检测。

  • ros 的chr版。是在线认证的。ros在运行中,大约每30天自动去你的账号中获取认证。

    买这种认证比较划算。可以随意迁移,功能没有任何限制,仅限制工作带宽。

  • unraid 的 vm 中,关于指定硬盘标识的信息网上很少。搜到一篇竟然看不了,要会员才能看。只好自己摸索。

  • 参考: kvm中虚机xml定义格式说明, Domain XML format,

  • 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个字符,超出部分丢弃。

  • 没装成功….

OPNsense , pfSense

  • 一个开源的防火墙/网关/路由,基于FreeBSD。
  • 改天试试。写在这,备忘。

待续……


转载注明来源: 本文链接 来自osnosn的博客.

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章