Browse Source

pass to new module format

2.3.1
obarun 2 years ago
parent
commit
ca43acf642
  1. 23
      Makefile
  2. 183
      module/boot@/.configure/configure
  3. 24
      module/boot@/all-Runtime
  4. 164
      module/boot@/configure/configure
  5. 0
      module/boot@/configure/crypt.awk
  6. 0
      module/boot@/configure/modules.sh
  7. 0
      module/boot@/configure/rc.local
  8. 0
      module/boot@/configure/tmpfiles.sh
  9. 9
      module/boot@/earlier-service/tty12
  10. 31
      module/boot@/local/local-authfiles
  11. 32
      module/boot@/local/local-ip6tables
  12. 33
      module/boot@/local/local-iptables
  13. 24
      module/boot@/local/local-sethostname
  14. 21
      module/boot@/local/local-time
  15. 20
      module/boot@/local/local-tmpfiles
  16. 38
      module/boot@/mount/mount-cgroups
  17. 22
      module/boot@/mount/mount-dev
  18. 15
      module/boot@/mount/mount-netfs
  19. 21
      module/boot@/mount/mount-proc
  20. 39
      module/boot@/mount/mount-pts
  21. 21
      module/boot@/mount/mount-run
  22. 39
      module/boot@/mount/mount-shm
  23. 24
      module/boot@/mount/mount-swap
  24. 21
      module/boot@/mount/mount-sys
  25. 33
      module/boot@/mount/mount-tmp
  26. 42
      module/boot@/mount/populate/populate-dev
  27. 25
      module/boot@/mount/populate/populate-run
  28. 66
      module/boot@/mount/populate/populate-sys
  29. 15
      module/boot@/mount/populate/populate-tmp
  30. 2
      module/boot@/service/All
  31. 2
      module/boot@/service/all-Local
  32. 2
      module/boot@/service/all-Mount
  33. 43
      module/boot@/service/all-Runtime
  34. 0
      module/boot@/service/all-System
  35. 36
      module/boot@/service/local/local-authfiles
  36. 12
      module/boot@/service/local/local-dmesg
  37. 40
      module/boot@/service/local/local-ip6tables
  38. 41
      module/boot@/service/local/local-iptables
  39. 10
      module/boot@/service/local/local-loop
  40. 12
      module/boot@/service/local/local-rc
  41. 28
      module/boot@/service/local/local-sethostname
  42. 25
      module/boot@/service/local/local-time
  43. 24
      module/boot@/service/local/local-tmpfiles
  44. 0
      module/boot@/service/mount/00
  45. 39
      module/boot@/service/mount/mount-cgroups
  46. 23
      module/boot@/service/mount/mount-dev
  47. 13
      module/boot@/service/mount/mount-fstab
  48. 19
      module/boot@/service/mount/mount-netfs
  49. 22
      module/boot@/service/mount/mount-proc
  50. 36
      module/boot@/service/mount/mount-pts
  51. 22
      module/boot@/service/mount/mount-run
  52. 10
      module/boot@/service/mount/mount-rw
  53. 36
      module/boot@/service/mount/mount-shm
  54. 32
      module/boot@/service/mount/mount-swap
  55. 22
      module/boot@/service/mount/mount-sys
  56. 35
      module/boot@/service/mount/mount-tmp
  57. 46
      module/boot@/service/mount/populate/populate-dev
  58. 24
      module/boot@/service/mount/populate/populate-run
  59. 66
      module/boot@/service/mount/populate/populate-sys
  60. 19
      module/boot@/service/mount/populate/populate-tmp
  61. 20
      module/boot@/service/system/devices/devices-btrfs
  62. 32
      module/boot@/service/system/devices/devices-crypttab
  63. 20
      module/boot@/service/system/devices/devices-dmraid
  64. 26
      module/boot@/service/system/devices/devices-lvm
  65. 24
      module/boot@/service/system/devices/devices-zfs
  66. 11
      module/boot@/service/system/modules/modules-kernel
  67. 12
      module/boot@/service/system/modules/modules-system
  68. 0
      module/boot@/service/system/system-Devices
  69. 30
      module/boot@/service/system/system-fontnkey
  70. 36
      module/boot@/service/system/system-fsck
  71. 23
      module/boot@/service/system/system-hostname
  72. 22
      module/boot@/service/system/system-hwclock
  73. 40
      module/boot@/service/system/system-random
  74. 20
      module/boot@/service/system/system-sysctl
  75. 22
      module/boot@/service/system/udev/udevadm
  76. 2
      module/boot@/service/system/udev/udevd
  77. 14
      module/boot@/service@/tty-rc@
  78. 15
      module/boot@/system/devices/devices-btrfs
  79. 26
      module/boot@/system/devices/devices-crypttab
  80. 15
      module/boot@/system/devices/devices-dmraid
  81. 25
      module/boot@/system/devices/devices-lvm
  82. 25
      module/boot@/system/devices/devices-zfs
  83. 26
      module/boot@/system/system-fontnkey
  84. 35
      module/boot@/system/system-fsck
  85. 19
      module/boot@/system/system-hostname
  86. 37
      module/boot@/system/system-random
  87. 18
      module/boot@/system/system-sysctl
  88. 18
      module/boot@/system/udev/udevadm
  89. 13
      package/targets.mak
  90. 93
      service/boot@

23
Makefile

