在OpenZFS 2.0版本中已经支持了持久化L2ARC(开机启动缓存再也不消失了),配置方法为:
Linux:编辑/etc/modprobe.d/zfs.conf,加入如下行:
options zfs l2arc_headroom=0
FreeBSD(需要安装OpenZFS2.0):编辑/etc/sysctl.conf,加入如下行:
vfs.zfs.l2arc_headroom=0
在OpenZFS 2.0版本中已经支持了持久化L2ARC(开机启动缓存再也不消失了),配置方法为:
Linux:编辑/etc/modprobe.d/zfs.conf,加入如下行:
options zfs l2arc_headroom=0
FreeBSD(需要安装OpenZFS2.0):编辑/etc/sysctl.conf,加入如下行:
vfs.zfs.l2arc_headroom=0
说明:此博文以Ubuntu20.04 desktop为基础制作无盘,非liveCD方式以及非DHCP分配IP地址看文章末尾的我参考的英文原版链接
1.首先进入Ubuntu live系统,选择试用,并且打开终端,然后安装open-iscsi
sudo apt install open-iscsi
2.执行以下命令进入root用户
sudo -s
3.修改iSCSI的initiator name并且重启iscsid服务(这一步指定本地initiator name,有些iSCSI需要验证initiator name,比如windows server的iSCSI Target)
echo "InitiatorName=ubuntu" >/etc/iscsi/initiatorname.iscsi /etc/init.d/iscsid restart
4.发现iSCSI Target硬盘
iscsiadm -m discovery -t sendtargets -p 192.168.1.1
5.映射到本地磁盘
iscsiadm -m node -T 'iqn.ubuntu' -p 192.168.1.1 -l
6.执行ubuntu安装程序,选择相应的硬盘安装
7.安装之后我们需要修改安装的目标硬盘的一些配置以便能够从iSCSI中引导(这里假设iSCSI映射到本地的硬盘为/dev/sda,系统分区为/dev/sda1)
8.挂载/dev/sda1
mount /dev/sda1 /mnt
9.映射本地设备文件到chroot环境
mount -t proc none /mnt/proc mount -t sysfs none /mnt/sys mount --bind /dev /mnt/dev
10.chroot到分区
chroot /mnt
11.安装open-iscsi
sudo apt install open-iscsi
12.修改chroot iSCSI的initiator name
echo "InitiatorName=your_initiator_name" > /etc/iscsi/initiatorname.iscsi
13.修改/etc/default/grub文件,像如下这样
GRUB_CMDLINE_LINUX="ISCSI_INITIATOR=ubuntu ISCSI_TARGET_NAME=iqn.ubuntu ISCSI_TARGET_IP=192.168.1.1 ip=dhcp"
14.更新引导以及initramfs
update-grub update-initramfs -u
15.使用iPXE的iSCSI引导功能,参考代码如下(注意这里的iPXE具体用法不详细介绍,并且这里的代码也只是部分,要想使用iPXE,请阅读iPXE的官网手册)
#!ipxe set initiator-iqn ubuntu sanboot --no-describe iscsi:192.168.1.1::::iqn.ubuntu
16.重启系统使用iPXE引导进入即可
如果是非桌面liveCD方式,这里是我参考的文章地址
https://backreference.org/2013/12/23/diskless-iscsi-boot-with-pxe-howto/
FreeBSD的源代码目录非常简单明了,各个源码目录基本对应系统组件各个部分,这里不做介绍,如果需要去除一些定制组件或者增加组件,只需要修改每个父级目录的Makefile即可。
在定制完成自己的FreeBSD发行版之后,执行以下命令
cd /usr/src make buildworld buildkernel -j4 KERNCONF=CUSTOM make distributeworld distributekernel -j4 KERNCONF=CUSTOM DISTDIR=/your_directory
这里的KERNCONF为自定义的内核配置文件名称,编译完成后即可生成目标的内核文件以及基本文件系统,
如果要定制其他软件可以chroot到生成的根文件系统。
下面讲述如何制作一个可引导镜像:
生成一个镜像文件:
dd if=/dev/zero of=my_freebsd.img bs=4M size=2048
创建一个md文件,mdconfig命令会返回一个设备名,比如md0
mdconfig my_freebsd.img
创建的md文件相当于一个磁盘,然后就可以创建引导分区等操作了,请看官方文档
https://wiki.freebsd.org/UEFI
最近购置了一台家用服务器 HPE MicroServer Gen10,给服务器装上了FreeBSD,但是安装图形界面特别麻烦,花了我差不多一天多时间,这里给出一些操作步骤避免很多人遇坑。
安装图形界面(以fvwm-cystal为例子):
首先安装xorg,pkg命令一下就行,然后在 /etc/rc.conf 加上 dbus_enable=”YES”,图形界面需要dbus通讯。
安装fvwm-crystal命令就不说了,pkg一下就行,然后安装。
最后安装xdm登录管理器,至此图形界面已经基本安装完毕。
此刻你用root用户敲startx发现是无法启动的,因此需要在/usr/local/etc/X11/xorg.conf.d/增加一个文件,比如 amd.conf文件,文件这么写,
这里有个FreeBSD官方的参考链接:
https://www.freebsd.org/doc/zh_TW/books/handbook/x-config.html
Section "Device"
Identifier "Card0"
Driver "radeon"
EndSection
然后 pkg install drm-kmod,安装drm模块,编辑/etc/rc.conf文件,添加如下行
kld_list="/boot/modules/amdgpu.ko"
如果是HD7000或者更老旧的GPU,添加如下行
kld_list="/boot/modules/radeonkms.ko"
我的是AMD R7 显卡,那么是amdgpu.ko,
这里特别强调的是如果机器是UEFI启动并且是AMD显卡,EFI framebuffer和AMD显卡驱动是有冲突的,你需要在 /boot/loader.conf 增加下面一行,如果文件没有那么创建一个
hw.syscons.disable=1
这里的配置方式可参考
https://wiki.freebsd.org/Graphics
重启显卡就能够正常使用显卡驱动(重启卡在FreeBSD logo引导界面大约1分钟才能正常进入系统)
FreeBSD添加自定义动态库(.so)路径:
路径在 /usr/local/libdata/ldconfig 目录下,自己创建一个文件,添加库路径即可,然后运行 service ldconfig restart
FreeBSD新系统如何恢复软件安装:
拷贝备份的 /usr/local 目录以及自己安装的软件目录比如 /opt 目录到新系统上即可,然后恢复自己修改的非/usr/local以及/opt目录的其他文件
很多人可能像我一样喜爱着BSD系统,比如最受欢迎的FreeBSD系统,但是我们在租用服务器的时候会发现很多VPS厂商并不提供BSD系统,大多是Linux和Windows,这里提供一些解决方法,在VPS上安装上BSD系统,比如我测试过的FreeBSD和OpenBSD系统。
1.服务商提供Linux拯救系统盘或者系统自带拯救功能启动。
2.支持自定义下载ISO,这个就不需要向下面看了,直接装就行。
进入临时系统后使用
wget -qO- https://mfsbsd.vx.sk/files/images/12/amd64/mfsbsd-12.1-RELEASE-amd64.img | dd of=/dev/sda bs=1m
或者使用CURL
curl -s https://mfsbsd.vx.sk/files/images/12/amd64/mfsbsd-12.1-RELEASE-amd64.img | dd of=/dev/sda bs=1m
上述”/dev/sda”换成你自己的VPS硬盘名,还有建议像我一样使用管道符,一边下载一边写入磁盘,当然VPS内存很大就可以忽略了,写入完成之后重启运行 bsdinstall 命令即可,如果需要登录,root用户名的密码是mfsbsd