package/petitboot: misc enhancement
v2 cover package/petitboot: misc enhancement
The br2-external tree used to build OpenPOWER firmware has long carried petitboot as a custom package[1]. Now that petitboot has been added to buildroot proper, it would be nice to leverage the base package instead.
To make that transition easier, here is a set of patches which port over some of the enhancements made to that external package.
Beyond these, there are a couple of more involved things left:
* User separation (i.e. the petitboot shell runs as 'petituser')
* Support for MTD devices
[1] https://github.com/open-power/op-build/tree/master/openpower/package/petitboot
---
v2:
* Use Laurent's suggested additions to "run pb-console at boot" patch.
Reza Arbab (5):
package/petitboot: fix HOST_PROG_SHUTDOWN value package/petitboot: run pb-console at boot package/petitboot: poll removable devices package/petitboot: enable discovery of software RAID devices package/petitboot: enable discovery of SCSI devices
package/petitboot/63-md-raid-arrays.rules | 41 ++++++++++++ package/petitboot/65-md-incremental.rules | 69 ++++++++++++++++++++ package/petitboot/66-add-sg-module.rules | 2 + package/petitboot/petitboot-console-ui.rules | 5 ++ package/petitboot/petitboot.mk | 20 +++++- package/petitboot/removable-event-poll.rules | 3 + package/petitboot/sysctl.conf | 1 + system/Config.in | 2 +- 8 files changed, 141 insertions(+), 2 deletions(-) create mode 100644 package/petitboot/63-md-raid-arrays.rules create mode 100644 package/petitboot/65-md-incremental.rules create mode 100644 package/petitboot/66-add-sg-module.rules create mode 100644 package/petitboot/petitboot-console-ui.rules create mode 100644 package/petitboot/removable-event-poll.rules create mode 100644 package/petitboot/sysctl.conf
Signature · 6 lines
2.39.3 _______________________________________________ buildroot mailing list [email protected] https://lists.buildroot.org/mailman/listinfo/buildroot
PATCH v2 1/5 package/petitboot: fix HOST_PROG_SHUTDOWN value
HOST_PROG_SHUTDOWN currently references a file that doesn't exist. Fix by setting it to /usr/libexec/petitboot/bb-kexec-reboot, which this package already installs but doesn't use.
--- package/petitboot/petitboot.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
package/petitboot/petitboot.mk +1 -1
@@ -21,7 +21,7 @@ PETITBOOT_CONF_OPTS = \ --without-twin-x11 \ $(if $(BR2_PACKAGE_BUSYBOX),--enable-busybox,--disable-busybox) \ HOST_PROG_KEXEC=/usr/sbin/kexec \ - HOST_PROG_SHUTDOWN=/usr/sbin/kexec-restart + HOST_PROG_SHUTDOWN=/usr/libexec/petitboot/bb-kexec-reboot # HPA and Busybox tftp are supported. HPA tftp is part of Buildroot's tftpd # package.
Signature · 6 lines
2.39.3 _______________________________________________ buildroot mailing list [email protected] https://lists.buildroot.org/mailman/listinfo/buildroot
Re: [Buildroot] [PATCH v2 1/5] package/petitboot: fix HOST_PROG_SHUTDOWN value
Quoted 6 lines · Reza Arbab
HOST_PROG_SHUTDOWNcurrently references a file that doesn't exist. Fix by setting it to/usr/libexec/petitboot/bb-kexec-reboot, which this package already installs but doesn't use.Signed-off-by Reza Arbab <[email protected]>Reviewed-by Laurent Vivier <[email protected]>
Applied to master, thanks.
Regards,
Arnout
Quoted 9 lines
--- package/petitboot/petitboot.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)package/petitboot/petitboot.mk +0
-0
package/petitboot/petitboot.mk PETITBOOT_CONF_OPTS = \ · line 27
Quoted 8 lines
package/petitboot/petitboot.mk +1
-1@@ -21,7 +21,7 @@ PETITBOOT_CONF_OPTS = \ --without-twin-x11 \ $(if $(BR2_PACKAGE_BUSYBOX),--enable-busybox,--disable-busybox) \ HOST_PROG_KEXEC=/usr/sbin/kexec \ - HOST_PROG_SHUTDOWN=/usr/sbin/kexec-restart + HOST_PROG_SHUTDOWN=/usr/libexec/petitboot/bb-kexec-reboot # HPA and Busybox tftp are supported. HPA tftp is part of Buildroot's tftpd # package.
_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot
PATCH v2 2/5 package/petitboot: run pb-console at boot
In reply to Reza ArbabInstall a udev rule to run the petitboot UI on commonly-known consoles instead of getty. To prevent the kernel's console output from trampling the UI, also add a sysctl file to reduce the kernel log levels to KERN_ALERT.
---
v2:
* Add ttyGF* to list of commonly-known consoles.
* Don't select BR2_TARGET_GENERIC_GETTY by default.
package/petitboot/petitboot-console-ui.rules | 5 +++++ package/petitboot/petitboot.mk | 4 ++++ package/petitboot/sysctl.conf | 1 + system/Config.in | 2 +- 4 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 package/petitboot/petitboot-console-ui.rules create mode 100644 package/petitboot/sysctl.conf
package/petitboot/petitboot-console-ui.rules new file +5 -0
@@ -0,0 +1,5 @@ +# spawn a petitboot UI on common user-visible interface devices +SUBSYSTEM=="tty", KERNEL=="hvc*", RUN+="/usr/libexec/petitboot/pb-console --getty --detach -- -n -i 0 $name linux" +SUBSYSTEM=="tty", KERNEL=="tty0", RUN+="/usr/libexec/petitboot/pb-console --getty --detach -- -n -i 0 $name linux" +SUBSYSTEM=="tty", KERNEL=="ttyGF*", RUN+="/usr/libexec/petitboot/pb-console --getty --detach -- -n -i 0 $name linux" +SUBSYSTEM=="tty", KERNEL=="ttyS*", RUN+="/usr/libexec/petitboot/pb-console --getty --detach -- -n -i 0 $name linux"
package/petitboot/petitboot.mk +4 -0
@@ -55,6 +55,10 @@ define PETITBOOT_POST_INSTALL $(TARGET_DIR)/etc/petitboot/boot.d/90-sort-dtb $(INSTALL) -m 0755 -D $(PETITBOOT_PKGDIR)/S15pb-discover \ $(TARGET_DIR)/etc/init.d/S15pb-discover + $(INSTALL) -D -m 0755 $(PETITBOOT_PKGDIR)/petitboot-console-ui.rules \ + $(TARGET_DIR)/etc/udev/rules.d/petitboot-console-ui.rules + $(INSTALL) -D -m 0755 $(PETITBOOT_PKGDIR)/sysctl.conf \ + $(TARGET_DIR)/etc/sysctl.d/petitboot.conf mkdir -p $(TARGET_DIR)/usr/share/udhcpc/default.script.d/ ln -sf /usr/sbin/pb-udhcpc \ $(TARGET_DIR)/usr/share/udhcpc/default.script.d/
package/petitboot/sysctl.conf new file +1 -0
@@ -0,0 +1 @@ +kernel.printk = 1 1 1 1
system/Config.in +1 -1
@@ -375,7 +375,7 @@ config BR2_SYSTEM_BIN_SH menuconfig BR2_TARGET_GENERIC_GETTY bool "Run a getty (login prompt) after boot" - default y + default y if !BR2_PACKAGE_PETITBOOT if BR2_TARGET_GENERIC_GETTY config BR2_TARGET_GENERIC_GETTY_PORT
Signature · 6 lines
2.39.3 _______________________________________________ buildroot mailing list [email protected] https://lists.buildroot.org/mailman/listinfo/buildroot
Re: [Buildroot] [PATCH v2 2/5] package/petitboot: run pb-console at boot
Quoted 25 lines · Reza Arbab
Install a udev rule to run the petitboot UI on commonly-known consoles instead of getty. To prevent the kernel's console output from trampling the UI, also add a sysctl file to reduce the kernel log levels to
KERN_ALERT.Signed-off-by Reza Arbab <[email protected]>---
v2:
* Add ttyGF* to list of commonly-known consoles.
* Don't selectBR2_TARGET_GENERIC_GETTYby default.package/petitboot/petitboot-console-ui.rules | 5 +++++ package/petitboot/petitboot.mk | 4 ++++ package/petitboot/sysctl.conf | 1 + system/Config.in | 2 +- 4 files changed, 11 insertions(+), 1 deletion(-)create mode 100644 package/petitboot/petitboot-console-ui.rules create mode 100644
package/petitboot/sysctl.confpackage/petitboot/petitboot-console-ui.rules new file +0
-0
package/petitboot/petitboot-console-ui.rules line 5
Quoted 5 lines
package/petitboot/petitboot-console-ui.rules new file +5
-0@@ -0,0 +1,5 @@ +# spawn a petitboot UI on common user-visible interface devices +SUBSYSTEM=="tty", KERNEL=="hvc*", RUN+="/usr/libexec/petitboot/pb-console --getty --detach -- -n -i 0 $name linux" +SUBSYSTEM=="tty", KERNEL=="tty0", RUN+="/usr/libexec/petitboot/pb-console --getty --detach -- -n -i 0 $name linux" +SUBSYSTEM=="tty", KERNEL=="ttyGF*", RUN+="/usr/libexec/petitboot/pb-console --getty --detach -- -n -i 0 $name linux" +SUBSYSTEM=="tty", KERNEL=="ttyS*", RUN+="/usr/libexec/petitboot/pb-console --getty --detach -- -n -i 0 $name linux"
In general, it's quite likely that there are some serial ports where some
device is connected rather that a console (e.g. GPS, Bluetooth, cell modem, ...). So starting pb-console on "anything that looks ike a serial port" is a bad idea.
In Buildroot, we by default assume that the console is on /dev/console - which
is why that is the default for BR2_TARGET_GENERIC_GETTY_PORT. If it's needed to run pb-console on a different port or ports than the default /dev/console, then that's a system-specific configuration.
I see no way we can have this generic assumption of "all ttys need pb-console"
in Buildroot.
It _does_ make sense, however, to put pb-console on /dev/console. However,
wouldn't it make more sense to do that in inittab instead of with a udev rule - like the getty line?
BTW, I don't understand why you even have a KERNEL filter. Anything that is a
tty could be the console, no?
Quoted 21 lines
package/petitboot/petitboot.mk +4
-0@@ -55,6 +55,10 @@ define PETITBOOT_POST_INSTALL $(TARGET_DIR)/etc/petitboot/boot.d/90-sort-dtb $(INSTALL) -m 0755 -D $(PETITBOOT_PKGDIR)/S15pb-discover \ $(TARGET_DIR)/etc/init.d/S15pb-discover + $(INSTALL) -D -m 0755 $(PETITBOOT_PKGDIR)/petitboot-console-ui.rules \ + $(TARGET_DIR)/etc/udev/rules.d/petitboot-console-ui.rules + $(INSTALL) -D -m 0755 $(PETITBOOT_PKGDIR)/sysctl.conf \ + $(TARGET_DIR)/etc/sysctl.d/petitboot.conf mkdir -p $(TARGET_DIR)/usr/share/udhcpc/default.script.d/ ln -sf /usr/sbin/pb-udhcpc \ $(TARGET_DIR)/usr/share/udhcpc/default.script.d/package/petitboot/sysctl.conf new file +0
-0
package/petitboot/sysctl.conf line 1
Quoted 1 line
package/petitboot/sysctl.conf new file +1
-0@@ -0,0 +1 @@ +kernel.printk = 1 1 1 1
I'm not sure how useful this is... There is still output from the init scripts
coming on the console, so why block the kernel output but not those? In addition, by the time we get to S10udev (or definitely by the time we get to the inittab stuff), most kernel output has already passed.
system/Config.in config BR2_SYSTEM_BIN_SH · line 378
Quoted 10 lines
system/Config.in +1
-1@@ -375,7 +375,7 @@ config BR2_SYSTEM_BIN_SH menuconfig BR2_TARGET_GENERIC_GETTY bool "Run a getty (login prompt) after boot" - default y + default y if !BR2_PACKAGE_PETITBOOT
Ugh, this is super ugly to have to do something petitboot-specific in the
system menu. But I don't readily know a better way to do this.
Regards,
Arnout
system/Config.in config BR2_SYSTEM_BIN_SH · line 381
Quoted 3 lines
system/Config.in +0
-0if BR2_TARGET_GENERIC_GETTY config BR2_TARGET_GENERIC_GETTY_PORT
_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot
Re: [Buildroot] [PATCH v2 2/5] package/petitboot: run pb-console at boot
Quoted 11 lines · Arnout Vandecappelle
package/petitboot/petitboot-console-ui.rules line 5
Quoted 8 lines
package/petitboot/petitboot-console-ui.rules new file +5
-0@@ -0,0 +1,5 @@ +# spawn a petitboot UI on common user-visible interface devices +SUBSYSTEM=="tty", KERNEL=="hvc*", RUN+="/usr/libexec/petitboot/pb-console --getty --detach -- -n -i 0 $name linux" +SUBSYSTEM=="tty", KERNEL=="tty0", RUN+="/usr/libexec/petitboot/pb-console --getty --detach -- -n -i 0 $name linux" +SUBSYSTEM=="tty", KERNEL=="ttyGF*", RUN+="/usr/libexec/petitboot/pb-console --getty --detach -- -n -i 0 $name linux" +SUBSYSTEM=="tty", KERNEL=="ttyS*", RUN+="/usr/libexec/petitboot/pb-console --getty --detach -- -n -i 0 $name linux"In general, it's quite likely that there are some serial ports where some device is connected rather that a console (e.g. GPS, Bluetooth, cell modem, ...). So starting pb-console on "anything that looks ike a serial port" is a bad idea.
Quoted 5 lines
In Buildroot, we by default assume that the console is on
/dev/console- which is why that is the default forBR2_TARGET_GENERIC_GETTY_PORT. If it's needed to run pb-console on a different port or ports than the default/dev/console, then that's a system-specific configuration.I see no way we can have this generic assumption of "all ttys need pb-console" in Buildroot.
It _does_ make sense, however, to put pb-console on
/dev/console.
Fair point. The intention is just to replace the login prompt with a petitboot menu, so if buildroot only assumes /dev/console for getty by default, then this should too. As you say, anything more can be system-specific.
Quoted 1 line
However, wouldn't it make more sense to do that in inittab instead of with a udev rule - like the getty line?
This part I'm not sure about. In the petitboot docs it does say "it is useful to have this called by udev", but not why that way specifically.
http://open-power.github.io/petitboot/dev/linux-image.html
Quoted 1 line
BTW, I don't understand why you even have a KERNEL filter. Anything that is a tty could be the console, no?
The filters are very broad, but I guess still an attempt to limit things to the enumerated "common user-visible interface devices" instead of being totally open-ended.
Quoted 6 lines
package/petitboot/sysctl.conf line 1
Quoted 4 lines
package/petitboot/sysctl.conf new file +1
-0@@ -0,0 +1 @@ +kernel.printk = 1 1 1 1I'm not sure how useful this is... There is still output from the init scripts coming on the console, so why block the kernel output but not those? In addition, by the time we get to S10udev (or definitely by the time we get to the inittab stuff), most kernel output has already passed.
Boot output has passed, but pb-discover is in the background populating the boot menu with bootable images via disk and network, and I think there can be enough kernel noise at runtime to motivate minimizing it.
Thanks for the review. I'll reevaluate what changes are appropriate to carry in buildroot vs elsewhere.
Signature · 5 lines
Reza Arbab _______________________________________________ buildroot mailing list [email protected] https://lists.buildroot.org/mailman/listinfo/buildroot
Re: [Buildroot] [PATCH v2 2/5] package/petitboot: run pb-console at boot
In reply to Reza ArbabQuoted 7 lines · Reza Arbab
Install a udev rule to run the petitboot UI on commonly-known consoles instead of getty. To prevent the kernel's console output from trampling the UI, also add a sysctl file to reduce the kernel log levels to
KERN_ALERT.Signed-off-by Reza Arbab <[email protected]>
Quoted 60 lines
---
v2:
* Add ttyGF* to list of commonly-known consoles.
* Don't selectBR2_TARGET_GENERIC_GETTYby default.package/petitboot/petitboot-console-ui.rules | 5 +++++ package/petitboot/petitboot.mk | 4 ++++ package/petitboot/sysctl.conf | 1 + system/Config.in | 2 +- 4 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 package/petitboot/petitboot-console-ui.rules create mode 100644 package/petitboot/sysctl.confpackage/petitboot/petitboot-console-ui.rules new file +5
-0@@ -0,0 +1,5 @@ +# spawn a petitboot UI on common user-visible interface devices +SUBSYSTEM=="tty", KERNEL=="hvc*", RUN+="/usr/libexec/petitboot/pb-console --getty --detach -- -n -i 0 $name linux" +SUBSYSTEM=="tty", KERNEL=="tty0", RUN+="/usr/libexec/petitboot/pb-console --getty --detach -- -n -i 0 $name linux" +SUBSYSTEM=="tty", KERNEL=="ttyGF*", RUN+="/usr/libexec/petitboot/pb-console --getty --detach -- -n -i 0 $name linux" +SUBSYSTEM=="tty", KERNEL=="ttyS*", RUN+="/usr/libexec/petitboot/pb-console --getty --detach -- -n -i 0 $name linux"package/petitboot/petitboot.mk +4
-0@@ -55,6 +55,10 @@ define PETITBOOT_POST_INSTALL $(TARGET_DIR)/etc/petitboot/boot.d/90-sort-dtb $(INSTALL) -m 0755 -D $(PETITBOOT_PKGDIR)/S15pb-discover \ $(TARGET_DIR)/etc/init.d/S15pb-discover + $(INSTALL) -D -m 0755 $(PETITBOOT_PKGDIR)/petitboot-console-ui.rules \ + $(TARGET_DIR)/etc/udev/rules.d/petitboot-console-ui.rules + $(INSTALL) -D -m 0755 $(PETITBOOT_PKGDIR)/sysctl.conf \ + $(TARGET_DIR)/etc/sysctl.d/petitboot.conf mkdir -p $(TARGET_DIR)/usr/share/udhcpc/default.script.d/ ln -sf /usr/sbin/pb-udhcpc \ $(TARGET_DIR)/usr/share/udhcpc/default.script.d/package/petitboot/sysctl.conf new file +1
-0@@ -0,0 +1 @@ +kernel.printk = 1 1 1 1system/Config.in +1
-2@@ -375,7 +375,7 @@ config BR2_SYSTEM_BIN_SH menuconfig BR2_TARGET_GENERIC_GETTY bool "Run a getty (login prompt) after boot" - default y + default y if !BR2_PACKAGE_PETITBOOT if BR2_TARGET_GENERIC_GETTY config BR2_TARGET_GENERIC_GETTY_PORT --
Quoted 2 lines
2.39.3
_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot
Re: [Buildroot] [PATCH v2 2/5] package/petitboot: run pb-console at boot
In reply to Reza ArbabLe 15/09/2023 à 17:58, Reza Arbab a écrit :
Quoted 57 lines
Install a udev rule to run the petitboot UI on commonly-known consoles instead of getty. To prevent the kernel's console output from trampling the UI, also add a sysctl file to reduce the kernel log levels to
KERN_ALERT.Signed-off-by Reza Arbab <[email protected]>---
v2:
* Add ttyGF* to list of commonly-known consoles.
* Don't selectBR2_TARGET_GENERIC_GETTYby default.package/petitboot/petitboot-console-ui.rules | 5 +++++ package/petitboot/petitboot.mk | 4 ++++ package/petitboot/sysctl.conf | 1 + system/Config.in | 2 +- 4 files changed, 11 insertions(+), 1 deletion(-)create mode 100644 package/petitboot/petitboot-console-ui.rules create mode 100644
package/petitboot/sysctl.confpackage/petitboot/petitboot-console-ui.rules new file +5
-0@@ -0,0 +1,5 @@ +# spawn a petitboot UI on common user-visible interface devices +SUBSYSTEM=="tty", KERNEL=="hvc*", RUN+="/usr/libexec/petitboot/pb-console --getty --detach -- -n -i 0 $name linux" +SUBSYSTEM=="tty", KERNEL=="tty0", RUN+="/usr/libexec/petitboot/pb-console --getty --detach -- -n -i 0 $name linux" +SUBSYSTEM=="tty", KERNEL=="ttyGF*", RUN+="/usr/libexec/petitboot/pb-console --getty --detach -- -n -i 0 $name linux" +SUBSYSTEM=="tty", KERNEL=="ttyS*", RUN+="/usr/libexec/petitboot/pb-console --getty --detach -- -n -i 0 $name linux"package/petitboot/petitboot.mk +4
-0@@ -55,6 +55,10 @@ define PETITBOOT_POST_INSTALL $(TARGET_DIR)/etc/petitboot/boot.d/90-sort-dtb $(INSTALL) -m 0755 -D $(PETITBOOT_PKGDIR)/S15pb-discover \ $(TARGET_DIR)/etc/init.d/S15pb-discover + $(INSTALL) -D -m 0755 $(PETITBOOT_PKGDIR)/petitboot-console-ui.rules \ + $(TARGET_DIR)/etc/udev/rules.d/petitboot-console-ui.rules + $(INSTALL) -D -m 0755 $(PETITBOOT_PKGDIR)/sysctl.conf \ + $(TARGET_DIR)/etc/sysctl.d/petitboot.conf mkdir -p $(TARGET_DIR)/usr/share/udhcpc/default.script.d/ ln -sf /usr/sbin/pb-udhcpc \ $(TARGET_DIR)/usr/share/udhcpc/default.script.d/package/petitboot/sysctl.conf new file +1
-0@@ -0,0 +1 @@ +kernel.printk = 1 1 1 1system/Config.in +0
-0
system/Config.in config BR2_SYSTEM_BIN_SH · line 381
Quoted 8 lines
system/Config.in +1
-1@@ -375,7 +375,7 @@ config BR2_SYSTEM_BIN_SH menuconfig BR2_TARGET_GENERIC_GETTY bool "Run a getty (login prompt) after boot" - default y + default y if !BR2_PACKAGE_PETITBOOT if BR2_TARGET_GENERIC_GETTY config BR2_TARGET_GENERIC_GETTY_PORT
_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot
PATCH v2 3/5 package/petitboot: poll removable devices
In reply to Reza ArbabAdd a udev rule to enable notification of media change events on removable devices, so petitboot can dynamically adapt to them.
--- package/petitboot/petitboot.mk | 2 ++ package/petitboot/removable-event-poll.rules | 3 +++ 2 files changed, 5 insertions(+) create mode 100644 package/petitboot/removable-event-poll.rules
package/petitboot/petitboot.mk +2 -0
@@ -57,6 +57,8 @@ define PETITBOOT_POST_INSTALL $(TARGET_DIR)/etc/init.d/S15pb-discover $(INSTALL) -D -m 0755 $(PETITBOOT_PKGDIR)/petitboot-console-ui.rules \ $(TARGET_DIR)/etc/udev/rules.d/petitboot-console-ui.rules + $(INSTALL) -D -m 0755 $(PETITBOOT_PKGDIR)/removable-event-poll.rules \ + $(TARGET_DIR)/etc/udev/rules.d/removable-event-poll.rules $(INSTALL) -D -m 0755 $(PETITBOOT_PKGDIR)/sysctl.conf \ $(TARGET_DIR)/etc/sysctl.d/petitboot.conf mkdir -p $(TARGET_DIR)/usr/share/udhcpc/default.script.d/
package/petitboot/removable-event-poll.rules new file +3 -0
@@ -0,0 +1,3 @@ +# petitboot needs notification for media change events on removable devices, +# which we only get if we've set the poll_msecs sysfs attribute. +ACTION!="remove", ATTR{removable}=="1", ATTR{events_poll_msecs}="2000"
Signature · 6 lines
2.39.3 _______________________________________________ buildroot mailing list [email protected] https://lists.buildroot.org/mailman/listinfo/buildroot
Re: [Buildroot] [PATCH v2 3/5] package/petitboot: poll removable devices
Quoted 6 lines · Reza Arbab
Add a udev rule to enable notification of media change events on removable devices, so petitboot can dynamically adapt to them.
Signed-off-by Reza Arbab <[email protected]>Reviewed-by Laurent Vivier <[email protected]>
Quoted 29 lines
--- package/petitboot/petitboot.mk | 2 ++ package/petitboot/removable-event-poll.rules | 3 +++ 2 files changed, 5 insertions(+) create mode 100644 package/petitboot/removable-event-poll.rulespackage/petitboot/petitboot.mk +2
-0@@ -57,6 +57,8 @@ define PETITBOOT_POST_INSTALL $(TARGET_DIR)/etc/init.d/S15pb-discover $(INSTALL) -D -m 0755 $(PETITBOOT_PKGDIR)/petitboot-console-ui.rules \ $(TARGET_DIR)/etc/udev/rules.d/petitboot-console-ui.rules + $(INSTALL) -D -m 0755 $(PETITBOOT_PKGDIR)/removable-event-poll.rules \ + $(TARGET_DIR)/etc/udev/rules.d/removable-event-poll.rules $(INSTALL) -D -m 0755 $(PETITBOOT_PKGDIR)/sysctl.conf \ $(TARGET_DIR)/etc/sysctl.d/petitboot.conf mkdir -p $(TARGET_DIR)/usr/share/udhcpc/default.script.d/package/petitboot/removable-event-poll.rules new file +3
-1@@ -0,0 +1,3 @@ +# petitboot needs notification for media change events on removable devices, +# which we only get if we've set the poll_msecs sysfs attribute. +ACTION!="remove", ATTR{removable}=="1", ATTR{events_poll_msecs}="2000" --
Quoted 2 lines
2.39.3
_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot
PATCH v2 4/5 package/petitboot: enable discovery of software RAID devices
In reply to Reza ArbabPetitboot can support filesystems on software RAID arrays. If mdadm is selected, install the associated udev rules to assemble the device.
--- package/petitboot/63-md-raid-arrays.rules | 41 ++++++++++++++ package/petitboot/65-md-incremental.rules | 69 +++++++++++++++++++++++ package/petitboot/petitboot.mk | 10 ++++ 3 files changed, 120 insertions(+) create mode 100644 package/petitboot/63-md-raid-arrays.rules create mode 100644 package/petitboot/65-md-incremental.rules
package/petitboot/63-md-raid-arrays.rules new file +41 -0
@@ -0,0 +1,41 @@ +# do not edit this file, it will be overwritten on update + +SUBSYSTEM!="block", GOTO="md_end" + +# handle md arrays +ACTION!="add|change", GOTO="md_end" +KERNEL!="md*", GOTO="md_end" + +# partitions have no md/{array_state,metadata_version}, but should not +# for that reason be ignored. +ENV{DEVTYPE}=="partition", GOTO="md_ignore_state" + +# container devices have a metadata version of e.g. 'external:ddf' and +# never leave state 'inactive' +ATTR{md/metadata_version}=="external:[A-Za-z]*", ATTR{md/array_state}=="inactive", GOTO="md_ignore_state" +TEST!="md/array_state", ENV{SYSTEMD_READY}="0", GOTO="md_end" +ATTR{md/array_state}=="|clear|inactive", ENV{SYSTEMD_READY}="0", GOTO="md_end" +LABEL="md_ignore_state" + +IMPORT{program}="/sbin/mdadm --detail --export $devnode" +ENV{DEVTYPE}=="disk", ENV{MD_NAME}=="?*", SYMLINK+="disk/by-id/md-name-$env{MD_NAME}", OPTIONS+="string_escape=replace" +ENV{DEVTYPE}=="disk", ENV{MD_UUID}=="?*", SYMLINK+="disk/by-id/md-uuid-$env{MD_UUID}" +ENV{DEVTYPE}=="disk", ENV{MD_DEVNAME}=="?*", SYMLINK+="md/$env{MD_DEVNAME}" +ENV{DEVTYPE}=="partition", ENV{MD_NAME}=="?*", SYMLINK+="disk/by-id/md-name-$env{MD_NAME}-part%n", OPTIONS+="string_escape=replace" +ENV{DEVTYPE}=="partition", ENV{MD_UUID}=="?*", SYMLINK+="disk/by-id/md-uuid-$env{MD_UUID}-part%n" +ENV{DEVTYPE}=="partition", ENV{MD_DEVNAME}=="*[^0-9]", SYMLINK+="md/$env{MD_DEVNAME}%n" +ENV{DEVTYPE}=="partition", ENV{MD_DEVNAME}=="*[0-9]", SYMLINK+="md/$env{MD_DEVNAME}p%n" + +IMPORT{builtin}="blkid" +OPTIONS+="link_priority=100" +OPTIONS+="watch" +ENV{ID_FS_USAGE}=="filesystem|other|crypto", ENV{ID_FS_UUID_ENC}=="?*", SYMLINK+="disk/by-uuid/$env{ID_FS_UUID_ENC}" +ENV{ID_FS_USAGE}=="filesystem|other", ENV{ID_FS_LABEL_ENC}=="?*", SYMLINK+="disk/by-label/$env{ID_FS_LABEL_ENC}" + +ENV{MD_LEVEL}=="raid[1-9]*", ENV{SYSTEMD_WANTS}+="mdmonitor.service" + +# Tell systemd to run mdmon for our container, if we need it. +ENV{MD_LEVEL}=="raid[1-9]*", ENV{MD_CONTAINER}=="?*", PROGRAM="/usr/bin/readlink $env{MD_CONTAINER}", ENV{MD_MON_THIS}="%c" +ENV{MD_MON_THIS}=="?*", PROGRAM="/usr/bin/basename $env{MD_MON_THIS}", ENV{SYSTEMD_WANTS}+="mdmon@%c.service" + +LABEL="md_end"
package/petitboot/65-md-incremental.rules new file +69 -0
69 lines not on this page · raw message
package/petitboot/petitboot.mk +10 -0
@@ -46,6 +46,16 @@ else PETITBOOT_CONF_OPTS += --without-fdt endif +ifeq ($(BR2_PACKAGE_MDADM),y) +define PETITBOOT_POST_INSTALL_MDADM + $(INSTALL) -D -m 0755 $(PETITBOOT_PKGDIR)/63-md-raid-arrays.rules \ + $(TARGET_DIR)/etc/udev/rules.d/63-md-raid-arrays.rules + $(INSTALL) -D -m 0755 $(PETITBOOT_PKGDIR)/65-md-incremental.rules \ + $(TARGET_DIR)/etc/udev/rules.d/65-md-incremental.rules +endef +PETITBOOT_POST_INSTALL_TARGET_HOOKS += PETITBOOT_POST_INSTALL_MDADM +endif + define PETITBOOT_POST_INSTALL $(INSTALL) -D -m 0755 $(@D)/utils/bb-kexec-reboot \ $(TARGET_DIR)/usr/libexec/petitboot/bb-kexec-reboot
Signature · 6 lines
2.39.3 _______________________________________________ buildroot mailing list [email protected] https://lists.buildroot.org/mailman/listinfo/buildroot
Re: [Buildroot] [PATCH v2 4/5] package/petitboot: enable discovery of software RAID devices
Quoted 2 lines · Reza Arbab
Petitboot can support filesystems on software RAID arrays. If mdadm is selected, install the associated udev rules to assemble the device.
Wow, this looks again like something very specific and way outside what we
normally do in Buildroot. If it's appropriate to do this, I think it makes a lot more sense to have this as part of petitboot itself.
So I suggest to send these udev rules to petitboot upstream instead, and
install them as part of the package installation.
Regards,
Arnout
Quoted 144 lines
Signed-off-by Reza Arbab <[email protected]>Reviewed-by Laurent Vivier <[email protected]>--- package/petitboot/63-md-raid-arrays.rules | 41 ++++++++++++++ package/petitboot/65-md-incremental.rules | 69 +++++++++++++++++++++++ package/petitboot/petitboot.mk | 10 ++++ 3 files changed, 120 insertions(+)create mode 100644 package/petitboot/63-md-raid-arrays.rules create mode 100644 package/petitboot/65-md-incremental.rules
package/petitboot/63-md-raid-arrays.rules new file +41
-0@@ -0,0 +1,41 @@ +# do not edit this file, it will be overwritten on update + +SUBSYSTEM!="block", GOTO="md_end" + +# handle md arrays +ACTION!="add|change", GOTO="md_end" +KERNEL!="md*", GOTO="md_end" + +# partitions have no md/{array_state,metadata_version}, but should not +# for that reason be ignored. +ENV{DEVTYPE}=="partition", GOTO="md_ignore_state" + +# container devices have a metadata version of e.g. 'external:ddf' and +# never leave state 'inactive' +ATTR{md/metadata_version}=="external:[A-Za-z]*", ATTR{md/array_state}=="inactive", GOTO="md_ignore_state" +TEST!="md/array_state", ENV{SYSTEMD_READY}="0", GOTO="md_end" +ATTR{md/array_state}=="|clear|inactive", ENV{SYSTEMD_READY}="0", GOTO="md_end" +LABEL="md_ignore_state" + +IMPORT{program}="/sbin/mdadm --detail --export $devnode" +ENV{DEVTYPE}=="disk", ENV{MD_NAME}=="?*", SYMLINK+="disk/by-id/md-name-$env{MD_NAME}", OPTIONS+="string_escape=replace" +ENV{DEVTYPE}=="disk", ENV{MD_UUID}=="?*", SYMLINK+="disk/by-id/md-uuid-$env{MD_UUID}" +ENV{DEVTYPE}=="disk", ENV{MD_DEVNAME}=="?*", SYMLINK+="md/$env{MD_DEVNAME}" +ENV{DEVTYPE}=="partition", ENV{MD_NAME}=="?*", SYMLINK+="disk/by-id/md-name-$env{MD_NAME}-part%n", OPTIONS+="string_escape=replace" +ENV{DEVTYPE}=="partition", ENV{MD_UUID}=="?*", SYMLINK+="disk/by-id/md-uuid-$env{MD_UUID}-part%n" +ENV{DEVTYPE}=="partition", ENV{MD_DEVNAME}=="*[^0-9]", SYMLINK+="md/$env{MD_DEVNAME}%n" +ENV{DEVTYPE}=="partition", ENV{MD_DEVNAME}=="*[0-9]", SYMLINK+="md/$env{MD_DEVNAME}p%n" + +IMPORT{builtin}="blkid" +OPTIONS+="link_priority=100" +OPTIONS+="watch" +ENV{ID_FS_USAGE}=="filesystem|other|crypto", ENV{ID_FS_UUID_ENC}=="?*", SYMLINK+="disk/by-uuid/$env{ID_FS_UUID_ENC}" +ENV{ID_FS_USAGE}=="filesystem|other", ENV{ID_FS_LABEL_ENC}=="?*", SYMLINK+="disk/by-label/$env{ID_FS_LABEL_ENC}" + +ENV{MD_LEVEL}=="raid[1-9]*", ENV{SYSTEMD_WANTS}+="mdmonitor.service" + +# Tell systemd to run mdmon for our container, if we need it. +ENV{MD_LEVEL}=="raid[1-9]*", ENV{MD_CONTAINER}=="?*", PROGRAM="/usr/bin/readlink $env{MD_CONTAINER}", ENV{MD_MON_THIS}="%c" +ENV{MD_MON_THIS}=="?*", PROGRAM="/usr/bin/basename $env{MD_MON_THIS}", ENV{SYSTEMD_WANTS}+="mdmon@%c.service" + +LABEL="md_end"package/petitboot/65-md-incremental.rules new file +69
-0@@ -0,0 +1,69 @@ +# This file causes block devices with Linux RAID (mdadm) signatures to +# automatically cause mdadm to be run. +# See udev(8) for syntax + +# Don't process any events if anaconda is running as anaconda brings up +# raid devices manually +ENV{ANACONDA}=="?*", GOTO="md_end" + +# Also don't process disks that are slated to be a multipath device +ENV{DM_MULTIPATH_DEVICE_PATH}=="?*", GOTO="md_end" + +# We process add events on block devices (since they are ready as soon as +# they are added to the system), but we must process change events as well +# on any dm devices (like LUKS partitions or LVM logical volumes) and on +# md devices because both of these first get added, then get brought live +# and trigger a change event. The reason we don't process change events +# on bare hard disks is because if you stop all arrays on a disk, then +# run fdisk on the disk to change the partitions, when fdisk exits it +# triggers a change event, and we want to wait until all the fdisks on +# all member disks are done before we do anything. Unfortunately, we have +# no way of knowing that, so we just have to let those arrays be brought +# up manually after fdisk has been run on all of the disks. + +# First, process all add events (md and dm devices will not really do +# anything here, just regular disks, and this also won't get any imsm +# array members either) +SUBSYSTEM=="block", ACTION=="add|change", ENV{ID_FS_TYPE}=="linux_raid_member", \ + RUN+="/sbin/mdadm -I --export $env{DEVNAME}" + +# Next, check to make sure the BIOS raid stuff wasn't turned off via cmdline +IMPORT{cmdline}="noiswmd" +IMPORT{cmdline}="nodmraid" +ENV{noiswmd}=="?*", GOTO="md_imsm_inc_end" +ENV{nodmraid}=="?*", GOTO="md_imsm_inc_end" +SUBSYSTEM=="block", ACTION=="add", ENV{ID_FS_TYPE}=="isw_raid_member", \ + RUN+="/sbin/mdadm -I $env{DEVNAME}" +LABEL="md_imsm_inc_end" + +SUBSYSTEM=="block", ACTION=="remove", ENV{ID_PATH}=="?*", \ + RUN+="/sbin/mdadm -If $name --path $env{ID_PATH}" +SUBSYSTEM=="block", ACTION=="remove", ENV{ID_PATH}!="?*", \ + RUN+="/sbin/mdadm -If $name" + +# Next make sure that this isn't a dm device we should skip for some reason +ENV{DM_UDEV_RULES_VSN}!="?*", GOTO="dm_change_end" +ENV{DM_UDEV_DISABLE_OTHER_RULES_FLAG}=="1", GOTO="dm_change_end" +ENV{DM_SUSPENDED}=="1", GOTO="dm_change_end" +KERNEL=="dm-*", SUBSYSTEM=="block", ENV{ID_FS_TYPE}=="linux_raid_member", \ + ACTION=="change", RUN+="/sbin/mdadm -I $env{DEVNAME}" +LABEL="dm_change_end" + +# Finally catch any nested md raid arrays. If we brought up an md raid +# array that's part of another md raid array, it won't be ready to be used +# until the change event that occurs when it becomes live +KERNEL=="md*", SUBSYSTEM=="block", ENV{ID_FS_TYPE}=="linux_raid_member", \ + ACTION=="change", RUN+="/sbin/mdadm -I $env{DEVNAME}" + +# In case the initramfs only started some of the arrays in our container, +# run incremental assembly on the container itself. Note: we ran mdadm +# on the container in 64-md-raid.rules, and that's how the MD_LEVEL +# environment variable is already set. If that disappears from the other +# file, we will need to add this line into the middle of the next rule: +# IMPORT{program}="/sbin/mdadm -D --export $tempnode", \ + +SUBSYSTEM=="block", ACTION=="add|change", KERNEL=="md*", \ + ENV{MD_LEVEL}=="container", RUN+="/sbin/mdadm -I $env{DEVNAME}" + + +LABEL="md_end"package/petitboot/petitboot.mk +3
-0@@ -46,6 +46,16 @@ else PETITBOOT_CONF_OPTS += --without-fdt endif +ifeq ($(BR2_PACKAGE_MDADM),y) +define PETITBOOT_POST_INSTALL_MDADM + $(INSTALL) -D -m 0755 $(PETITBOOT_PKGDIR)/63-md-raid-arrays.rules \
package/petitboot/petitboot.mk else · line 61
Quoted 10 lines
package/petitboot/petitboot.mk +7
-0+ $(TARGET_DIR)/etc/udev/rules.d/63-md-raid-arrays.rules + $(INSTALL) -D -m 0755 $(PETITBOOT_PKGDIR)/65-md-incremental.rules \ + $(TARGET_DIR)/etc/udev/rules.d/65-md-incremental.rules +endef +PETITBOOT_POST_INSTALL_TARGET_HOOKS += PETITBOOT_POST_INSTALL_MDADM +endif + define PETITBOOT_POST_INSTALL $(INSTALL) -D -m 0755 $(@D)/utils/bb-kexec-reboot \ $(TARGET_DIR)/usr/libexec/petitboot/bb-kexec-reboot
_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot
Re: [Buildroot] [PATCH v2 4/5] package/petitboot: enable discovery of software RAID devices
In reply to Reza ArbabQuoted 6 lines · Reza Arbab
Petitboot can support filesystems on software RAID arrays. If mdadm is selected, install the associated udev rules to assemble the device.
Signed-off-by Reza Arbab <[email protected]>Reviewed-by Laurent Vivier <[email protected]>
Quoted 152 lines
--- package/petitboot/63-md-raid-arrays.rules | 41 ++++++++++++++ package/petitboot/65-md-incremental.rules | 69 +++++++++++++++++++++++ package/petitboot/petitboot.mk | 10 ++++ 3 files changed, 120 insertions(+) create mode 100644 package/petitboot/63-md-raid-arrays.rules create mode 100644 package/petitboot/65-md-incremental.rulespackage/petitboot/63-md-raid-arrays.rules new file +41
-0@@ -0,0 +1,41 @@ +# do not edit this file, it will be overwritten on update + +SUBSYSTEM!="block", GOTO="md_end" + +# handle md arrays +ACTION!="add|change", GOTO="md_end" +KERNEL!="md*", GOTO="md_end" + +# partitions have no md/{array_state,metadata_version}, but should not +# for that reason be ignored. +ENV{DEVTYPE}=="partition", GOTO="md_ignore_state" + +# container devices have a metadata version of e.g. 'external:ddf' and +# never leave state 'inactive' +ATTR{md/metadata_version}=="external:[A-Za-z]*", ATTR{md/array_state}=="inactive", GOTO="md_ignore_state" +TEST!="md/array_state", ENV{SYSTEMD_READY}="0", GOTO="md_end" +ATTR{md/array_state}=="|clear|inactive", ENV{SYSTEMD_READY}="0", GOTO="md_end" +LABEL="md_ignore_state" + +IMPORT{program}="/sbin/mdadm --detail --export $devnode" +ENV{DEVTYPE}=="disk", ENV{MD_NAME}=="?*", SYMLINK+="disk/by-id/md-name-$env{MD_NAME}", OPTIONS+="string_escape=replace" +ENV{DEVTYPE}=="disk", ENV{MD_UUID}=="?*", SYMLINK+="disk/by-id/md-uuid-$env{MD_UUID}" +ENV{DEVTYPE}=="disk", ENV{MD_DEVNAME}=="?*", SYMLINK+="md/$env{MD_DEVNAME}" +ENV{DEVTYPE}=="partition", ENV{MD_NAME}=="?*", SYMLINK+="disk/by-id/md-name-$env{MD_NAME}-part%n", OPTIONS+="string_escape=replace" +ENV{DEVTYPE}=="partition", ENV{MD_UUID}=="?*", SYMLINK+="disk/by-id/md-uuid-$env{MD_UUID}-part%n" +ENV{DEVTYPE}=="partition", ENV{MD_DEVNAME}=="*[^0-9]", SYMLINK+="md/$env{MD_DEVNAME}%n" +ENV{DEVTYPE}=="partition", ENV{MD_DEVNAME}=="*[0-9]", SYMLINK+="md/$env{MD_DEVNAME}p%n" + +IMPORT{builtin}="blkid" +OPTIONS+="link_priority=100" +OPTIONS+="watch" +ENV{ID_FS_USAGE}=="filesystem|other|crypto", ENV{ID_FS_UUID_ENC}=="?*", SYMLINK+="disk/by-uuid/$env{ID_FS_UUID_ENC}" +ENV{ID_FS_USAGE}=="filesystem|other", ENV{ID_FS_LABEL_ENC}=="?*", SYMLINK+="disk/by-label/$env{ID_FS_LABEL_ENC}" + +ENV{MD_LEVEL}=="raid[1-9]*", ENV{SYSTEMD_WANTS}+="mdmonitor.service" + +# Tell systemd to run mdmon for our container, if we need it. +ENV{MD_LEVEL}=="raid[1-9]*", ENV{MD_CONTAINER}=="?*", PROGRAM="/usr/bin/readlink $env{MD_CONTAINER}", ENV{MD_MON_THIS}="%c" +ENV{MD_MON_THIS}=="?*", PROGRAM="/usr/bin/basename $env{MD_MON_THIS}", ENV{SYSTEMD_WANTS}+="mdmon@%c.service" + +LABEL="md_end"package/petitboot/65-md-incremental.rules new file +69
-0@@ -0,0 +1,69 @@ +# This file causes block devices with Linux RAID (mdadm) signatures to +# automatically cause mdadm to be run. +# See udev(8) for syntax + +# Don't process any events if anaconda is running as anaconda brings up +# raid devices manually +ENV{ANACONDA}=="?*", GOTO="md_end" + +# Also don't process disks that are slated to be a multipath device +ENV{DM_MULTIPATH_DEVICE_PATH}=="?*", GOTO="md_end" + +# We process add events on block devices (since they are ready as soon as +# they are added to the system), but we must process change events as well +# on any dm devices (like LUKS partitions or LVM logical volumes) and on +# md devices because both of these first get added, then get brought live +# and trigger a change event. The reason we don't process change events +# on bare hard disks is because if you stop all arrays on a disk, then +# run fdisk on the disk to change the partitions, when fdisk exits it +# triggers a change event, and we want to wait until all the fdisks on +# all member disks are done before we do anything. Unfortunately, we have +# no way of knowing that, so we just have to let those arrays be brought +# up manually after fdisk has been run on all of the disks. + +# First, process all add events (md and dm devices will not really do +# anything here, just regular disks, and this also won't get any imsm +# array members either) +SUBSYSTEM=="block", ACTION=="add|change", ENV{ID_FS_TYPE}=="linux_raid_member", \ + RUN+="/sbin/mdadm -I --export $env{DEVNAME}" + +# Next, check to make sure the BIOS raid stuff wasn't turned off via cmdline +IMPORT{cmdline}="noiswmd" +IMPORT{cmdline}="nodmraid" +ENV{noiswmd}=="?*", GOTO="md_imsm_inc_end" +ENV{nodmraid}=="?*", GOTO="md_imsm_inc_end" +SUBSYSTEM=="block", ACTION=="add", ENV{ID_FS_TYPE}=="isw_raid_member", \ + RUN+="/sbin/mdadm -I $env{DEVNAME}" +LABEL="md_imsm_inc_end" + +SUBSYSTEM=="block", ACTION=="remove", ENV{ID_PATH}=="?*", \ + RUN+="/sbin/mdadm -If $name --path $env{ID_PATH}" +SUBSYSTEM=="block", ACTION=="remove", ENV{ID_PATH}!="?*", \ + RUN+="/sbin/mdadm -If $name" + +# Next make sure that this isn't a dm device we should skip for some reason +ENV{DM_UDEV_RULES_VSN}!="?*", GOTO="dm_change_end" +ENV{DM_UDEV_DISABLE_OTHER_RULES_FLAG}=="1", GOTO="dm_change_end" +ENV{DM_SUSPENDED}=="1", GOTO="dm_change_end" +KERNEL=="dm-*", SUBSYSTEM=="block", ENV{ID_FS_TYPE}=="linux_raid_member", \ + ACTION=="change", RUN+="/sbin/mdadm -I $env{DEVNAME}" +LABEL="dm_change_end" + +# Finally catch any nested md raid arrays. If we brought up an md raid +# array that's part of another md raid array, it won't be ready to be used +# until the change event that occurs when it becomes live +KERNEL=="md*", SUBSYSTEM=="block", ENV{ID_FS_TYPE}=="linux_raid_member", \ + ACTION=="change", RUN+="/sbin/mdadm -I $env{DEVNAME}" + +# In case the initramfs only started some of the arrays in our container, +# run incremental assembly on the container itself. Note: we ran mdadm +# on the container in 64-md-raid.rules, and that's how the MD_LEVEL +# environment variable is already set. If that disappears from the other +# file, we will need to add this line into the middle of the next rule: +# IMPORT{program}="/sbin/mdadm -D --export $tempnode", \ + +SUBSYSTEM=="block", ACTION=="add|change", KERNEL=="md*", \ + ENV{MD_LEVEL}=="container", RUN+="/sbin/mdadm -I $env{DEVNAME}" + + +LABEL="md_end"package/petitboot/petitboot.mk +10
-1@@ -46,6 +46,16 @@ else PETITBOOT_CONF_OPTS += --without-fdt endif +ifeq ($(BR2_PACKAGE_MDADM),y) +define PETITBOOT_POST_INSTALL_MDADM + $(INSTALL) -D -m 0755 $(PETITBOOT_PKGDIR)/63-md-raid-arrays.rules \ + $(TARGET_DIR)/etc/udev/rules.d/63-md-raid-arrays.rules + $(INSTALL) -D -m 0755 $(PETITBOOT_PKGDIR)/65-md-incremental.rules \ + $(TARGET_DIR)/etc/udev/rules.d/65-md-incremental.rules +endef +PETITBOOT_POST_INSTALL_TARGET_HOOKS += PETITBOOT_POST_INSTALL_MDADM +endif + define PETITBOOT_POST_INSTALL $(INSTALL) -D -m 0755 $(@D)/utils/bb-kexec-reboot \ $(TARGET_DIR)/usr/libexec/petitboot/bb-kexec-reboot --
Quoted 2 lines
2.39.3
_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot
PATCH v2 5/5 package/petitboot: enable discovery of SCSI devices
In reply to Reza ArbabIt's likely that the "sg" kernel driver needed to scan SCSI devices is a module. Install a udev rule to load it automatically when devices are present.
--- package/petitboot/66-add-sg-module.rules | 2 ++ package/petitboot/petitboot.mk | 2 ++ 2 files changed, 4 insertions(+) create mode 100644 package/petitboot/66-add-sg-module.rules
package/petitboot/66-add-sg-module.rules new file +2 -0
@@ -0,0 +1,2 @@ +# load modules to scsi disks, if they aren't in kernel +SUBSYSTEM=="scsi", ENV{DEVTYPE}=="scsi_device", TEST!="[module/sg]", RUN+="/sbin/modprobe sg"
package/petitboot/petitboot.mk +2 -0
@@ -63,6 +63,8 @@ define PETITBOOT_POST_INSTALL $(TARGET_DIR)/etc/petitboot/boot.d/01-create-default-dtb $(INSTALL) -D -m 0755 $(@D)/utils/hooks/90-sort-dtb \ $(TARGET_DIR)/etc/petitboot/boot.d/90-sort-dtb + $(INSTALL) -D -m 0755 $(PETITBOOT_PKGDIR)/66-add-sg-module.rules \ + $(TARGET_DIR)/etc/udev/rules.d/66-add-sg-module.rules $(INSTALL) -m 0755 -D $(PETITBOOT_PKGDIR)/S15pb-discover \ $(TARGET_DIR)/etc/init.d/S15pb-discover $(INSTALL) -D -m 0755 $(PETITBOOT_PKGDIR)/petitboot-console-ui.rules \
Signature · 6 lines
2.39.3 _______________________________________________ buildroot mailing list [email protected] https://lists.buildroot.org/mailman/listinfo/buildroot
Re: [Buildroot] [PATCH v2 5/5] package/petitboot: enable discovery of SCSI devices
Quoted 3 lines · Reza Arbab
It's likely that the "sg" kernel driver needed to scan SCSI devices is a module. Install a udev rule to load it automatically when devices are present.
This is completely independent of petitboot. If the system is likely to have
SCSI devices and scsi generic is built as a module, it's up to the user to make sure that module is loaded.
Regards,
Arnout
Quoted 22 lines
Signed-off-by Reza Arbab <[email protected]>Reviewed-by Laurent Vivier <[email protected]>--- package/petitboot/66-add-sg-module.rules | 2 ++ package/petitboot/petitboot.mk | 2 ++ 2 files changed, 4 insertions(+)create mode 100644 package/petitboot/66-add-sg-module.rules
package/petitboot/66-add-sg-module.rules new file +2
-0@@ -0,0 +1,2 @@ +# load modules to scsi disks, if they aren't in kernel +SUBSYSTEM=="scsi", ENV{DEVTYPE}=="scsi_device", TEST!="[module/sg]", RUN+="/sbin/modprobe sg"package/petitboot/petitboot.mk +0
-0
package/petitboot/petitboot.mk define PETITBOOT_POST_INSTALL · line 70
Quoted 8 lines
package/petitboot/petitboot.mk +2
-0@@ -63,6 +63,8 @@ define PETITBOOT_POST_INSTALL $(TARGET_DIR)/etc/petitboot/boot.d/01-create-default-dtb $(INSTALL) -D -m 0755 $(@D)/utils/hooks/90-sort-dtb \ $(TARGET_DIR)/etc/petitboot/boot.d/90-sort-dtb + $(INSTALL) -D -m 0755 $(PETITBOOT_PKGDIR)/66-add-sg-module.rules \ + $(TARGET_DIR)/etc/udev/rules.d/66-add-sg-module.rules $(INSTALL) -m 0755 -D $(PETITBOOT_PKGDIR)/S15pb-discover \ $(TARGET_DIR)/etc/init.d/S15pb-discover $(INSTALL) -D -m 0755 $(PETITBOOT_PKGDIR)/petitboot-console-ui.rules \
_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot
Re: [Buildroot] [PATCH v2 5/5] package/petitboot: enable discovery of SCSI devices
In reply to Reza ArbabQuoted 7 lines · Reza Arbab
It's likely that the "sg" kernel driver needed to scan SCSI devices is a module. Install a udev rule to load it automatically when devices are present.
Signed-off-by Reza Arbab <[email protected]>Reviewed-by Laurent Vivier <[email protected]>
Quoted 28 lines
--- package/petitboot/66-add-sg-module.rules | 2 ++ package/petitboot/petitboot.mk | 2 ++ 2 files changed, 4 insertions(+) create mode 100644 package/petitboot/66-add-sg-module.rulespackage/petitboot/66-add-sg-module.rules new file +2
-0@@ -0,0 +1,2 @@ +# load modules to scsi disks, if they aren't in kernel +SUBSYSTEM=="scsi", ENV{DEVTYPE}=="scsi_device", TEST!="[module/sg]", RUN+="/sbin/modprobe sg"package/petitboot/petitboot.mk +2
-1@@ -63,6 +63,8 @@ define PETITBOOT_POST_INSTALL $(TARGET_DIR)/etc/petitboot/boot.d/01-create-default-dtb $(INSTALL) -D -m 0755 $(@D)/utils/hooks/90-sort-dtb \ $(TARGET_DIR)/etc/petitboot/boot.d/90-sort-dtb + $(INSTALL) -D -m 0755 $(PETITBOOT_PKGDIR)/66-add-sg-module.rules \ + $(TARGET_DIR)/etc/udev/rules.d/66-add-sg-module.rules $(INSTALL) -m 0755 -D $(PETITBOOT_PKGDIR)/S15pb-discover \ $(TARGET_DIR)/etc/init.d/S15pb-discover $(INSTALL) -D -m 0755 $(PETITBOOT_PKGDIR)/petitboot-console-ui.rules \ --
Quoted 2 lines
2.39.3
_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot