分类: 操作系统

  • OpenZFS的持久化L2ARC配置

    在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

  • ubuntu/debian diskless(iSCSI无盘系统制作)

    说明:此博文以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发行版

    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
    
  • FreeBSD12 AMD显卡配置

    最近购置了一台家用服务器 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优点以及技巧

    FreeBSD添加自定义动态库(.so)路径:

    路径在 /usr/local/libdata/ldconfig  目录下,自己创建一个文件,添加库路径即可,然后运行 service ldconfig restart

    FreeBSD新系统如何恢复软件安装:

    拷贝备份的 /usr/local 目录以及自己安装的软件目录比如 /opt 目录到新系统上即可,然后恢复自己修改的非/usr/local以及/opt目录的其他文件

     

  • 在不支持BSD的VPS上安装BSD系统

    很多人可能像我一样喜爱着BSD系统,比如最受欢迎的FreeBSD系统,但是我们在租用服务器的时候会发现很多VPS厂商并不提供BSD系统,大多是Linux和Windows,这里提供一些解决方法,在VPS上安装上BSD系统,比如我测试过的FreeBSD和OpenBSD系统。

    前提条件(满足一条即可,注意:所有VPS可VNC查看)

    1.服务商提供Linux拯救系统盘或者系统自带拯救功能启动。

    2.支持自定义下载ISO,这个就不需要向下面看了,直接装就行。

    第一种方式(FreeBSD 自己尝试过,通过mfsBSD安装):

    进入临时系统后使用

    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