@ -15,25 +15,29 @@ include package/targets.mak
INSTALL := ./tools/install.sh
install: install-script install-service install-module install-configure install-rc-local
install-script: $(SCRIPT_TARGET:module/boot@/.configure/%=$(DESTDIR)$(script_directory)/%)
install: install-script install-service install-service-module install-service-instance-module install-configure install-rc-local
install-script: $(SCRIPT_TARGET:module/boot@/configure/%=$(DESTDIR)$(script_directory)/%)
install-service: $(SERVICE_TARGET:service/%=$(DESTDIR)$(service_directory)/%)
install-module: $(MODULE_TARGET:module/%=$(DESTDIR)$(module_directory)/%)
install-configure: $(MODULE_CONFIGURE_TARGET:module/boot@/.configure/configure=$(DESTDIR)$(module_directory)/boot@/.configure/configure)
install-rc-local: $(SKEL_SCRIPT_TARGET:module/boot@/.configure/rc.local=$(DESTDIR)$(skel_directory)/rc.local)
install-service-module: $(MODULE_TARGET:module/boot@/service/%=$(DESTDIR)$(module_directory)/boot@/service/%)
install-service-instance-module: $(MODULE_INSTANCE_TARGET:module/boot@/service@/%=$(DESTDIR)$(module_directory)/boot@/service@/%)
install-configure: $(MODULE_CONFIGURE_TARGET:module/boot@/configure/configure=$(DESTDIR)$(module_directory)/boot@/configure/configure)
install-rc-local: $(SKEL_SCRIPT_TARGET:module/boot@/configure/rc.local=$(DESTDIR)$(skel_directory)/rc.local)
$(DESTDIR)$(script_directory)/%: module/boot@/.configure/%
$(DESTDIR)$(script_directory)/%: module/boot@/configure/%
exec $(INSTALL) -D -m 755 $< $@
sed -i -e 's,@BINDIR@,$(bindir),' $@
$(DESTDIR)$(module_directory)/boot@/.configure/configure: module/boot@/.configure/configure
$(DESTDIR)$(module_directory)/boot@/configure/configure: module/boot@/configure/configure
exec $(INSTALL) -D -m 755 $< $@
sed -i -e 's,@BINDIR@,$(bindir),' $@
$(DESTDIR)$(skel_directory)/rc.local: module/boot@/.configure/rc.local
$(DESTDIR)$(skel_directory)/rc.local: module/boot@/configure/rc.local
exec $(INSTALL) -D -m 755 $< $@
$(DESTDIR)$(module_directory)/%: module/%
$(DESTDIR)$(module_directory)/boot@/service/%: module/boot@/service/%
exec $(INSTALL) -D -m 644 $< $@
$(DESTDIR)$(module_directory)/boot@/service@/%: module/boot@/service@/%
exec $(INSTALL) -D -m 644 $< $@
$(DESTDIR)$(service_directory)/%: service/%
@ -46,6 +50,7 @@ $(DESTDIR)$(service_directory)/%: service/%
-e 's,@HARDWARECLOCK@,$(HARDWARECLOCK),' \
-e 's,@TZ@,$(TZ),' \
-e 's,@SETUPCONSOLE@,$(SETUPCONSOLE),' \
-e 's,@TTY@,$(TTY),' \
-e 's,@KEYMAP@,$(KEYMAP),' \
-e 's,@FONT@,$(FONT),' \
-e 's,@FONT_MAP@,$(FONT_MAP),' \

183
module/boot@/.configure/configure vendored

@ -1,183 +0,0 @@
#!@BINDIR@/sh
SV_REAL=
sv_boolean_list=(
'CRYPTTAB
SETUPCONSOLE
IPTABLES
IP6TABLES
FSTAB
SWAP
LVM
DMRAID
BTRFS
ZFS
UDEV
SYSCTL
FORCECHCK
LOCAL
CONTAINER
TMPFILE
MODULE_KERNEL
MODULE_SYSTEM
RANDOMSEED
MNT_PROC
MNT_SYS
MNT_DEV
MNT_RUN
MNT_TMP
CGROUPS
MNT_PTS
MNT_SHM
MNT_NETFS
POPULATE_SYS
POPULATE_DEV
POPULATE_RUN
POPULATE_TMP')
sv_container_list=(
'HARDWARECLOCK
SETUPCONSOLE
CRYPTTAB
SWAP
LVM
DMRAID
BTRFS
ZFS
UDEV
UDEV_ADM
SYSCTL
FORCECHCK
CGROUPS
MODULE_SYSTEM
RANDOMSEED
MNT_NETFS')
die(){
printf "%s\n" "$*"
exit 1
}
retrieve_sv_name(){
local sv=${1}
case ${sv} in
HARDWARECLOCK) SV_REAL="system-hwclock" ;;
CRYPTTAB) SV_REAL="devices-crypttab" ;;
SETUPCONSOLE) SV_REAL="system-fontnkey" ;;
IPTABLES) SV_REAL="local-iptables" ;;
IP6TABLES) SV_REAL="local-ip6tables" ;;
FSTAB) SV_REAL="mount-fstab" ;;
SWAP) SV_REAL="mount-swap" ;;
LVM) SV_REAL="devices-lvm" ;;
DMRAID) SV_REAL="devices-dmraid" ;;
BTRFS) SV_REAL="devices-btrfs" ;;
ZFS) SV_REAL="devices-zfs" ;;
UDEV) SV_REAL="udevd" ;;
SYSCTL) SV_REAL="system-sysctl" ;;
FORCECHCK) SV_REAL="system-fsck" ;;
LOCAL) SV_REAL="local-rc" ;;
TMPFILE) SV_REAL="local-tmpfiles" ;;
MODULE_KERNEL) SV_REAL="modules-kernel" ;;
MODULE_SYSTEM) SV_REAL="modules-system" ;;
RANDOMSEED) SV_REAL="system-random" ;;
MNT_PROC) SV_REAL="mount-proc" ;;
MNT_SYS) SV_REAL="mount-sys" ;;
MNT_DEV) SV_REAL="mount-dev" ;;
MNT_RUN) SV_REAL="mount-run" ;;
MNT_TMP) SV_REAL="mount-tmp" ;;
CGROUPS) SV_REAL="mount-cgroups" ;;
MNT_PTS) SV_REAL="mount-pts" ;;
MNT_SHM) SV_REAL="mount-shm" ;;
MNT_NETFS) SV_REAL="mount-netfs" ;;
POPULATE_SYS) SV_REAL="populate-sys" ;;
POPULATE_DEV) SV_REAL="populate-dev" ;;
POPULATE_RUN) SV_REAL="populate-run" ;;
POPULATE_TMP) SV_REAL="populate-tmp" ;;
## extra service not set by the environment section
UDEV_ADM) SV_REAL="udevadm" ;;
esac
unset sv
}
sv_uncomment_list() {
local name=${1} list=( "$(find ../ -mindepth 1 -type f)" )
retrieve_sv_name ${name}
for sv in ${list}; do
dir=${sv%/*}
dir=${dir#*/}
if [ "$dir" != ".configure" ]; then
sed -i "s:#*${SV_REAL}:${SV_REAL}:g" ${sv} || die "fatal: unable to sed ${sv}"
fi
done
unset list
}
sv_comment_list() {
local name=${1} list=( "$(find ../ -mindepth 1 -type f)" )
retrieve_sv_name ${name}
for sv in ${list}; do
dir=${sv%/*}
dir=${dir#*/}
if [ "$dir" != ".configure" ]; then
sed -i "s:${SV_REAL}:#${SV_REAL}:g" ${sv} || die "fatal: unable to sed ${sv}"
fi
done
file="$(find ../ -mindepth 1 -name ${SV_REAL})"
rm -f "${file}"
unset list
}
sv_comment_real() {
local name=${1} list=( "$(find ../ -mindepth 1 -type f)" )
for sv in ${list}; do
dir=${sv%/*}
dir=${dir#*/}
if [ "$dir" != ".configure" ]; then
sed -i "s:${name}:#${name}:g" ${sv} || die "fatal: unable to sed ${sv}"
fi
done
file=$(find ../ -mindepth 1 -name ${name})
rm -f ${file}
}
for sv in ${sv_boolean_list}; do
if [ ${sv} == "CONTAINER" ]; then
continue
fi
if [ ${!sv} == "yes" ]; then
sv_uncomment_list ${sv}
else
sv_comment_list ${sv}
fi
done
uncomment_udev() {
for sv in "udevd" "udevadm" "system-fontnkey" "devices-crypttab" \
"devices-dmraid" "devices-btrfs" "devices-lvm" ; do
sv_comment_real ${sv}
done
}
if [ ${UDEV} == "no" ]; then
uncomment_udev
fi
if [ ${CONTAINER} == "yes" ]; then
for sv in ${sv_container_list}; do
sv_comment_list ${sv}
done
fi
if [ ${LVM} == "no" ] && [ ${DMRAID} == "no" ] && \
[ ${BTRFS} == "no" ] && [ ${ZFS} == "no" ] && [ ${CRYPTTAB} == "no" ]; then
sv_comment_real "system-Devices"
fi

