main/postmarketos-usb-moded: handle initramfs situation

initramfs starts USB NCM gadget and unudhcpd for SSH login.
This requires special handling since unudhpcd is unmanaged by the
service manager until the userspace is started. Once entered in userspace,
the usb-moded-developer-mode needs to be activated which configures
NetworkManager and starts unudhcpd under the service manager.
This way, a full handover is possible and the gadgets can be properly
switched without any leftovers from the initramfs due to the unmanaged
situation.

Part-of: <https://gitlab.postmarketos.org/postmarketOS/pmaports/-/merge_requests/8553>
This commit is contained in:
Dylan Van Assche 2026-05-23 14:26:19 +02:00 committed by The Friendly Meow (merge) Bot
parent b877e7943b
commit 7a917eee3c
No known key found for this signature in database
10 changed files with 28 additions and 9 deletions

View file

@ -1,7 +1,7 @@
# pmbootstrap installs this, if systemd is selected in "pmbootstrap init".
maintainer="Clayton Craft <clayton@craftyguy.net>"
pkgname=postmarketos-base-systemd
pkgver=78
pkgver=79
pkgrel=0
pkgdesc="Meta package for running postmarketOS with systemd"
url="https://postmarketos.org"
@ -118,7 +118,7 @@ b7c3e70f5e4d88d6df6a8d58f4bb6af3d3051c5130cf13ad86a491fcbf7a69ae33ba31d663946c35
bd85f6153d857e1aec191b5fc8c8fc0d87125bf0198bef20d1e91ef40ca7e9ed1209a64ae279f98dc8733969ad6e71e29623180ef2203e386023a950d9ce8269 rootfs-usr-lib-systemd-logind.conf
e49972d276441e9da284315bab5f70d8d25ccba5e43d7e7ec6607c34a3d4dfa512f7303d5ce41076819ef24f5dced5acc74001b4d569258269de34da27912466 rootfs-usr-lib-systemd-resolved.conf.d-disable-dnsovertls.conf
93ab180810dbd2a1477f7ea0f0959be90f099272fe5840030a0772771c97a066b70068c476d32c6a4610b8f7b9fc5bfcf1d7a93f071cec026553ac6a3b8b5324 rootfs-usr-lib-systemd-resolved.conf.d-disable-mdns.conf
2734d023e5b2bab895a1acb940b90c4d9bf580c3dc2ee9ba73a61e1210c682d65367c0541fa34cdda251ebd1d40ab5711bd4965587937cfb066a60f2cb01315d rootfs-usr-lib-systemd-system-preset-90-base.preset
351a3791dcdcd74dbd563881bf025a456c0423542650268c22d083ad1edecb303c09614c4a759203a3219f57ebbee408b28f2665aa38efea5933663dec974564 rootfs-usr-lib-systemd-system-preset-90-base.preset
bde7052939d1ddde22fe1df86439d3f1b0cd41810911cee7acf26aac08afe1610360cbbd257b3c1a2e5e7409dff27ade8f3a302a38cd1b99c6cc6eed4cc64a78 rootfs-usr-lib-systemd-system--.slice.d-10-oomd-defaults.conf
bde7052939d1ddde22fe1df86439d3f1b0cd41810911cee7acf26aac08afe1610360cbbd257b3c1a2e5e7409dff27ade8f3a302a38cd1b99c6cc6eed4cc64a78 rootfs-usr-lib-systemd-system-system.slice.d-10-oomd-defaults.conf
cedd159b98ce47ee9d03e5f332c4132c7c3eff32135aa7b7993e19c4867d55aff689b418fc549e139c0ea4690f1094e86efcee7a5bc6cd6998ba99821064a917 rootfs-usr-lib-systemd-system-tmp.mount.d-10-min-memory.conf

View file

@ -39,6 +39,7 @@ enable tuned.service
enable tuned-ppd.service
enable irqbalance.service
enable usb-signaller.service
enable usb-moded-developer-mode.service
enable dbus-broker.service
enable avahi-daemon.service

View file

