arhclinux 下开机按照顺序挂载磁盘和启动docker以及kvm

arch

#先禁止docker和kvm(libvirtd)开机自动

plaintext
systemctl disable docker
systemctl disable libvirtd

#自定义一个开机服务rc-local

#rc-local.servic

nano /usr/lib/systemd/system/rc-local.service

plaintext
[Unit]
Description="/etc/rc.local Compatibility"
 
[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
StandardInput=tty
RemainAfterExit=yes
SysVStartPriority=99
 
[Install]
WantedBy=multi-user.target

#rc.local

nano /etc/rc.local 查找/etc/rc.local.d/下的脚本并执行

plaintext
#!/bin/sh
# /etc/rc.local
if test -d /etc/rc.local.d; then
    for rcscript in /etc/rc.local.d/*.sh; do
        test -r "${rcscript}" && sh ${rcscript}
    done
    unset rcscript
fi

#权限 目录 和开机自启

plaintext
chmod a+x /etc/rc.local
mkdir /etc/rc.local.d
systemctl enable rc-local

#创建自动脚本

sudo nano /etc/rc.local.d/auto-mount-and-start-aio.sh

内容如下

plaintext

# 自动挂载

#mkdir-p  mnt/nvme   mnt/efi  mnt/exfat

mount /dev/nvme0n1p6 /home/yanhui/mnt/exfat
mount /dev/nvme0n1p5 /home/yanhui/mnt/nvme
mount /dev/nvme0n1p1 /home/yanhui/mnt/efi

#docker 和kvm的迁移

plaintext
systemctl stop docker
rsync -avzP /var/lib/docker  /home/yanhui/mnt/nvme
mv /var/lib/docker  /var/lib/docker.bak && ln -s /home/yanhui/mnt/nvme/docker /var/lib/
# 完成后 rm -rf /var/lib/docker.bak
plaintext
systemctl stop libvirtd
rsync -avzP /var/lib/libvirt  /home/yanhui/mnt/nvme
mv /var/lib/libvirt  /var/lib/libvirt.bak && ln -s /home/yanhui/mnt/nvme/libvirt /var/lib/
# 完成后 rm -rf /var/lib/libvirt.bak

#修改docker和libvirtd服务启动顺序

plaintext
cd /usr/lib/systemd/system/

分别编辑 sudo nano libvirtd.servicesudo nano docker.service[Unit] 段 增加一行

plaintext
After=rc-local.service

这行是为了让docker和libvirtd 在rc-local这个服务之后启动,方便我们在 rc-local 内先挂载好磁盘
最后这两个服务设置为自动启动

plaintext
sudo systemctl enable libvirtd
sudo systemctl enable docker
sudo systemctl start docker
sudo systemctl start libvirtd

#另一个文章

https://dev.leiyanhui.com/arch/auto--dock-kvm/

评论