24
module/boot@/all-Runtime

@ -1,24 +0,0 @@
[main]
@type = oneshot
@version = @vers@
@description = "Launch all tree enabled of root user"
@user = ( root )
@depends = ( all-Mount all-System all-Local )
@options = ( env )
[start]
@build = auto
@execute = (
execl-envfile ${conf_file}
66-all -v${VERBOSITY} -l ${LIVE} up
)
[stop]
@build = auto
@execute = (
execl-envfile ${conf_file}
66-all -v${VERBOSITY} -l ${LIVE} down
)
[environment]
conf_file=!@initconf@

164
module/boot@/configure/configure vendored

@ -0,0 +1,164 @@
#!@BINDIR@/sh
count=0
for el in ${@}; do
if [ ${count} = 0 ];then
module_name=${el}
elif [ ${count} = 1 ];then
target_symlink_path=${el}
elif [ ${count} = 2 ];then
skeleton_path=${el}
else
version=${el}
fi
: $(( count=count+1 ))
done
SV_REAL=
sv_boolean_list="CRYPTTAB SETUPCONSOLE IPTABLES IP6TABLES FSTAB SWAP LVM \
DMRAID BTRFS ZFS UDEV SYSCTL LOCAL CONTAINER TMPFILE MODULE_KERNEL \
MODULE_SYSTEM RANDOMSEED MNT_PROC MNT_SYS MNT_DEV MNT_RUN MNT_TMP CGROUPS \
MNT_PTS MNT_SHM MNT_NETFS POPULATE_SYS POPULATE_DEV POPULATE_RUN POPULATE_TMP"
sv_container_list="HARDWARECLOCK SETUPCONSOLE CRYPTTAB SWAP LVM DMRAID BTRFS \
ZFS UDEV UDEV_ADM SYSCTL FORCECHCK CGROUPS MODULE_SYSTEM RANDOMSEED MNT_NETFS"
die(){
printf "%s\n" "$*"
exit 1
}
retrieve_sv_name(){
sv=${1}
case ${sv} in
HARDWARECLOCK) SV_REAL="system-hwclock" ;;
CRYPTTAB) SV_REAL="devices-crypttab" ;;
SETUPCONSOLE) SV_REAL="system-fontnkey" ;;
IPTABLES) SV_REAL="local-iptables" ;;
IP6TABLES) SV_REAL="local-ip6tables" ;;
FSTAB) SV_REAL="mount-fstab" ;;
SWAP) SV_REAL="mount-swap" ;;
LVM) SV_REAL="devices-lvm" ;;
DMRAID) SV_REAL="devices-dmraid" ;;
BTRFS) SV_REAL="devices-btrfs" ;;
ZFS) SV_REAL="devices-zfs" ;;
UDEV) SV_REAL="udevd" ;;
SYSCTL) SV_REAL="system-sysctl" ;;
FORCECHCK) SV_REAL="system-fsck" ;;
LOCAL) SV_REAL="local-rc" ;;
TMPFILE) SV_REAL="local-tmpfiles" ;;
MODULE_KERNEL) SV_REAL="modules-kernel" ;;
MODULE_SYSTEM) SV_REAL="modules-system" ;;
RANDOMSEED) SV_REAL="system-random" ;;
MNT_PROC) SV_REAL="mount-proc" ;;
MNT_SYS) SV_REAL="mount-sys" ;;
MNT_DEV) SV_REAL="mount-dev" ;;
MNT_RUN) SV_REAL="mount-run" ;;
MNT_TMP) SV_REAL="mount-tmp" ;;
CGROUPS) SV_REAL="mount-cgroups" ;;
MNT_PTS) SV_REAL="mount-pts" ;;
MNT_SHM) SV_REAL="mount-shm" ;;
MNT_NETFS) SV_REAL="mount-netfs" ;;
POPULATE_SYS) SV_REAL="populate-sys" ;;
POPULATE_DEV) SV_REAL="populate-dev" ;;
POPULATE_RUN) SV_REAL="populate-run" ;;
POPULATE_TMP) SV_REAL="populate-tmp" ;;
TTY) SV_REAL="tty-rc@" ;;
## extra service not set by the environment section
UDEV_ADM) SV_REAL="udevadm" ;;
esac
unset sv
}
sv_uncomment_list() {
name=${1} list="$(find ../service -mindepth 1 -type f)"
retrieve_sv_name "${name}"
for sv in ${list}; do
dir=${sv%/*}
dir=${dir#*/}
sed -i "s:#*${SV_REAL}:${SV_REAL}:g" "${sv}" || die "fatal: unable to sed ${sv}"
done
unset list
}
sv_comment_list() {
name=${1} list="$(find ../service -mindepth 1 -type f)"
retrieve_sv_name "${name}"
for sv in ${list}; do
dir=${sv%/*}
dir=${dir#*/}
sed -i "s:${SV_REAL}:#${SV_REAL}:g" "${sv}" || die "fatal: unable to sed ${sv}"
done
file="$(find ../service -mindepth 1 -name ${SV_REAL})"
rm -f "${file}"
unset list
}
sv_comment_real() {
name=${1} list="$(find ../service -mindepth 1 -type f)"
for sv in ${list}; do
dir=${sv%/*}
dir=${dir#*/}
sed -i "s:${name}:#${name}:g" "${sv}" || die "fatal: unable to sed ${sv}"
done
file=$(find ../service -mindepth 1 -name "${name}")
rm -f "${file}"
}
for sv in ${sv_boolean_list}; do
if [ "${sv}" = "CONTAINER" ]; then
continue
fi
eval val="\$${sv}"
val="${val}"
if [ "${val}" = "yes" ]; then
sv_uncomment_list "${sv}"
else
sv_comment_list "${sv}"
fi
done
uncomment_udev() {
for sv in "udevd" "udevadm" "system-fontnkey" "devices-crypttab" \
"devices-dmraid" "devices-btrfs" "devices-lvm" ; do
sv_comment_real ${sv}
done
}
if [ "${UDEV}" = "no" ]; then
uncomment_udev
fi
if [ "${CONTAINER}" = "yes" ]; then
for sv in ${sv_container_list}; do
sv_comment_list "${sv}"
done
fi
if [ "${LVM}" = "no" ] && \
[ "${DMRAID}" = "no" ] && \
[ "${BTRFS}" = "no" ] && \
[ "${ZFS}" = "no" ] && \
[ "${CRYPTTAB}" = "no" ]; then
sv_comment_real "system-Devices"
fi
if [ "${TTY}" -gt 0 ]; then
for i in $(seq "${TTY}"); do
[ "${i}" -lt 12 ] || break
cp ../service@/tty-rc@ ../service/tty-rc@tty"${i}" || die "fatal: unable to copy tty-rc@ service"
sed "s:@I:tty${i}:g" -i ../service/tty-rc@tty"${i}" || die "fatal: unable to sed tty-rc@tty${i}"
sed "s:@vers@:${version}:" -i ../service/tty-rc@tty"${i}" || die "fatal: unable to sed tty-rc@tty${i}"
done
fi
ln -sf "${target_symlink_path}/${module_name}" "${skeleton_path}/${module_name}" || die "fatal: unable to make symlink"

