在系统启动时运行 kpartx

在系统启动时运行 kpartx

我正在尝试检测并运行由 dmraid 发现的 jMicron fakeRAID 上的分区。我坚持在启动过程中自动执行此操作多久了。

hopungo@hopungo-pc:~$ sudo kpartx -l /dev/mapper/jmicron_GRAID 
jmicron_GRAID1 : 0 7813722112 /dev/mapper/jmicron_GRAID 2048

这里有一个良好的已知解决方案从 2010 年开始,但它在 2023 年就过时了(可能在 22.04 之后)。你根本找不到/etc/udev/rules.d/60-kpartx.rules。如果你自己制作,它就不起作用了。

我也尝试过mdadm,结果是一样的:我需要一种可行的方法在系统启动时运行它。

另一个选择是使用rc.local脚本,但它也不起作用,而且看起来有点不靠谱。kpartx从 22.04 开始,有没有在启动时运行的规范方法?

答案1

创建一个 systemd 服务文件,例如:

/usr/lib/systemd/system/custom-jmicron.service

[Unit]
Description=Detects and activates partions on jMicron fakeRAID
After=systemd-fsck-root.service
Before=local-fs-pre.target local-fs.target shutdown.target
Wants=local-fs-pre.target

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=kpartx -a /dev/mapper/jmicron_GRAID 

[Install]
WantedBy=multi-user.target

文件创建后,运行

systemctl enable custom-jmicron.service

下次重启时,该服务应该运行,并执行命令 kpartx -a /dev/mapper/jmicron_GRAID 一次,因为该服务属于 oneshot 类型。

您可能需要调整“之后”和“之前”部分以使时间 100% 正确,但应该接近。

答案2

您可以使用@重启选项定时任务,它在大多数发行版上运行良好。

@reboot /path/to/your/script.sh

相关内容