@ -112,8 +112,8 @@ ace852ba267b3408998970df6042603c8bec1d033066d1c30ed65f1be955fee8644b57882898f102
69852928464f01757e2f473bd2c2e7ecb4132ecf3e26bdec95932e928dfe9042f59316e0a509fd38bcda88e24dd94bf33e8a88118b5adbec7023d1c13da12f59 00-initramfs-base.files
6d91270b96ce0c745391174201dde63b43a73ae6456c2e1138046beef3548580588fedbeae7cc914079162e99343b45d82c6e6a7ee1d03829aae7697ae52f575 00-initramfs-extra-base.files
bd72e8b6345a46ec13516c64d78d4fa1a9a18a8db9ab04aac605f9708629453dc65b6fbccd96b58eeb1ea68102ddbcae9dc6b369255c6c6c1fb18ce0bd43ec79 init.sh
85bc25e72ce67a2b9ae91bf5486707b35b8a118f527ae7d95f8ce45da5ec61bd77987f69963843a9db7baf692c5635a233f5fbada8417f545866bc4b95c32ba5 init_functions.sh
6201869d3731bdbe4330ffe1c6cf66ab48918b4693153e5ad648f87fa1a28c93095a218de66ce9b24d8f13df92042959591293b26fbc64279480a015ea23ce06 init_2nd.sh
73a4f59264881d299ed05a97602e053e68e4db91f97cf2cde63e5fb8b57802ae2c2a4a169eabb241fca66c035968024cfca74cfbeacf5c5b8e7269af5db3eba2 init_functions.sh
09cf0fcd415a20f421c5b56ac39c273a8ad9467260eee056c6c5e79c7ac1352fbdf73ab6e9620d4a314d876d7908ebac869faa34d11a96b296520388ddc36e8e init_2nd.sh
4eca94327274511011967cde1f663b00b1a8182f7dddc3ba19d5c1f0ac094087a154a250c140ca70ac75a2e7c5bb70b03e94fa5eca63a5393efc4a23d025e1c3 init_functions_2nd.sh
675e7d5bee39b2df7d322117f8dcaccc274d61beaf4d50ead19bbf2109446d64b1c0aa0c5b4f9846eb6c1c403418f28f6364eff4537ba41120fbfcbc484b7da7 mdev.conf
"

View file

@ -90,6 +90,9 @@ fi
killall udevd syslogd 2>/dev/null
# kill unudhpcd to allow rootfs to take over with service manager
stop_unudhpcd
# Kill any getty shells that might be running
for pid in $(pidof sh); do
if ! [ "$pid" = "1" ]; then

View file