0
module/boot@/.configure/crypt.awk → module/boot@/configure/crypt.awk

0
module/boot@/.configure/modules.sh → module/boot@/configure/modules.sh

0
module/boot@/.configure/rc.local → module/boot@/configure/rc.local

0
module/boot@/.configure/tmpfiles.sh → module/boot@/configure/tmpfiles.sh

9
module/boot@/earlier-service/tty12

@ -1,9 +0,0 @@
[main]
@type = classic
@version = @vers@
@description = "Launch tty12"
@user = ( root )
[start]
@build = auto
@execute = ( agetty --delay 2 -J 38400 tty12 )

31
module/boot@/local/local-authfiles

@ -1,31 +0,0 @@
[main]
@type = oneshot
@version = @vers@
@description = "Create tempory authentification files"
@depends = ( mount-rw )
@user = ( root )
@options = ( env )
[start]
@build = auto
@execute =
(
if { 66-echo -- [local-authfiles] starts... }
if -t {
if -nt { s6-test -e ${script_file_wtmp} }
foreground {
install -m0664 -o root -g utmp /dev/null ${WTMP}
}
}
if -t {
if -nt { s6-test -e ${script_file_btmp} }
foreground {
install -m0600 -o root -g utmp /dev/null ${BTMP}
}
}
66-echo -- [local-authfiles] started successfully
)
[environment]
script_file_wtmp=!/var/log/wtmp
script_file_btmp=!/var/log/btmp

32
module/boot@/local/local-ip6tables

@ -1,32 +0,0 @@
[main]
@type = oneshot
@version = @vers@
@description = "Restore ip6tables rules"
@depends = ( mount-rw )
@user = ( root )
@options = ( env )
[start]
@build = auto
@execute =
(
if { 66-echo -- [local-iptables] starts... }
if { s6-test -e ${script_conf} }
if { 66-which -q ip6tables-restore }
if { ip6tables-restore ${script_conf} }
66-echo -- [local-ip6tables] started successfully
)
[stop]
@build = auto
@execute =
(
if { 66-echo -- [local-ip6tables] stops... }
if { s6-test -x ${script_file} }
if { ${script_file} }
66-echo -- [local-ip6tables] stopped successfully
)
[environment]
script_conf=!/etc/iptables/ip6tables.rules
script_file=!/usr/lib/iptables/scripts/ip6tables-flush

33
module/boot@/local/local-iptables

@ -1,33 +0,0 @@
[main]
@type = oneshot
@version = @vers@
@description = "Restore iptables rules"
@depends = ( mount-rw )
@user = ( root )
@options = ( env )
[start]
@build = auto
@execute =
(
if { 66-echo -- [local-iptables] starts... }
if { s6-test -e ${script_conf} }
if { 66-which -q iptables-restore }
if { iptables-restore ${script_conf} }
66-echo -- [local-iptables] started successfully
)
[stop]
@build = auto
@execute =
(
if { 66-echo -- [system-iptables] stops... }
if { s6-test -x ${script_file} }
if { ${script_file} }
66-echo -- [local-iptables] stopped successfully
)
[environment]
script_conf=!/etc/iptables/iptables.rules
script_file=!/usr/lib/iptables/scripts/iptables-flush

24
module/boot@/local/local-sethostname

@ -1,24 +0,0 @@
[main]
@type = oneshot
@version = @vers@
@description = "Set hostname at /etc/hostname file"
@options = ( env )
@depends = ( mount-rw )
@user = ( root )
[start]
@build = auto
@execute =
(
if { 66-echo -- [local-sethostname] starts... }
execl-envfile ${conf_file}
execl-cmdline -s {
redirfd -w 1 ${conf_file_hostname}
66-echo -- ${HOSTNAME}
}
66-echo -- [local-sethostname] started successfully
)
[environment]
conf_file=!@bootconf@
conf_file_hostname=!/etc/hostname

21
module/boot@/local/local-time

