我正在尝试检测并运行由 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