@ -1058,6 +1058,9 @@ debug_shell() {
if [ -n "$have_udc" ]; then
setup_usb_acm_configfs
else
# USB networking was configured, but DHCP server needs to be started
start_unudhcpd
fi
# mount pstore, if possible

View file

@ -1,6 +1,6 @@
maintainer="Clayton Craft <clayton@craftyguy.net>"
pkgname=postmarketos-usb-moded
pkgver=8
pkgver=9
pkgrel=0
pkgdesc="Meta package for configuring usb-moded on postmarketOS"
url="https://postmarketos.org"
@ -119,12 +119,12 @@ d373201040a911663fd74123e9ef35e43dedfd375eeefe8ca949a3e24737d457a4693e836b1c5ad6
3d4e20f9e8e357030ce5f5c73367aef31cebecce48a9b1ff7915731335a83715e0679812959ac9ee41f88447a8636177244c0b9c5109cd8a227caecb9931ed9e rootfs-etc-usb-moded-dyn-modes-tethering_mode_systemd.ini
af41dc4ceb7255dbb88273916306c6e7e66c879bb67523c9571f9e812c9b36ab00ea666ade49369cd5846b4552a53add58cd1aea574a496bf53ddd3fbc630922 rootfs-etc-usb-moded-dyn-modes-mtp_ffs_mode_systemd.ini
912f0700c87883b55f631cfc3d76e172ff1c21aa57b0c18d1e7b9671ecd6254b1e7565816e3967c68caab196076bf7c8b848375c89185aa4466f4ca7f65231be rootfs-etc-umtprd-umtprd.conf
2c838fd0ad66c92386f6159c7d96d3ba940e13834642eb2cb7612d79d6b8832e9bd06b1eb189141f21fa9085d8b43ea514c15d82736ebd6b94533811f5a15f11 rootfs-usr-lib-systemd-system-usb-moded-developer-mode.service
56ce2662dd8f88795bd2e9063f20747e1377d896fbcf9e1ae43c90ef511c4a11517d7c673f857cf194070c425f417df8f40ced9b95749ed1df53e1be122a8ef7 rootfs-usr-lib-systemd-system-usb-moded-tethering-mode.service
885d47e027657584a4e690c8304f5583ee35bee42d2b502dff5e350fb896d606d5ff3fb9a5900f3851427edc7835f2f7332d8cd7cb4591babdd27c5f2ae7f508 rootfs-usr-lib-systemd-system-usb-moded-developer-mode.service
05c4170355c8fcbc96e82df2433daff73d015ef462e1cb3f8f7c0aa08310e018be117f166fa5839fbeb8586b515fbcbf144529be8e8755d8c3a21b54718b07ed rootfs-usr-lib-systemd-system-usb-moded-tethering-mode.service
969cfeb3ff0a0153f0d383db18600a3d94e80d39cfb6fb0bae3439c6550785d022852447e93834c50d8d1ec8edc7eec4114db1de64ed454aa9b01f4e6f621e08 rootfs-usr-lib-systemd-system-usb-moded-mtp-mode.service
fe4d085730d448e51bbce9e99c3cc7b4662e5fadd6108e5f2e74040f0d4e901132aa7f3367acad183198c5a150862bdef536a6a1968784bf9babc1702c2f16fe rootfs-usr-lib-systemd-system-usb-moded.service.d-override.conf
95681a9bb2d5f8d99f51762d09dc4f0c487442a20070ad1439de1309b775ac1752fe60a205389cc74a1ee9026afc4ad984ac3363659a6749792835654a111d7f rootfs-etc-init.d-usb-moded-developer-mode.initd
1d8b98508f7969a4ba671866eee5e54261c50362e41b18bfebf004a6ed1e97d01a8eb83e3a33c392cbd00ea1a20f0f004b4794582ef1b71dedbba0fba2dc4602 rootfs-etc-init.d-usb-moded-tethering-mode.initd
0981a7cfc53d887997b5342a9add41784ffdfe011cac8510aa78620776ab9a7bf24d4e62d30eb6d2852d52a3ea060c1de074fcea9f4fe017d888b06871e911d0 rootfs-etc-init.d-usb-moded-developer-mode.initd
1662006de519b7b45c2d817be974b43d732d166f71c6782e7d136770aadddcc2ea820fcece21bf95e68f578c9ae7ba88867981fff726feab61cdc36efdf5ec6e rootfs-etc-init.d-usb-moded-tethering-mode.initd
b8a4d9c8d1e2cde8d6b31bbb3e61d37c05cf2aa1e04cb25c24308839d045205e0604b103d2d60f9834782dcc64ab346cfe8f97797d4d0c86f54e4cfceb6af679 rootfs-etc-init.d-usb-moded-mtp-mode.initd
e021a58fcabef47c3806bea14c86def6ba6787be2f725b1b5f9a24a5b0eb5ba8bee2887337b17c9db9a7df84d2b07b8f14da5092f2afeedaf57689b8e5e82ef0 rootfs-usr-bin-usb-moded-developer-mode
dbc653b07f220a0fa4533be4ceac65651b19e32c88d66cafd0bcd4ee2cded2627c410917052eb113612cdea1c9e489bbaf290dade0f9b8c897363cb8fe34631f rootfs-usr-bin-usb-moded-tethering-mode

View file

@ -4,6 +4,10 @@ description="USB Moded Developer Mode"
command="usb-moded-developer-mode"
command_args="up"
depends() {
need net
}
stop() {
usb-moded-developer-mode down
}

View file

@ -4,6 +4,10 @@ description="USB Moded Tethering Mode"
command="usb-moded-tethering-mode"
command_args="up"
depends() {
need net
}
stop() {
usb-moded-tethering-mode down
}

View file

@ -1,5 +1,7 @@
[Unit]
Description=USB Moded Developer Mode
Wants=network.target
After=network.target
[Service]
Type=oneshot

View file

@ -1,5 +1,7 @@
[Unit]
Description=USB Moded Tethering Mode
Wants=network.target
After=network.target
[Service]
Type=oneshot