@ -1,21 +0,0 @@
[main]
@type = oneshot
@version = @vers@
@description = "Set localtime"
@options = ( env )
@depends = ( mount-rw )
@user = ( root )
[start]
@build = auto
@execute =
(
execl-envfile ${conf_file}
if { 66-echo -- [local-time] starts... }
if { s6-ln -sf /usr/share/zoneinfo/${TZ} /etc/localtime }
66-echo -- [local-time] started successfully
)
[environment]
conf_file=!@bootconf@

20
module/boot@/local/local-tmpfiles

@ -1,20 +0,0 @@
[main]
@type = oneshot
@version = @vers@
@description = "Create tempory files"
@depends = ( mount-rw )
@user = ( root )
@options = ( env )
[start]
@build = auto
@execute =
(
if { 66-echo -- [local-tmpfiles] starts... }
if { execl-cmdline -s { ${script_file} ${script_args} } }
66-echo -- [local-tmpfiles] started successfully
)
[environment]
script_file=!@scripts@/tmpfiles.sh
script_args=!--create --verbose --boot

38
module/boot@/mount/mount-cgroups

@ -1,38 +0,0 @@
[main]
@type = oneshot
@version = @vers@
@description = "mount cgroups hierarchy"
@user = ( root )
@depends = ( mount-dev )
[start]
@build = auto
@execute =
(
if
{
if { 66-echo -- [mount-cgroups] starts... }
if { mkdir -p -m 0755 /sys/fs/cgroup }
if { mount -t tmpfs cgroup /sys/fs/cgroup }
if { mkdir -p -m 0755 /sys/fs/cgroup/unified }
if { mount -t cgroup2 -o rw,nosuid,nodev,noexec,relatime,nsdelegate cgroup2 /sys/fs/cgroup/unified }
redirfd -r 0 /proc/cgroups
pipeline { s6-tail -n +2 }
pipeline { s6-cut -d"\t" -f1 }
forstdin -d"\n" -- i
importas -iu i i
if { s6-mkdir /sys/fs/cgroup/${i} }
mount -t cgroup -o rw,nosuid,nodev,noexec,relatime,${i} cgroup /sys/fs/cgroup/${i}
}
66-echo -- [mount-cgroups] started successfully
)
[stop]
@build=auto
@execute=
(
if { 66-echo -- [mount-cgroups] stops... }
if { umount -R /sys/fs/cgroup }
66-echo -- [mount-cgroups] stopped successfully
)

22
module/boot@/mount/mount-dev

@ -1,22 +0,0 @@
[main]
@type = oneshot
@version = @vers@
@description = "Mount /dev directory"
@options = ( env )
@user = ( root )
@depends = ( mount-sys )
[start]
@build = auto
@execute =
(
if -tn { mountpoint -q /dev }
foreground {
if { 66-echo -- [mount-dev] starts... }
if { execl-cmdline -s { s6-mount ${cmd_args} } }
66-echo -- [mount-dev] started successfully
}
)
[environment]
cmd_args=!-o mode=0755,nosuid -t devtmpfs dev /dev

15
module/boot@/mount/mount-netfs

@ -1,15 +0,0 @@
[main]
@type = oneshot
@version = @vers@
@description = "Mount no-network filesystem"
@user = ( root )
@depends=( mount-rw )
[start]
@build = auto
@execute =
(
if { 66-echo -- [mount-netfs] starts... }
if { mount -a -t "nosysfs,nonfs,nonfs4,nosmbfs,nocifs" -O no_netdev }
66-echo -- [mount-netfs] started successfully
)

21
module/boot@/mount/mount-proc

@ -1,21 +0,0 @@
[main]
@type = oneshot
@version = @vers@
@description = "Mount /proc directory"
@options = ( env )
@user = ( root )
[start]
@build = auto
@execute =
(
if -tn { mountpoint -q /proc }
foreground {
if { 66-echo -- [mount-proc] starts... }
if { execl-cmdline -s { s6-mount ${cmd_args} } }
66-echo -- [mount-proc] started successfully
}
)
[environment]
cmd_args=!-o nosuid,noexec,nodev -t proc proc /proc

39
module/boot@/mount/mount-pts

@ -1,39 +0,0 @@
[main]
@type = oneshot
@version = @vers@
@description = "Mount /dev/pts directory"
@options = ( env )
@user = ( root )
@depends =( mount-dev )
[start]
@build = auto
@execute =
(
if { 66-echo -- [mount-pts] starts... }
foreground
{
if -n { s6-test -d /dev/pts }
s6-mkdir -p -m 0755 /dev/pts
}
foreground {
if -tn { mountpoint -q /dev/pts }
execl-cmdline -s { s6-mount ${cmd_args} }
}
66-echo -- [mount-pts] started successfully
)
[stop]
@build=auto
@execute=
(
if -t { mountpoint -q /dev/pts }
foreground {
if { 66-echo -- [mount-pts] stops... }
if { umount /dev/pts }
66-echo -- [mount-pts] stopped successfully
}
)
[environment]
cmd_args=!-o mode=0620,gid=5,nosuid,noexec -t devpts devpts /dev/pts

21
module/boot@/mount/mount-run

@ -1,21 +0,0 @@
[main]
@type = oneshot
@version = @vers@
@description = "Mount /run directory"
@options = ( env )
@user = ( root )
[start]
@build = auto
@execute =
(
if -tn { mountpoint -q /run }
foreground {
if { 66-echo -- [mount-run] starts... }
if { execl-cmdline -s { s6-mount ${cmd_args} } }
66-echo -- [mount-run] started successfully
}
)
[environment]
cmd_args=!-o mode=0755,nosuid,nodev -t tmpfs run /run

39
module/boot@/mount/mount-shm

@ -1,39 +0,0 @@
[main]
@type = oneshot
@version = @vers@
@description = "Mount /dev/shm directory"
@options = ( env )
@user = ( root )
@depends =( mount-dev )
[start]
@build = auto
@execute =
(
if { 66-echo -- [mount-shm] starts... }
foreground
{
if -n { s6-test -d /dev/shm }
s6-mkdir -p -m 0755 /dev/shm
}
foreground {
if -tn { mountpoint -q /dev/shm }
execl-cmdline -s { s6-mount ${cmd_args} }
}
66-echo -- [mount-shm] started successfully
)
[stop]
@build=auto
@execute=
(
if -t { mountpoint -q /dev/shm }
foreground {
if { 66-echo -- [mount-shm] stops... }
if { umount /dev/shm }
66-echo -- [mount-shm] stopped successfully
}
)
[environment]
cmd_args=!-o mode=1777,nosuid,nodev -t tmpfs shm /dev/shm

24
module/boot@/mount/mount-swap

@ -1,24 +0,0 @@
[main]
@type = oneshot
@version = @vers@
@description = "Mount swap partition"
@user = ( root )
@depends=( mount-rw )
[start]
@build = auto
@execute =
(
if { 66-echo -- [mount-swap] starts... }
if { swapon -a }
66-echo -- [mount-swap] started successfully
)
[stop]
@build = auto
@execute =
(
if { 66-echo -- [mount-swap] stops... }
if { swapoff -a }
66-echo -- [mount-swap] stopped successfully
)

21
module/boot@/mount/mount-sys

@ -1,21 +0,0 @@
[main]
@type = oneshot
@version = @vers@
@description = "Mount /sys directory"
@options = ( env )
@user = ( root )
@depends = ( mount-proc )
[start]
@build = auto
@execute =
(
if -tn { mountpoint -q /sys }
foreground {
if { 66-echo -- [mount-sys] starts... }
if { execl-cmdline -s { s6-mount ${cmd_args} } }
66-echo -- [mount-sys] started successfully
}
)
[environment]
cmd_args=!-o nosuid,noexec,nodev -t sysfs sys /sys

33
module/boot@/mount/mount-tmp

@ -1,33 +0,0 @@
[main]
@type = oneshot
@version = @vers@
@description = "Mount /tmp directory"
@options = ( env )
@user = ( root )
[start]
@build = auto
@execute =
(
if -tn { mountpoint -q /tmp }
foreground {
if { 66-echo -- [mount-tmp] starts... }
if { execl-cmdline -s { s6-mount ${cmd_args} } }
66-echo -- [mount-tmp] started successfully
}
)
[stop]
@build=auto
@execute=
(
if -t { mountpoint -q /tmp }
foreground {
if { 66-echo -- [mount-tmp] stops... }
if { umount /tmp }
66-echo -- [mount-tmp] stopped successfully
}
)
[environment]
cmd_args=!-o noatime,nodev,nosuid -t tmpfs tmp /tmp

42
module/boot@/mount/populate/populate-dev

@ -1,42 +0,0 @@
[main]
@type = oneshot
@version = @vers@
@description = "Populate /dev directory"
@user = ( root )
@depends = ( mount-dev )
[start]
@build = auto
@execute =
(
if { 66-echo -- [populate-dev] starts... }
foreground {
if -t { grep -Fq hugetlbfs /proc/filesystems }
if -nt { mountpoint -q /dev/hugepages }
if { mkdir -p /dev/hugepages }
mount -o noatime,nodev,noexec,nosuid -t hugetlbfs hugepages /dev/hugepages
}
foreground {
if -t { grep -Fq mqueue /proc/filesystems }
if -nt { mountpoint -q /dev/mqueue }
if { mkdir -p /dev/mqueue }
mount -o noatime,nodev,noexec,nosuid -t mqueue mqueue /dev/mqueue
}
66-echo -- [populate-dev] started successfully
)
[stop]
@build=auto
@execute=
(
if { 66-echo -- [populate-dev] stop... }
forx -p dir {
/dev/hugepages /dev/mqueue
}
importas -ui dir dir
foreground {
if -t { mountpoint -q ${dir} }
umount ${dir}
}
66-echo -- [populate-dev] stopped successfully
)

25
module/boot@/mount/populate/populate-run

@ -1,25 +0,0 @@
[main]
@type = oneshot
@version = @vers@
@description = "Populate /run directory"
@user = ( root )
@depends = ( mount-run )
[start]
@build = auto
@execute =
(
if { 66-echo -- [populate-run] starts... }
if
{
forx -p dir { lvm user lock }
importas -ui dir dir
foreground
{
if -n { s6-test -d /run/${dir} }
s6-mkdir -p -m 0755 /run/${dir}
}
}
if { install -m0664 -o root -g utmp /dev/null /run/utmp }
66-echo -- [populate-run] started successfully
)

66
module/boot@/mount/populate/populate-sys

@ -1,66 +0,0 @@
[main]
@type = oneshot
@version = @vers@
@description = "Populate /sys directory"
@user = ( root )
@depends = ( mount-proc mount-sys )
[start]
@build = auto
@execute =
(
if { 66-echo -- [populate-sys] starts... }
foreground {
if -t { grep -Fq efivarfs /proc/filesystems }
if -nt { mountpoint -q /sys/firmware/efi/efivars }
mount -o noatime,nodev,noexec,nosuid,ro -t efivarfs efivars /sys/firmware/efi/efivars
}
foreground {
if -t { grep -Fq fusectl /proc/filesystems }
if -nt { mountpoint -q /sys/fs/fuse/connections }
mount -o noatime,nodev,noexec,nosuid -t fusectl fusectl /sys/fs/fuse/connections
}
foreground {
if -t { grep -Fq configfs /proc/filesystems }
if -nt { mountpoint -q /sys/kernel/config }
mount -o noatime,nodev,noexec,nosuid -t configfs configfs /sys/kernel/config
}
foreground {
if -t { grep -Fq debugfs /proc/filesystems }
if -nt { mountpoint -q /sys/kernel/debug }
mount -o noatime,nodev,noexec,nosuid -t debugfs debugfs /sys/kernel/debug
}
foreground {
if -t { grep -Fq tracefs /proc/filesystems }
if -nt { mountpoint -q /sys/kernel/debug/tracing }
mount -o noatime,nodev,noexec,nosuid -t tracefs tracefs /sys/kernel/debug/tracing
}
foreground {
if -t { grep -Fq securityfs /proc/filesystems }
if -nt { mountpoint -q /sys/kernel/security }
mount -o noatime,nodev,noexec,nosuid -t securityfs securityfs /sys/kernel/security
}
66-echo -- [populate-sys] started successfully
)
[stop]
@build = auto
@execute =
(
if { 66-echo -- [populate-sys] stops... }
foreground {
forx -p dir {
/sys/firmware/efi/efivars /sys/fs/fuse/connections /sys/kernel/config
/sys/kernel/debug /sys/kernel/tracing /sys/kernel/security
}
importas -ui dir dir
foreground {
if -t { mountpoint -q ${dir} }
umount ${dir}
}
}
66-echo -- [populate-sys] stopped successfully
)

15
module/boot@/mount/populate/populate-tmp

@ -1,15 +0,0 @@
[main]
@type = oneshot
@version = @vers@
@description = "Populate /tmp directory"
@user = ( root )
@depends = ( mount-tmp )
[start]
@build = auto
@execute =
(
if { 66-echo -- [populate-tmp] starts... }
if { install -dm1777 /tmp/.X11-unix /tmp/.ICE-unix }
66-echo -- [populate-tmp] started successfully
)

2
module/boot@/All → module/boot@/service/All

@ -1,7 +1,7 @@
[main]
@type = bundle
@version = @vers@
@description = "First service called to start the system"
@description = "Starting point of the boot sequence"
@user = ( root )
@contents =
(

2
module/boot@/all-Local → module/boot@/service/all-Local

@ -1,7 +1,7 @@
[main]
@type = bundle
@version = @vers@
@description = "Local configuration"
@description = "Runtime system configuration"
@user = ( root )
@contents =
(

2
module/boot@/all-Mount → module/boot@/service/all-Mount

@ -1,6 +1,6 @@
[main]
@type = bundle
@version = @vers@
@description = "Mount all devices"
@description = "Mount devices directories"
@user = ( root )
@contents = ( 00 )

43
module/boot@/service/all-Runtime

@ -0,0 +1,43 @@
[main]
@type = oneshot
@version = @vers@
@description = "Launch all tree enabled of root user"
@user = ( root )
@depends = ( all-Mount all-System all-Local )
@options = ( env )
[start]
@build = auto
@execute =
(
if { 66-yeller -cdp all-Runtime -1 /dev/console starts... }
if -nt {
execl-envfile ${conf_file}
66-all -v${VERBOSITY} -l ${LIVE} up
}
66-yeller -fcdp all-Runtime -1 /dev/console crashed! -- please see the complete boot log at ${LIVE}/log/0/current
)
[stop]
@build = auto
@execute =
(
if { 66-yeller -cdp all-Runtime -1 /dev/console stops... }
if -nt {
execl-envfile ${conf_file}
66-all -v${VERBOSITY} -T ${timeout} -l ${LIVE} down
}
## use -F here, we don't want to crash to avoid to
## not bring down properly the rest of the service
66-yeller -Fcdp all-Runtime -1 /dev/console crashed!
)
[environment]
conf_file=!@initconf@
## Time to wait to bring down services
timeout=!3000

0
module/boot@/all-System → module/boot@/service/all-System

36
module/boot@/service/local/local-authfiles

@ -0,0 +1,36 @@
[main]
@type = oneshot
@version = @vers@
@description = "Create tempory authentification files"
@depends = ( mount-rw )
@user = ( root )
@options = ( env )
[start]
@build = auto
@execute =
(
if { 66-yeller -cdp local-authfiles -1 /dev/console starts... }
if -nt {
if -t {
execl-toc -nt -e ${script_file_wtmp}
foreground {
install -m0664 -o root -g utmp /dev/null ${WTMP}
}
}
if -t {
execl-toc -nt -e ${script_file_btmp}
foreground {
install -m0600 -o root -g utmp /dev/null ${BTMP}
}
}
}
66-yeller -fcdp local-authfiles -1 /dev/console crashed!
)
[environment]
script_file_wtmp=!/var/log/wtmp
script_file_btmp=!/var/log/btmp

12
module/boot@/local/local-dmesg → module/boot@/service/local/local-dmesg

@ -1,7 +1,7 @@
[main]
@type = oneshot
@version = @vers@
@description = "Saves logs of dmesg"
@description = "Save logs of dmesg"
@options = ( env )
@depends = (
mount-rw
@ -19,16 +19,16 @@ local-rc )
@build = auto
@execute =
(
if { 66-echo -- [local-dmesg] starts... }
foreground {
if { 66-yeller -cdp local-dmesg -1 /dev/console starts... }
if -nt {
execl-cmdline -s {
redirfd -w 1 ${cmd_log}
dmesg ${cmd_args}
}
}
importas ? ?
if { test ${?} == 0 }
66-echo -- [local-dmesg] started successfully
66-yeller -fcdp local-dmesg -1 /dev/console crashed!
)
[environment]

40
module/boot@/service/local/local-ip6tables

@ -0,0 +1,40 @@
[main]
@type = oneshot
@version = @vers@
@description = "Restore ip6tables rules"
@depends = ( mount-rw )
@user = ( root )
@options = ( env )
[start]
@build = auto
@execute =
(
if { 66-yeller -cdp local-ip6tables -1 /dev/console starts... }
if -nt {
if { 66-which -q ip6tables-restore }
execl-toc -e ${script_conf}
ip6tables-restore ${script_conf}
}
66-yeller -fcdp local-ip6tables -1 /dev/console crashed!
)
[stop]
@build = auto
@execute =
(
if { 66-yeller -cdp local-ip6tables -1 /dev/console stops... }
if -nt {
execl-toc -x ${script_file}
${script_file}
}
66-yeller -fcdp local-ip6tables -1 /dev/console crashed!
)
[environment]
script_conf=!/etc/iptables/ip6tables.rules
script_file=!/usr/lib/iptables/scripts/ip6tables-flush

41
module/boot@/service/local/local-iptables

@ -0,0 +1,41 @@
[main]
@type = oneshot
@version = @vers@
@description = "Restore iptables rules"
@depends = ( mount-rw )
@user = ( root )
@options = ( env )
[start]
@build = auto
@execute =
(
if { 66-yeller -cdp local-iptables -1 /dev/console starts... }
if -nt {
if { 66-which -q iptables-restore }
execl-toc -e ${script_conf}
iptables-restore ${script_conf}
}
66-yeller -fcdp local-iptables -1 /dev/console crashed!
)
[stop]
@build = auto
@execute =
(
if { 66-yeller -cdp local-iptables -1 /dev/console stops... }
if -nt {
execl-toc -x ${script_file}
${script_file}
}
66-yeller -fcdp local-iptables -1 /dev/console crashed!
)
[environment]
script_conf=!/etc/iptables/iptables.rules
script_file=!/usr/lib/iptables/scripts/iptables-flush

10
module/boot@/local/local-loop → module/boot@/service/local/local-loop

@ -9,9 +9,13 @@
@build = auto
@execute =
(
if { 66-echo -- [local-loop] starts... }
if { ip link set up dev lo }
66-echo -- [local-loop] started successfully
if { 66-yeller -cdp local-loop -1 /dev/console starts... }
if -nt {
ip link set up dev lo
}
66-yeller -fcdp local-loop -1 /dev/console crashed!
)

12
module/boot@/local/local-rc → module/boot@/service/local/local-rc

@ -17,11 +17,13 @@
@build = auto
@execute =
(
if { 66-echo -- [local-rc] starts... }
foreground { ${script_file} }
importas ? ?
if { test ${?} == 0 }
66-echo -- [local-rc] started successfully
if { 66-yeller -cdp local-rc -1 /dev/console starts... }
if -nt {
${script_file}
}
66-yeller -fcdp local-rc -1 /dev/console crashed!
)
[environment]

28
module/boot@/service/local/local-sethostname

@ -0,0 +1,28 @@
[main]
@type = oneshot
@version = @vers@
@description = "Set hostname on /etc/hostname file"
@options = ( env )
@depends = ( mount-rw )
@user = ( root )
[start]
@build = auto
@execute =
(
if { 66-yeller -cdp local-sethostname -1 /dev/console starts... }
if -nt {
execl-envfile ${conf_file}
execl-cmdline -s {
redirfd -w 1 ${conf_file_hostname}
66-echo -- ${HOSTNAME}
}
}
66-yeller -fcdp local-sethostname -1 /dev/console crashed!
)
[environment]
conf_file=!@bootconf@
conf_file_hostname=!/etc/hostname

25
module/boot@/service/local/local-time

@ -0,0 +1,25 @@
[main]
@type = oneshot
@version = @vers@
@description = "Set localtime"
@options = ( env )
@depends = ( mount-rw )
@user = ( root )
[start]
@build = auto
@execute =
(
if { 66-yeller -cdp local-time -1 /dev/console starts... }
if -nt {
execl-envfile ${conf_file}
s6-ln -sf /usr/share/zoneinfo/${TZ} /etc/localtime
}
66-yeller -fcdp local-time -1 /dev/console crashed!
)
[environment]
conf_file=!@bootconf@

24
module/boot@/service/local/local-tmpfiles

@ -0,0 +1,24 @@
[main]
@type = oneshot
@version = @vers@
@description = "Create temporary files"
@depends = ( mount-rw )
@user = ( root )
@options = ( env )
[start]
@build = auto
@execute =
(
if { 66-yeller -cdp local-tmpfiles -1 /dev/console starts... }
if -nt {
execl-cmdline -s { ${script_file} ${script_args} }
}
66-yeller -fcdp local-tmpfiles -1 /dev/console crashed!
)
[environment]
script_file=!@scripts@/tmpfiles.sh
script_args=!--create --verbose --boot

0
module/boot@/mount/00 → module/boot@/service/mount/00

39
module/boot@/service/mount/mount-cgroups

@ -0,0 +1,39 @@
[main]
@type = oneshot
@version = @vers@
@description = "mount cgroups hierarchy"
@user = ( root )
@depends = ( mount-dev )
[start]
@build = auto
@execute =
(
if { 66-yeller -cdp mount-cgroups -1 /dev/console starts... }
if -nt {
execl-toc -m /sys/fs/cgroup -t tmpfs -d cgroup
execl-toc -m /sys/fs/cgroup/unified -t cgroup2 -o rw,nosuid,nodev,noexec,relatime,nsdelegate -d cgroup2
redirfd -r 0 /proc/cgroups
pipeline { s6-tail -n +2 }
pipeline { s6-cut -d"\t" -f1 }
forstdin -d"\n" -- i
importas -iu i i
execl-toc -X -m /sys/fs/cgroup/${i} -t cgroup -o rw,nosuid,nodev,noexec,relatime,${i} -d cgroup
}
66-yeller -fcdp mount-cgroups -1 /dev/console crashed!
)
[stop]
@build=auto
@execute=
(
if { 66-yeller -cdp mount-cgroups -1 /dev/console stops... }
if -nt {
if { umount -lR /sys/fs/cgroup }
}
66-yeller -fcdp mount-cgroups -1 /dev/console crashed!
)

23
module/boot@/service/mount/mount-dev

@ -0,0 +1,23 @@
[main]
@type = oneshot
@version = @vers@
@description = "Mount /dev directory"
@options = ( env )
@user = ( root )
@depends = ( mount-sys )
[start]
@build = auto
@execute =
(
if { 66-yeller -cdp mount-dev -1 /dev/console starts... }
if -nt {
execl-cmdline -s { execl-toc -X -m /dev ${cmd_args} }
}
66-yeller -fcdp mount-dev -1 /dev/console crashed!
)
[environment]
cmd_args=!-o mode=0755,nosuid -t devtmpfs -d dev

13
module/boot@/mount/mount-fstab → module/boot@/service/mount/mount-fstab

@ -10,14 +10,13 @@
@build = auto
@execute =
(
execl-envfile ${conf_file}
ifelse -X { s6-test ${FSTAB} = yes }
{
if { 66-echo -- [mount-fstab] starts... }
foreground { mount -a }
66-echo -- [mount-fstab] started successfully
if { 66-yeller -cdp mount-fstab -1 /dev/console starts... }
if -nt {
mount -a
}
66-echo -- [mount-fstab] deactivated
66-yeller -fcdp mount-fstab -1 /dev/console crashed!
)
[environment]

19
module/boot@/service/mount/mount-netfs

@ -0,0 +1,19 @@
[main]
@type = oneshot
@version = @vers@
@description = "Mount no-network filesystem"
@user = ( root )
@depends=( mount-rw )
[start]
@build = auto
@execute =
(
if { 66-yeller -cdp mount-netfs -1 /dev/console starts... }
if -nt {
mount -a -t "nosysfs,nonfs,nonfs4,nosmbfs,nocifs" -O no_netdev
}
66-yeller -fcdp mount-netfs -1 /dev/console crashed!
)

22
module/boot@/service/mount/mount-proc

@ -0,0 +1,22 @@
[main]
@type = oneshot
@version = @vers@
@description = "Mount /proc directory"
@options = ( env )
@user = ( root )
[start]
@build = auto
@execute =
(
if { 66-yeller -cdp mount-proc -1 /dev/console starts... }
if -nt {
execl-cmdline -s { execl-toc -X -m /proc ${cmd_args} }