├── layout ├── rootfs │ ├── lib32 │ ├── lib64 │ ├── boot │ │ └── .empty │ ├── command │ │ └── .empty │ ├── dev │ │ └── .empty │ ├── library.so │ ├── proc │ │ └── .empty │ ├── run │ │ └── .empty │ ├── sys │ │ └── .empty │ ├── tmp │ │ └── .empty │ ├── etc │ │ ├── issue │ │ ├── s6-rc │ │ │ └── source-base │ │ │ │ ├── 00 │ │ │ │ ├── down │ │ │ │ ├── type │ │ │ │ └── up │ │ │ │ ├── btmpd │ │ │ │ ├── type │ │ │ │ ├── dependencies.d │ │ │ │ │ ├── nsssd │ │ │ │ │ ├── mount-rwfs │ │ │ │ │ └── init-utmp-early │ │ │ │ ├── notification-fd │ │ │ │ └── run │ │ │ │ ├── init-utmp │ │ │ │ ├── down │ │ │ │ ├── type │ │ │ │ ├── dependencies.d │ │ │ │ │ ├── btmpd │ │ │ │ │ ├── utmpd │ │ │ │ │ └── wtmpd │ │ │ │ └── up │ │ │ │ ├── klogd │ │ │ │ ├── type │ │ │ │ ├── dependencies.d │ │ │ │ │ └── mount-proc │ │ │ │ ├── producer-for │ │ │ │ └── run │ │ │ │ ├── mdevd │ │ │ │ ├── type │ │ │ │ ├── dependencies.d │ │ │ │ │ ├── nsssd │ │ │ │ │ ├── init-dev │ │ │ │ │ └── mount-sys │ │ │ │ ├── notification-fd │ │ │ │ └── run │ │ │ │ ├── mount-tmp │ │ │ │ ├── down │ │ │ │ ├── dependencies.d │ │ │ │ │ └── 00 │ │ │ │ ├── type │ │ │ │ └── up │ │ │ │ ├── nsssd │ │ │ │ ├── type │ │ │ │ ├── dependencies.d │ │ │ │ │ └── 00 │ │ │ │ ├── notification-fd │ │ │ │ └── run │ │ │ │ ├── ok-lan │ │ │ │ ├── type │ │ │ │ └── contents.d │ │ │ │ │ ├── init-eth0 │ │ │ │ │ ├── init-lo │ │ │ │ │ ├── sshd-4 │ │ │ │ │ └── init-route │ │ │ │ ├── utmpd │ │ │ │ ├── type │ │ │ │ ├── dependencies.d │ │ │ │ │ ├── nsssd │ │ │ │ │ └── init-utmp-early │ │ │ │ ├── notification-fd │ │ │ │ └── run │ │ │ │ ├── wtmpd │ │ │ │ ├── type │ │ │ │ ├── dependencies.d │ │ │ │ │ ├── nsssd │ │ │ │ │ ├── mount-rwfs │ │ │ │ │ └── init-utmp-early │ │ │ │ ├── notification-fd │ │ │ │ └── run │ │ │ │ ├── default │ │ │ │ ├── contents.d │ │ │ │ │ ├── ok-lan │ │ │ │ │ └── ok-local │ │ │ │ └── type │ │ │ │ ├── init-dev │ │ │ │ ├── type │ │ │ │ ├── dependencies.d │ │ │ │ │ └── mount-proc │ │ │ │ └── up │ │ │ │ ├── init-eth0 │ │ │ │ ├── type │ │ │ │ ├── dependencies.d │ │ │ │ │ ├── init-sysctl │ │ │ │ │ └── init-coldplug │ │ │ │ ├── down │ │ │ │ └── up │ │ │ │ ├── init-lo │ │ │ │ ├── type │ │ │ │ ├── dependencies.d │ │ │ │ │ ├── init-coldplug │ │ │ │ │ └── init-sysctl │ │ │ │ ├── down │ │ │ │ └── up │ │ │ │ ├── init-route │ │ │ │ ├── type │ │ │ │ ├── dependencies.d │ │ │ │ │ └── init-eth0 │ │ │ │ ├── up │ │ │ │ └── down │ │ │ │ ├── init-utmp-early │ │ │ │ ├── down │ │ │ │ ├── type │ │ │ │ ├── dependencies.d │ │ │ │ │ └── 00 │ │ │ │ └── up │ │ │ │ ├── klogd-log │ │ │ │ ├── type │ │ │ │ ├── consumer-for │ │ │ │ ├── dependencies.d │ │ │ │ │ └── mount-rwfs │ │ │ │ ├── pipeline-name │ │ │ │ └── run │ │ │ │ ├── mount-disks │ │ │ │ ├── type │ │ │ │ └── contents.d │ │ │ │ │ ├── mount-rwfs │ │ │ │ │ └── mount-userfs │ │ │ │ ├── mount-proc │ │ │ │ ├── type │ │ │ │ ├── dependencies.d │ │ │ │ │ └── 00 │ │ │ │ └── up │ │ │ │ ├── mount-rwfs │ │ │ │ ├── type │ │ │ │ ├── dependencies.d │ │ │ │ │ └── init-coldplug │ │ │ │ ├── down │ │ │ │ └── up │ │ │ │ ├── mount-sys │ │ │ │ ├── dependencies.d │ │ │ │ │ └── 00 │ │ │ │ ├── type │ │ │ │ └── up │ │ │ │ ├── ok-local │ │ │ │ ├── contents.d │ │ │ │ │ ├── btmpd │ │ │ │ │ ├── mdevd │ │ │ │ │ ├── utmpd │ │ │ │ │ ├── wtmpd │ │ │ │ │ ├── init-utmp │ │ │ │ │ ├── mount-disks │ │ │ │ │ ├── fifodir-cleanup │ │ │ │ │ ├── klogd-pipeline │ │ │ │ │ ├── mount-virtual │ │ │ │ │ └── syslogd-pipeline │ │ │ │ └── type │ │ │ │ ├── sshd-4-log │ │ │ │ ├── type │ │ │ │ ├── consumer-for │ │ │ │ ├── dependencies.d │ │ │ │ │ └── mount-rwfs │ │ │ │ ├── pipeline-name │ │ │ │ └── run │ │ │ │ ├── sshd-4 │ │ │ │ ├── type │ │ │ │ ├── dependencies.d │ │ │ │ │ ├── init-eth0 │ │ │ │ │ ├── init-utmp │ │ │ │ │ └── init-sysctl │ │ │ │ ├── notification-fd │ │ │ │ ├── data │ │ │ │ │ └── rules │ │ │ │ │ │ └── ip4 │ │ │ │ │ │ └── 0.0.0.0_0 │ │ │ │ │ │ └── allow │ │ │ │ ├── producer-for │ │ │ │ └── run │ │ │ │ ├── syslogd │ │ │ │ ├── type │ │ │ │ ├── dependencies.d │ │ │ │ │ └── init-dev │ │ │ │ ├── notification-fd │ │ │ │ ├── producer-for │ │ │ │ └── run │ │ │ │ ├── fifodir-cleanup │ │ │ │ ├── type │ │ │ │ ├── dependencies.d │ │ │ │ │ └── 00 │ │ │ │ └── run │ │ │ │ ├── init-coldplug │ │ │ │ ├── type │ │ │ │ ├── dependencies.d │ │ │ │ │ ├── init-dev │ │ │ │ │ └── mdevd │ │ │ │ └── up │ │ │ │ ├── init-sysctl │ │ │ │ ├── type │ │ │ │ ├── dependencies.d │ │ │ │ │ └── mount-proc │ │ │ │ └── up │ │ │ │ ├── mount-devpts │ │ │ │ ├── type │ │ │ │ ├── dependencies.d │ │ │ │ │ └── init-dev │ │ │ │ └── up │ │ │ │ ├── mount-userfs │ │ │ │ ├── type │ │ │ │ ├── dependencies.d │ │ │ │ │ └── init-coldplug │ │ │ │ ├── down │ │ │ │ └── up │ │ │ │ ├── mount-virtual │ │ │ │ ├── type │ │ │ │ └── contents.d │ │ │ │ │ ├── mount-devpts │ │ │ │ │ ├── mount-proc │ │ │ │ │ ├── mount-sys │ │ │ │ │ └── mount-tmp │ │ │ │ └── syslogd-log │ │ │ │ ├── type │ │ │ │ ├── consumer-for │ │ │ │ ├── dependencies.d │ │ │ │ └── mount-rwfs │ │ │ │ ├── pipeline-name │ │ │ │ └── run │ │ ├── resolv.conf │ │ ├── motd │ │ ├── shells │ │ ├── issue.net │ │ ├── dropbear │ │ │ └── dropbear_rsa_host_key │ │ ├── group │ │ ├── sysctl.conf │ │ ├── execline-startup │ │ ├── execline-shell │ │ ├── shadow │ │ ├── passwd │ │ └── mdev.conf │ ├── home │ ├── lib │ │ └── modules │ │ │ └── .empty │ ├── mnt │ │ ├── rwfs │ │ │ └── .empty │ │ └── userfs │ │ │ └── .empty │ ├── root │ │ ├── .ssh │ │ │ └── .empty │ │ ├── .execline-shell │ │ └── .execline-loginshell │ ├── var │ └── bin │ │ ├── ll │ │ └── pps ├── rwfs │ └── var │ │ ├── etc │ │ └── .empty │ │ ├── run │ │ └── .empty │ │ ├── tmp │ │ └── .empty │ │ └── log │ │ ├── klogd │ │ └── .empty │ │ ├── sshd-4 │ │ └── .empty │ │ ├── wtmpd │ │ ├── btmp │ │ └── wtmp │ │ ├── btmp │ │ ├── syslogd │ │ └── .empty │ │ └── wtmp └── userfs │ └── home │ └── guest │ ├── .ssh │ └── .empty │ ├── .execline-shell │ └── .execline-loginshell ├── .gitignore ├── sub ├── skarnet.org │ ├── rc.shutdown.final │ ├── rc.shutdown │ ├── runlevel │ ├── rc.init │ └── Makefile ├── layout │ ├── permissions │ ├── Makefile │ └── copylayout ├── dropbear │ ├── localoptions.h │ └── Makefile ├── kernel │ ├── noobjtool.patch │ ├── Makefile.ncurses │ └── Makefile ├── dev │ ├── Makefile.zlib │ ├── Makefile.make │ ├── Makefile.strace │ ├── Makefile.libressl │ ├── Makefile.git │ └── Makefile.curl ├── bearssl │ └── Makefile ├── busybox │ ├── Makefile │ └── host-full-config ├── e2fsprogs │ └── Makefile ├── kmod │ └── Makefile └── xz │ └── Makefile ├── AUTHORS ├── bin ├── setuidgid ├── makenamelink ├── makeqcow2 ├── fake-pkg-config ├── cpa └── makelinks ├── CONTRIBUTING ├── run-qemu ├── lh-config.dist ├── DCO ├── doc ├── index.html ├── INTERNALS.md └── DEPENDENCIES-BUILD.md ├── make ├── Makefile ├── README.md └── COPYING /layout/rootfs/lib32: -------------------------------------------------------------------------------- 1 | lib -------------------------------------------------------------------------------- /layout/rootfs/lib64: -------------------------------------------------------------------------------- 1 | lib -------------------------------------------------------------------------------- /layout/rootfs/boot/.empty: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rootfs/command/.empty: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rootfs/dev/.empty: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rootfs/library.so: -------------------------------------------------------------------------------- 1 | lib -------------------------------------------------------------------------------- /layout/rootfs/proc/.empty: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rootfs/run/.empty: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rootfs/sys/.empty: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rootfs/tmp/.empty: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rwfs/var/etc/.empty: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rwfs/var/run/.empty: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rwfs/var/tmp/.empty: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rootfs/etc/issue: -------------------------------------------------------------------------------- 1 | issue.net -------------------------------------------------------------------------------- /layout/rootfs/home: -------------------------------------------------------------------------------- 1 | mnt/userfs/home -------------------------------------------------------------------------------- /layout/rootfs/lib/modules/.empty: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rootfs/mnt/rwfs/.empty: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rootfs/mnt/userfs/.empty: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rootfs/root/.ssh/.empty: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rootfs/var: -------------------------------------------------------------------------------- 1 | mnt/rwfs/var -------------------------------------------------------------------------------- /layout/rwfs/var/log/klogd/.empty: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rwfs/var/log/sshd-4/.empty: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rwfs/var/log/wtmpd/btmp: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rwfs/var/log/wtmpd/wtmp: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rwfs/var/log/btmp: -------------------------------------------------------------------------------- 1 | wtmpd/btmp -------------------------------------------------------------------------------- /layout/rwfs/var/log/syslogd/.empty: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rwfs/var/log/wtmp: -------------------------------------------------------------------------------- 1 | wtmpd/wtmp -------------------------------------------------------------------------------- /layout/userfs/home/guest/.ssh/.empty: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | lh-config 2 | output/ 3 | *.log 4 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/00/down: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /layout/rootfs/etc/resolv.conf: -------------------------------------------------------------------------------- 1 | nameserver 10.0.2.3 2 | -------------------------------------------------------------------------------- /layout/rootfs/etc/motd: -------------------------------------------------------------------------------- 1 | Welcome to %%HOSTNAME%%. 2 | 3 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/00/type: -------------------------------------------------------------------------------- 1 | oneshot 2 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/btmpd/type: -------------------------------------------------------------------------------- 1 | longrun 2 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/init-utmp/down: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/klogd/type: -------------------------------------------------------------------------------- 1 | longrun 2 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/mdevd/type: -------------------------------------------------------------------------------- 1 | longrun 2 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/mount-tmp/down: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/nsssd/type: -------------------------------------------------------------------------------- 1 | longrun 2 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/ok-lan/type: -------------------------------------------------------------------------------- 1 | bundle 2 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/utmpd/type: -------------------------------------------------------------------------------- 1 | longrun 2 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/wtmpd/type: -------------------------------------------------------------------------------- 1 | longrun 2 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/btmpd/dependencies.d/nsssd: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/btmpd/notification-fd: -------------------------------------------------------------------------------- 1 | 3 2 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/default/contents.d/ok-lan: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/default/contents.d/ok-local: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/default/type: -------------------------------------------------------------------------------- 1 | bundle 2 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/init-dev/type: -------------------------------------------------------------------------------- 1 | oneshot 2 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/init-eth0/type: -------------------------------------------------------------------------------- 1 | oneshot 2 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/init-lo/type: -------------------------------------------------------------------------------- 1 | oneshot 2 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/init-route/type: -------------------------------------------------------------------------------- 1 | oneshot 2 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/init-utmp-early/down: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/init-utmp/type: -------------------------------------------------------------------------------- 1 | oneshot 2 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/klogd-log/type: -------------------------------------------------------------------------------- 1 | longrun 2 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/mdevd/dependencies.d/nsssd: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/mdevd/notification-fd: -------------------------------------------------------------------------------- 1 | 3 2 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/mount-disks/type: -------------------------------------------------------------------------------- 1 | bundle 2 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/mount-proc/type: -------------------------------------------------------------------------------- 1 | oneshot 2 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/mount-rwfs/type: -------------------------------------------------------------------------------- 1 | oneshot 2 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/mount-sys/dependencies.d/00: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/mount-sys/type: -------------------------------------------------------------------------------- 1 | oneshot 2 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/mount-tmp/dependencies.d/00: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/mount-tmp/type: -------------------------------------------------------------------------------- 1 | oneshot 2 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/nsssd/dependencies.d/00: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/nsssd/notification-fd: -------------------------------------------------------------------------------- 1 | 3 2 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/ok-lan/contents.d/init-eth0: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/ok-lan/contents.d/init-lo: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/ok-lan/contents.d/sshd-4: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/ok-local/contents.d/btmpd: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/ok-local/contents.d/mdevd: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/ok-local/contents.d/utmpd: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/ok-local/contents.d/wtmpd: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/ok-local/type: -------------------------------------------------------------------------------- 1 | bundle 2 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/sshd-4-log/type: -------------------------------------------------------------------------------- 1 | longrun 2 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/sshd-4/type: -------------------------------------------------------------------------------- 1 | longrun 2 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/syslogd/type: -------------------------------------------------------------------------------- 1 | longrun 2 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/utmpd/dependencies.d/nsssd: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/utmpd/notification-fd: -------------------------------------------------------------------------------- 1 | 3 2 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/wtmpd/dependencies.d/nsssd: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/wtmpd/notification-fd: -------------------------------------------------------------------------------- 1 | 3 2 | -------------------------------------------------------------------------------- /layout/rootfs/etc/shells: -------------------------------------------------------------------------------- 1 | /bin/sh 2 | /etc/execline-startup 3 | -------------------------------------------------------------------------------- /sub/skarnet.org/rc.shutdown.final: -------------------------------------------------------------------------------- 1 | #!/command/execlineb -P 2 | -------------------------------------------------------------------------------- /layout/rootfs/etc/issue.net: -------------------------------------------------------------------------------- 1 | This is the %%HOSTNAME%% console. 2 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/btmpd/dependencies.d/mount-rwfs: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/fifodir-cleanup/type: -------------------------------------------------------------------------------- 1 | longrun 2 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/init-coldplug/type: -------------------------------------------------------------------------------- 1 | oneshot 2 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/init-sysctl/type: -------------------------------------------------------------------------------- 1 | oneshot 2 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/init-utmp-early/type: -------------------------------------------------------------------------------- 1 | oneshot 2 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/init-utmp/dependencies.d/btmpd: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/init-utmp/dependencies.d/utmpd: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/init-utmp/dependencies.d/wtmpd: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/klogd-log/consumer-for: -------------------------------------------------------------------------------- 1 | klogd 2 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/klogd/dependencies.d/mount-proc: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/klogd/producer-for: -------------------------------------------------------------------------------- 1 | klogd-log 2 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/mdevd/dependencies.d/init-dev: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/mdevd/dependencies.d/mount-sys: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/mount-devpts/type: -------------------------------------------------------------------------------- 1 | oneshot 2 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/mount-proc/dependencies.d/00: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/mount-userfs/type: -------------------------------------------------------------------------------- 1 | oneshot 2 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/mount-virtual/type: -------------------------------------------------------------------------------- 1 | bundle 2 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/ok-lan/contents.d/init-route: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/ok-local/contents.d/init-utmp: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/ok-local/contents.d/mount-disks: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/sshd-4/dependencies.d/init-eth0: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/sshd-4/dependencies.d/init-utmp: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/sshd-4/notification-fd: -------------------------------------------------------------------------------- 1 | 3 2 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/syslogd-log/type: -------------------------------------------------------------------------------- 1 | longrun 2 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/syslogd/dependencies.d/init-dev: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/syslogd/notification-fd: -------------------------------------------------------------------------------- 1 | 3 2 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/wtmpd/dependencies.d/mount-rwfs: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/btmpd/dependencies.d/init-utmp-early: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/fifodir-cleanup/dependencies.d/00: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/init-coldplug/dependencies.d/init-dev: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/init-coldplug/dependencies.d/mdevd: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/init-dev/dependencies.d/mount-proc: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/init-eth0/dependencies.d/init-sysctl: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/init-lo/dependencies.d/init-coldplug: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/init-lo/dependencies.d/init-sysctl: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/init-route/dependencies.d/init-eth0: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/init-sysctl/dependencies.d/mount-proc: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/init-utmp-early/dependencies.d/00: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/klogd-log/dependencies.d/mount-rwfs: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/mount-devpts/dependencies.d/init-dev: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/mount-disks/contents.d/mount-rwfs: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/mount-disks/contents.d/mount-userfs: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/mount-virtual/contents.d/mount-devpts: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/mount-virtual/contents.d/mount-proc: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/mount-virtual/contents.d/mount-sys: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/mount-virtual/contents.d/mount-tmp: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/ok-local/contents.d/fifodir-cleanup: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/ok-local/contents.d/klogd-pipeline: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/ok-local/contents.d/mount-virtual: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/ok-local/contents.d/syslogd-pipeline: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/sshd-4-log/consumer-for: -------------------------------------------------------------------------------- 1 | sshd-4 2 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/sshd-4-log/dependencies.d/mount-rwfs: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/sshd-4/data/rules/ip4/0.0.0.0_0/allow: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/sshd-4/dependencies.d/init-sysctl: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/sshd-4/producer-for: -------------------------------------------------------------------------------- 1 | sshd-4-log 2 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/syslogd-log/consumer-for: -------------------------------------------------------------------------------- 1 | syslogd 2 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/syslogd-log/dependencies.d/mount-rwfs: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/syslogd/producer-for: -------------------------------------------------------------------------------- 1 | syslogd-log 2 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/utmpd/dependencies.d/init-utmp-early: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/wtmpd/dependencies.d/init-utmp-early: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/init-coldplug/up: -------------------------------------------------------------------------------- 1 | mdevd-coldplug -O4 2 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/init-eth0/dependencies.d/init-coldplug: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/klogd-log/pipeline-name: -------------------------------------------------------------------------------- 1 | klogd-pipeline 2 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/mount-rwfs/dependencies.d/init-coldplug: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/mount-rwfs/down: -------------------------------------------------------------------------------- 1 | s6-umount /mnt/rwfs 2 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/mount-userfs/dependencies.d/init-coldplug: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/mount-proc/up: -------------------------------------------------------------------------------- 1 | s6-mount -wt proc proc /proc 2 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/mount-sys/up: -------------------------------------------------------------------------------- 1 | s6-mount -wt sysfs sys /sys 2 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/mount-userfs/down: -------------------------------------------------------------------------------- 1 | s6-umount /mnt/userfs 2 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/sshd-4-log/pipeline-name: -------------------------------------------------------------------------------- 1 | sshd-4-pipeline 2 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/syslogd-log/pipeline-name: -------------------------------------------------------------------------------- 1 | syslogd-pipeline 2 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/init-route/up: -------------------------------------------------------------------------------- 1 | ip route add default via 10.0.2.2 2 | -------------------------------------------------------------------------------- /sub/skarnet.org/rc.shutdown: -------------------------------------------------------------------------------- 1 | #!/command/execlineb -P 2 | 3 | s6-rc -v2 -bda change 4 | -------------------------------------------------------------------------------- /sub/skarnet.org/runlevel: -------------------------------------------------------------------------------- 1 | #!/command/execlineb -S1 2 | 3 | s6-rc -v2 -up change $1 4 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/init-route/down: -------------------------------------------------------------------------------- 1 | foreground { ip route del default } 2 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/mount-rwfs/up: -------------------------------------------------------------------------------- 1 | s6-mount -wt ext4 /dev/vdb /mnt/rwfs 2 | -------------------------------------------------------------------------------- /layout/rootfs/bin/ll: -------------------------------------------------------------------------------- 1 | #!/command/execlineb -P 2 | pipeline 3 | { 4 | ls -la 5 | } 6 | less 7 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/mount-userfs/up: -------------------------------------------------------------------------------- 1 | s6-mount -wt ext4 /dev/vdc /mnt/userfs 2 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/mount-tmp/up: -------------------------------------------------------------------------------- 1 | s6-mount -wt tmpfs -o nodev,mode=1777 tmpfs /tmp 2 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/00/up: -------------------------------------------------------------------------------- 1 | if { s6-echo "init stage2 starting" } 2 | s6-hostname %%HOSTNAME%% 3 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/mdevd/run: -------------------------------------------------------------------------------- 1 | #!/command/execlineb -S1 2 | 3 | exec -c 4 | mdevd -D3 -O4 5 | -------------------------------------------------------------------------------- /layout/rootfs/root/.execline-shell: -------------------------------------------------------------------------------- 1 | #!/command/execlineb -S0 2 | export PS1 "${USER}@%%HOSTNAME%%:${PWD} # " 3 | /bin/ash $@ 4 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/init-lo/down: -------------------------------------------------------------------------------- 1 | foreground { ip link set dev lo down } 2 | foreground { bcnm-waitif -d 2 lo } 3 | -------------------------------------------------------------------------------- /layout/userfs/home/guest/.execline-shell: -------------------------------------------------------------------------------- 1 | #!/command/execlineb -S0 2 | export PS1 "${USER}@%%HOSTNAME%%:${PWD} $ " 3 | /bin/ash $@ 4 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/init-eth0/down: -------------------------------------------------------------------------------- 1 | foreground { ip link set dev eth0 down } 2 | foreground { bcnm-waitif -d 2 eth0 } 3 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/init-lo/up: -------------------------------------------------------------------------------- 1 | if { bcnm-waitif 1 lo } 2 | if { ip addr add 127.0.0.1/8 dev lo } 3 | ip link set dev lo up 4 | -------------------------------------------------------------------------------- /layout/rootfs/root/.execline-loginshell: -------------------------------------------------------------------------------- 1 | #!/command/execlineb -S0 2 | /command/importas -D /etc/execline-shell SHELL SHELL 3 | $SHELL $@ 4 | -------------------------------------------------------------------------------- /sub/skarnet.org/rc.init: -------------------------------------------------------------------------------- 1 | #!/command/execlineb -S1 2 | 3 | if { s6-rc-init /run/service } 4 | /etc/s6-linux-init/current/scripts/runlevel $1 5 | -------------------------------------------------------------------------------- /layout/rootfs/bin/pps: -------------------------------------------------------------------------------- 1 | #!/command/execlineb -P 2 | pipeline 3 | { 4 | s6-ps -H -o user,pid,vsize,rss,tty,s,start,cttime,args 5 | } 6 | less 7 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/klogd/run: -------------------------------------------------------------------------------- 1 | #!/command/execlineb -S1 2 | fdmove -c 2 1 3 | redirfd -r 0 /proc/kmsg 4 | exec -c 5 | ucspilogd 6 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/syslogd/run: -------------------------------------------------------------------------------- 1 | #!/command/execlineb -S1 2 | s6-envuidgid syslog 3 | fdclose 0 4 | exec -c 5 | s6-socklog -d3 6 | -------------------------------------------------------------------------------- /layout/userfs/home/guest/.execline-loginshell: -------------------------------------------------------------------------------- 1 | #!/command/execlineb -S0 2 | /command/importas -D /etc/execline-shell SHELL SHELL 3 | $SHELL $@ 4 | -------------------------------------------------------------------------------- /layout/rootfs/etc/dropbear/dropbear_rsa_host_key: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skarnet/lh-bootstrap/HEAD/layout/rootfs/etc/dropbear/dropbear_rsa_host_key -------------------------------------------------------------------------------- /layout/rootfs/etc/group: -------------------------------------------------------------------------------- 1 | root:x:0: 2 | users:x:100: 3 | catchlog:x:98: 4 | nogroup:x:65534: 5 | log:x:61: 6 | fdh:x:76: 7 | utmp:x:99: 8 | nsss:x:97: 9 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/init-eth0/up: -------------------------------------------------------------------------------- 1 | if { bcnm-waitif 1 eth0 } 2 | if { ip addr add 10.0.2.1/24 dev eth0 } 3 | ip link set dev eth0 up 4 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/klogd-log/run: -------------------------------------------------------------------------------- 1 | #!/command/execlineb -S1 2 | s6-setuidgid kllog 3 | exec -c 4 | s6-log t s1000000 n20 /var/log/klogd 5 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/sshd-4-log/run: -------------------------------------------------------------------------------- 1 | #!/command/execlineb -S1 2 | s6-setuidgid sshlog 3 | exec -c 4 | s6-log t s1000000 n20 /var/log/sshd-4 5 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/syslogd-log/run: -------------------------------------------------------------------------------- 1 | #!/command/execlineb -S1 2 | s6-setuidgid sysllog 3 | exec -c 4 | s6-log t s1000000 n20 /var/log/syslogd 5 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/mount-devpts/up: -------------------------------------------------------------------------------- 1 | if { s6-mkdir -p -m 0755 -- /dev/pts } 2 | s6-mount -wt devpts -o noexec,nosuid,gid=0,mode=0600 devpts /dev/pts 3 | -------------------------------------------------------------------------------- /AUTHORS: -------------------------------------------------------------------------------- 1 | Main author: 2 | Laurent Bercot 3 | 4 | Contributors: 5 | Ivan Chollet 6 | Dimitrije Dinic 7 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/nsssd/run: -------------------------------------------------------------------------------- 1 | #!/command/execlineb -S1 2 | 3 | fdmove -c 2 1 4 | s6-envuidgid nsss 5 | fdmove 1 3 6 | s6-ipcserver -1 -U -c 1000 -- s 7 | nsssd-unix 8 | -------------------------------------------------------------------------------- /layout/rootfs/etc/sysctl.conf: -------------------------------------------------------------------------------- 1 | kernel/modprobe /bin/modprobe 2 | kernel/panic 60 3 | kernel/panic_on_oops 1 4 | kernel/poweroff_cmd /bin/poweroff 5 | vm/overcommit_memory 2 6 | vm/overcommit_ratio 100 7 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/utmpd/run: -------------------------------------------------------------------------------- 1 | #!/command/execlineb -S1 2 | 3 | fdmove -c 2 1 4 | s6-setuidgid utmp 5 | cd /run/utmps 6 | fdmove 1 3 7 | s6-ipcserver -1 -c 1000 -- .utmpd-socket 8 | utmps-utmpd 9 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/init-utmp-early/up: -------------------------------------------------------------------------------- 1 | if { s6-mkdir -p -m 0755 /run/utmps } 2 | if { s6-envuidgid utmp s6-chown -U -- /run/utmps } 3 | s6-setuidgid utmp 4 | redirfd -w 1 /run/utmps/utmp 5 | exit 0 6 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/sshd-4/run: -------------------------------------------------------------------------------- 1 | #!/command/execlineb -S1 2 | fdmove -c 2 1 3 | fdmove 1 3 4 | s6-tcpserver -v -1 -- 10.0.2.1 22 5 | s6-tcpserver-access -v 2 -Hl0 -t 5000 -i data/rules -- 6 | dropbear -i -K 60 7 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/wtmpd/run: -------------------------------------------------------------------------------- 1 | #!/command/execlineb -S1 2 | fdmove -c 2 1 3 | s6-setuidgid utmp 4 | cd /var/log/wtmpd 5 | fdmove 1 3 6 | s6-ipcserver -1 -c 1000 -- /run/utmps/.wtmpd-socket 7 | utmps-wtmpd wtmp 8 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/btmpd/run: -------------------------------------------------------------------------------- 1 | #!/command/execlineb -S1 2 | 3 | fdmove -c 2 1 4 | s6-setuidgid utmp 5 | cd /var/log/wtmpd 6 | fdmove 1 3 7 | s6-ipcserver -1 -c 1000 -- /run/utmps/.btmpd-socket 8 | utmps-wtmpd btmp 9 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/init-sysctl/up: -------------------------------------------------------------------------------- 1 | redirfd -r 0 /etc/sysctl.conf 2 | forstdin -nCd"\n" -- LINE 3 | importas -u LINE LINE 4 | multidefine -C $LINE { CTL VALUE } 5 | redirfd -w 1 /proc/sys/$CTL 6 | s6-echo $VALUE 7 | -------------------------------------------------------------------------------- /bin/setuidgid: -------------------------------------------------------------------------------- 1 | #!/bin/sh -e 2 | 3 | test "$#" -ge 2 || { echo "setuidgid: too few arguments" 1>&2 ; exit 100 ; } 4 | 5 | wd=$(pwd) 6 | 7 | exec su -s /bin/sh -p -c "PATH=$PATH ; export PATH ; cd $wd ; exec \"\$0\" \"\$@\"" -- "$@" 8 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/init-utmp/up: -------------------------------------------------------------------------------- 1 | backtick -E kversion { uname -r } 2 | if { utmps-write -t 2000 -uw -l reboot -p 0 -h ${kversion} -- "~~" BOOT_TIME "~" } 3 | utmps-write -t 2000 -uw -l runlevel -p 20018 -h ${kversion} -- "~~" RUN_LVL "~" 4 | -------------------------------------------------------------------------------- /bin/makenamelink: -------------------------------------------------------------------------------- 1 | #!/bin/sh -e 2 | 3 | test "$#" -ge 4 || { echo "makenamelink: too few arguments" 1>&2 ; exit 100 ; } 4 | 5 | base=${1%%/} 6 | link="$2" 7 | real="$3" 8 | tmp="$4" 9 | 10 | rm -f "$tmp/$link" 11 | ln -s "$real" "$tmp/$link" 12 | mv -f "$tmp/$link" "$base"/ 13 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/fifodir-cleanup/run: -------------------------------------------------------------------------------- 1 | #!/command/execlineb -S1 2 | fdmove -c 2 1 3 | if 4 | { 5 | forbacktickx -p -d"\n" i { s6-ls /run/service } 6 | importas -u i i 7 | s6-cleanfifodir /run/service/${i}/event 8 | } 9 | s6-setuidgid nobody 10 | s6-sleep 86400 11 | -------------------------------------------------------------------------------- /CONTRIBUTING: -------------------------------------------------------------------------------- 1 | Please add a Signed-Off-By: line at the end of your commit, 2 | which certifies that you have the right and authority to pass 3 | it on as an open-source patch, as explicited in the Developer's 4 | Certificate of Origin available in this project's DCO file, 5 | or at https://developercertificate.org/ 6 | -------------------------------------------------------------------------------- /bin/makeqcow2: -------------------------------------------------------------------------------- 1 | #!/bin/sh -e 2 | 3 | name="$1" 4 | size="$2" 5 | 6 | truncate -s "$size" "$name".raw 7 | mkfs.ext4 -b 4096 -d "$name" -F -L `basename "$name"` -O ^huge_file -q -U random "$name".raw 8 | qemu-img convert -f raw -O qcow2 -c -o compression_type=zstd "$name".raw "$name".qcow2 9 | exec rm -f "$name".raw 10 | -------------------------------------------------------------------------------- /layout/rootfs/etc/execline-startup: -------------------------------------------------------------------------------- 1 | #!/command/execlineb -S0 2 | 3 | /command/multisubstitute 4 | { 5 | importas -i HOME HOME 6 | importas -i LOGNAME LOGNAME 7 | } 8 | /command/export PATH "/command:/bin" 9 | /command/export USER $LOGNAME 10 | export SHELL /etc/execline-shell 11 | fdblock 0 fdblock 1 fdblock 2 12 | 13 | ${HOME}/.execline-loginshell $@ 14 | -------------------------------------------------------------------------------- /layout/rootfs/etc/s6-rc/source-base/init-dev/up: -------------------------------------------------------------------------------- 1 | foreground { s6-ln -sf /proc/self/fd /dev } 2 | foreground { s6-ln -sf /proc/kcore /dev/core } 3 | foreground { s6-ln -sf loop0 /dev/loop } 4 | foreground { s6-ln -sf /run/shm /dev } 5 | foreground { s6-ln -sf fd/0 /dev/stdin } 6 | foreground { s6-ln -sf fd/1 /dev/stdout } 7 | foreground { s6-ln -sf fd/2 /dev/stderr } 8 | -------------------------------------------------------------------------------- /bin/fake-pkg-config: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | exists () { 4 | test -d "${OUTPUT}/build-build/opt/ncurses/include/$1" 5 | } 6 | 7 | cflags () { 8 | echo "-I${OUTPUT}/build-build/opt/ncurses/include/${1} -DKBUILD_NO_NLS" 9 | } 10 | 11 | libs () { 12 | echo "-static -L${OUTPUT}/build-build/opt/ncurses/lib -l$1" 13 | } 14 | 15 | case "$1" in 16 | --exists) exists "$2" ;; 17 | --cflags) cflags "$2" ;; 18 | --libs) libs "$2" ;; 19 | esac 20 | -------------------------------------------------------------------------------- /layout/rootfs/etc/execline-shell: -------------------------------------------------------------------------------- 1 | #!/command/execlineb -S0 2 | 3 | backtick -n defaulthome 4 | { 5 | if -nt 6 | { 7 | backtick -n defaultuser { id -un } 8 | importas -u defaultuser defaultuser 9 | importas -D $defaultuser USER USER 10 | redirfd -w 2 /dev/null 11 | homeof ${USER} 12 | } 13 | s6-echo / 14 | } 15 | importas -u defaulthome defaulthome 16 | importas -D $defaulthome HOME HOME 17 | ${HOME}/.execline-shell $@ 18 | -------------------------------------------------------------------------------- /sub/layout/permissions: -------------------------------------------------------------------------------- 1 | rootfs/etc/shadow 0 0 0600 2 | 3 | rwfs/var/tmp 0 0 1777 4 | rwfs/var/log/klogd 102 61 2700 5 | rwfs/var/log/syslogd 104 61 2700 6 | rwfs/var/log/sshd-4 138 61 2700 7 | rwfs/var/log/wtmpd 99 99 2755 8 | rwfs/var/log/wtmpd/wtmp 99 99 0644 9 | rwfs/var/log/wtmpd/btmp 99 99 0644 10 | 11 | userfs/home/guest 1000 100 2755 12 | userfs/home/guest/.execline-shell 1000 100 0755 13 | userfs/home/guest/.execline-loginshell 1000 100 0755 14 | userfs/home/guest/.ssh 1000 100 2700 15 | -------------------------------------------------------------------------------- /bin/cpa: -------------------------------------------------------------------------------- 1 | #!/bin/sh -e 2 | 3 | test "$#" -ge 3 || { echo "cpa: fatal: too few arguments" 1>&2 ; exit 100 ; } 4 | 5 | output="$1" 6 | source=$($output/build-build/command/s6-linkname -f -- $2) 7 | dest="$3" 8 | 9 | 10 | srcname=$(basename "$source") 11 | destdir="$output"/$(dirname "$dest") 12 | destname=$(basename "$dest") 13 | 14 | { cd $(dirname "$source") && tar c "$srcname" ; } | { cd "$destdir" && tar x ; } 15 | if test "$srcname" != "$destname" ; then 16 | mv -f "$destdir/$srcname" "$destdir/$destname" 17 | fi 18 | -------------------------------------------------------------------------------- /layout/rootfs/etc/shadow: -------------------------------------------------------------------------------- 1 | root:$6$UbRjESrSfLBM6.Z4$WSPD5fcalaQp6zzUd/a7mwEjRO6qMFoyK3ZyfMv0MWZPItkAWDd2nOdwIcnLNRWGuYP24RQSxCUPYeqlnqizJ.:14792:0:99999:7::: 2 | guest:$6$npwPihIJ.5ikSEW4$FYxEqvund6y/I1GsN3P0bbY4/U/2J7Pi5PMATmSDJDunrpe7vTRIwGDjeE9CBeO.wP1GEEen47xJOb3BdRkD10:14314:0:99999:7::: 3 | catchlog:!:14761:0:99999:7::: 4 | nobody:!:14314:0:99999:7::: 5 | klog:!:14793:::::: 6 | kllog:!:14793:::::: 7 | syslog:!:14793:::::: 8 | sysllog:!:14793:::::: 9 | sysfdh:!:15041:::::: 10 | sshlog:!:14849:::::: 11 | utmp:!:14849:::::: 12 | nsss:!:14849:::::: 13 | -------------------------------------------------------------------------------- /layout/rootfs/etc/passwd: -------------------------------------------------------------------------------- 1 | root:x:0:0:root:/root:/etc/execline-startup 2 | guest:x:1000:100:guest:/home/guest:/etc/execline-startup 3 | catchlog:x:98:98:catchlog:/run/uncaught-logs:/nonexistent 4 | nobody:x:65534:65534:nobody:/:/nonexistent 5 | klog:x:101:61:klog:/:/nonexistent 6 | kllog:x:102:61:kllog:/:/nonexistent 7 | syslog:x:103:61:syslog:/:/nonexistent 8 | sysllog:x:104:61:sysllog:/:/nonexistent 9 | sysfdh:x:137:76:sysfdh:/:/nonexistent 10 | sshlog:x:138:61:sshlog:/var/log/sshd-4:/nonexistent 11 | utmp:x:99:99:utmp:/run/utmps:/nonexistent 12 | nsss:x:97:97:nsss:/run/service/nsssd:/nonexistent 13 | -------------------------------------------------------------------------------- /sub/dropbear/localoptions.h: -------------------------------------------------------------------------------- 1 | #ifndef LOCALOPTIONS_H 2 | 3 | #define NON_INETD_MODE 0 4 | #define INETD_MODE 1 5 | 6 | #define DROPBEAR_SMALL_CODE 0 7 | #define DROPBEAR_X11FWD 0 8 | #define DROPBEAR_BLOWFISH 0 9 | #define DROPBEAR_TWOFISH256 0 10 | #define DROPBEAR_TWOFISH128 0 11 | 12 | #define DROPBEAR_DELAY_HOSTKEY 0 13 | #define DROPBEAR_CURVE25519 1 14 | 15 | #define DROPBEAR_DH_GROUP1 0 16 | #define DROPBEAR_DH_GROUP16 1 17 | 18 | #define XAUTH_COMMAND "/bin/xauth -q" 19 | #undef SFTPSERVER_PATH 20 | #define DROPBEAR_PATH_SSH_PROGRAM "/bin/dbclient" 21 | #define DEFAULT_PATH "/command:/bin" 22 | 23 | #endif 24 | 25 | -------------------------------------------------------------------------------- /layout/rootfs/etc/mdev.conf: -------------------------------------------------------------------------------- 1 | urandom 0:0 0644 2 | random 0:0 0444 3 | kmem 0:0 0000 4 | console 0:0 0600 5 | null 0:0 0666 6 | zero 0:0 0444 7 | full 0:0 0222 8 | kmsg 0:0 0600 9 | mcelog 0:0 0600 10 | mmcblk0 0:0 0600 11 | mmcblk0p[1-7] 0:0 0600 12 | mem 0:0 0600 13 | cpu_dma_latency 0:0 0600 14 | memory_bandwidth 0:0 0600 15 | network_latency 0:0 0600 16 | network_throughput 0:0 0600 17 | port 0:0 0600 18 | ptp[0-3] 0:0 0600 19 | ptmx 0:0 0666 20 | rtc0 0:0 0600 21 | snapshot 0:0 0600 22 | tty 0:0 0666 23 | ttyS[0-1] 0:0 0600 24 | ttyAMA[0-3] 0:0 0600 25 | watchdog 0:0 0600 26 | watchdog0 0:0 0600 27 | 28 | $MODALIAS=.* 0:0 0600 @modprobe -b "$MODALIAS" 29 | -------------------------------------------------------------------------------- /run-qemu: -------------------------------------------------------------------------------- 1 | #!/bin/sh -e 2 | 3 | if test -n "$CONSOLE" ; then 4 | consoleoption="console=$CONSOLE" 5 | fi 6 | 7 | case "$QEMU_ARCH" in 8 | arm) cpuoption="-machine virt,highmem=off -cpu max" ;; 9 | aarch64) cpuoption="-M virt -cpu cortex-a57" ;; 10 | x86_64) cpuoption="-M pc -cpu qemu64" 11 | esac 12 | 13 | exec qemu-system-${QEMU_ARCH} -nographic $cpuoption -smp 4 -m 2G -nodefaults -display none -serial mon:stdio \ 14 | -kernel "$OUTPUT/kernel" \ 15 | -append "root=/dev/vda $consoleoption" \ 16 | -drive if=virtio,file=$OUTPUT/rootfs.qcow2,format=qcow2,media=disk,index=1 \ 17 | -drive if=virtio,file=$OUTPUT/rwfs.qcow2,format=qcow2,media=disk,index=2 \ 18 | -drive if=virtio,file=$OUTPUT/userfs.qcow2,format=qcow2,media=disk,index=3 \ 19 | -netdev user,id=eth0,hostfwd=::2222-10.0.2.1:22 \ 20 | -device virtio-net-pci,netdev=eth0 21 | -------------------------------------------------------------------------------- /sub/layout/Makefile: -------------------------------------------------------------------------------- 1 | 2 | $(OUTPUT)/tmp/.lh_layout_copied: $(OUTPUT)/tmp/.lh_prepared layout | $(OUTPUT)/build-build/.lh_skarnet_installed 3 | exec sub/layout/copylayout $(OUTPUT) 4 | exec setuidgid $(NORMALUSER) s6-touch $@ 5 | 6 | $(OUTPUT)/tmp/.lh_layout_s6rcdb_made: $(OUTPUT)/tmp/.lh_layout_copied | $(OUTPUT)/build-build/.lh_skarnet_installed 7 | stamp=$$(s6-clock) && s6-rc-compile -v2 -h sysfdh $(OUTPUT)/rootfs/etc/s6-rc/compiled-$$stamp $(OUTPUT)/rootfs/etc/s6-rc/source-base && s6-ln -s compiled-$$stamp $(OUTPUT)/rootfs/etc/s6-rc/compiled.new && s6-rename $(OUTPUT)/rootfs/etc/s6-rc/compiled.new $(OUTPUT)/rootfs/etc/s6-rc/compiled 8 | exec setuidgid $(NORMALUSER) s6-touch $@ 9 | 10 | $(OUTPUT)/tmp/.lh_layout_installed: $(OUTPUT)/tmp/.lh_layout_copied $(OUTPUT)/tmp/.lh_layout_s6rcdb_made | $(OUTPUT)/build-build/.lh_skarnet_installed 11 | exec setuidgid $(NORMALUSER) s6-touch $@ 12 | -------------------------------------------------------------------------------- /sub/kernel/noobjtool.patch: -------------------------------------------------------------------------------- 1 | diff -rNU3 linux-6.6.old/arch/x86/Kconfig linux-6.6/arch/x86/Kconfig 2 | --- linux-6.6.old/arch/x86/Kconfig 2023-10-30 03:31:08.000000000 +0100 3 | +++ linux-6.6/arch/x86/Kconfig 2023-11-01 17:12:13.679989615 +0100 4 | @@ -249,7 +249,7 @@ 5 | select HAVE_NOINSTR_HACK if HAVE_OBJTOOL 6 | select HAVE_NMI 7 | select HAVE_NOINSTR_VALIDATION if HAVE_OBJTOOL 8 | - select HAVE_OBJTOOL if X86_64 9 | +# select HAVE_OBJTOOL if X86_64 10 | select HAVE_OPTPROBES 11 | select HAVE_PCSPKR_PLATFORM 12 | select HAVE_PERF_EVENTS 13 | diff -rNU3 linux-6.6.old/include/linux/objtool.h linux-6.6/include/linux/objtool.h 14 | --- linux-6.6.old/include/linux/objtool.h 2023-10-30 03:31:08.000000000 +0100 15 | +++ linux-6.6/include/linux/objtool.h 2023-11-01 17:11:49.759989695 +0100 16 | @@ -156,6 +156,7 @@ 17 | #define STACK_FRAME_NON_STANDARD_FP(func) 18 | #define ANNOTATE_NOENDBR 19 | #define ASM_REACHABLE 20 | +#define VALIDATE_UNRET_BEGIN 21 | #else 22 | #define ANNOTATE_INTRA_FUNCTION_CALL 23 | .macro UNWIND_HINT type:req sp_reg=0 sp_offset=0 signal=0 24 | @@ -166,6 +167,8 @@ 25 | .endm 26 | .macro REACHABLE 27 | .endm 28 | +.macro VALIDATE_UNRET_BEGIN 29 | +.endm 30 | #endif 31 | 32 | #endif /* CONFIG_OBJTOOL */ 33 | -------------------------------------------------------------------------------- /bin/makelinks: -------------------------------------------------------------------------------- 1 | #!/bin/sh -e 2 | # 3 | # 4 | # "makelinks base linkdir realdir" does a "relative ln", relatively to "base". "linkdir" and "realdir" are relative path to subdirectories under "base". Symlinks are created into linkdir for files in realdir. The symlinks do not contain "base". 5 | # 6 | # 7 | 8 | test "$#" -ge 3 || { echo "makelinks: too few arguments" 1>&2 ; exit 100 ; } 9 | 10 | computerelative() { 11 | source="$1" 12 | target="$2" 13 | 14 | common="$source" 15 | result="" 16 | 17 | while test "${target#$common}" = "$target" ; do 18 | common="$(dirname $common)" 19 | if test -z "$result" ; then 20 | result=".." 21 | else 22 | result="../$result" 23 | fi 24 | done 25 | 26 | if test "$common" = "/" ; then 27 | result="$result/" 28 | fi 29 | 30 | forward="${target#$common}" 31 | 32 | if test -n "$result" -a -n "$forward" ; then 33 | result="$result$forward" 34 | elif test -n "$forward" ; then 35 | result="${forward:1}" 36 | fi 37 | 38 | echo "$result" 39 | } 40 | 41 | base=${1%%/} 42 | linkdir=${2%%/} 43 | realdir=${3%%/} 44 | 45 | targetdir=$(computerelative "$base$linkdir" "$base$realdir") 46 | 47 | for i in $(ls -1 "$base$realdir") ; do 48 | ln -sf "$targetdir/$i" "$base$linkdir/$i" || true 49 | done 50 | -------------------------------------------------------------------------------- /lh-config.dist: -------------------------------------------------------------------------------- 1 | # Set to the output directory. 2 | # By default, it's a subdirectory named "output" in lh-bootstrap's base directory. 3 | # OUTPUT= 4 | 5 | # Set to a non-privileged user on your system. 6 | # Most of the build will be performed as that user. 7 | NORMALUSER=nobody 8 | 9 | # The C compiler for your BUILD system. 10 | # Leave empty if you're using your distro's native compiler. 11 | # BUILD_CC= 12 | 13 | 14 | # The toolchain for your TARGET system 15 | # TRIPLE=x86_64-linux-musl 16 | # CROSS_BASE=/home/ska/toolchains/cross/$TRIPLE 17 | 18 | 19 | # Set this to true if you want your created rootfs to be statically linked. 20 | # By default, it will be true for musl toolchains, false for glibc toolchains. 21 | # TARGET_STATIC=false 22 | 23 | # Whether or not you want to copy the shared libc from the toolchain. 24 | # By default, the shared libs are copied if the build isn't static. 25 | # You can also optionally manually specify the sysroot to copy the libs from. 26 | # LIBC_COPY= 27 | # LIBC_SYSROOT= 28 | 29 | # Whether or not you want development packages 30 | # DEVELOPMENT=false 31 | 32 | # Filesystems size, as understood by libguestfs's virt-make-fs 33 | ROOTFS_SIZE=1024M 34 | RWFS_SIZE=512M 35 | USERFS_SIZE=128M 36 | 37 | # The device on which to spawn an early getty. 38 | # Leave empty for no early getty. 39 | CONSOLE= 40 | 41 | # Where to find your supermin for libguestfs. (Don't ask.) 42 | # LIBGUESTFS_PATH= 43 | -------------------------------------------------------------------------------- /sub/layout/copylayout: -------------------------------------------------------------------------------- 1 | #!/bin/sh -e 2 | 3 | output="$1" 4 | 5 | s6-hiercopy layout/rootfs $output/rootfs 6 | find "$output/rootfs" -type f -name .empty -size 0c -exec s6-rmrf {} \; 7 | s6-hiercopy layout/rwfs $output/rwfs 8 | find "$output/rwfs" -type f -name .empty -size 0c -exec s6-rmrf {} \; 9 | s6-hiercopy layout/userfs $output/userfs 10 | find "$output/userfs" -type f -name .empty -size 0c -exec s6-rmrf {} \; 11 | chown -R 0:0 $output/rootfs $output/rwfs $output/userfs 12 | 13 | buildtime=$(s6-clock) 14 | 15 | hostarch=$(s6-echo -- $TRIPLE | cut -f1 -d-) 16 | sed -i -e "s/%%HOSTNAME%%/lh-$hostarch/g" $output/rootfs/etc/motd $output/rootfs/etc/issue.net $output/rootfs/root/.execline-shell $output/userfs/home/guest/.execline-shell $output/rootfs/etc/s6-rc/source-base/00/up 17 | 18 | while read file user group perms ; do 19 | if eltest -n "$file" -a "$file" != "#" ; then 20 | s6-chown -u $user -g $group -- $output/$file 21 | s6-chmod $perms $output/$file 22 | fi 23 | done < sub/layout/permissions 24 | 25 | # If dynamic: copy shared libs from the toolchain into the target 26 | 27 | if ${LIBC_COPY} ; then 28 | for lib in lib lib32 lib64 ; do 29 | if eltest -d "$LIBC_SYSROOT/$lib" ; then 30 | s6-mkdir -p "$output/rootfs/$lib" 31 | for i in `ls -1 "$LIBC_SYSROOT/$lib" | grep -e '\.so$' -e '\.so\.'` ; do 32 | s6-hiercopy "$LIBC_SYSROOT/$lib/$i" "$output/rootfs/$lib/$i" 33 | done 34 | fi 35 | done 36 | fi 37 | -------------------------------------------------------------------------------- /DCO: -------------------------------------------------------------------------------- 1 | Developer Certificate of Origin 2 | Version 1.1 3 | 4 | Copyright (C) 2004, 2006 The Linux Foundation and its contributors. 5 | 1 Letterman Drive 6 | Suite D4700 7 | San Francisco, CA, 94129 8 | 9 | Everyone is permitted to copy and distribute verbatim copies of this 10 | license document, but changing it is not allowed. 11 | 12 | 13 | Developer's Certificate of Origin 1.1 14 | 15 | By making a contribution to this project, I certify that: 16 | 17 | (a) The contribution was created in whole or in part by me and I 18 | have the right to submit it under the open source license 19 | indicated in the file; or 20 | 21 | (b) The contribution is based upon previous work that, to the best 22 | of my knowledge, is covered under an appropriate open source 23 | license and I have the right under that license to submit that 24 | work with modifications, whether created in whole or in part 25 | by me, under the same open source license (unless I am 26 | permitted to submit under a different license), as indicated 27 | in the file; or 28 | 29 | (c) The contribution was provided directly to me by some other 30 | person who certified (a), (b) or (c) and I have not modified 31 | it. 32 | 33 | (d) I understand and agree that this project and the contribution 34 | are public and that a record of the contribution (including all 35 | personal information I submit with it, including my sign-off) is 36 | maintained indefinitely and may be redistributed consistent with 37 | this project or the open source license(s) involved. 38 | -------------------------------------------------------------------------------- /sub/dev/Makefile.zlib: -------------------------------------------------------------------------------- 1 | 2 | ZLIB_VERSION ?= 1.3.1 3 | 4 | clean-zlib: 5 | rm -f $(OUTPUT)/build-$(TRIPLE)/.lh_zlib_* 6 | 7 | 8 | $(OUTPUT)/sources/zlib-$(ZLIB_VERSION).tar.xz: | $(OUTPUT)/tmp/.lh_prepared $(OUTPUT)/build-build/.lh_skarnet_installed 9 | exec setuidgid $(NORMALUSER) cd $(OUTPUT)/sources wget https://zlib.net/zlib-$(ZLIB_VERSION).tar.xz 10 | 11 | $(OUTPUT)/build-$(TRIPLE)/.lh_zlib_dled: $(OUTPUT)/sources/zlib-$(ZLIB_VERSION).tar.xz | $(OUTPUT)/build-build/.lh_skarnet_installed 12 | exec setuidgid $(NORMALUSER) s6-touch $@ 13 | 14 | $(OUTPUT)/build-$(TRIPLE)/.lh_zlib_copied: $(OUTPUT)/build-$(TRIPLE)/.lh_zlib_dled | $(OUTPUT)/build-build/.lh_skarnet_installed 15 | exec setuidgid $(NORMALUSER) s6-rmrf $(OUTPUT)/build-$(TRIPLE)/zlib-$(ZLIB_VERSION) 16 | exec setuidgid $(NORMALUSER) cd $(OUTPUT)/build-$(TRIPLE) tar -Jxpvf $(OUTPUT)/sources/zlib-$(ZLIB_VERSION).tar.xz 17 | exec setuidgid $(NORMALUSER) s6-touch $@ 18 | 19 | $(OUTPUT)/build-$(TRIPLE)/.lh_zlib_configured: $(OUTPUT)/build-$(TRIPLE)/.lh_zlib_copied | $(OUTPUT)/build-build/.lh_skarnet_installed 20 | exec setuidgid $(NORMALUSER) cd $(OUTPUT)/build-$(TRIPLE)/zlib-$(ZLIB_VERSION) export CC "$(TARGET_CC)" export CHOST "$(TRIPLE)" ./configure --prefix=/opt/zlib-$(ZLIB_VERSION) 21 | exec setuidgid $(NORMALUSER) s6-touch $@ 22 | 23 | $(OUTPUT)/build-$(TRIPLE)/.lh_zlib_built: $(OUTPUT)/build-$(TRIPLE)/.lh_zlib_configured | $(OUTPUT)/build-build/.lh_skarnet_installed 24 | exec setuidgid $(NORMALUSER) cd $(OUTPUT)/build-$(TRIPLE)/zlib-$(ZLIB_VERSION) $(MAKE) 25 | exec setuidgid $(NORMALUSER) s6-touch $@ 26 | 27 | $(OUTPUT)/build-$(TRIPLE)/.lh_zlib_installed: $(OUTPUT)/build-$(TRIPLE)/.lh_zlib_built | $(OUTPUT)/tmp/.lh_prepared $(OUTPUT)/build-build/.lh_skarnet_installed $(OUTPUT)/tmp/.lh_layout_installed 28 | exec cd $(OUTPUT)/build-$(TRIPLE)/zlib-$(ZLIB_VERSION) $(MAKE) install DESTDIR=$(OUTPUT)/rootfs 29 | exec makenamelink $(OUTPUT)/rootfs/opt zlib zlib-$(ZLIB_VERSION) $(OUTPUT)/tmp 30 | exec setuidgid $(NORMALUSER) s6-touch $@ 31 | -------------------------------------------------------------------------------- /sub/dev/Makefile.make: -------------------------------------------------------------------------------- 1 | 2 | MAKE_VERSION ?= 4.4.1 3 | MAKE_MAKE_STATIC := $(if $(filter true,$(TARGET_STATIC)),LDFLAGS=-static,) 4 | 5 | clean-make: 6 | rm -f $(OUTPUT)/build-$(TRIPLE)/.lh_make_* 7 | 8 | 9 | $(OUTPUT)/sources/make-$(MAKE_VERSION).tar.gz: | $(OUTPUT)/tmp/.lh_prepared $(OUTPUT)/build-build/.lh_skarnet_installed 10 | exec setuidgid $(NORMALUSER) cd $(OUTPUT)/sources wget https://ftp.gnu.org//gnu/make/make-$(MAKE_VERSION).tar.gz 11 | 12 | $(OUTPUT)/build-$(TRIPLE)/.lh_make_dled: $(OUTPUT)/sources/make-$(MAKE_VERSION).tar.gz | $(OUTPUT)/build-build/.lh_skarnet_installed 13 | exec setuidgid $(NORMALUSER) s6-touch $@ 14 | 15 | $(OUTPUT)/build-$(TRIPLE)/.lh_make_copied: $(OUTPUT)/build-$(TRIPLE)/.lh_make_dled | $(OUTPUT)/build-build/.lh_skarnet_installed 16 | exec setuidgid $(NORMALUSER) s6-rmrf $(OUTPUT)/build-$(TRIPLE)/make-$(MAKE_VERSION) 17 | exec setuidgid $(NORMALUSER) cd $(OUTPUT)/build-$(TRIPLE) tar -zxpvf $(OUTPUT)/sources/make-$(MAKE_VERSION).tar.gz 18 | exec setuidgid $(NORMALUSER) s6-touch $@ 19 | 20 | $(OUTPUT)/build-$(TRIPLE)/.lh_make_configured: $(OUTPUT)/build-$(TRIPLE)/.lh_make_copied | $(OUTPUT)/build-build/.lh_skarnet_installed 21 | exec setuidgid $(NORMALUSER) cd $(OUTPUT)/build-$(TRIPLE)/make-$(MAKE_VERSION) export CC "$(TARGET_CC)" ./configure --host=$(TRIPLE) --prefix=/opt/make-$(MAKE_VERSION) --disable-nls --disable-rpath 22 | exec setuidgid $(NORMALUSER) s6-touch $@ 23 | 24 | $(OUTPUT)/build-$(TRIPLE)/.lh_make_built: $(OUTPUT)/build-$(TRIPLE)/.lh_make_configured | $(OUTPUT)/build-build/.lh_skarnet_installed 25 | exec setuidgid $(NORMALUSER) cd $(OUTPUT)/build-$(TRIPLE)/make-$(MAKE_VERSION) $(MAKE) $(MAKE_MAKE_STATIC) 26 | exec setuidgid $(NORMALUSER) s6-touch $@ 27 | 28 | $(OUTPUT)/build-$(TRIPLE)/.lh_make_installed: $(OUTPUT)/build-$(TRIPLE)/.lh_make_built | $(OUTPUT)/tmp/.lh_prepared $(OUTPUT)/build-build/.lh_skarnet_installed $(OUTPUT)/tmp/.lh_layout_installed 29 | exec cd $(OUTPUT)/build-$(TRIPLE)/make-$(MAKE_VERSION) $(MAKE) install DESTDIR=$(OUTPUT)/rootfs 30 | exec makenamelink $(OUTPUT)/rootfs/opt make make-$(MAKE_VERSION) $(OUTPUT)/tmp 31 | exec makelinks $(OUTPUT)/rootfs /bin /opt/make/bin 32 | exec setuidgid $(NORMALUSER) s6-touch $@ 33 | -------------------------------------------------------------------------------- /sub/dev/Makefile.strace: -------------------------------------------------------------------------------- 1 | 2 | STRACE_VERSION ?= 6.10 3 | STRACE_MAKE_STATIC := $(if $(filter true,$(TARGET_STATIC)),LDFLAGS=-static,) 4 | 5 | clean-strace: 6 | rm -f $(OUTPUT)/build-$(TRIPLE)/.lh_strace_* 7 | 8 | 9 | $(OUTPUT)/sources/strace-$(STRACE_VERSION).tar.xz: | $(OUTPUT)/tmp/.lh_prepared $(OUTPUT)/build-build/.lh_skarnet_installed 10 | exec setuidgid $(NORMALUSER) cd $(OUTPUT)/sources wget https://strace.io/files/$(STRACE_VERSION)/strace-$(STRACE_VERSION).tar.xz 11 | 12 | $(OUTPUT)/build-$(TRIPLE)/.lh_strace_dled: $(OUTPUT)/sources/strace-$(STRACE_VERSION).tar.xz | $(OUTPUT)/build-build/.lh_skarnet_installed 13 | exec setuidgid $(NORMALUSER) s6-touch $@ 14 | 15 | $(OUTPUT)/build-$(TRIPLE)/.lh_strace_copied: $(OUTPUT)/build-$(TRIPLE)/.lh_strace_dled | $(OUTPUT)/build-build/.lh_skarnet_installed 16 | exec setuidgid $(NORMALUSER) s6-rmrf $(OUTPUT)/build-$(TRIPLE)/strace-$(STRACE_VERSION) 17 | exec setuidgid $(NORMALUSER) cd $(OUTPUT)/build-$(TRIPLE) tar -Jxpvf $(OUTPUT)/sources/strace-$(STRACE_VERSION).tar.xz 18 | exec setuidgid $(NORMALUSER) s6-touch $@ 19 | 20 | $(OUTPUT)/build-$(TRIPLE)/.lh_strace_configured: $(OUTPUT)/build-$(TRIPLE)/.lh_strace_copied | $(OUTPUT)/build-build/.lh_skarnet_installed 21 | exec setuidgid $(NORMALUSER) cd $(OUTPUT)/build-$(TRIPLE)/strace-$(STRACE_VERSION) export CC "$(TARGET_CC)" export LIBS "-lrt -lpthread" ./configure --host=$(TRIPLE) --prefix=/opt/strace-$(STRACE_VERSION) --enable-mpers=no 22 | exec setuidgid $(NORMALUSER) s6-touch $@ 23 | 24 | $(OUTPUT)/build-$(TRIPLE)/.lh_strace_built: $(OUTPUT)/build-$(TRIPLE)/.lh_strace_configured | $(OUTPUT)/build-build/.lh_skarnet_installed 25 | exec setuidgid $(NORMALUSER) cd $(OUTPUT)/build-$(TRIPLE)/strace-$(STRACE_VERSION) $(MAKE) $(STRACE_MAKE_STATIC) 26 | exec setuidgid $(NORMALUSER) s6-touch $@ 27 | 28 | $(OUTPUT)/build-$(TRIPLE)/.lh_strace_installed: $(OUTPUT)/build-$(TRIPLE)/.lh_strace_built | $(OUTPUT)/tmp/.lh_prepared $(OUTPUT)/build-build/.lh_skarnet_installed $(OUTPUT)/tmp/.lh_layout_installed 29 | exec cd $(OUTPUT)/build-$(TRIPLE)/strace-$(STRACE_VERSION) $(MAKE) install DESTDIR=$(OUTPUT)/rootfs 30 | exec makenamelink $(OUTPUT)/rootfs/opt strace strace-$(STRACE_VERSION) $(OUTPUT)/tmp 31 | exec makelinks $(OUTPUT)/rootfs /bin /opt/strace/bin 32 | exec setuidgid $(NORMALUSER) s6-touch $@ 33 | -------------------------------------------------------------------------------- /sub/dev/Makefile.libressl: -------------------------------------------------------------------------------- 1 | 2 | LIBRESSL_VERSION ?= 3.9.2 3 | LIBRESSL_MAKE_STATIC := $(if $(filter true,$(TARGET_STATIC)),LDFLAGS="-s -all-static",LDFLAGS=-s) 4 | 5 | clean-libressl: 6 | rm -f $(OUTPUT)/build-$(TRIPLE)/.lh_libressl_* 7 | 8 | 9 | $(OUTPUT)/sources/libressl-$(LIBRESSL_VERSION).tar.gz: | $(OUTPUT)/tmp/.lh_prepared $(OUTPUT)/build-build/.lh_skarnet_installed 10 | exec setuidgid $(NORMALUSER) cd $(OUTPUT)/sources wget https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-$(LIBRESSL_VERSION).tar.gz 11 | 12 | $(OUTPUT)/build-$(TRIPLE)/.lh_libressl_dled: $(OUTPUT)/sources/libressl-$(LIBRESSL_VERSION).tar.gz | $(OUTPUT)/build-build/.lh_skarnet_installed 13 | exec setuidgid $(NORMALUSER) s6-touch $@ 14 | 15 | $(OUTPUT)/build-$(TRIPLE)/.lh_libressl_copied: $(OUTPUT)/build-$(TRIPLE)/.lh_libressl_dled | $(OUTPUT)/build-build/.lh_skarnet_installed 16 | exec setuidgid $(NORMALUSER) s6-rmrf $(OUTPUT)/build-$(TRIPLE)/libressl-$(LIBRESSL_VERSION) 17 | exec setuidgid $(NORMALUSER) cd $(OUTPUT)/build-$(TRIPLE) tar -zxpvf $(OUTPUT)/sources/libressl-$(LIBRESSL_VERSION).tar.gz 18 | exec setuidgid $(NORMALUSER) s6-touch $@ 19 | 20 | $(OUTPUT)/build-$(TRIPLE)/.lh_libressl_configured: $(OUTPUT)/build-$(TRIPLE)/.lh_libressl_copied | $(OUTPUT)/build-build/.lh_skarnet_installed 21 | exec setuidgid $(NORMALUSER) cd $(OUTPUT)/build-$(TRIPLE)/libressl-$(LIBRESSL_VERSION) export CC "$(TARGET_CC)" ./configure --host=$(TRIPLE) --prefix=/opt/libressl-$(LIBRESSL_VERSION) --disable-tests 22 | exec setuidgid $(NORMALUSER) s6-touch $@ 23 | 24 | $(OUTPUT)/build-$(TRIPLE)/.lh_libressl_built: $(OUTPUT)/build-$(TRIPLE)/.lh_libressl_configured | $(OUTPUT)/build-build/.lh_skarnet_installed 25 | exec setuidgid $(NORMALUSER) cd $(OUTPUT)/build-$(TRIPLE)/libressl-$(LIBRESSL_VERSION) $(MAKE) $(LIBRESSL_MAKE_STATIC) 26 | exec setuidgid $(NORMALUSER) s6-touch $@ 27 | 28 | $(OUTPUT)/build-$(TRIPLE)/.lh_libressl_installed: $(OUTPUT)/build-$(TRIPLE)/.lh_libressl_built | $(OUTPUT)/tmp/.lh_prepared $(OUTPUT)/build-build/.lh_skarnet_installed $(OUTPUT)/tmp/.lh_layout_installed 29 | exec cd $(OUTPUT)/build-$(TRIPLE)/libressl-$(LIBRESSL_VERSION) $(MAKE) install DESTDIR=$(OUTPUT)/rootfs 30 | exec makenamelink $(OUTPUT)/rootfs/opt libressl libressl-$(LIBRESSL_VERSION) $(OUTPUT)/tmp 31 | exec makelinks $(OUTPUT)/rootfs /bin /opt/libressl/bin 32 | exec setuidgid $(NORMALUSER) s6-touch $@ 33 | -------------------------------------------------------------------------------- /sub/bearssl/Makefile: -------------------------------------------------------------------------------- 1 | 2 | BEARSSL_NAME := bearssl 3 | # latest version from 2024-06-12 4 | BEARSSL_VERSION := 3c040368f6791553610e362401db1efff4b4c5b8 5 | BEARSSL_URLDIR := https://www.bearssl.org/git 6 | 7 | $(OUTPUT)/sources/.lh_$(BEARSSL_NAME)_dled: | $(OUTPUT)/build-build/.lh_skarnet_installed 8 | exec setuidgid $(NORMALUSER) s6-rmrf $(OUTPUT)/sources/$(BEARSSL_NAME) $(OUTPUT)/sources/$(BEARSSL_NAME)-$(BEARSSL_VERSION) 9 | exec setuidgid $(NORMALUSER) cd $(OUTPUT)/sources git clone $(BEARSSL_URLDIR)/BearSSL 10 | exec setuidgid $(NORMALUSER) s6-rename $(OUTPUT)/sources/BearSSL $(OUTPUT)/sources/$(BEARSSL_NAME)-$(BEARSSL_VERSION) 11 | exec setuidgid $(NORMALUSER) s6-touch $@ 12 | 13 | $(OUTPUT)/build-$(TRIPLE)/.lh_$(BEARSSL_NAME)_copied: $(OUTPUT)/sources/.lh_$(BEARSSL_NAME)_dled | $(OUTPUT)/build-build/.lh_skarnet_installed 14 | exec setuidgid $(NORMALUSER) s6-rmrf $(OUTPUT)/build-$(TRIPLE)/$(BEARSSL_NAME)-$(BEARSSL_VERSION) 15 | exec setuidgid $(NORMALUSER) s6-hiercopy $(OUTPUT)/sources/$(BEARSSL_NAME)-$(BEARSSL_VERSION) $(OUTPUT)/build-$(TRIPLE)/$(BEARSSL_NAME)-$(BEARSSL_VERSION) 16 | exec setuidgid $(NORMALUSER) cd $(OUTPUT)/build-$(TRIPLE)/$(BEARSSL_NAME)-$(BEARSSL_VERSION) git checkout $(BEARSSL_VERSION) 17 | exec setuidgid $(NORMALUSER) s6-touch $@ 18 | 19 | $(OUTPUT)/build-$(TRIPLE)/.lh_$(BEARSSL_NAME)_built: $(OUTPUT)/build-$(TRIPLE)/.lh_$(BEARSSL_NAME)_copied | $(OUTPUT)/build-build/.lh_skarnet_installed 20 | exec setuidgid $(NORMALUSER) cd $(OUTPUT)/build-$(TRIPLE)/$(BEARSSL_NAME)-$(BEARSSL_VERSION) $(MAKE) lib CC="$(TARGET_CC)" LD="$(TARGET_CC)" LDDLL="$(TARGET_CC)" 21 | exec setuidgid $(NORMALUSER) s6-touch $@ 22 | 23 | $(OUTPUT)/build-$(TRIPLE)/.lh_$(BEARSSL_NAME)_installed: $(OUTPUT)/build-$(TRIPLE)/.lh_$(BEARSSL_NAME)_built | $(OUTPUT)/tmp/.lh_prepared $(OUTPUT)/build-build/.lh_skarnet_installed 24 | exec s6-mkdir -p $(OUTPUT)/rootfs/opt/$(BEARSSL_NAME)-$(BEARSSL_VERSION)/lib 25 | exec cp $(OUTPUT)/build-$(TRIPLE)/$(BEARSSL_NAME)-$(BEARSSL_VERSION)/build/libbearssl.a $(OUTPUT)/rootfs/opt/$(BEARSSL_NAME)-$(BEARSSL_VERSION)/lib/ 26 | exec s6-hiercopy $(OUTPUT)/build-$(TRIPLE)/$(BEARSSL_NAME)-$(BEARSSL_VERSION)/inc $(OUTPUT)/rootfs/opt/$(BEARSSL_NAME)-$(BEARSSL_VERSION)/include 27 | exec chown -R root:root $(OUTPUT)/rootfs/opt/$(BEARSSL_NAME)-$(BEARSSL_VERSION)/include 28 | exec makenamelink $(OUTPUT)/rootfs/opt $(BEARSSL_NAME) $(BEARSSL_NAME)-$(BEARSSL_VERSION) $(OUTPUT)/tmp 29 | exec setuidgid $(NORMALUSER) s6-touch $@ 30 | -------------------------------------------------------------------------------- /sub/dev/Makefile.git: -------------------------------------------------------------------------------- 1 | 2 | GIT_VERSION ?= 2.46.0 3 | GIT_STATIC := $(if $(filter true,$(TARGET_STATIC)),-static,) 4 | 5 | GIT_CONF_ARGS := --enable-pthreads --without-expat --without-iconv --with-shell=/bin/sh --with-perl=/bin/perl --without-python --with-zlib=$(OUTPUT)/rootfs/opt/zlib --without-tcltk --with-openssl=$(OUTPUT)/rootfs/opt/libressl ac_cv_fread_reads_directories=true ac_cv_snprintf_returns_bogus=false 6 | GIT_MAKE_ARGS := LDFLAGS="-s $(GIT_STATIC)" NO_GETTEXT=YesPlease NO_PERL=YesPlease DEFAULT_HELP_FORMAT=html INSTALL_SYMLINKS=YesPlease 7 | 8 | 9 | clean-git: 10 | rm -f $(OUTPUT)/build-$(TRIPLE)/.lh_git_* 11 | 12 | 13 | $(OUTPUT)/sources/git-$(GIT_VERSION).tar.gz: | $(OUTPUT)/tmp/.lh_prepared $(OUTPUT)/build-build/.lh_skarnet_installed 14 | exec setuidgid $(NORMALUSER) cd $(OUTPUT)/sources wget https://www.kernel.org/pub/software/scm/git/git-$(GIT_VERSION).tar.gz 15 | 16 | $(OUTPUT)/build-$(TRIPLE)/.lh_git_dled: $(OUTPUT)/sources/git-$(GIT_VERSION).tar.gz | $(OUTPUT)/build-build/.lh_skarnet_installed 17 | exec setuidgid $(NORMALUSER) s6-touch $@ 18 | 19 | $(OUTPUT)/build-$(TRIPLE)/.lh_git_copied: $(OUTPUT)/build-$(TRIPLE)/.lh_git_dled | $(OUTPUT)/build-build/.lh_skarnet_installed 20 | exec setuidgid $(NORMALUSER) s6-rmrf $(OUTPUT)/build-$(TRIPLE)/git-$(GIT_VERSION) 21 | exec setuidgid $(NORMALUSER) cd $(OUTPUT)/build-$(TRIPLE) tar -zxpvf $(OUTPUT)/sources/git-$(GIT_VERSION).tar.gz 22 | exec setuidgid $(NORMALUSER) s6-touch $@ 23 | 24 | $(OUTPUT)/build-$(TRIPLE)/.lh_git_configured: $(OUTPUT)/build-$(TRIPLE)/.lh_git_copied $(OUTPUT)/build-$(TRIPLE)/.lh_libressl_installed $(OUTPUT)/build-$(TRIPLE)/.lh_curl_installed $(OUTPUT)/build-$(TRIPLE)/.lh_zlib_installed | $(OUTPUT)/build-build/.lh_skarnet_installed 25 | exec setuidgid $(NORMALUSER) cd $(OUTPUT)/build-$(TRIPLE)/git-$(GIT_VERSION) export CC "$(TARGET_CC)" ./configure --host=$(TRIPLE) --prefix=/opt/git-$(GIT_VERSION) $(GIT_CONF_ARGS) 26 | exec setuidgid $(NORMALUSER) s6-touch $@ 27 | 28 | $(OUTPUT)/build-$(TRIPLE)/.lh_git_built: $(OUTPUT)/build-$(TRIPLE)/.lh_git_configured $(OUTPUT)/build-$(TRIPLE)/.lh_libressl_installed $(OUTPUT)/build-$(TRIPLE)/.lh_curl_installed $(OUTPUT)/build-$(TRIPLE)/.lh_zlib_installed | $(OUTPUT)/build-build/.lh_skarnet_installed 29 | exec setuidgid $(NORMALUSER) cd $(OUTPUT)/build-$(TRIPLE)/git-$(GIT_VERSION) $(MAKE) $(GIT_MAKE_ARGS) 30 | exec setuidgid $(NORMALUSER) s6-touch $@ 31 | 32 | $(OUTPUT)/build-$(TRIPLE)/.lh_git_installed: $(OUTPUT)/build-$(TRIPLE)/.lh_git_built | $(OUTPUT)/tmp/.lh_prepared $(OUTPUT)/build-build/.lh_skarnet_installed $(OUTPUT)/tmp/.lh_layout_installed 33 | exec cd $(OUTPUT)/build-$(TRIPLE)/git-$(GIT_VERSION) $(MAKE) install DESTDIR=$(OUTPUT)/rootfs $(GIT_MAKE_ARGS) 34 | exec makenamelink $(OUTPUT)/rootfs/opt git git-$(GIT_VERSION) $(OUTPUT)/tmp 35 | exec makelinks $(OUTPUT)/rootfs /bin /opt/git/bin 36 | exec setuidgid $(NORMALUSER) s6-touch $@ 37 | -------------------------------------------------------------------------------- /sub/busybox/Makefile: -------------------------------------------------------------------------------- 1 | # Version from 2024-07-14 2 | BUSYBOX_VERSION := 371fe9f71d445d18be28c82a2a6d82115c8af19d 3 | 4 | clean-busybox: 5 | rm -f $(OUTPUT)/sources/.lh_bb_cloned 6 | rm -rf $(OUTPUT)/sources/busybox 7 | rm -f $(OUTPUT)/sources/.lh_bb_dled 8 | rm -rf $(OUTPUT)/build-$(TRIPLE)/.lh_bb_* 9 | rm -rf $(OUTPUT)/build-$(TRIPLE)/busybox-$(BUSYBOX_VERSION) 10 | 11 | 12 | $(OUTPUT)/sources/.lh_bb_cloned: | $(OUTPUT)/tmp/.lh_prepared $(OUTPUT)/build-build/.lh_skarnet_installed 13 | exec setuidgid $(NORMALUSER) s6-rmrf $(OUTPUT)/sources/busybox 14 | exec setuidgid $(NORMALUSER) cd $(OUTPUT)/sources git clone git://git.busybox.net/busybox 15 | exec setuidgid $(NORMALUSER) touch $@ 16 | 17 | $(OUTPUT)/sources/.lh_bb_dled: $(OUTPUT)/sources/.lh_bb_cloned | $(OUTPUT)/build-build/.lh_skarnet_installed 18 | exec setuidgid $(NORMALUSER) cd $(OUTPUT)/sources/busybox git checkout $(BUSYBOX_VERSION) 19 | exec setuidgid $(NORMALUSER) touch $@ 20 | 21 | 22 | $(OUTPUT)/build-$(TRIPLE)/.lh_bb_copied: $(OUTPUT)/sources/.lh_bb_dled | $(OUTPUT)/build-build/.lh_skarnet_installed $(OUTPUT)/tmp/.lh_prepared 23 | exec setuidgid $(NORMALUSER) s6-rmrf $(OUTPUT)/build-$(TRIPLE)/busybox-$(BUSYBOX_VERSION) 24 | exec setuidgid $(NORMALUSER) s6-hiercopy $(OUTPUT)/sources/busybox $(OUTPUT)/build-$(TRIPLE)/busybox-$(BUSYBOX_VERSION) 25 | exec setuidgid $(NORMALUSER) s6-touch $@ 26 | 27 | $(OUTPUT)/build-$(TRIPLE)/busybox-$(BUSYBOX_VERSION)/.config: $(OUTPUT)/build-$(TRIPLE)/.lh_bb_copied sub/busybox/host-full-config | $(OUTPUT)/build-build/.lh_skarnet_installed $(OUTPUT)/tmp/.lh_prepared 28 | ifeq ($(TARGET_STATIC),true) 29 | exec setuidgid $(NORMALUSER) redirfd -w 1 $@ sed -e 's/# CONFIG_STATIC is not set/CONFIG_STATIC=y/' $(WD)/sub/busybox/host-full-config 30 | else 31 | exec setuidgid $(NORMALUSER) cp -f $(WD)/sub/busybox/host-full-config $@ 32 | endif 33 | 34 | $(OUTPUT)/build-$(TRIPLE)/.lh_bb_built: $(OUTPUT)/build-$(TRIPLE)/busybox-$(BUSYBOX_VERSION)/.config $(OUTPUT)/build-$(TRIPLE)/.lh_skarnet_installed | $(OUTPUT)/build-build/.lh_skarnet_installed 35 | exec setuidgid $(NORMALUSER) cd $(OUTPUT)/build-$(TRIPLE)/busybox-$(BUSYBOX_VERSION) $(MAKE) -j1 busybox install CROSS_COMPILE=$(TRIPLE)- CC="$(TARGET_CC)" HOSTCC="$(BUILD_CC)" 36 | exec setuidgid $(NORMALUSER) s6-touch $@ 37 | 38 | $(OUTPUT)/build-$(TRIPLE)/.lh_bb_installed: $(OUTPUT)/build-$(TRIPLE)/.lh_bb_built $(OUTPUT)/tmp/.lh_layout_installed | $(OUTPUT)/build-build/.lh_skarnet_installed 39 | exec s6-rmrf $(OUTPUT)/rootfs/opt/busybox-$(BUSYBOX_VERSION) 40 | exec cp -RP $(OUTPUT)/build-$(TRIPLE)/busybox-$(BUSYBOX_VERSION)/_install $(OUTPUT)/rootfs/opt/busybox-$(BUSYBOX_VERSION) 41 | exec makenamelink $(OUTPUT)/rootfs/opt busybox busybox-$(BUSYBOX_VERSION) $(OUTPUT)/tmp 42 | exec makelinks $(OUTPUT)/rootfs /bin /opt/busybox/bin 43 | exec makelinks $(OUTPUT)/rootfs /bin /opt/busybox/sbin 44 | exec setuidgid $(NORMALUSER) s6-touch $@ 45 | -------------------------------------------------------------------------------- /doc/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | lh-bootstrap - a tool to build images running s6 and s6-rc 7 | 8 | 9 | 10 | 11 | 12 | 13 |

14 | Software
15 | skarnet.org 16 |

17 | 18 |

lh-bootstrap

19 | 20 |

What is it ?

21 | 22 |

23 | lh-bootstrap is a set of scripts that build a disk image 24 | for a virtual machine such as QEMU. 25 | The image uses Linux, 26 | musl, 27 | BusyBox, and skarnet.org tools, 28 | and similar small and efficient software. It provides the necessary 29 | minimum amount of tools to securely connect to the Internet and 30 | download more software while having a stable init system and service 31 | infrastructure. 32 |

33 | 34 |
35 | 36 |

Installation

37 | 38 |

Requirements

39 | 40 |

41 | Read the 42 | README.md 43 | file (on GitHub, for Markdown formatting). 44 |

45 | 46 |

Licensing

47 | 48 |

49 | lh-bootstrap is free software. It is available under the 50 | GNU General Public License 51 | version 2. 52 |

53 | 54 |

Download

55 | 56 |

57 | lh-bootstrap does not have regular numbered releases; you should always 58 | pull the latest version from Git. 59 |

60 | 61 | 69 | 70 |

Compilation

71 | 72 |
    73 |
  • Read the README.md 74 | file carefully
  • 75 |
  • Copy lh-config.dist to lh-config and edit it to suit your needs
  • 76 |
  • Run ./make
  • 77 |
78 | 79 | 80 |

Related resources

81 |
82 | 83 |

lh-bootstrap discussion

84 | 85 |
    86 |
  • lh-bootstrap is discussed on the 87 | skaware mailing-list.
  • 88 |
  • It can also be discussed on the #s6 IRC channel on OFTC.
  • 89 |
90 | 91 | 92 | 93 | -------------------------------------------------------------------------------- /sub/kernel/Makefile.ncurses: -------------------------------------------------------------------------------- 1 | 2 | NCURSES_NAME := ncurses 3 | NCURSES_VERSION := 6.4-20230128 4 | NCURSES_URLDIR := https://invisible-mirror.net/archives/$(NCURSES_NAME)/current 5 | NCURSES_TAREXT := tgz 6 | NCURSES_TARLETTER := z 7 | 8 | NCURSES_CONFIGURE_OPTIONS := --without-ada --without-cxx-binding --without-manpages --without-tack --without-tests --without-curses-h --disable-pc-files --without-shared --without-debug --without-profile --enable-rpath --disable-home-terminfo --enable-widec --with-pthread --enable-weak-symbols --without-develop --enable-reentrant --enable-symlinks 9 | NCURSES_CFLAGS := "" 10 | NCURSES_LDFLAGS := "" 11 | 12 | 13 | $(OUTPUT)/sources/$(NCURSES_NAME)-$(NCURSES_VERSION).$(NCURSES_TAREXT): | $(OUTPUT)/tmp/.lh_prepared $(OUTPUT)/build-build/.lh_skarnet_installed 14 | exec setuidgid $(NORMALUSER) cd $(OUTPUT)/sources wget $(NCURSES_URLDIR)/$(NCURSES_NAME)-$(NCURSES_VERSION).$(NCURSES_TAREXT) 15 | 16 | $(OUTPUT)/sources/.lh_$(NCURSES_NAME)_dled: $(OUTPUT)/sources/$(NCURSES_NAME)-$(NCURSES_VERSION).$(NCURSES_TAREXT) | $(OUTPUT)/build-build/.lh_skarnet_installed 17 | exec setuidgid $(NORMALUSER) s6-touch $@ 18 | 19 | 20 | $(OUTPUT)/build-build/.lh_$(NCURSES_NAME)_copied: $(OUTPUT)/sources/.lh_$(NCURSES_NAME)_dled | $(OUTPUT)/build-build/.lh_skarnet_installed 21 | exec setuidgid $(NORMALUSER) s6-rmrf $(OUTPUT)/build-build/opt/$(NCURSES_NAME)-$(NCURSES_VERSION) 22 | exec setuidgid $(NORMALUSER) s6-mkdir -p $(OUTPUT)/build-build/opt/$(NCURSES_NAME)-$(NCURSES_VERSION) 23 | exec setuidgid $(NORMALUSER) cd $(OUTPUT)/build-build/opt/$(NCURSES_NAME)-$(NCURSES_VERSION) tar $(NCURSES_TARLETTER)xpvf $(OUTPUT)/sources/$(NCURSES_NAME)-$(NCURSES_VERSION).$(NCURSES_TAREXT) 24 | exec setuidgid $(NORMALUSER) s6-rename $(OUTPUT)/build-build/opt/$(NCURSES_NAME)-$(NCURSES_VERSION)/$(NCURSES_NAME)-$(NCURSES_VERSION) $(OUTPUT)/build-build/opt/$(NCURSES_NAME)-$(NCURSES_VERSION)/src 25 | exec setuidgid $(NORMALUSER) s6-touch $@ 26 | 27 | $(OUTPUT)/build-build/.lh_$(NCURSES_NAME)_configured: $(OUTPUT)/build-build/.lh_$(NCURSES_NAME)_copied | $(OUTPUT)/build-build/.lh_skarnet_installed 28 | exec setuidgid $(NORMALUSER) cd $(OUTPUT)/build-build/opt/$(NCURSES_NAME)-$(NCURSES_VERSION)/src export CC "$(BUILD_CC)" ./configure --prefix=$(OUTPUT)/build-build/opt/$(NCURSES_NAME)-$(NCURSES_VERSION) $(NCURSES_CONFIGURE_OPTIONS) 29 | exec setuidgid $(NORMALUSER) s6-touch $@ 30 | 31 | $(OUTPUT)/build-build/.lh_$(NCURSES_NAME)_built: $(OUTPUT)/build-build/.lh_$(NCURSES_NAME)_configured | $(OUTPUT)/build-build/.lh_skarnet_installed 32 | exec setuidgid $(NORMALUSER) cd $(OUTPUT)/build-build/opt/$(NCURSES_NAME)-$(NCURSES_VERSION)/src $(MAKE) 33 | exec setuidgid $(NORMALUSER) s6-touch $@ 34 | 35 | $(OUTPUT)/build-build/.lh_$(NCURSES_NAME)_installed: $(OUTPUT)/build-build/.lh_$(NCURSES_NAME)_built | $(OUTPUT)/tmp/.lh_prepared $(OUTPUT)/build-build/.lh_skarnet_installed 36 | exec setuidgid $(NORMALUSER) cd $(OUTPUT)/build-build/opt/$(NCURSES_NAME)-$(NCURSES_VERSION)/src $(MAKE) install 37 | exec setuidgid $(NORMALUSER) makenamelink $(OUTPUT)/build-build/opt $(NCURSES_NAME) $(NCURSES_NAME)-$(NCURSES_VERSION) $(OUTPUT)/tmp 38 | exec setuidgid $(NORMALUSER) s6-ln -nsf . $(OUTPUT)/build-build/opt/$(NCURSES_NAME)/include/ncursesw/ncursesw 39 | exec setuidgid $(NORMALUSER) s6-touch $@ 40 | -------------------------------------------------------------------------------- /sub/e2fsprogs/Makefile: -------------------------------------------------------------------------------- 1 | 2 | E2FSPROGS_NAME := e2fsprogs 3 | E2FSPROGS_VERSION := 1.47.2 4 | E2FSPROGS_URLDIR := https://kernel.org/pub/linux/kernel/people/tytso/e2fsprogs/v$(E2FSPROGS_VERSION) 5 | E2FSPROGS_TAREXT := tar.xz 6 | E2FSPROGS_TARLETTER := J 7 | 8 | E2FSPROGS_CONFIGURE_OPTIONS := --with-gnu-ld --without-libiconv-prefix --disable-gtk-doc-html --with-xz --disable-manpages --enable-largefile --with-udev-rules-dir=no --with-crond-dir=no --with-systemd-unit-dir=no ac_cv_func_lseek64=yes 9 | E2FSPROGS_CFLAGS := -Wno-implicit-function-declaration 10 | E2FSPROGS_LDFLAGS := -s -static 11 | E2FSPROGS_LIBS := -llzma 12 | 13 | $(OUTPUT)/sources/$(E2FSPROGS_NAME)-$(E2FSPROGS_VERSION).$(E2FSPROGS_TAREXT): | $(OUTPUT)/tmp/.lh_prepared $(OUTPUT)/build-build/.lh_skarnet_installed 14 | exec setuidgid $(NORMALUSER) cd $(OUTPUT)/sources wget $(E2FSPROGS_URLDIR)/$(E2FSPROGS_NAME)-$(E2FSPROGS_VERSION).$(E2FSPROGS_TAREXT) 15 | 16 | $(OUTPUT)/sources/.lh_$(E2FSPROGS_NAME)_dled: $(OUTPUT)/sources/$(E2FSPROGS_NAME)-$(E2FSPROGS_VERSION).$(E2FSPROGS_TAREXT) | $(OUTPUT)/build-build/.lh_skarnet_installed 17 | exec setuidgid $(NORMALUSER) s6-touch $@ 18 | 19 | 20 | $(OUTPUT)/build-build/.lh_$(E2FSPROGS_NAME)_copied: $(OUTPUT)/sources/.lh_$(E2FSPROGS_NAME)_dled | $(OUTPUT)/build-build/.lh_skarnet_installed 21 | exec setuidgid $(NORMALUSER) s6-rmrf $(OUTPUT)/build-build/opt/$(E2FSPROGS_NAME)-$(E2FSPROGS_VERSION) 22 | exec setuidgid $(NORMALUSER) s6-mkdir -p $(OUTPUT)/build-build/opt/$(E2FSPROGS_NAME)-$(E2FSPROGS_VERSION) 23 | exec setuidgid $(NORMALUSER) cd $(OUTPUT)/build-build/opt/$(E2FSPROGS_NAME)-$(E2FSPROGS_VERSION) tar $(E2FSPROGS_TARLETTER)xpvf $(OUTPUT)/sources/$(E2FSPROGS_NAME)-$(E2FSPROGS_VERSION).$(E2FSPROGS_TAREXT) 24 | exec setuidgid $(NORMALUSER) s6-rename $(OUTPUT)/build-build/opt/$(E2FSPROGS_NAME)-$(E2FSPROGS_VERSION)/$(E2FSPROGS_NAME)-$(E2FSPROGS_VERSION) $(OUTPUT)/build-build/opt/$(E2FSPROGS_NAME)-$(E2FSPROGS_VERSION)/src 25 | exec setuidgid $(NORMALUSER) s6-touch $@ 26 | 27 | $(OUTPUT)/build-build/.lh_$(E2FSPROGS_NAME)_configured: $(OUTPUT)/build-build/.lh_$(E2FSPROGS_NAME)_copied | $(OUTPUT)/build-build/.lh_skarnet_installed 28 | exec setuidgid $(NORMALUSER) cd $(OUTPUT)/build-build/opt/$(E2FSPROGS_NAME)-$(E2FSPROGS_VERSION)/src export CC "$(BUILD_CC)" export CFLAGS "$(E2FSPROGS_CFLAGS)" export LDFLAGS "$(E2FSPROGS_LDFLAGS)" ./configure --prefix=$(OUTPUT)/build-build/opt/$(E2FSPROGS_NAME)-$(E2FSPROGS_VERSION) $(E2FSPROGS_CONFIGURE_OPTIONS) 29 | exec setuidgid $(NORMALUSER) s6-touch $@ 30 | 31 | $(OUTPUT)/build-build/.lh_$(E2FSPROGS_NAME)_built: $(OUTPUT)/build-build/.lh_$(E2FSPROGS_NAME)_configured | $(OUTPUT)/build-build/.lh_skarnet_installed 32 | exec setuidgid $(NORMALUSER) cd $(OUTPUT)/build-build/opt/$(E2FSPROGS_NAME)-$(E2FSPROGS_VERSION)/src $(MAKE) "LDFLAGS=$(E2FSPROGS_LDFLAGS)" 33 | exec setuidgid $(NORMALUSER) s6-touch $@ 34 | 35 | $(OUTPUT)/build-build/.lh_$(E2FSPROGS_NAME)_installed: $(OUTPUT)/build-build/.lh_$(E2FSPROGS_NAME)_built | $(OUTPUT)/tmp/.lh_prepared $(OUTPUT)/build-build/.lh_skarnet_installed 36 | exec setuidgid $(NORMALUSER) cd $(OUTPUT)/build-build/opt/$(E2FSPROGS_NAME)-$(E2FSPROGS_VERSION)/src $(MAKE) install CC="$(BUILD_CC)" 37 | exec setuidgid $(NORMALUSER) makenamelink $(OUTPUT)/build-build/opt $(E2FSPROGS_NAME) $(E2FSPROGS_NAME)-$(E2FSPROGS_VERSION) $(OUTPUT)/tmp 38 | exec setuidgid $(NORMALUSER) s6-touch $@ 39 | -------------------------------------------------------------------------------- /make: -------------------------------------------------------------------------------- 1 | #!/bin/sh -e 2 | 3 | # the bootstrap can only run as root 4 | test $(id -u) -eq 0 || { echo './make: fatal: you are not root. Please read the README.md file.' 1>&2 ; exit 1 ; } 5 | 6 | 7 | # sourcing your configuration file 8 | . ./lh-config 9 | 10 | 11 | # checking if the configuration file is missing some variables, if that's the case we exit with an error 12 | if test -z "$NORMALUSER" || test -z "$ROOTFS_SIZE" || test -z "$TRIPLE" ; then 13 | echo "./make: fatal: some variable definitions are missing from lh-config." 1>&2 14 | exit 1 15 | fi 16 | 17 | 18 | WD=`pwd` 19 | OUTPUT=${OUTPUT:-$WD/output} 20 | if test $OUTPUT = ${OUTPUT#/} ; then 21 | OUTPUT="$WD/$OUTPUT" 22 | fi 23 | 24 | BUILD_CC=${BUILD_CC:-gcc} 25 | TARGET_CC="$TRIPLE-${CROSS_CC:-gcc}" 26 | ROOTFS_SIZE=${ROOTFS_SIZE:-1024M} 27 | RWFS_SIZE=${RWFS_SIZE:-512M} 28 | USERFS_SIZE=${USERFS_SIZE:-512M} 29 | LH_DEV=${DEVELOPMENT:-false} 30 | LIBGUESTFS_PATH=${LIBGUESTFS_PATH:-/usr/lib/guestfs} 31 | 32 | build=`${BUILD_CC} -dumpmachine` 33 | if echo "$build" | grep -q -- '-.*-.*-' ; then 34 | BUILD_QUADRUPLE="$build" 35 | else 36 | BUILD_QUADRUPLE="${build%%-*}-none-${build#*-}" 37 | fi 38 | 39 | if test -z "$TARGET_STATIC" ; then 40 | case "$TRIPLE" in 41 | *-*-musl*) TARGET_STATIC=true ;; 42 | *) TARGET_STATIC=false ;; 43 | esac 44 | fi 45 | 46 | if test -z "$LIBC_COPY" ; then 47 | case "$TARGET_STATIC" in 48 | true) LIBC_COPY=false ;; 49 | *) LIBC_COPY=true ;; 50 | esac 51 | fi 52 | 53 | if test -n "$CROSS_BASE" ; then 54 | crossenv="" 55 | else 56 | crossenv="LH_MAKE_CROSS=1" 57 | CROSS_BASE="$OUTPUT/build-$TRIPLE/$TRIPLE" 58 | fi 59 | 60 | TARGET_CC_FULL="$CROSS_BASE/bin/$TARGET_CC" 61 | TARGET_SYSROOT="$CROSS_BASE/$TRIPLE" 62 | TARGET_PREFIX="$CROSS_BASE/bin/$TRIPLE" 63 | LIBC_SYSROOT=${LIBC_SYSROOT:-$(${TARGET_CC_FULL} -print-sysroot)} 64 | 65 | hostarch=$(echo $TRIPLE | cut -f1 -d-) 66 | # This is used extensively throughout the whole build: different subsystems have different names for the architecture 67 | case $hostarch in 68 | i?86) KERNEL_ARCH=$hostarch ; QEMU_ARCH=i386 ; KERNEL_GENERIC_ARCH=x86 ;; 69 | x86_64) KERNEL_ARCH=$hostarch ; QEMU_ARCH=$hostarch ; KERNEL_GENERIC_ARCH=x86 ;; 70 | arm*) KERNEL_ARCH=arm ; QEMU_ARCH=arm ; KERNEL_GENERIC_ARCH=arm ;; 71 | aarch64*) KERNEL_ARCH=arm64 ; QEMU_ARCH=aarch64 ; KERNEL_GENERIC_ARCH=arm64 ;; 72 | default) echo "make: fatal: invalid TRIPLE variable" 1>&2 ; exit 100 ;; 73 | esac 74 | 75 | KERNEL_CONFIG=${KERNEL_CONFIG:-sub/kernel/qemu-system-${hostarch}-config} 76 | PATH="$WD/bin:$OUTPUT/build-build/command:$OUTPUT/build-build/bin:$OUTPUT/build-$TRIPLE/bin:$CROSS_BASE/bin:$PATH" 77 | 78 | umask 022 79 | exec env -i $crossenv LH_MAKE_MARKER=1 "WD=$WD" "NORMALUSER=$NORMALUSER" "TRIPLE=$TRIPLE" "OUTPUT=$OUTPUT" "PATH=$PATH" \ 80 | "ROOTFS_SIZE=$ROOTFS_SIZE" "RWFS_SIZE=$RWFS_SIZE" "USERFS_SIZE=$USERFS_SIZE" \ 81 | "TARGET_STATIC=$TARGET_STATIC" "LIBC_SYSROOT=$LIBC_SYSROOT" "LIBC_COPY=$LIBC_COPY" "LH_DEV=$LH_DEV" \ 82 | "TARGET_CC=$TARGET_CC" "TARGET_CC_FULL=$TARGET_CC_FULL" "TARGET_SYSROOT=$TARGET_SYSROOT" "TARGET_PREFIX=$TARGET_PREFIX" \ 83 | "KERNEL_ARCH=$KERNEL_ARCH" "KERNEL_GENERIC_ARCH=$KERNEL_GENERIC_ARCH" "QEMU_ARCH=$QEMU_ARCH" "KERNEL_CONFIG=$KERNEL_CONFIG" \ 84 | "BUILD_QUADRUPLE=$BUILD_QUADRUPLE" "BUILD_CC=$BUILD_CC" SHELL=/bin/sh "CONSOLE=$CONSOLE" "TERM=$TERM" \ 85 | "LIBGUESTFS_PATH=$LIBGUESTFS_PATH" \ 86 | make --jobserver-style=pipe "$@" 87 | -------------------------------------------------------------------------------- /sub/kmod/Makefile: -------------------------------------------------------------------------------- 1 | 2 | KMOD_NAME := kmod 3 | # pin to 33, 34+ needs meson (34 pretends to still support autotools but it's broken) 4 | KMOD_VERSION := 33 5 | KMOD_URLDIR := https://mirrors.edge.kernel.org/pub/linux/utils/kernel/$(KMOD_NAME) 6 | KMOD_TAREXT := tar.xz 7 | KMOD_TARLETTER := J 8 | 9 | # Do not use --enable-static or --disable-shared: the kmod configure script is voluntarily broken. 10 | # Use make variables instead to link kmod statically. 11 | 12 | KMOD_CONFIGURE_OPTIONS := --disable-option-checking --disable-maintainer-mode --with-gnu-ld --disable-gtk-doc-html --with-xz --disable-manpages --disable-test-modules --disable-logging --with-bashcompletiondir=$(OUTPUT)/build-build/opt/$(KMOD_NAME)-$(KMOD_VERSION)/bash-completions 13 | KMOD_CFLAGS := -I$(OUTPUT)/build-build/opt/xz/include -include libgen.h 14 | KMOD_LDFLAGS := -L$(OUTPUT)/build-build/opt/xz/lib 15 | KMOD_LIBS := -llzma 16 | 17 | $(OUTPUT)/sources/$(KMOD_NAME)-$(KMOD_VERSION).$(KMOD_TAREXT): | $(OUTPUT)/tmp/.lh_prepared $(OUTPUT)/build-build/.lh_skarnet_installed 18 | exec setuidgid $(NORMALUSER) cd $(OUTPUT)/sources wget $(KMOD_URLDIR)/$(KMOD_NAME)-$(KMOD_VERSION).$(KMOD_TAREXT) 19 | 20 | $(OUTPUT)/sources/.lh_$(KMOD_NAME)_dled: $(OUTPUT)/sources/$(KMOD_NAME)-$(KMOD_VERSION).$(KMOD_TAREXT) | $(OUTPUT)/build-build/.lh_skarnet_installed 21 | exec setuidgid $(NORMALUSER) s6-touch $@ 22 | 23 | 24 | $(OUTPUT)/build-build/.lh_$(KMOD_NAME)_copied: $(OUTPUT)/sources/.lh_$(KMOD_NAME)_dled | $(OUTPUT)/build-build/.lh_skarnet_installed 25 | exec setuidgid $(NORMALUSER) s6-rmrf $(OUTPUT)/build-build/opt/$(KMOD_NAME)-$(KMOD_VERSION) 26 | exec setuidgid $(NORMALUSER) s6-mkdir -p $(OUTPUT)/build-build/opt/$(KMOD_NAME)-$(KMOD_VERSION) 27 | exec setuidgid $(NORMALUSER) cd $(OUTPUT)/build-build/opt/$(KMOD_NAME)-$(KMOD_VERSION) tar $(KMOD_TARLETTER)xpvf $(OUTPUT)/sources/$(KMOD_NAME)-$(KMOD_VERSION).$(KMOD_TAREXT) 28 | exec setuidgid $(NORMALUSER) s6-rename $(OUTPUT)/build-build/opt/$(KMOD_NAME)-$(KMOD_VERSION)/$(KMOD_NAME)-$(KMOD_VERSION) $(OUTPUT)/build-build/opt/$(KMOD_NAME)-$(KMOD_VERSION)/src 29 | exec setuidgid $(NORMALUSER) s6-touch $@ 30 | 31 | $(OUTPUT)/build-build/.lh_$(KMOD_NAME)_configured: $(OUTPUT)/build-build/.lh_$(KMOD_NAME)_copied $(OUTPUT)/build-build/.lh_xz_installed | $(OUTPUT)/build-build/.lh_skarnet_installed 32 | exec setuidgid $(NORMALUSER) cd $(OUTPUT)/build-build/opt/$(KMOD_NAME)-$(KMOD_VERSION)/src export CC "$(BUILD_CC)" export liblzma_CFLAGS "-I$(OUTPUT)/build-build/opt/xz/include -L$(OUTPUT)/build-build/opt/xz/lib" export liblzma_LIBS "-llzma" export CFLAGS "$(KMOD_CFLAGS)" export LDFLAGS "$(KMOD_LDFLAGS)" export LIBS "$(KMOD_LIBS)" ./configure --prefix=$(OUTPUT)/build-build/opt/$(KMOD_NAME)-$(KMOD_VERSION) $(KMOD_CONFIGURE_OPTIONS) 33 | exec setuidgid $(NORMALUSER) s6-touch $@ 34 | 35 | $(OUTPUT)/build-build/.lh_$(KMOD_NAME)_built: $(OUTPUT)/build-build/.lh_$(KMOD_NAME)_configured | $(OUTPUT)/build-build/.lh_skarnet_installed 36 | exec setuidgid $(NORMALUSER) cd $(OUTPUT)/build-build/opt/$(KMOD_NAME)-$(KMOD_VERSION)/src $(MAKE) 37 | exec setuidgid $(NORMALUSER) s6-touch $@ 38 | 39 | $(OUTPUT)/build-build/.lh_$(KMOD_NAME)_installed: $(OUTPUT)/build-build/.lh_$(KMOD_NAME)_built | $(OUTPUT)/tmp/.lh_prepared $(OUTPUT)/build-build/.lh_skarnet_installed 40 | exec setuidgid $(NORMALUSER) cd $(OUTPUT)/build-build/opt/$(KMOD_NAME)-$(KMOD_VERSION)/src $(MAKE) install CC="$(BUILD_CC)" 41 | exec setuidgid $(NORMALUSER) makenamelink $(OUTPUT)/build-build/opt $(KMOD_NAME) $(KMOD_NAME)-$(KMOD_VERSION) $(OUTPUT)/tmp 42 | exec setuidgid $(NORMALUSER) s6-touch $@ 43 | -------------------------------------------------------------------------------- /sub/dropbear/Makefile: -------------------------------------------------------------------------------- 1 | 2 | DROPBEAR_VERSION ?= 2025.87 3 | # DROPBEAR_VERSION ?= 2024.85 # previous working version 4 | DROPBEAR_SITE := https://mirror.dropbear.nl/mirror/releases 5 | # DROPBEAR_SITE := https://matt.ucc.asn.au/dropbear/releases 6 | DROPBEAR_CONF_STATIC := $(if $(filter true,$(TARGET_STATIC)),--enable-static,) 7 | DROPBEAR_MAKE_STATIC := $(if $(filter true,$(TARGET_STATIC)),-static,) 8 | 9 | clean-dropbear: 10 | rm -f $(OUTPUT)/build-$(TRIPLE)/.lh_dropbear_* 11 | 12 | 13 | $(OUTPUT)/sources/dropbear-$(DROPBEAR_VERSION).tar.bz2: | $(OUTPUT)/tmp/.lh_prepared $(OUTPUT)/build-build/.lh_skarnet_installed 14 | exec setuidgid $(NORMALUSER) cd $(OUTPUT)/sources wget $(DROPBEAR_SITE)/dropbear-$(DROPBEAR_VERSION).tar.bz2 15 | 16 | $(OUTPUT)/build-$(TRIPLE)/.lh_dropbear_dled: $(OUTPUT)/sources/dropbear-$(DROPBEAR_VERSION).tar.bz2 | $(OUTPUT)/build-build/.lh_skarnet_installed 17 | exec setuidgid $(NORMALUSER) s6-touch $@ 18 | 19 | $(OUTPUT)/build-$(TRIPLE)/.lh_dropbear_copied: $(OUTPUT)/build-$(TRIPLE)/.lh_dropbear_dled | $(OUTPUT)/build-build/.lh_skarnet_installed 20 | exec setuidgid $(NORMALUSER) s6-rmrf $(OUTPUT)/build-$(TRIPLE)/dropbear-$(DROPBEAR_VERSION) 21 | exec setuidgid $(NORMALUSER) cd $(OUTPUT)/build-$(TRIPLE) tar -jxpvf $(OUTPUT)/sources/dropbear-$(DROPBEAR_VERSION).tar.bz2 22 | exec setuidgid $(NORMALUSER) s6-touch $@ 23 | 24 | $(OUTPUT)/build-$(TRIPLE)/.lh_dropbear_patched: $(OUTPUT)/build-$(TRIPLE)/.lh_dropbear_copied sub/dropbear/localoptions.h 25 | exec setuidgid $(NORMALUSER) cp -f sub/dropbear/localoptions.h $(OUTPUT)/build-$(TRIPLE)/dropbear-$(DROPBEAR_VERSION)/localoptions.h 26 | exec setuidgid $(NORMALUSER) s6-touch $@ 27 | 28 | $(OUTPUT)/build-$(TRIPLE)/.lh_dropbear_configured: $(OUTPUT)/build-$(TRIPLE)/.lh_dropbear_patched $(OUTPUT)/build-$(TRIPLE)/.lh_skarnet_installed | $(OUTPUT)/build-build/.lh_skarnet_installed 29 | exec setuidgid $(NORMALUSER) cd $(OUTPUT)/build-$(TRIPLE)/dropbear-$(DROPBEAR_VERSION) export ARCH $(KERNEL_ARCH) export CC "$(TARGET_CC)" export CFLAGS "-O2 -I$(OUTPUT)/rootfs/package/admin/utmps/include" export LDFLAGS "-s $(DROPBEAR_MAKE_STATIC) -L$(OUTPUT)/rootfs/package/admin/utmps/library -L$(OUTPUT)/rootfs/package/prog/skalibs/library" export LIBS "-lutmps -lskarnet" ./configure --host=$(TRIPLE) --prefix=/opt/dropbear-$(DROPBEAR_VERSION) --disable-syslog --disable-utmp --disable-wtmp --disable-pututline --without-pam --enable-bundled-libtom --disable-zlib --disable-harden $(DROPBEAR_CONF_STATIC) 30 | exec setuidgid $(NORMALUSER) s6-touch $@ 31 | 32 | $(OUTPUT)/build-$(TRIPLE)/.lh_dropbear_built: $(OUTPUT)/build-$(TRIPLE)/.lh_dropbear_configured | $(OUTPUT)/build-build/.lh_skarnet_installed 33 | exec setuidgid $(NORMALUSER) cd $(OUTPUT)/build-$(TRIPLE)/dropbear-$(DROPBEAR_VERSION) $(MAKE) ARCH=$(KERNEL_ARCH) PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" 34 | exec setuidgid $(NORMALUSER) s6-touch $@ 35 | 36 | $(OUTPUT)/build-$(TRIPLE)/.lh_dropbear_installed: $(OUTPUT)/build-$(TRIPLE)/.lh_dropbear_built | $(OUTPUT)/tmp/.lh_prepared $(OUTPUT)/build-build/.lh_skarnet_installed 37 | exec cd $(OUTPUT)/build-$(TRIPLE)/dropbear-$(DROPBEAR_VERSION) $(MAKE) install DESTDIR=$(OUTPUT)/rootfs 38 | exec makenamelink $(OUTPUT)/rootfs/opt dropbear dropbear-$(DROPBEAR_VERSION) $(OUTPUT)/tmp 39 | exec cp -f $(OUTPUT)/build-$(TRIPLE)/dropbear-$(DROPBEAR_VERSION)/scp $(OUTPUT)/rootfs/opt/dropbear-$(DROPBEAR_VERSION)/bin/scp 40 | exec mv -f $(OUTPUT)/rootfs/opt/dropbear-$(DROPBEAR_VERSION)/sbin/dropbear $(OUTPUT)/rootfs/opt/dropbear-$(DROPBEAR_VERSION)/bin/dropbear 41 | exec rmdir $(OUTPUT)/rootfs/opt/dropbear-$(DROPBEAR_VERSION)/sbin 42 | exec makelinks $(OUTPUT)/rootfs /bin /opt/dropbear/bin 43 | exec setuidgid $(NORMALUSER) s6-touch $@ 44 | -------------------------------------------------------------------------------- /doc/INTERNALS.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | # Internals of lh-bootstrap 5 | 6 | Laurent Bercot 7 | last modified: 2017-04-07 8 | 9 | ## Definitions 10 | 11 | BUILD is the machine you're running this set of scripts on. 12 | HOST is the machine you're building the image for. 13 | TARGET has the same meaning as HOST. See the `README.md` file. 14 | 15 | 16 | ## General organization 17 | 18 | ### ./lh-config and ./make 19 | 20 | All your configuration should happen in the `lh-config` file. It is a series 21 | of variable assignments, in shell syntax. 22 | 23 | `./make` is a shell script that reads `lh-config`, provides reasonable 24 | defaults for variables not specified in `lh-config`, exports a set of 25 | variables into the environment then executes into `make` with the exact 26 | same command line that it was given. So you can use make options, specify 27 | a make target, etc. 28 | 29 | 30 | ### Other files and directories 31 | 32 | The main `Makefile` includes sub-Makefiles that are in the subdirectories 33 | of the `sub` directory, roughly one per software package. Those subdirectories 34 | also may contain various scripts and patches necessary to make the software 35 | package compile and/or run properly. 36 | 37 | The `bin` directory contains scripts that are used throughout the whole 38 | build process. They have been designed for maximum portability, not efficiency. 39 | 40 | The `sysdeps` directory contains "system dependencies" for the various HOSTs 41 | that lh-bootstrap supports, i.e. a textual description of the 42 | HOST architecture's capabilities and quirks, such as endianness, sizes of 43 | certain types, etc. These descriptions are used when cross-compiling the 44 | skarnet.org packages. 45 | 46 | The `layout` directory contains the base layout for all the filesystems 47 | that are used to build our image: 48 | 49 | - *rootfs* is the basic one, the root filesystem. It will be mounted 50 | read-only. 51 | - *rwfs* is a read-write directory we use to store our configuration 52 | and other read-write data for normal operation of the machine. It is 53 | not accessible to "normal" users. For instance, `/var` is a part of 54 | rwfs. 55 | - *userfs* is a read-write directory that will be used to store user 56 | data. For instance, `/home` is a part of userfs. 57 | - *stagingfs* is unused for now. It will be used for safe firmware 58 | updates. 59 | 60 | All the files under `layout` must be text or otherwise editable 61 | files: there must be absolutely no binary files in it. Currently, 62 | the timezone files (`/etc/zoneinfo`) are an exception to that rule; 63 | at some point I will remove them and make a sub-package script to 64 | install them. 65 | 66 | 67 | ## Dependencies and build order 68 | 69 | `./make` first builds a set of tools for the BUILD. The goal is to make the 70 | build work on as many BUILD machines as possible, with as few dependencies 71 | as possible. For instance, parts of a recent `util-linux` package are 72 | installed because the build needs the `-P` option to the `losetup` binary 73 | and not all distributions ship a `util-linux` version with `losetup -P`. 74 | 75 | Then `./make` builds the software for the HOST, installing it into the 76 | `rootfs` subdirectory of the output. 77 | 78 | 79 | ### Topological list of the BUILD tools 80 | 81 | - Linux kernel headers 82 | - musl 83 | - skarnet.org packages 84 | - xz-utils 85 | - kmod 86 | 87 | 88 | ### Topological list of the HOST packages 89 | 90 | For now, the HOST packages are a mix of "production" bootstrap packages, 91 | i.e. software that is needed to get a host up and running without 92 | aiming for development on that host, and "development" bootstrap packages, 93 | i.e. software that is needed to turn the host into a native development 94 | platform (in order to build and install software that is difficult to 95 | cross-compile). A better separation between those two sets of packages 96 | is planned for future versions of lh-bootstrap. 97 | 98 | - Linux kernel 99 | - musl 100 | - bearssl 101 | - skarnet.org packages 102 | - busybox 103 | - dnscache (from djbdns) 104 | - dropbear 105 | - a native host toolchain (for now just copied from a location) 106 | -------------------------------------------------------------------------------- /sub/xz/Makefile: -------------------------------------------------------------------------------- 1 | 2 | XZ_NAME := xz 3 | XZ_VERSION := 5.8.1 4 | XZ_URLDIR := https://tukaani.org/$(XZ_NAME) 5 | XZ_TAREXT := tar.xz 6 | XZ_TARLETTER := J 7 | XZ_CONF_STATIC := $(if $(filter true,$(TARGET_STATIC)),--disable-shared,) 8 | XZ_MAKE_STATIC := $(if $(filter true,$(TARGET_STATIC)),-static,) 9 | XZ_CONFIGURE_OPTIONS := --disable-nls --with-gnu-ld --enable-threads=posix --disable-scripts --disable-doc --disable-lzma-links --disable-lzmainfo --disable-lzmadec --disable-xzdec --disable-xz 10 | XZ_CFLAGS := "" 11 | XZ_CONFLDFLAGS := "-s $(XZ_MAKE_STATIC)" 12 | XZ_MAKELDFLAGS := "-s $(XZ_MAKE_STATIC)" 13 | 14 | 15 | $(OUTPUT)/sources/$(XZ_NAME)-$(XZ_VERSION).$(XZ_TAREXT): | $(OUTPUT)/tmp/.lh_prepared $(OUTPUT)/build-build/.lh_skarnet_installed 16 | exec setuidgid $(NORMALUSER) cd $(OUTPUT)/sources wget $(XZ_URLDIR)/$(XZ_NAME)-$(XZ_VERSION).$(XZ_TAREXT) 17 | 18 | $(OUTPUT)/sources/.lh_$(XZ_NAME)_dled: $(OUTPUT)/sources/$(XZ_NAME)-$(XZ_VERSION).$(XZ_TAREXT) | $(OUTPUT)/build-build/.lh_skarnet_installed 19 | exec setuidgid $(NORMALUSER) s6-touch $@ 20 | 21 | 22 | $(OUTPUT)/build-build/.lh_$(XZ_NAME)_copied: $(OUTPUT)/sources/.lh_$(XZ_NAME)_dled | $(OUTPUT)/build-build/.lh_skarnet_installed 23 | exec setuidgid $(NORMALUSER) s6-rmrf $(OUTPUT)/build-build/opt/$(XZ_NAME)-$(XZ_VERSION) 24 | exec setuidgid $(NORMALUSER) s6-mkdir -p $(OUTPUT)/build-build/opt/$(XZ_NAME)-$(XZ_VERSION) 25 | exec setuidgid $(NORMALUSER) cd $(OUTPUT)/build-build/opt/$(XZ_NAME)-$(XZ_VERSION) tar $(XZ_TARLETTER)xpvf $(OUTPUT)/sources/$(XZ_NAME)-$(XZ_VERSION).$(XZ_TAREXT) 26 | exec setuidgid $(NORMALUSER) s6-rename $(OUTPUT)/build-build/opt/$(XZ_NAME)-$(XZ_VERSION)/$(XZ_NAME)-$(XZ_VERSION) $(OUTPUT)/build-build/opt/$(XZ_NAME)-$(XZ_VERSION)/src 27 | exec setuidgid $(NORMALUSER) s6-touch $@ 28 | 29 | $(OUTPUT)/build-build/.lh_$(XZ_NAME)_configured: $(OUTPUT)/build-build/.lh_$(XZ_NAME)_copied | $(OUTPUT)/build-build/.lh_skarnet_installed 30 | exec setuidgid $(NORMALUSER) cd $(OUTPUT)/build-build/opt/$(XZ_NAME)-$(XZ_VERSION)/src export CC "$(BUILD_CC)" export CFLAGS $(XZ_CFLAGS) export LDFLAGS -s ./configure --prefix=$(OUTPUT)/build-build/opt/$(XZ_NAME)-$(XZ_VERSION) $(XZ_CONFIGURE_OPTIONS) 31 | exec setuidgid $(NORMALUSER) s6-touch $@ 32 | 33 | $(OUTPUT)/build-build/.lh_$(XZ_NAME)_built: $(OUTPUT)/build-build/.lh_$(XZ_NAME)_configured | $(OUTPUT)/build-build/.lh_skarnet_installed 34 | exec setuidgid $(NORMALUSER) cd $(OUTPUT)/build-build/opt/$(XZ_NAME)-$(XZ_VERSION)/src $(MAKE) CC="$(BUILD_CC)" LDFLAGS=-s 35 | exec setuidgid $(NORMALUSER) s6-touch $@ 36 | 37 | $(OUTPUT)/build-build/.lh_$(XZ_NAME)_installed: $(OUTPUT)/build-build/.lh_$(XZ_NAME)_built | $(OUTPUT)/tmp/.lh_prepared $(OUTPUT)/build-build/.lh_skarnet_installed 38 | exec setuidgid $(NORMALUSER) cd $(OUTPUT)/build-build/opt/$(XZ_NAME)-$(XZ_VERSION)/src $(MAKE) install CC="$(BUILD_CC)" 39 | exec setuidgid $(NORMALUSER) makenamelink $(OUTPUT)/build-build/opt $(XZ_NAME) $(XZ_NAME)-$(XZ_VERSION) $(OUTPUT)/tmp 40 | exec setuidgid $(NORMALUSER) s6-touch $@ 41 | 42 | 43 | $(OUTPUT)/build-$(TRIPLE)/.lh_$(XZ_NAME)_copied: $(OUTPUT)/sources/.lh_$(XZ_NAME)_dled | $(OUTPUT)/build-build/.lh_skarnet_installed 44 | exec setuidgid $(NORMALUSER) s6-rmrf $(OUTPUT)/build-$(TRIPLE)/$(XZ_NAME)-$(XZ_VERSION) 45 | exec setuidgid $(NORMALUSER) cd $(OUTPUT)/build-$(TRIPLE) tar $(XZ_TARLETTER)xpvf $(OUTPUT)/sources/$(XZ_NAME)-$(XZ_VERSION).$(XZ_TAREXT) 46 | exec setuidgid $(NORMALUSER) s6-touch $@ 47 | 48 | $(OUTPUT)/build-$(TRIPLE)/.lh_$(XZ_NAME)_configured: $(OUTPUT)/build-$(TRIPLE)/.lh_$(XZ_NAME)_copied | $(OUTPUT)/build-build/.lh_skarnet_installed 49 | exec setuidgid $(NORMALUSER) cd $(OUTPUT)/build-$(TRIPLE)/$(XZ_NAME)-$(XZ_VERSION) export CC "$(TARGET_CC)" export CFLAGS $(XZ_CFLAGS) export LDFLAGS $(XZ_CONFLDFLAGS) ./configure --host=$(TRIPLE) --prefix=/opt/$(XZ_NAME)-$(XZ_VERSION) $(XZ_CONFIGURE_OPTIONS) $(XZ_CONF_STATIC) 50 | exec setuidgid $(NORMALUSER) s6-touch $@ 51 | 52 | $(OUTPUT)/build-$(TRIPLE)/.lh_$(XZ_NAME)_built: $(OUTPUT)/build-$(TRIPLE)/.lh_$(XZ_NAME)_configured | $(OUTPUT)/build-build/.lh_skarnet_installed 53 | exec setuidgid $(NORMALUSER) cd $(OUTPUT)/build-$(TRIPLE)/$(XZ_NAME)-$(XZ_VERSION) $(MAKE) LDFLAGS=$(XZ_MAKELDFLAGS) CC="$(TARGET_CC)" 54 | exec setuidgid $(NORMALUSER) s6-touch $@ 55 | 56 | $(OUTPUT)/build-$(TRIPLE)/.lh_$(XZ_NAME)_installed: $(OUTPUT)/build-$(TRIPLE)/.lh_$(XZ_NAME)_built | $(OUTPUT)/tmp/.lh_prepared $(OUTPUT)/build-build/.lh_skarnet_installed $(OUTPUT)/tmp/.lh_layout_installed 57 | exec cd $(OUTPUT)/build-$(TRIPLE)/$(XZ_NAME)-$(XZ_VERSION) $(MAKE) install CC="$(TARGET_CC)" DESTDIR=$(OUTPUT)/rootfs 58 | exec makenamelink $(OUTPUT)/rootfs/opt $(XZ_NAME) $(XZ_NAME)-$(XZ_VERSION) $(OUTPUT)/tmp 59 | exec makelinks $(OUTPUT)/rootfs /bin /opt/$(XZ_NAME)/bin 60 | exec setuidgid $(NORMALUSER) s6-touch $@ 61 | -------------------------------------------------------------------------------- /sub/dev/Makefile.curl: -------------------------------------------------------------------------------- 1 | 2 | CURL_VERSION ?= 8.9.1 3 | CURL_STATIC := $(if $(filter true,$(TARGET_STATIC)),-all-static,) 4 | 5 | CURL_CONF_ARGS := \ 6 | --disable-silent-rules \ 7 | --disable-debug \ 8 | --enable-optimize \ 9 | --enable-warnings \ 10 | --disable-werror \ 11 | --disable-curldebug \ 12 | --enable-symbol-hiding \ 13 | --disable-ares \ 14 | --disable-ech \ 15 | --enable-http \ 16 | --enable-ftp \ 17 | --enable-file \ 18 | --disable-ldap \ 19 | --disable-ldaps \ 20 | --disable-rtsp \ 21 | --enable-proxy \ 22 | --disable-dict \ 23 | --enable-telnet \ 24 | --enable-tftp \ 25 | --disable-pop3 \ 26 | --disable-imap \ 27 | --disable-smb \ 28 | --disable-smtp \ 29 | --disable-gopher \ 30 | --disable-mqtt \ 31 | --disable-manual \ 32 | --enable-libcurl-option \ 33 | --enable-ipv6 \ 34 | --disable-openssl-auto-load-config \ 35 | --disable-versioned-symbols \ 36 | --enable-threaded-resolver \ 37 | --enable-pthreads \ 38 | --enable-verbose \ 39 | --disable-sspi \ 40 | --enable-crypto-auth \ 41 | --disable-ntlm-wb \ 42 | --disable-tls-srp \ 43 | --enable-unix-sockets \ 44 | --enable-cookies \ 45 | --enable-socketpair \ 46 | --enable-http-auth \ 47 | --disable-doh \ 48 | --disable-mime \ 49 | --enable-dateparse \ 50 | --disable-netrc \ 51 | --enable-progress-meter \ 52 | --disable-dnsshuffle \ 53 | --enable-get-easy-options \ 54 | --disable-alt-svc \ 55 | --enable-hsts \ 56 | --with-zlib=$(OUTPUT)/rootfs/opt/zlib \ 57 | --without-brotli \ 58 | --without-zstd \ 59 | --with-default-ssl-backend=bearssl \ 60 | --without-winssl \ 61 | --without-schannel \ 62 | --without-secure-transport \ 63 | --without-amissl \ 64 | --without-gnutls \ 65 | --without-mbedtls \ 66 | --without-wolfssl \ 67 | --without-mesalink \ 68 | --with-bearssl=$(OUTPUT)/rootfs/opt/bearssl \ 69 | --without-nss \ 70 | --without-ca-bundle \ 71 | --without-ca-path \ 72 | --without-ca-fallback \ 73 | --without-wolfssh \ 74 | --without-libssh2 \ 75 | --without-libssh \ 76 | --without-librtmp \ 77 | --without-winidn \ 78 | --without-libidn2 \ 79 | --without-nghttp2 \ 80 | --without-ngtcp2 \ 81 | --without-nghttp3 \ 82 | --without-quiche \ 83 | --without-hyper \ 84 | --without-zsh-functions-dir \ 85 | --without-fish-functions-dir 86 | 87 | CURL_MAKE_ARGS := LDFLAGS="-L$(OUTPUT)/rootfs/opt/bearssl/lib -L$(OUTPUT)/rootfs/opt/zlib/lib $(CURL_STATIC)" 88 | 89 | clean-curl: 90 | rm -f $(OUTPUT)/build-$(TRIPLE)/.lh_curl_* 91 | 92 | 93 | $(OUTPUT)/sources/curl-$(CURL_VERSION).tar.xz: | $(OUTPUT)/tmp/.lh_prepared $(OUTPUT)/build-build/.lh_skarnet_installed 94 | exec setuidgid $(NORMALUSER) cd $(OUTPUT)/sources wget https://curl.se/download/curl-$(CURL_VERSION).tar.xz 95 | 96 | $(OUTPUT)/build-$(TRIPLE)/.lh_curl_dled: $(OUTPUT)/sources/curl-$(CURL_VERSION).tar.xz | $(OUTPUT)/build-build/.lh_skarnet_installed 97 | exec setuidgid $(NORMALUSER) s6-touch $@ 98 | 99 | $(OUTPUT)/build-$(TRIPLE)/.lh_curl_copied: $(OUTPUT)/build-$(TRIPLE)/.lh_curl_dled | $(OUTPUT)/build-build/.lh_skarnet_installed 100 | exec setuidgid $(NORMALUSER) s6-rmrf $(OUTPUT)/build-$(TRIPLE)/curl-$(CURL_VERSION) 101 | exec setuidgid $(NORMALUSER) cd $(OUTPUT)/build-$(TRIPLE) tar -Jxpvf $(OUTPUT)/sources/curl-$(CURL_VERSION).tar.xz 102 | exec setuidgid $(NORMALUSER) s6-touch $@ 103 | 104 | $(OUTPUT)/build-$(TRIPLE)/.lh_curl_configured: $(OUTPUT)/build-$(TRIPLE)/.lh_curl_copied $(OUTPUT)/build-$(TRIPLE)/.lh_bearssl_installed $(OUTPUT)/build-$(TRIPLE)/.lh_zlib_installed | $(OUTPUT)/build-build/.lh_skarnet_installed 105 | exec setuidgid $(NORMALUSER) cd $(OUTPUT)/build-$(TRIPLE)/curl-$(CURL_VERSION) export CC "$(TARGET_CC)" ./configure --build=$(BUILD_QUADRUPLE) --host=$(TRIPLE) --prefix=/opt/curl-$(CURL_VERSION) $(CURL_CONF_ARGS) 106 | exec setuidgid $(NORMALUSER) s6-touch $@ 107 | 108 | $(OUTPUT)/build-$(TRIPLE)/.lh_curl_built: $(OUTPUT)/build-$(TRIPLE)/.lh_curl_configured | $(OUTPUT)/build-build/.lh_skarnet_installed 109 | exec setuidgid $(NORMALUSER) cd $(OUTPUT)/build-$(TRIPLE)/curl-$(CURL_VERSION) $(MAKE) $(CURL_MAKE_ARGS) 110 | exec setuidgid $(NORMALUSER) s6-touch $@ 111 | 112 | $(OUTPUT)/build-$(TRIPLE)/.lh_curl_installed: $(OUTPUT)/build-$(TRIPLE)/.lh_curl_built | $(OUTPUT)/tmp/.lh_prepared $(OUTPUT)/build-build/.lh_skarnet_installed $(OUTPUT)/tmp/.lh_layout_installed 113 | exec cd $(OUTPUT)/build-$(TRIPLE)/curl-$(CURL_VERSION) $(MAKE) install DESTDIR=$(OUTPUT)/rootfs 114 | exec makenamelink $(OUTPUT)/rootfs/opt curl curl-$(CURL_VERSION) $(OUTPUT)/tmp 115 | exec makelinks $(OUTPUT)/rootfs /bin /opt/curl/bin 116 | exec setuidgid $(NORMALUSER) s6-touch $@ 117 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | # 2 | # This is the top Makefile for lh-bootstrap 3 | # It is invoked by running "./make" after editing lh-config 4 | # 5 | # Each target, for instance "$(OUTPUT)/tmp/.lh_installed", 6 | # is a witness file, ie the file is not needed anywhere but is 7 | # used by make to handle dependencies. Each of these files is 8 | # being touched at the end of each recipe to update its date, 9 | # since make relies on dates to handle updates of targets. 10 | 11 | 12 | ifndef LH_MAKE_MARKER 13 | $(error Please use "./make target" instead of "make target") 14 | endif 15 | 16 | 17 | NORMALUSER_UID := $(shell id -u $(NORMALUSER)) 18 | NORMALUSER_GID := $(shell id -g $(NORMALUSER)) 19 | 20 | 21 | it: all 22 | 23 | .PHONY: it all all-but-kernel kernel rootfs rwfs userfs images qemu-boot clean distclean 24 | 25 | 26 | all: kernel rootfs rwfs userfs images 27 | kernel: $(OUTPUT)/build-$(TRIPLE)/kernel/.lh_installed $(OUTPUT)/build-$(TRIPLE)/kernel/.lh_modules_installed 28 | rootfs: $(OUTPUT)/tmp/.lh_rootfs_installed 29 | rwfs: $(OUTPUT)/tmp/.lh_rwfs_installed 30 | userfs: $(OUTPUT)/tmp/.lh_userfs_installed 31 | images: $(OUTPUT)/tmp/.lh_diskimages_done 32 | 33 | ifeq ($(LH_DEV),true) 34 | include sub/dev/Makefile.strace 35 | include sub/dev/Makefile.make 36 | include sub/dev/Makefile.zlib 37 | include sub/dev/Makefile.libressl 38 | include sub/dev/Makefile.curl 39 | include sub/dev/Makefile.git 40 | LH_DEV_TARGETS := $(OUTPUT)/build-$(TRIPLE)/.lh_strace_installed $(OUTPUT)/build-$(TRIPLE)/.lh_make_installed $(OUTPUT)/build-$(TRIPLE)/.lh_zlib_installed $(OUTPUT)/build-$(TRIPLE)/.lh_libressl_installed $(OUTPUT)/build-$(TRIPLE)/.lh_curl_installed $(OUTPUT)/build-$(TRIPLE)/.lh_git_installed 41 | else 42 | LH_DEV_TARGETS := 43 | endif 44 | 45 | # clean everything 46 | distclean: 47 | exec rm -rf $(OUTPUT) 48 | 49 | # clean everything (same as above), minus the sources that were downloaded over the internet 50 | clean: 51 | ls -1 $(OUTPUT) | grep -vF sources | while read a ; do rm -rf $(OUTPUT)/"$$a" & : ; done ; true 52 | 53 | 54 | # Prepare the output directory. This is at the bottom of the dependency tree. 55 | 56 | $(OUTPUT)/tmp/.lh_prepared: lh-config 57 | exec mkdir -p -m 0755 -- $(OUTPUT)/tmp $(OUTPUT)/rootfs $(OUTPUT)/rwfs $(OUTPUT)/userfs $(OUTPUT)/build-build/bin $(OUTPUT)/build-build/opt $(OUTPUT)/build-build/tmp $(OUTPUT)/build-$(TRIPLE)/bin $(OUTPUT)/build-$(TRIPLE)/opt $(OUTPUT)/build-$(TRIPLE)/tmp $(OUTPUT)/sources 58 | exec chown -R -- $(NORMALUSER_UID):$(NORMALUSER_GID) $(OUTPUT)/tmp $(OUTPUT)/build-build $(OUTPUT)/build-$(TRIPLE) 59 | exec chown -- $(NORMALUSER_UID):$(NORMALUSER_GID) $(OUTPUT)/sources $(OUTPUT) 60 | exec setuidgid $(NORMALUSER) touch $@ 61 | 62 | 63 | # This target builds all the build-time native tools, the real part of the build depends on this target 64 | 65 | $(OUTPUT)/build-build/.lh_done: $(OUTPUT)/build-build/.lh_skarnet_installed $(OUTPUT)/build-build/.lh_kmod_installed $(OUTPUT)/build-build/.lh_e2fsprogs_installed 66 | exec setuidgid $(NORMALUSER) touch $@ 67 | 68 | 69 | # The filesystems 70 | 71 | $(OUTPUT)/tmp/.lh_rootfs_installed: $(OUTPUT)/tmp/.lh_layout_installed $(OUTPUT)/build-$(TRIPLE)/.lh_skarnet_installed $(OUTPUT)/build-$(TRIPLE)/.lh_bb_installed $(OUTPUT)/build-$(TRIPLE)/.lh_dropbear_installed $(LH_DEV_TARGETS) 72 | exec setuidgid $(NORMALUSER) touch $@ 73 | 74 | $(OUTPUT)/tmp/.lh_rwfs_installed: $(OUTPUT)/tmp/.lh_layout_installed 75 | exec setuidgid $(NORMALUSER) touch $@ 76 | 77 | $(OUTPUT)/tmp/.lh_userfs_installed: $(OUTPUT)/tmp/.lh_layout_installed 78 | exec setuidgid $(NORMALUSER) touch $@ 79 | 80 | 81 | # The qemu disk images (requires qemu) 82 | 83 | $(OUTPUT)/tmp/.lh_diskimages_done: $(OUTPUT)/build-$(TRIPLE)/kernel/.lh_modules_installed $(OUTPUT)/tmp/.lh_rootfs_installed $(OUTPUT)/tmp/.lh_rwfs_installed $(OUTPUT)/tmp/.lh_userfs_installed | $(OUTPUT)/build-build/.lh_done 84 | makeqcow2 $(OUTPUT)/rootfs $(ROOTFS_SIZE) & \ 85 | makeqcow2 $(OUTPUT)/rwfs $(RWFS_SIZE) & \ 86 | makeqcow2 $(OUTPUT)/userfs $(USERFS_SIZE) & wait 87 | exec s6-envuidgid $(NORMALUSER) s6-chown -U $(OUTPUT)/rootfs.qcow2 88 | exec s6-envuidgid $(NORMALUSER) s6-chown -U $(OUTPUT)/rwfs.qcow2 89 | exec s6-envuidgid $(NORMALUSER) s6-chown -U $(OUTPUT)/userfs.qcow2 90 | exec setuidgid $(NORMALUSER) touch $@ 91 | 92 | qemu-boot: 93 | exec setuidgid $(NORMALUSER) ./run-qemu 94 | 95 | 96 | # Subsystems 97 | 98 | ## libc, toolchains, utilities, for the build itself, or for building the host 99 | 100 | include sub/kernel/Makefile 101 | include sub/xz/Makefile 102 | include sub/kmod/Makefile 103 | include sub/e2fsprogs/Makefile 104 | 105 | 106 | ## rootfs contents, what's necessary to get an image to boot and connect to it via ssh 107 | 108 | include sub/layout/Makefile 109 | include sub/bearssl/Makefile 110 | include sub/skarnet.org/Makefile 111 | include sub/busybox/Makefile 112 | include sub/dropbear/Makefile 113 | -------------------------------------------------------------------------------- /doc/DEPENDENCIES-BUILD.md: -------------------------------------------------------------------------------- 1 | 2 | # lh-bootstrap: software built for the BUILD machine 3 | 4 | Laurent Bercot 5 | 2016-03-31 6 | 7 | 8 | This file documents the software installed and run on the BUILD 9 | machine prior to building the HOST image. 10 | 11 | Please read the INTERNALS.md file first, for the general organization 12 | of the build, and basic definitions. 13 | 14 | 15 | ## BUILD tools 16 | 17 | ### Linux kernel headers 18 | 19 | Makefile directory: sub/kernel 20 | 21 | The Linux kernel is downloaded and will be configured and compiled 22 | to boot a qemu image for the HOST. Since it will be downloaded 23 | anyway, we reuse the source to process and install the kernel headers 24 | for the BUILD. 25 | Those kernel headers, coupled with the musl libc's headers, are 26 | necessary to compile Linux-specific software such as util-linux and skarnet-org. 27 | 28 | 29 | ### musl libc 30 | 31 | Makefile directory: sub/musl 32 | 33 | We have no control over the BUILD's native compiler and libc. Most 34 | likely, it's gcc and produces binaries that are dynamically linked 35 | against the glibc - but we're not certain; we would like certainty, 36 | even for the build tools. We do not want our tools' behaviour to 37 | depend on external factors such as a misconfigured libc or dynamic 38 | linker. 39 | 40 | So, we download the musl libc (which we would download for use in 41 | the HOST anyway) and compile it for the BUILD. We then link all our 42 | BUILD tools against it. 43 | 44 | 45 | ### skarnet.org packages 46 | 47 | Makefile directory: sub/skarnet.org 48 | 49 | The HOST uses s6-rc as its service manager. We provide a template 50 | for the database in source format in `layout/rootfs/etc/s6-rc/source-base`; 51 | this template is preprocessed and added to the rootfs at layout 52 | installation time, at the beginning of the HOST build. 53 | However, in order to boot, the HOST needs the database in compiled 54 | form, not in source form: so we must run s6-rc-compile before the HOST 55 | boots. Since the source and compiled formats are platform-independent, 56 | we just run s6-rc-compile on the BUILD. Which means we need to compile 57 | s6-rc for the BUILD, with the same settings that the HOST is using. 58 | So we end up compiling most of the skarnet.org stack. 59 | 60 | Since we have to compile skalibs anyway, which is by far the heaviest 61 | component of the stack, we also use the opportunity to compile 62 | s6-portable-utils for the BUILD: the time spent compiling this package 63 | is negligible once skalibs is built, and it contains 64 | alternative tools that we use subsequently in the build, because their 65 | behaviour is more predictible than the tools provided by the BUILD's 66 | distribution. 67 | 68 | Note: since we need to mirror the HOST's layout for s6-rc-compile 69 | to work properly, we compile the skarnet.org stack following the 70 | slashpackage convention, with --enable-slashpackage. However, we 71 | obviously don't install a slashpackage hierarchy on the BUILD's root 72 | filesystem, we use the $(OUTPUT)/build-build staging directory. 73 | The consequence is that skarnet.org binaries that exec other binaries 74 | via slashpackage paths will not work. This is ok for our use since 75 | the main tool we need is s6-rc-compile, which does not exec anything 76 | else, but it's something to keep in mind. It's the reason why we do 77 | not use s6-setuidgid even after building s6: we stick to the hackish 78 | and inefficient bin/setuidgid script to drop privileges, because our 79 | temporary installation of s6-setuidgid simply does not work. 80 | 81 | 82 | #### skalibs 83 | 84 | The library which all other skarnet.org packages depend on. 85 | 86 | 87 | #### execline 88 | 89 | The scripting language used by s6 and s6-rc. 90 | 91 | 92 | #### s6 93 | 94 | The supervision suite used by s6-rc. 95 | 96 | 97 | #### s6-rc 98 | 99 | The service manager used by the HOST. We compile it for the BUILD in 100 | order to use s6-rc-compile to compile the service database before 101 | booting the HOST. 102 | 103 | 104 | #### s6-portable-utils 105 | 106 | Some utilities are akin to POSIX tools, but will have reproducible behavior 107 | no matter what distribution is used. We have had trouble with 108 | differences across BUILD distributions, with some distributions 109 | slightly deviating from the standard (looking at you, Ubuntu); using 110 | our own tools is insurance against that. 111 | 112 | 113 | ### xz-utils 114 | 115 | Makefile directory: sub/xz 116 | 117 | xz-utils includes another compression library (liblzma), which 118 | is also a dependency of kmod - actually, this is the one that 119 | interests us. So we have to build the xz-utils package for 120 | BUILD. 121 | 122 | 123 | ### kmod 124 | 125 | Makefile directory: sub/kmod 126 | 127 | Ah, kmod. 128 | 129 | We build the Linux kernel for HOST with module support, for 130 | practicality. Modules are compressed, to save storage space. 131 | Traditionally, there are compressed with gzip (and have extension 132 | `.ko.gz`), but xz is generally a better compressor than gzip: 133 | the compressed data is smaller. 134 | So we use xz to compress the modules (extension `.ko.xz`). On the 135 | HOST, we load the modules with busybox modprobe, which supports 136 | both extensions. So far, so good. 137 | 138 | Except that xz support for kmod is relatively recent, and some 139 | distributions insist on providing an ancient version of kmod, 140 | which *does not* allows modules to be compressed with xz. 141 | (And the kernel's build system does not report the error - the 142 | modules silently fail to be installed, which makes diagnostic 143 | fun!) 144 | 145 | So, we have to provide our own version of kmod. 146 | 147 | I have to say that kmod is the single worst package that appears 148 | in this whole build. The software itself works, but the 149 | build system is *extremely* buggy and requires several workarounds, 150 | that have all been implemented in the Makefile. Please do not 151 | attempt to "simplify" this Makefile by using "correct" configure 152 | options and eliminating make variables: that will not work. 153 | 154 | -------------------------------------------------------------------------------- /sub/kernel/Makefile: -------------------------------------------------------------------------------- 1 | include sub/kernel/Makefile.ncurses 2 | 3 | KERNEL_VERSION ?= 6.6 4 | KERNEL_MAJOR := $(firstword $(subst ., ,$(KERNEL_VERSION))) 5 | KERNEL_FULLVERSION := $(if $(word 2,$(subst ., ,$(KERNEL_VERSION))),$(KERNEL_VERSION),$(KERNEL_VERSION).0) 6 | 7 | KERNEL_ENV := HOSTCC="$(BUILD_CC)" DEPMOD=$(OUTPUT)/build-build/opt/kmod/bin/depmod CROSS_COMPILE=$(TARGET_PREFIX)- ARCH=$(KERNEL_GENERIC_ARCH) INSTALL_MOD_PATH=$(OUTPUT)/rootfs INSTALL_MOD_STRIP="-R .note -R .comment --strip-debug" HOST_LFS_CFLAGS= HOST_LFS_LDFLAGS= HOST_LFS_LIBS= 8 | 9 | $(OUTPUT)/sources/linux-$(KERNEL_VERSION).tar.xz: | $(OUTPUT)/tmp/.lh_prepared 10 | cd $(OUTPUT)/sources && setuidgid $(NORMALUSER) wget https://cdn.kernel.org/pub/linux/kernel/v$(KERNEL_MAJOR).x/linux-$(KERNEL_VERSION).tar.xz 11 | 12 | $(OUTPUT)/build-build/.lh_kernel_unpacked: $(OUTPUT)/sources/linux-$(KERNEL_VERSION).tar.xz sub/kernel 13 | exec setuidgid $(NORMALUSER) mkdir -p $(OUTPUT)/build-build/opt/linux-$(KERNEL_VERSION) 14 | exec setuidgid $(NORMALUSER) makenamelink $(OUTPUT)/build-build/opt linux linux-$(KERNEL_VERSION) $(OUTPUT)/tmp 15 | exec setuidgid $(NORMALUSER) rm -rf $(OUTPUT)/build-build/opt/linux-$(KERNEL_VERSION)/src $(OUTPUT)/build-build/opt/linux-$(KERNEL_VERSION)/linux-$(KERNEL_VERSION) 16 | cd $(OUTPUT)/build-build/opt/linux-$(KERNEL_VERSION) && setuidgid $(NORMALUSER) tar Jxpvf $(OUTPUT)/sources/linux-$(KERNEL_VERSION).tar.xz 17 | exec setuidgid $(NORMALUSER) mv -f $(OUTPUT)/build-build/opt/linux-$(KERNEL_VERSION)/linux-$(KERNEL_VERSION) $(OUTPUT)/build-build/opt/linux-$(KERNEL_VERSION)/src 18 | exec setuidgid $(NORMALUSER) sh -c 'for i in `ls -1 sub/kernel | grep "\.patch$$"` ; do ( cd $(OUTPUT)/build-build/opt/linux-$(KERNEL_VERSION)/src && patch -p1 < $(WD)/sub/kernel/$$i ) ; done' 19 | exec setuidgid $(NORMALUSER) touch $@ 20 | 21 | $(OUTPUT)/build-build/.lh_kernel_headers_installed: $(OUTPUT)/build-build/.lh_kernel_unpacked 22 | cd $(OUTPUT)/build-build/opt/linux-$(KERNEL_VERSION)/src && setuidgid $(NORMALUSER) $(MAKE) headers_install INSTALL_HDR_PATH=$(OUTPUT)/build-build/opt/linux-$(KERNEL_VERSION) 23 | exec setuidgid $(NORMALUSER) touch $@ 24 | 25 | 26 | $(OUTPUT)/build-$(TRIPLE)/kernel/.lh_unpacked: $(OUTPUT)/sources/linux-$(KERNEL_VERSION).tar.xz | $(OUTPUT)/build-build/.lh_skarnet_installed 27 | exec setuidgid $(NORMALUSER) s6-mkdir -p $(OUTPUT)/build-$(TRIPLE)/kernel 28 | exec setuidgid $(NORMALUSER) cd $(OUTPUT)/build-$(TRIPLE)/kernel tar Jxpvf $(OUTPUT)/sources/linux-$(KERNEL_VERSION).tar.xz 29 | exec setuidgid $(NORMALUSER) sh -c 'for i in `ls -1 sub/kernel | grep "\.patch$$"` ; do ( cd $(OUTPUT)/build-$(TRIPLE)/kernel/linux-$(KERNEL_VERSION) && patch -p1 < $(WD)/sub/kernel/$$i ) ; done' 30 | exec setuidgid $(NORMALUSER) s6-touch $@ 31 | 32 | $(OUTPUT)/build-$(TRIPLE)/kernel/.lh_configured: $(OUTPUT)/build-$(TRIPLE)/kernel/.lh_unpacked $(KERNEL_CONFIG) | $(OUTPUT)/build-build/.lh_skarnet_installed 33 | exec setuidgid $(NORMALUSER) cp -f $(KERNEL_CONFIG) $(OUTPUT)/build-$(TRIPLE)/kernel/linux-$(KERNEL_VERSION)/.config 34 | exec setuidgid $(NORMALUSER) cd $(OUTPUT)/build-$(TRIPLE)/kernel/linux-$(KERNEL_VERSION) $(MAKE) olddefconfig $(KERNEL_ENV) 35 | exec setuidgid $(NORMALUSER) s6-touch $@ 36 | 37 | kernel-menuconfig: $(OUTPUT)/build-$(TRIPLE)/kernel/.lh_configured $(OUTPUT)/build-build/.lh_$(NCURSES_NAME)_installed | $(OUTPUT)/build-build/.lh_skarnet_installed $(WD)/bin/fake-pkg-config 38 | exec setuidgid $(NORMALUSER) s6-ln -nsf $(WD)/bin/fake-pkg-config $(OUTPUT)/build-build/bin/pkg-config 39 | exec setuidgid $(NORMALUSER) cd $(OUTPUT)/build-$(TRIPLE)/kernel/linux-$(KERNEL_VERSION) $(MAKE) menuconfig $(KERNEL_ENV) 40 | exec setuidgid $(NORMALUSER) rm -f $(OUTPUT)/build-build/bin/pkg-config 41 | 42 | $(OUTPUT)/build-$(TRIPLE)/kernel/.lh_prepared: | $(OUTPUT)/tmp/.lh_prepared $(OUTPUT)/build-build/.lh_skarnet_installed 43 | exec s6-mkdir -p $(OUTPUT)/rootfs/opt/linux-kernel-headers-$(KERNEL_VERSION) 44 | exec makenamelink $(OUTPUT)/rootfs/opt linux-kernel-headers linux-kernel-headers-$(KERNEL_VERSION) $(OUTPUT)/tmp 45 | exec setuidgid $(NORMALUSER) s6-mkdir -p $(OUTPUT)/build-$(TRIPLE)/kernel 46 | exec setuidgid $(NORMALUSER) s6-touch $@ 47 | 48 | $(OUTPUT)/build-$(TRIPLE)/kernel/.lh_headers_installed: $(OUTPUT)/build-$(TRIPLE)/kernel/.lh_prepared $(OUTPUT)/build-$(TRIPLE)/kernel/.lh_built | $(OUTPUT)/build-build/.lh_skarnet_installed 49 | exec cd $(OUTPUT)/build-$(TRIPLE)/kernel/linux-$(KERNEL_VERSION) $(MAKE) headers_install $(KERNEL_ENV) INSTALL_HDR_PATH=$(OUTPUT)/rootfs/opt/linux-kernel-headers-$(KERNEL_VERSION) 50 | exec setuidgid $(NORMALUSER) s6-touch $@ 51 | 52 | $(OUTPUT)/build-$(TRIPLE)/kernel/.lh_built: $(OUTPUT)/build-$(TRIPLE)/kernel/.lh_configured | $(OUTPUT)/build-build/.lh_kmod_installed $(OUTPUT)/build-build/.lh_skarnet_installed 53 | exec setuidgid $(NORMALUSER) cd $(OUTPUT)/build-$(TRIPLE)/kernel/linux-$(KERNEL_VERSION) $(MAKE) modules_prepare $(KERNEL_ENV) 54 | exec setuidgid $(NORMALUSER) cd $(OUTPUT)/build-$(TRIPLE)/kernel/linux-$(KERNEL_VERSION) $(MAKE) all $(KERNEL_ENV) 55 | exec setuidgid $(NORMALUSER) s6-touch $@ 56 | 57 | $(OUTPUT)/build-$(TRIPLE)/kernel/.lh_installed: $(OUTPUT)/build-$(TRIPLE)/kernel/.lh_built | $(OUTPUT)/tmp/.lh_layout_installed $(OUTPUT)/build-build/.lh_skarnet_installed 58 | exec cp -f $(OUTPUT)/build-$(TRIPLE)/kernel/linux-$(KERNEL_VERSION)/System.map $(OUTPUT)/rootfs/boot/System.map-$(KERNEL_VERSION) 59 | exec s6-ln -sf System.map-$(KERNEL_VERSION) $(OUTPUT)/rootfs/boot/System.map 60 | cp -f $(OUTPUT)/build-$(TRIPLE)/kernel/linux-$(KERNEL_VERSION)/arch/$(KERNEL_GENERIC_ARCH)/boot/bzImage $(OUTPUT)/kernel || cp -f $(OUTPUT)/build-$(TRIPLE)/kernel/linux-$(KERNEL_VERSION)/arch/$(KERNEL_GENERIC_ARCH)/boot/zImage $(OUTPUT)/kernel || cp -f $(OUTPUT)/build-$(TRIPLE)/kernel/linux-$(KERNEL_VERSION)/arch/$(KERNEL_GENERIC_ARCH)/boot/Image $(OUTPUT)/kernel 61 | ifeq ($(KERNEL_GENERIC_ARCH),x86) 62 | exec cp -f $(OUTPUT)/kernel $(OUTPUT)/rootfs/boot/vmlinuz-$(KERNEL_VERSION) 63 | exec s6-ln -sf vmlinuz-$(KERNEL_VERSION) $(OUTPUT)/rootfs/boot/vmlinuz 64 | endif 65 | exec setuidgid $(NORMALUSER) s6-touch $@ 66 | 67 | $(OUTPUT)/build-$(TRIPLE)/kernel/.lh_modules_installed: $(OUTPUT)/build-$(TRIPLE)/kernel/.lh_built | $(OUTPUT)/build-build/.lh_kmod_installed $(OUTPUT)/build-build/.lh_skarnet_installed 68 | exec cd $(OUTPUT)/build-$(TRIPLE)/kernel/linux-$(KERNEL_VERSION) $(MAKE) modules_install $(KERNEL_ENV) 69 | exec s6-rmrf $(OUTPUT)/rootfs/lib/modules/$(KERNEL_FULLVERSION)/build $(OUTPUT)/rootfs/lib/modules/$(KERNEL_FULLVERSION)/source 70 | exec setuidgid $(NORMALUSER) s6-touch $@ 71 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | # lh-bootstrap: building a disk image with Linux, musl, and skarnet.org tools from scratch 3 | 4 | Laurent Bercot 5 | last modified: 2021-01-28 6 | 7 | 8 | ## License 9 | 10 | `lh-bootstrap` is distributed under the terms of the 11 | [GNU General Public License version 2](https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html). 12 | 13 | 14 | ## Goal 15 | 16 | `lh-bootstrap` builds a disk image for use with qemu or other VM emulators - 17 | and the files can also be copied to real hardware. 18 | 19 | The image contains a Linux kernel and a collection of small user-space 20 | tools such as [busybox](https://busybox.net/), [dropbear](https://matt.ucc.asn.au/dropbear/dropbear.html) 21 | and the [skarnet.org tools](https://skarnet.org/software/), all statically 22 | linked against the [musl libc](https://musl-libc.org/). It includes 23 | the minimal amount of necessary software and client configuration to get 24 | a machine up, running (with [s6](https://skarnet.org/software/s6) as 25 | process 1 and [s6-rc](https://skarnet.org/software/s6-rc) as service 26 | manager) and connected to the Internet. 27 | 28 | The image is built from scratch: every package is compiled from source. 29 | The toolchains and the minimal initial development environment for the 30 | BUILD machine, however, are not provided. See below. 31 | 32 | 33 | ### Explicitly Not A Goal 34 | 35 | `lh-bootstrap` **is not**: 36 | 37 | - A distribution. It will not include any more software than is 38 | strictly necessary to get a minimal usable image up and running. 39 | Future versions of lh-bootstrap may include a "development" flavour, 40 | which would also include a basic C/Unix development environment on 41 | the image, but that's as far as it will go. 42 | 43 | - Turnkey, polished, for end users. Lots of work have been put 44 | into it so most build machines can run it out of the box, but the tasks 45 | here are complex and involve lots of different packages from different 46 | sources, which all evolve rapidly - so bitrot is to be expected, and 47 | users should not be afraid to go tweak Makefiles to set the correct 48 | versions of the packages. 49 | 50 | - Lightweight. Unlike other skarnet.org tools, `lh-bootstrap` is a 51 | heavy development package that needs significant resources to run. 52 | 53 | 54 | ## Terminology 55 | 56 | You have installed this package on the BUILD machine. 57 | You are making an image that will work on a TARGET machine. 58 | The supported TARGETs include x86_64, i486, armv7, armv8 (aarch64). 59 | 60 | The TARGET machine can also be referred to as the HOST machine. 61 | This is GNU terminology: when you configure a package with a GNU 62 | configure script, the --build option tells what machine you're 63 | building the software on, and the --host option tells what machine 64 | the software is going to run on. 65 | 66 | We will use HOST or TARGET indiscriminately. There is one case 67 | where HOST and TARGET are not synonyms: when building a toolchain. 68 | (In that case, HOST refers to the machine that the toolchain 69 | being built will run on, and TARGET refers to the machine that 70 | the toolchain will produce binaries for.) 71 | Since we are not building a toolchain, HOST and TARGET are entirely 72 | synonymous to us. 73 | 74 | HOST is generally a confusing term, because it is often 75 | used to designate the native, real computer, a "host" as opposed 76 | to a "guest" running in a virtual machine. But here, "host" is 77 | not opposed to "guest", it's opposed to "build", and your native, 78 | real computer is "build". 79 | 80 | 81 | ## Requirements 82 | 83 | ### Be root 84 | 85 | You must be root on your BUILD machine. The build scripts will not 86 | work properly if you are not root, *even if they do not write error 87 | messages!* 88 | Don't worry, most of the work is performed as a non-root user; but 89 | root privileges are still needed for a few operations, so it is 90 | necessary that you start the build script as root. 91 | 92 | (It is still better to be root and lose privileges for the operations 93 | that do not require them than to not be root and have to gain 94 | privileges for some operations via sudo or other mechanisms. 95 | Under Unix, it is best to avoid privilege gain whenever you can.) 96 | 97 | 98 | ### Build requirements 99 | 100 | For the build to work, you need: 101 | 102 | - A GNU or other Linux-based OS. Unfortunately, some Linux-specific 103 | operations need to be performed on the BUILD machine (loopback 104 | mounting, among others). 105 | 106 | - A powerful BUILD machine. skarnet.org tools are small and efficient, 107 | but building a complete system image from scratch requires significant 108 | computing power. 109 | 110 | - A native development environment for the BUILD machine. This means 111 | a gcc toolchain running on your BUILD machine and producing code intended 112 | to run on your BUILD machine. You should have this on any distribution, 113 | and your compiler should just be called `gcc`. If you do not have this, 114 | you can get a native toolchain [here](https://skarnet.org/toolchains/). 115 | 116 | - An unrestricted Internet connection on the BUILD machine. 117 | 118 | - The ability to loop-mount filesystems on the BUILD machine. 119 | 120 | - A few necessary tools for the BUILD machine: 121 | + GNU `make`, version 4.4 or later. It will work with versions older than 4.4 122 | if you don't use the `-j` option, but that means slow 123 | builds. (Explanation: when asked for parallel builds, lh-bootstrap uses the 124 | `--jobserver-style` option to `make` in order to work around some bugs. But this 125 | option only appears in GNU make 4.4.) 126 | + `bc`, Perl 5 (necessary for the Linux kernel compilation as well as syslinux) 127 | + `su`, `patch`, `sed` 128 | + `git` 129 | + a `tar` that supports .gz, .bz2 and .xz archives 130 | + a `wget` that supports HTTPS 131 | + `dd`, `chown`, `cpio`, `truncate` 132 | + `qemu-system-$TARGET` to boot your target machine 133 | 134 | - A musl cross-development environment from the BUILD machine to the TARGET 135 | machine. This means a gcc toolchain running on your BUILD machine and 136 | producing code intended to run on your TARGET machine, linking the TARGET 137 | binaries against the musl libc. 138 | Even if you are building for the same TARGET as your BUILD machine 139 | (example: you are building for x86_64 on an x86_64), **you cannot use 140 | your stock distribution's native compiler for this!** Pick one of the 141 | cross toolchains available [here](https://skarnet.org/toolchains/). 142 | 143 | - A native musl development environment for the TARGET machine. This means a 144 | gcc toolchain running on your TARGET machine and producing code intended 145 | to run on your TARGET machine, linking the TARGET binaries against the musl 146 | libc. Pick one of the native toolchains available 147 | [here](https://skarnet.org/toolchains/). 148 | 149 | 150 | ## Usage 151 | 152 | ### Configuring 153 | 154 | Copy the `lh-config.dist` file to `lh-config`. This file is your own configuration 155 | and should NOT be checked into git. 156 | Edit the `lh-config` file to configure the system to be built. 157 | 158 | It is important that the NORMALUSER variable be set to an existing 159 | non-root user on your BUILD system. If you don't have one, use `nobody`. 160 | 161 | You can set the OUTPUT variable to the name of the directory the 162 | system will be built in. There must be *a lot* of available disk 163 | space for the output, because that's where all the builds will 164 | take place. By default, OUTPUT is `./output`, which 165 | means the system will be built right where you are. 166 | 167 | TRIPLE is the triplet representing your target. 168 | It should be `x86_64-linux-musl` for x86_64, 169 | `arm-linux-musleabihf` for ARM, 170 | `aarch64-linux-musl` for arm64, 171 | `i486-linux-musl` for i486, etc. 172 | Only triplets that appear in the `sysdeps` subdirectory are supported. 173 | 174 | CROSS_BASE is the path where your cross-toolchain is installed. 175 | This means the toolchain from your BUILD to your TARGET, even if 176 | BUILD and TARGET are the same. 177 | 178 | HOST_HOST_BASE is the path where your native toolchain for the TARGET 179 | is installed. 180 | 181 | COUNTRY_CODE, LOCAL_IP and ROUTER_IP are configuration variables 182 | for your TARGET. COUNTRY_CODE is one of `uk`, `fr`, `rs`, `vn` or `cn`. 183 | LOCAL_IP is the IP your guest will have; ROUTER_IP is the router 184 | address your guest will use. (On Linux, you can get your router 185 | (gateway) ip via `route -n`.) They should be on the same class C 186 | network. 187 | 188 | USE_DHCP should be true if you want your image to get its IP address 189 | via a DHCP client (in which case LOCAL_IP and ROUTER_IP will be 190 | ignored). It should be false if you want your image to have the 191 | LOCAL_IP static IPv4 address. 192 | 193 | ROOTFS_SIZE, SWAP_SIZE, RWFS_SIZE, USERFS_SIZE and EXTRA_SIZE are 194 | the size of the partitions that will be created, in megabytes. 195 | They are big by default, so the virtual disk can be used to build 196 | any distribution. The disk files are sparse, so it doesn't matter 197 | that they're big - but you should modify the environment variables 198 | if you want a smaller image. 199 | 200 | 201 | 202 | ### Building 203 | 204 | You must be root to invoke `./make`. Most build commands will still 205 | run unprivileged, as the user you specified in the NORMALUSER variable 206 | in `lh-config`, but root privileges are needed for some steps in the 207 | creation of the image: loopback mounting, for instance. 208 | 209 | If you need a clean build, type `./make clean`. The output directory 210 | will be erased, except for the downloaded sources. If you need to 211 | also erase the downloaded sources, type `./make distclean`. 212 | 213 | To start the build, type `./make`. 214 | Not just `make`, but `./make`, i.e. the provided script. This script 215 | sets a few important environment variables before calling the real 216 | `make` with all its command line. You can give `./make` all the 217 | options and arguments you would give `make`, for instance `-j6`. 218 | 219 | The filesystems will be built under the `./output` directory, or 220 | whatever directory you specified in the OUTPUT variable in `lh-config`. 221 | 222 | Under this directory, once the build has completed: 223 | - `rootfs`, `rwfs` and `userfs` are the contents of the 224 | respective filesystems of the target. You can use those to make tarballs, 225 | for instance. 226 | - `kernel` is the kernel binary, to be given to qemu. 227 | - `disk-image.raw` is the complete raw disk image, suitable for qemu or to be 228 | burned onto a real disk or SD card. By default it is huge, but it's a 229 | sparse file, i.e. it's not really using all that space, only the parts 230 | that have actually been written to (which is a small portion of the total 231 | space). 232 | - Previous versions of `lh-bootstrap` built an initramfs. This has 233 | been removed. 234 | 235 | 236 | ### Running on backends 237 | 238 | To use qemu with lh-bootstrap, you need the qemu package installed 239 | (obviously), and *also* the libguestfs package; some distributions 240 | call it `libguestfs-tools`. (The lh-bootstrap uses the `virt-make-fs` 241 | and `virt-copy-in` binaries.) 242 | 243 | To launch qemu on an image you just created, run `./make qemu-boot`. 244 | This will start a qemu process running the image you just created. 245 | You can look at the ./run-qemu script to see exactly what it does. 246 | 247 | -------------------------------------------------------------------------------- /sub/skarnet.org/Makefile: -------------------------------------------------------------------------------- 1 | 2 | SKALIBS_VERSION := 6b8878ed9df46954d49d82bcc091c02a6a1a349e 3 | # SKALIBS_VERSION := v2.14.4.0 4 | 5 | NSSS_VERSION := af43918b5c8605770af2b895ac9869a0773588b3 6 | # NSSS_VERSION := v0.2.1.0 7 | 8 | UTMPS_VERSION := 303a139e04436058ac9c8ca3cfc9b55df9ae66f2 9 | # UTMPS_VERSION := v0.1.3.0 10 | 11 | EXECLINE_VERSION := b9eb768dc8a61251a0c39fb3845d898338892587 12 | # EXECLINE_VERSION := v2.9.7.0 13 | 14 | S6_VERSION := 07a793bc3b40d690da98dbf4436ac4503061e0fe 15 | # S6_VERSION := v2.13.2.0 16 | 17 | S6_RC_VERSION := 09ccd3128f2296d3a0cd1602e64caf06cf22c64f 18 | # S6_RC_VERSION := v0.5.6.0 19 | 20 | S6_LINUX_INIT_VERSION := 445c07024609de545795e16035a4a1ab12586561 21 | # S6_LINUX_INIT_VERSION := v1.1.3.0 22 | 23 | S6_PORTABLE_UTILS_VERSION := bc7c571125e245bb5a08578e3b31752fc7335460 24 | # S6_PORTABLE_UTILS_VERSION := v2.3.1.0 25 | 26 | S6_LINUX_UTILS_VERSION := 7cdb6a63f20f1abc96738ebf7b97effcae5bfd4b 27 | # S6_LINUX_UTILS_VERSION := v2.6.3.0 28 | 29 | S6_DNS_VERSION := 2f3ccc92df447cc5705e6013e61c1e4bd75d393e 30 | # S6_DNS_VERSION := v2.4.1.0 31 | 32 | S6_NETWORKING_VERSION := 70eaae07db27291d918aaf84f1c08bc0ac744534 33 | # S6_NETWORKING_VERSION := v2.7.1.0 34 | 35 | MDEVD_VERSION := 777100e73376d0977ee4300b5580670edb6df08f 36 | # MDEVD_VERSION := v0.1.7.0 37 | 38 | TIPIDEE_VERSION := f0b2ad1b2023bc04f3add106c63533d19b878d78 39 | # TIPIDEE_VERSION := v0.0.6.0 40 | 41 | SHIBARI_VERSION := 5f04bdbd146462cbcfaab84ec1667f0c2cf7de11 42 | # SHIBARI_VERSION := v0.0.2.0 43 | 44 | BCNM_VERSION := 4ac05cd949282651c182a9c36ff508cba72d1978 45 | # BCNM_VERSION := v0.0.2.0 46 | 47 | DNSFUNNEL_VERSION := 9b3435c02f1e731deda2d958c5dcfbc1e66fa1b2 48 | # DNSFUNNEL_VERSION := v0.0.3.0 49 | 50 | APASTE_VERSION := 287ecb751f0a949a3dd41354b090daf638233ade 51 | # APASTE_VERSION := v0.0.3.0 52 | 53 | S6_FRONTEND_VERSION := 31c208b970599588b00837294871fa4e4eeb01de 54 | # S6_FRONTEND_VERSION := v0.0.1.0 55 | 56 | SKAWARE := SKALIBS NSSS UTMPS EXECLINE S6 S6_RC S6_LINUX_INIT S6_PORTABLE_UTILS S6_LINUX_UTILS S6_DNS S6_NETWORKING MDEVD TIPIDEE SHIBARI BCNM DNSFUNNEL APASTE S6_FRONTEND 57 | SKAWARE_BUILD := SKALIBS NSSS UTMPS EXECLINE S6 S6_RC S6_LINUX_INIT S6_PORTABLE_UTILS S6_LINUX_UTILS 58 | 59 | SKALIBS_DEPENDENCIES := 60 | NSSS_DEPENDENCIES := SKALIBS 61 | UTMPS_DEPENDENCIES := SKALIBS NSSS 62 | EXECLINE_DEPENDENCIES := SKALIBS NSSS 63 | S6_DEPENDENCIES := SKALIBS EXECLINE NSSS 64 | S6_RC_DEPENDENCIES := SKALIBS EXECLINE S6 65 | S6_LINUX_INIT_DEPENDENCIES := SKALIBS NSSS UTMPS EXECLINE S6 66 | S6_PORTABLE_UTILS_DEPENDENCIES := SKALIBS 67 | S6_LINUX_UTILS_DEPENDENCIES := SKALIBS NSSS 68 | S6_DNS_DEPENDENCIES := SKALIBS 69 | S6_NETWORKING_DEPENDENCIES := SKALIBS NSSS EXECLINE S6 S6_DNS 70 | MDEVD_DEPENDENCIES := SKALIBS NSSS 71 | TIPIDEE_DEPENDENCIES := SKALIBS 72 | SHIBARI_DEPENDENCIES := SKALIBS S6 S6_DNS 73 | BCNM_DEPENDENCIES := SKALIBS 74 | DNSFUNNEL_DEPENDENCIES := SKALIBS S6_DNS 75 | APASTE_DEPENDENCIES := SKALIBS S6_NETWORKING 76 | S6_FRONTEND_DEPENDENCIES := SKALIBS NSSS EXECLINE S6 S6_RC S6_LINUX_INIT 77 | 78 | SKALIBS_CATEGORY := prog 79 | NSSS_CATEGORY := admin 80 | UTMPS_CATEGORY := admin 81 | EXECLINE_CATEGORY := admin 82 | S6_CATEGORY := admin 83 | S6_RC_CATEGORY := admin 84 | S6_LINUX_INIT_CATEGORY := admin 85 | S6_PORTABLE_UTILS_CATEGORY := admin 86 | S6_LINUX_UTILS_CATEGORY := admin 87 | S6_DNS_CATEGORY := web 88 | S6_NETWORKING_CATEGORY := net 89 | MDEVD_CATEGORY := admin 90 | TIPIDEE_CATEGORY := web 91 | SHIBARI_CATEGORY := web 92 | BCNM_CATEGORY := admin 93 | DNSFUNNEL_CATEGORY := web 94 | APASTE_CATEGORY := web 95 | S6_FRONTEND_CATEGORY := admin 96 | 97 | SKALIBS_TOKEN := libskarnet.a.xyzzy 98 | NSSS_TOKEN := nsssd-unix 99 | UTMPS_TOKEN := utmps-utmpd 100 | EXECLINE_TOKEN := execline 101 | S6_TOKEN := s6-supervise 102 | S6_RC_TOKEN := s6-rc 103 | S6_LINUX_INIT_TOKEN := s6-linux-init-maker 104 | S6_PORTABLE_UTILS_TOKEN := s6-ln 105 | S6_LINUX_UTILS_TOKEN := s6-ps 106 | S6_DNS_TOKEN := s6-dnsip 107 | S6_NETWORKING_TOKEN := s6-tlsd-io 108 | MDEVD_TOKEN := mdevd 109 | TIPIDEE_TOKEN := tipideed 110 | SHIBARI_TOKEN := shibari-server-udp 111 | BCNM_TOKEN := bcnm-waitif 112 | DNSFUNNEL_TOKEN := dnsfunneld 113 | APASTE_TOKEN := apaste 114 | S6_FRONTEND_TOKEN := s6-frontend-config-preprocess 115 | 116 | SKAWARE_ENV := $(if $(filter true,$(TARGET_STATIC)),,env LDFLAGS=-Wl,-rpath-link,$(OUTPUT)/rootfs/library.so) 117 | SKAWARE_OPTIONS := --enable-slashpackage --enable-nsss $(if $(filter true,$(TARGET_STATIC)),--enable-static-libc --disable-shared,--enable-shared --disable-allstatic) 118 | SKAWARE_BUILD_OPTIONS := --enable-slashpackage --disable-shared --enable-allstatic 119 | SKALIBS_OPTIONS := --with-default-path=/command:/usr/bin:/bin --with-sysdep-devurandom=yes --with-sysdep-grndinsecure=no --with-sysdep-posixspawnearlyreturn=no --with-sysdep-procselfexe=/proc/self/exe 120 | NSSS_OPTIONS := --enable-libc-includes 121 | UTMPS_OPTIONS := --enable-libc-includes --enable-utmp 122 | EXECLINE_OPTIONS := --disable-pedantic-posix --enable-multicall 123 | S6_OPTIONS := 124 | S6_RC_OPTIONS := 125 | S6_LINUX_INIT_OPTIONS := --enable-utmps 126 | S6_PORTABLE_UTILS_OPTIONS := --enable-multicall 127 | S6_LINUX_UTILS_OPTIONS := --enable-multicall 128 | S6_DNS_OPTIONS := 129 | S6_NETWORKING_OPTIONS := --enable-ssl=bearssl --with-ssl-path=$(OUTPUT)/rootfs/opt/bearssl 130 | MDEVD_OPTIONS := 131 | TIPIDEE_OPTIONS := 132 | SHIBARI_OPTIONS := 133 | BCNM_OPTIONS := 134 | DNSFUNNEL_OPTIONS := 135 | APASTE_OPTIONS := 136 | S6_FRONTEND_OPTIONS := --enable-aliases-daemontools --enable-aliases-runit 137 | 138 | $(OUTPUT)/build-$(TRIPLE)/s6-networking-$(S6_NETWORKING_VERSION)/config.mak: $(OUTPUT)/build-$(TRIPLE)/.lh_bearssl_installed 139 | 140 | ifeq ($(CONSOLE),) 141 | EARLY_GETTY := 142 | else 143 | EARLY_GETTY := -G "getty -H lh-$(word 1,$(subst -, ,$(TRIPLE))) 115200 $(CONSOLE)" 144 | endif 145 | 146 | .PHONY: skaware-install 147 | 148 | define skaware_rules_definition 149 | 150 | $(1)_NAME := $(subst _,-,$(shell echo $(1) | tr A-Z a-z)) 151 | $(1)_INCLUDE_LOCATION := $(OUTPUT)/rootfs/package/$$($(1)_CATEGORY)/$$($(1)_NAME)/include 152 | $(1)_LIBRARY_LOCATION := $(OUTPUT)/rootfs/package/$$($(1)_CATEGORY)/$$($(1)_NAME)/library 153 | $(1)_DYNLIB_LOCATION := $(OUTPUT)/rootfs/package/$$($(1)_CATEGORY)/$$($(1)_NAME)/library.so 154 | 155 | $(OUTPUT)/sources/$$($(1)_NAME)/Makefile: | $(OUTPUT)/tmp/.lh_prepared 156 | exec setuidgid $(NORMALUSER) rm -rf $(OUTPUT)/sources/$$($(1)_NAME) 157 | cd $(OUTPUT)/sources && setuidgid $(NORMALUSER) git clone git://git.skarnet.org/$$($(1)_NAME) 158 | exec setuidgid $(NORMALUSER) touch $$@ 159 | 160 | $(OUTPUT)/build-$(TRIPLE)/$$($(1)_NAME)-$$($(1)_VERSION)/Makefile: $(OUTPUT)/sources/$$($(1)_NAME)/Makefile | $(OUTPUT)/tmp/.lh_prepared 161 | exec setuidgid $(NORMALUSER) rm -rf $(OUTPUT)/build-$(TRIPLE)/$$($(1)_NAME)-$$($(1)_VERSION) 162 | exec setuidgid $(NORMALUSER) cp -a $(OUTPUT)/sources/$$($(1)_NAME) $(OUTPUT)/build-$(TRIPLE)/$$($(1)_NAME)-$$($(1)_VERSION) 163 | cd $(OUTPUT)/build-$(TRIPLE)/$$($(1)_NAME)-$$($(1)_VERSION) && setuidgid $(NORMALUSER) git checkout $$($(1)_VERSION) && rm -rf .git 164 | exec touch $$@ 165 | 166 | $(OUTPUT)/build-$(TRIPLE)/$$($(1)_NAME)-$$($(1)_VERSION)/config.mak: $(OUTPUT)/build-$(TRIPLE)/$$($(1)_NAME)-$$($(1)_VERSION)/Makefile $$(foreach dep,$$($(1)_DEPENDENCIES),$(OUTPUT)/rootfs/package/$$($$(dep)_CATEGORY)/$$($$(dep)_NAME)/include/$$($$(dep)_NAME)/config.h) 167 | cd $(OUTPUT)/build-$(TRIPLE)/$$($(1)_NAME)-$$($(1)_VERSION) && setuidgid $(NORMALUSER) $(SKAWARE_ENV) env DESTDIR=$(OUTPUT)/rootfs ./configure --host=$(TRIPLE) $(SKAWARE_OPTIONS) $$($(1)_OPTIONS) 168 | 169 | $(OUTPUT)/build-$(TRIPLE)/$$($(1)_NAME)-$$($(1)_VERSION)/$$($(1)_TOKEN): $(OUTPUT)/build-$(TRIPLE)/$$($(1)_NAME)-$$($(1)_VERSION)/config.mak 170 | cd $(OUTPUT)/build-$(TRIPLE)/$$($(1)_NAME)-$$($(1)_VERSION) && setuidgid $(NORMALUSER) $(MAKE) all 171 | +cd $(OUTPUT)/build-$(TRIPLE)/$$($(1)_NAME)-$$($(1)_VERSION) && setuidgid $(NORMALUSER) $(MAKE) strip 172 | 173 | $(OUTPUT)/rootfs/package/$$($(1)_CATEGORY)/$$($(1)_NAME)/include/$$($(1)_NAME)/config.h: $(OUTPUT)/build-$(TRIPLE)/$$($(1)_NAME)-$$($(1)_VERSION)/$$($(1)_TOKEN) $(OUTPUT)/tmp/.lh_layout_installed 174 | cd $(OUTPUT)/build-$(TRIPLE)/$$($(1)_NAME)-$$($(1)_VERSION) && $(MAKE) install DESTDIR=$(OUTPUT)/rootfs 175 | cd $(OUTPUT)/build-$(TRIPLE)/$$($(1)_NAME)-$$($(1)_VERSION) && $(MAKE) -L update DESTDIR=$(OUTPUT)/rootfs 176 | cd $(OUTPUT)/build-$(TRIPLE)/$$($(1)_NAME)-$$($(1)_VERSION) && $(MAKE) -L global-links DESTDIR=$(OUTPUT)/rootfs 177 | exec touch $$@ 178 | 179 | $(OUTPUT)/build-$(TRIPLE)/.lh_skarnet_installed: $(OUTPUT)/rootfs/package/$$($(1)_CATEGORY)/$$($(1)_NAME)/include/$$($(1)_NAME)/config.h 180 | 181 | endef 182 | 183 | $(foreach pkg,$(SKAWARE),$(eval $(call skaware_rules_definition,$(pkg)))) 184 | 185 | 186 | $(OUTPUT)/build-$(TRIPLE)/.lh_s6li_laidout: $(OUTPUT)/rootfs/package/admin/s6-linux-init/include/s6-linux-init/config.h | $(OUTPUT)/tmp/.lh_prepared $(OUTPUT)/build-build/.lh_skarnet_installed $(OUTPUT)/tmp/.lh_layout_installed 187 | exec mkdir -p $(OUTPUT)/rootfs/etc/s6-linux-init 188 | exec rm -rf $(OUTPUT)/rootfs/etc/s6-linux-init/s6lidir 189 | exec s6-linux-init-maker -u $(NORMALUSER) $(EARLY_GETTY) -1 -p /command:/bin -s /run/kernel_env -f $(OUTPUT)/build-build/etc/s6-linux-init/skel -- $(OUTPUT)/rootfs/etc/s6-linux-init/s6lidir 190 | exec sed -i 's/s6-setuidgid "$(NORMALUSER)"/s6-setuidgid catchlog/' $(OUTPUT)/rootfs/etc/s6-linux-init/s6lidir/run-image/service/s6-svscan-log/run 191 | exec rm -rf $(OUTPUT)/rootfs/etc/s6-linux-init/current 192 | exec mv -f $(OUTPUT)/rootfs/etc/s6-linux-init/s6lidir $(OUTPUT)/rootfs/etc/s6-linux-init/current 193 | exec $(OUTPUT)/build-build/command/s6-chown -u 98 -g 98 -- $(OUTPUT)/rootfs/etc/s6-linux-init/current/run-image/uncaught-logs 194 | exec $(OUTPUT)/build-build/command/s6-chown -u 98 -g 98 -- $(OUTPUT)/rootfs/etc/s6-linux-init/current/run-image/service/s6-svscan-log/fifo 195 | exec $(OUTPUT)/build-build/command/s6-chmod 02750 $(OUTPUT)/rootfs/etc/s6-linux-init/current/run-image/uncaught-logs 196 | for i in `ls -1 $(OUTPUT)/rootfs/etc/s6-linux-init/current/bin` ; do ln -sf ../etc/s6-linux-init/current/bin/$$i $(OUTPUT)/rootfs/bin/$$i ; done 197 | exec setuidgid $(NORMALUSER) touch $@ 198 | 199 | $(OUTPUT)/build-$(TRIPLE)/.lh_skarnet_installed: $(OUTPUT)/build-$(TRIPLE)/.lh_s6li_laidout 200 | 201 | $(OUTPUT)/build-$(TRIPLE)/.lh_skarnet_installed: 202 | exec setuidgid $(NORMALUSER) touch $@ 203 | 204 | define skaware_build_rules_definition 205 | 206 | $(1)_BUILD_INCLUDE_LOCATION := $(OUTPUT)/build-build/package/$$($(1)_CATEGORY)/$$($(1)_NAME)/include 207 | $(1)_BUILD_LIBRARY_LOCATION := $(OUTPUT)/build-build/package/$$($(1)_CATEGORY)/$$($(1)_NAME)/library 208 | $(1)_BUILD_DYNLIB_LOCATION := $(OUTPUT)/build-build/package/$$($(1)_CATEGORY)/$$($(1)_NAME)/library.so 209 | 210 | $(OUTPUT)/build-build/$$($(1)_NAME)-$$($(1)_VERSION)/Makefile: $(OUTPUT)/sources/$$($(1)_NAME)/Makefile | $(OUTPUT)/tmp/.lh_prepared 211 | exec setuidgid $(NORMALUSER) rm -rf $(OUTPUT)/build-build/$$($(1)_NAME)-$$($(1)_VERSION) 212 | exec setuidgid $(NORMALUSER) cp -a $(OUTPUT)/sources/$$($(1)_NAME) $(OUTPUT)/build-build/$$($(1)_NAME)-$$($(1)_VERSION) 213 | cd $(OUTPUT)/build-build/$$($(1)_NAME)-$$($(1)_VERSION) && setuidgid $(NORMALUSER) git checkout $$($(1)_VERSION) && rm -rf .git 214 | exec touch $$@ 215 | 216 | $(OUTPUT)/build-build/$$($(1)_NAME)-$$($(1)_VERSION)/config.mak: $(OUTPUT)/build-build/$$($(1)_NAME)-$$($(1)_VERSION)/Makefile $$(foreach dep,$$($(1)_DEPENDENCIES),$(OUTPUT)/build-build/package/$$($$(dep)_CATEGORY)/$$($$(dep)_NAME)/include/$$($$(dep)_NAME)/config.h) 217 | cd $(OUTPUT)/build-build/$$($(1)_NAME)-$$($(1)_VERSION) && setuidgid $(NORMALUSER) env CC="$(BUILD_CC)" DESTDIR=$(OUTPUT)/build-build ./configure $(SKAWARE_BUILD_OPTIONS) $$($(1)_OPTIONS) 218 | 219 | $(OUTPUT)/build-build/$$($(1)_NAME)-$$($(1)_VERSION)/$$($(1)_TOKEN): $(OUTPUT)/build-build/$$($(1)_NAME)-$$($(1)_VERSION)/config.mak 220 | cd $(OUTPUT)/build-build/$$($(1)_NAME)-$$($(1)_VERSION) && setuidgid $(NORMALUSER) $(MAKE) all 221 | +cd $(OUTPUT)/build-build/$$($(1)_NAME)-$$($(1)_VERSION) && setuidgid $(NORMALUSER) $(MAKE) strip 222 | 223 | $(OUTPUT)/build-build/package/$$($(1)_CATEGORY)/$$($(1)_NAME)/include/$$($(1)_NAME)/config.h: $(OUTPUT)/build-build/$$($(1)_NAME)-$$($(1)_VERSION)/$$($(1)_TOKEN) 224 | cd $(OUTPUT)/build-build/$$($(1)_NAME)-$$($(1)_VERSION) && $(MAKE) install DESTDIR=$(OUTPUT)/build-build 225 | cd $(OUTPUT)/build-build/$$($(1)_NAME)-$$($(1)_VERSION) && $(MAKE) -L update DESTDIR=$(OUTPUT)/build-build 226 | cd $(OUTPUT)/build-build/$$($(1)_NAME)-$$($(1)_VERSION) && $(MAKE) -L global-links DESTDIR=$(OUTPUT)/build-build 227 | exec touch $$@ 228 | 229 | $(OUTPUT)/build-build/.lh_skarnet_installed: $(OUTPUT)/build-build/package/$$($(1)_CATEGORY)/$$($(1)_NAME)/include/$$($(1)_NAME)/config.h 230 | 231 | endef 232 | 233 | $(foreach pkg,$(SKAWARE_BUILD),$(eval $(call skaware_build_rules_definition,$(pkg)))) 234 | 235 | $(OUTPUT)/build-build/etc/s6-linux-init/skel/rc.init: $(OUTPUT)/build-build/package/admin/s6-linux-init/include/s6-linux-init/config.h sub/skarnet.org/rc.init sub/skarnet.org/rc.shutdown sub/skarnet.org/rc.shutdown.final sub/skarnet.org/runlevel 236 | exec setuidgid $(NORMALUSER) mkdir -p $(OUTPUT)/build-build/etc/s6-linux-init/skel 237 | exec setuidgid $(NORMALUSER) cp -f sub/skarnet.org/rc.shutdown $(OUTPUT)/build-build/etc/s6-linux-init/skel/rc.shutdown 238 | exec setuidgid $(NORMALUSER) cp -f sub/skarnet.org/rc.shutdown.final $(OUTPUT)/build-build/etc/s6-linux-init/skel/rc.shutdown.final 239 | exec setuidgid $(NORMALUSER) cp -f sub/skarnet.org/runlevel $(OUTPUT)/build-build/etc/s6-linux-init/skel/runlevel 240 | exec setuidgid $(NORMALUSER) cp -f sub/skarnet.org/rc.init $@ 241 | 242 | $(OUTPUT)/build-build/.lh_skarnet_installed: $(OUTPUT)/build-build/etc/s6-linux-init/skel/rc.init 243 | 244 | $(OUTPUT)/build-build/.lh_skarnet_installed: 245 | exec setuidgid $(NORMALUSER) touch $@ 246 | -------------------------------------------------------------------------------- /COPYING: -------------------------------------------------------------------------------- 1 | --- A note on GPL versions 2 | 3 | lh-bootstrap is distributed under version 2 of the General Public License 4 | (included in its entirety, below). Version 2 is the only version of this 5 | license that this version of lh-bootstrap (or modified versions derived 6 | from this one) may be distributed under. 7 | 8 | ------------------------------------------------------------------------ 9 | 10 | GNU GENERAL PUBLIC LICENSE 11 | Version 2, June 1991 12 | 13 | Copyright (C) 1989, 1991 Free Software Foundation, Inc. 14 | 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 15 | Everyone is permitted to copy and distribute verbatim copies 16 | of this license document, but changing it is not allowed. 17 | 18 | Preamble 19 | 20 | The licenses for most software are designed to take away your 21 | freedom to share and change it. By contrast, the GNU General Public 22 | License is intended to guarantee your freedom to share and change free 23 | software--to make sure the software is free for all its users. This 24 | General Public License applies to most of the Free Software 25 | Foundation's software and to any other program whose authors commit to 26 | using it. (Some other Free Software Foundation software is covered by 27 | the GNU Library General Public License instead.) You can apply it to 28 | your programs, too. 29 | 30 | When we speak of free software, we are referring to freedom, not 31 | price. Our General Public Licenses are designed to make sure that you 32 | have the freedom to distribute copies of free software (and charge for 33 | this service if you wish), that you receive source code or can get it 34 | if you want it, that you can change the software or use pieces of it 35 | in new free programs; and that you know you can do these things. 36 | 37 | To protect your rights, we need to make restrictions that forbid 38 | anyone to deny you these rights or to ask you to surrender the rights. 39 | These restrictions translate to certain responsibilities for you if you 40 | distribute copies of the software, or if you modify it. 41 | 42 | For example, if you distribute copies of such a program, whether 43 | gratis or for a fee, you must give the recipients all the rights that 44 | you have. You must make sure that they, too, receive or can get the 45 | source code. And you must show them these terms so they know their 46 | rights. 47 | 48 | We protect your rights with two steps: (1) copyright the software, and 49 | (2) offer you this license which gives you legal permission to copy, 50 | distribute and/or modify the software. 51 | 52 | Also, for each author's protection and ours, we want to make certain 53 | that everyone understands that there is no warranty for this free 54 | software. If the software is modified by someone else and passed on, we 55 | want its recipients to know that what they have is not the original, so 56 | that any problems introduced by others will not reflect on the original 57 | authors' reputations. 58 | 59 | Finally, any free program is threatened constantly by software 60 | patents. We wish to avoid the danger that redistributors of a free 61 | program will individually obtain patent licenses, in effect making the 62 | program proprietary. To prevent this, we have made it clear that any 63 | patent must be licensed for everyone's free use or not licensed at all. 64 | 65 | The precise terms and conditions for copying, distribution and 66 | modification follow. 67 | 68 | GNU GENERAL PUBLIC LICENSE 69 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 70 | 71 | 0. This License applies to any program or other work which contains 72 | a notice placed by the copyright holder saying it may be distributed 73 | under the terms of this General Public License. The "Program", below, 74 | refers to any such program or work, and a "work based on the Program" 75 | means either the Program or any derivative work under copyright law: 76 | that is to say, a work containing the Program or a portion of it, 77 | either verbatim or with modifications and/or translated into another 78 | language. (Hereinafter, translation is included without limitation in 79 | the term "modification".) Each licensee is addressed as "you". 80 | 81 | Activities other than copying, distribution and modification are not 82 | covered by this License; they are outside its scope. The act of 83 | running the Program is not restricted, and the output from the Program 84 | is covered only if its contents constitute a work based on the 85 | Program (independent of having been made by running the Program). 86 | Whether that is true depends on what the Program does. 87 | 88 | 1. You may copy and distribute verbatim copies of the Program's 89 | source code as you receive it, in any medium, provided that you 90 | conspicuously and appropriately publish on each copy an appropriate 91 | copyright notice and disclaimer of warranty; keep intact all the 92 | notices that refer to this License and to the absence of any warranty; 93 | and give any other recipients of the Program a copy of this License 94 | along with the Program. 95 | 96 | You may charge a fee for the physical act of transferring a copy, and 97 | you may at your option offer warranty protection in exchange for a fee. 98 | 99 | 2. You may modify your copy or copies of the Program or any portion 100 | of it, thus forming a work based on the Program, and copy and 101 | distribute such modifications or work under the terms of Section 1 102 | above, provided that you also meet all of these conditions: 103 | 104 | a) You must cause the modified files to carry prominent notices 105 | stating that you changed the files and the date of any change. 106 | 107 | b) You must cause any work that you distribute or publish, that in 108 | whole or in part contains or is derived from the Program or any 109 | part thereof, to be licensed as a whole at no charge to all third 110 | parties under the terms of this License. 111 | 112 | c) If the modified program normally reads commands interactively 113 | when run, you must cause it, when started running for such 114 | interactive use in the most ordinary way, to print or display an 115 | announcement including an appropriate copyright notice and a 116 | notice that there is no warranty (or else, saying that you provide 117 | a warranty) and that users may redistribute the program under 118 | these conditions, and telling the user how to view a copy of this 119 | License. (Exception: if the Program itself is interactive but 120 | does not normally print such an announcement, your work based on 121 | the Program is not required to print an announcement.) 122 | 123 | These requirements apply to the modified work as a whole. If 124 | identifiable sections of that work are not derived from the Program, 125 | and can be reasonably considered independent and separate works in 126 | themselves, then this License, and its terms, do not apply to those 127 | sections when you distribute them as separate works. But when you 128 | distribute the same sections as part of a whole which is a work based 129 | on the Program, the distribution of the whole must be on the terms of 130 | this License, whose permissions for other licensees extend to the 131 | entire whole, and thus to each and every part regardless of who wrote it. 132 | 133 | Thus, it is not the intent of this section to claim rights or contest 134 | your rights to work written entirely by you; rather, the intent is to 135 | exercise the right to control the distribution of derivative or 136 | collective works based on the Program. 137 | 138 | In addition, mere aggregation of another work not based on the Program 139 | with the Program (or with a work based on the Program) on a volume of 140 | a storage or distribution medium does not bring the other work under 141 | the scope of this License. 142 | 143 | 3. You may copy and distribute the Program (or a work based on it, 144 | under Section 2) in object code or executable form under the terms of 145 | Sections 1 and 2 above provided that you also do one of the following: 146 | 147 | a) Accompany it with the complete corresponding machine-readable 148 | source code, which must be distributed under the terms of Sections 149 | 1 and 2 above on a medium customarily used for software interchange; or, 150 | 151 | b) Accompany it with a written offer, valid for at least three 152 | years, to give any third party, for a charge no more than your 153 | cost of physically performing source distribution, a complete 154 | machine-readable copy of the corresponding source code, to be 155 | distributed under the terms of Sections 1 and 2 above on a medium 156 | customarily used for software interchange; or, 157 | 158 | c) Accompany it with the information you received as to the offer 159 | to distribute corresponding source code. (This alternative is 160 | allowed only for noncommercial distribution and only if you 161 | received the program in object code or executable form with such 162 | an offer, in accord with Subsection b above.) 163 | 164 | The source code for a work means the preferred form of the work for 165 | making modifications to it. For an executable work, complete source 166 | code means all the source code for all modules it contains, plus any 167 | associated interface definition files, plus the scripts used to 168 | control compilation and installation of the executable. However, as a 169 | special exception, the source code distributed need not include 170 | anything that is normally distributed (in either source or binary 171 | form) with the major components (compiler, kernel, and so on) of the 172 | operating system on which the executable runs, unless that component 173 | itself accompanies the executable. 174 | 175 | If distribution of executable or object code is made by offering 176 | access to copy from a designated place, then offering equivalent 177 | access to copy the source code from the same place counts as 178 | distribution of the source code, even though third parties are not 179 | compelled to copy the source along with the object code. 180 | 181 | 4. You may not copy, modify, sublicense, or distribute the Program 182 | except as expressly provided under this License. Any attempt 183 | otherwise to copy, modify, sublicense or distribute the Program is 184 | void, and will automatically terminate your rights under this License. 185 | However, parties who have received copies, or rights, from you under 186 | this License will not have their licenses terminated so long as such 187 | parties remain in full compliance. 188 | 189 | 5. You are not required to accept this License, since you have not 190 | signed it. However, nothing else grants you permission to modify or 191 | distribute the Program or its derivative works. These actions are 192 | prohibited by law if you do not accept this License. Therefore, by 193 | modifying or distributing the Program (or any work based on the 194 | Program), you indicate your acceptance of this License to do so, and 195 | all its terms and conditions for copying, distributing or modifying 196 | the Program or works based on it. 197 | 198 | 6. Each time you redistribute the Program (or any work based on the 199 | Program), the recipient automatically receives a license from the 200 | original licensor to copy, distribute or modify the Program subject to 201 | these terms and conditions. You may not impose any further 202 | restrictions on the recipients' exercise of the rights granted herein. 203 | You are not responsible for enforcing compliance by third parties to 204 | this License. 205 | 206 | 7. If, as a consequence of a court judgment or allegation of patent 207 | infringement or for any other reason (not limited to patent issues), 208 | conditions are imposed on you (whether by court order, agreement or 209 | otherwise) that contradict the conditions of this License, they do not 210 | excuse you from the conditions of this License. If you cannot 211 | distribute so as to satisfy simultaneously your obligations under this 212 | License and any other pertinent obligations, then as a consequence you 213 | may not distribute the Program at all. For example, if a patent 214 | license would not permit royalty-free redistribution of the Program by 215 | all those who receive copies directly or indirectly through you, then 216 | the only way you could satisfy both it and this License would be to 217 | refrain entirely from distribution of the Program. 218 | 219 | If any portion of this section is held invalid or unenforceable under 220 | any particular circumstance, the balance of the section is intended to 221 | apply and the section as a whole is intended to apply in other 222 | circumstances. 223 | 224 | It is not the purpose of this section to induce you to infringe any 225 | patents or other property right claims or to contest validity of any 226 | such claims; this section has the sole purpose of protecting the 227 | integrity of the free software distribution system, which is 228 | implemented by public license practices. Many people have made 229 | generous contributions to the wide range of software distributed 230 | through that system in reliance on consistent application of that 231 | system; it is up to the author/donor to decide if he or she is willing 232 | to distribute software through any other system and a licensee cannot 233 | impose that choice. 234 | 235 | This section is intended to make thoroughly clear what is believed to 236 | be a consequence of the rest of this License. 237 | 238 | 8. If the distribution and/or use of the Program is restricted in 239 | certain countries either by patents or by copyrighted interfaces, the 240 | original copyright holder who places the Program under this License 241 | may add an explicit geographical distribution limitation excluding 242 | those countries, so that distribution is permitted only in or among 243 | countries not thus excluded. In such case, this License incorporates 244 | the limitation as if written in the body of this License. 245 | 246 | 9. The Free Software Foundation may publish revised and/or new versions 247 | of the General Public License from time to time. Such new versions will 248 | be similar in spirit to the present version, but may differ in detail to 249 | address new problems or concerns. 250 | 251 | Each version is given a distinguishing version number. If the Program 252 | specifies a version number of this License which applies to it and "any 253 | later version", you have the option of following the terms and conditions 254 | either of that version or of any later version published by the Free 255 | Software Foundation. If the Program does not specify a version number of 256 | this License, you may choose any version ever published by the Free Software 257 | Foundation. 258 | 259 | 10. If you wish to incorporate parts of the Program into other free 260 | programs whose distribution conditions are different, write to the author 261 | to ask for permission. For software which is copyrighted by the Free 262 | Software Foundation, write to the Free Software Foundation; we sometimes 263 | make exceptions for this. Our decision will be guided by the two goals 264 | of preserving the free status of all derivatives of our free software and 265 | of promoting the sharing and reuse of software generally. 266 | 267 | NO WARRANTY 268 | 269 | 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY 270 | FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN 271 | OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES 272 | PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED 273 | OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 274 | MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS 275 | TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE 276 | PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, 277 | REPAIR OR CORRECTION. 278 | 279 | 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 280 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR 281 | REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, 282 | INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING 283 | OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED 284 | TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY 285 | YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER 286 | PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE 287 | POSSIBILITY OF SUCH DAMAGES. 288 | 289 | END OF TERMS AND CONDITIONS 290 | 291 | How to Apply These Terms to Your New Programs 292 | 293 | If you develop a new program, and you want it to be of the greatest 294 | possible use to the public, the best way to achieve this is to make it 295 | free software which everyone can redistribute and change under these terms. 296 | 297 | To do so, attach the following notices to the program. It is safest 298 | to attach them to the start of each source file to most effectively 299 | convey the exclusion of warranty; and each file should have at least 300 | the "copyright" line and a pointer to where the full notice is found. 301 | 302 | 303 | Copyright (C) 304 | 305 | This program is free software; you can redistribute it and/or modify 306 | it under the terms of the GNU General Public License as published by 307 | the Free Software Foundation; either version 2 of the License, or 308 | (at your option) any later version. 309 | 310 | This program is distributed in the hope that it will be useful, 311 | but WITHOUT ANY WARRANTY; without even the implied warranty of 312 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 313 | GNU General Public License for more details. 314 | 315 | You should have received a copy of the GNU General Public License 316 | along with this program; if not, write to the Free Software 317 | Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 318 | 319 | 320 | Also add information on how to contact you by electronic and paper mail. 321 | 322 | If the program is interactive, make it output a short notice like this 323 | when it starts in an interactive mode: 324 | 325 | Gnomovision version 69, Copyright (C) year name of author 326 | Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 327 | This is free software, and you are welcome to redistribute it 328 | under certain conditions; type `show c' for details. 329 | 330 | The hypothetical commands `show w' and `show c' should show the appropriate 331 | parts of the General Public License. Of course, the commands you use may 332 | be called something other than `show w' and `show c'; they could even be 333 | mouse-clicks or menu items--whatever suits your program. 334 | 335 | You should also get your employer (if you work as a programmer) or your 336 | school, if any, to sign a "copyright disclaimer" for the program, if 337 | necessary. Here is a sample; alter the names: 338 | 339 | Yoyodyne, Inc., hereby disclaims all copyright interest in the program 340 | `Gnomovision' (which makes passes at compilers) written by James Hacker. 341 | 342 | , 1 April 1989 343 | Ty Coon, President of Vice 344 | 345 | This General Public License does not permit incorporating your program into 346 | proprietary programs. If your program is a subroutine library, you may 347 | consider it more useful to permit linking proprietary applications with the 348 | library. If this is what you want to do, use the GNU Library General 349 | Public License instead of this License. 350 | -------------------------------------------------------------------------------- /sub/busybox/host-full-config: -------------------------------------------------------------------------------- 1 | # 2 | # Automatically generated make config: don't edit 3 | # Busybox version: 1.37.0.git 4 | # Sat Sep 7 17:53:14 2024 5 | # 6 | CONFIG_HAVE_DOT_CONFIG=y 7 | 8 | # 9 | # Settings 10 | # 11 | CONFIG_DESKTOP=y 12 | # CONFIG_EXTRA_COMPAT is not set 13 | # CONFIG_FEDORA_COMPAT is not set 14 | # CONFIG_INCLUDE_SUSv2 is not set 15 | CONFIG_LONG_OPTS=y 16 | CONFIG_SHOW_USAGE=y 17 | # CONFIG_FEATURE_VERBOSE_USAGE is not set 18 | # CONFIG_FEATURE_COMPRESS_USAGE is not set 19 | CONFIG_LFS=y 20 | CONFIG_TIME64=y 21 | # CONFIG_PAM is not set 22 | CONFIG_FEATURE_DEVPTS=y 23 | CONFIG_FEATURE_UTMP=y 24 | CONFIG_FEATURE_WTMP=y 25 | # CONFIG_FEATURE_PIDFILE is not set 26 | CONFIG_PID_FILE_PATH="" 27 | CONFIG_BUSYBOX=y 28 | # CONFIG_FEATURE_SHOW_SCRIPT is not set 29 | # CONFIG_FEATURE_INSTALLER is not set 30 | CONFIG_INSTALL_NO_USR=y 31 | # CONFIG_FEATURE_SUID is not set 32 | # CONFIG_FEATURE_SUID_CONFIG is not set 33 | # CONFIG_FEATURE_SUID_CONFIG_QUIET is not set 34 | # CONFIG_FEATURE_PREFER_APPLETS is not set 35 | CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe" 36 | # CONFIG_SELINUX is not set 37 | # CONFIG_FEATURE_CLEAN_UP is not set 38 | # CONFIG_FEATURE_SYSLOG_INFO is not set 39 | CONFIG_FEATURE_SYSLOG=y 40 | 41 | # 42 | # Build Options 43 | # 44 | # CONFIG_STATIC is not set 45 | # CONFIG_PIE is not set 46 | # CONFIG_NOMMU is not set 47 | # CONFIG_BUILD_LIBBUSYBOX is not set 48 | # CONFIG_FEATURE_LIBBUSYBOX_STATIC is not set 49 | # CONFIG_FEATURE_INDIVIDUAL is not set 50 | # CONFIG_FEATURE_SHARED_BUSYBOX is not set 51 | CONFIG_CROSS_COMPILER_PREFIX="" 52 | CONFIG_SYSROOT="" 53 | CONFIG_EXTRA_CFLAGS="-I../../rootfs/package/admin/utmps/include" 54 | CONFIG_EXTRA_LDFLAGS="-L../../rootfs/package/admin/utmps/library -L../../rootfs/package/prog/skalibs/library" 55 | CONFIG_EXTRA_LDLIBS="'utmps skarnet'" 56 | # CONFIG_USE_PORTABLE_CODE is not set 57 | CONFIG_STACK_OPTIMIZATION_386=y 58 | CONFIG_STATIC_LIBGCC=y 59 | 60 | # 61 | # Installation Options ("make install" behavior) 62 | # 63 | CONFIG_INSTALL_APPLET_SYMLINKS=y 64 | # CONFIG_INSTALL_APPLET_HARDLINKS is not set 65 | # CONFIG_INSTALL_APPLET_SCRIPT_WRAPPERS is not set 66 | # CONFIG_INSTALL_APPLET_DONT is not set 67 | # CONFIG_INSTALL_SH_APPLET_SYMLINK is not set 68 | # CONFIG_INSTALL_SH_APPLET_HARDLINK is not set 69 | # CONFIG_INSTALL_SH_APPLET_SCRIPT_WRAPPER is not set 70 | CONFIG_PREFIX="./_install" 71 | 72 | # 73 | # Debugging Options 74 | # 75 | # CONFIG_DEBUG is not set 76 | # CONFIG_DEBUG_PESSIMIZE is not set 77 | # CONFIG_DEBUG_SANITIZE is not set 78 | # CONFIG_UNIT_TEST is not set 79 | # CONFIG_WERROR is not set 80 | # CONFIG_WARN_SIMPLE_MSG is not set 81 | CONFIG_NO_DEBUG_LIB=y 82 | # CONFIG_DMALLOC is not set 83 | # CONFIG_EFENCE is not set 84 | 85 | # 86 | # Library Tuning 87 | # 88 | # CONFIG_FEATURE_USE_BSS_TAIL is not set 89 | # CONFIG_FLOAT_DURATION is not set 90 | CONFIG_FEATURE_RTMINMAX=y 91 | CONFIG_FEATURE_RTMINMAX_USE_LIBC_DEFINITIONS=y 92 | # CONFIG_FEATURE_BUFFERS_USE_MALLOC is not set 93 | CONFIG_FEATURE_BUFFERS_GO_ON_STACK=y 94 | # CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set 95 | CONFIG_PASSWORD_MINLEN=5 96 | CONFIG_MD5_SMALL=1 97 | CONFIG_SHA1_SMALL=0 98 | CONFIG_SHA1_HWACCEL=n 99 | CONFIG_SHA256_HWACCEL=n 100 | CONFIG_SHA3_SMALL=0 101 | CONFIG_FEATURE_NON_POSIX_CP=y 102 | CONFIG_FEATURE_VERBOSE_CP_MESSAGE=y 103 | CONFIG_FEATURE_USE_SENDFILE=y 104 | CONFIG_FEATURE_COPYBUF_KB=4 105 | CONFIG_MONOTONIC_SYSCALL=y 106 | CONFIG_IOCTL_HEX2STR_ERROR=y 107 | CONFIG_FEATURE_EDITING=y 108 | CONFIG_FEATURE_EDITING_MAX_LEN=4096 109 | # CONFIG_FEATURE_EDITING_VI is not set 110 | CONFIG_FEATURE_EDITING_HISTORY=1024 111 | CONFIG_FEATURE_EDITING_SAVEHISTORY=y 112 | # CONFIG_FEATURE_EDITING_SAVE_ON_EXIT is not set 113 | CONFIG_FEATURE_REVERSE_SEARCH=y 114 | CONFIG_FEATURE_TAB_COMPLETION=y 115 | # CONFIG_FEATURE_USERNAME_COMPLETION is not set 116 | CONFIG_FEATURE_EDITING_FANCY_PROMPT=y 117 | CONFIG_FEATURE_EDITING_WINCH=y 118 | CONFIG_FEATURE_EDITING_ASK_TERMINAL=y 119 | # CONFIG_LOCALE_SUPPORT is not set 120 | CONFIG_UNICODE_SUPPORT=y 121 | # CONFIG_UNICODE_USING_LOCALE is not set 122 | CONFIG_FEATURE_CHECK_UNICODE_IN_ENV=y 123 | CONFIG_SUBST_WCHAR=63 124 | CONFIG_LAST_SUPPORTED_WCHAR=767 125 | # CONFIG_UNICODE_COMBINING_WCHARS is not set 126 | # CONFIG_UNICODE_WIDE_WCHARS is not set 127 | # CONFIG_UNICODE_BIDI_SUPPORT is not set 128 | # CONFIG_UNICODE_NEUTRAL_TABLE is not set 129 | # CONFIG_UNICODE_PRESERVE_BROKEN is not set 130 | # CONFIG_LOOP_CONFIGURE is not set 131 | # CONFIG_NO_LOOP_CONFIGURE is not set 132 | CONFIG_TRY_LOOP_CONFIGURE=y 133 | 134 | # 135 | # Applets 136 | # 137 | 138 | # 139 | # Archival Utilities 140 | # 141 | CONFIG_FEATURE_SEAMLESS_XZ=y 142 | # CONFIG_FEATURE_SEAMLESS_LZMA is not set 143 | CONFIG_FEATURE_SEAMLESS_BZ2=y 144 | CONFIG_FEATURE_SEAMLESS_GZ=y 145 | # CONFIG_FEATURE_SEAMLESS_Z is not set 146 | # CONFIG_AR is not set 147 | # CONFIG_FEATURE_AR_LONG_FILENAMES is not set 148 | # CONFIG_FEATURE_AR_CREATE is not set 149 | # CONFIG_UNCOMPRESS is not set 150 | CONFIG_GUNZIP=y 151 | CONFIG_ZCAT=y 152 | # CONFIG_FEATURE_GUNZIP_LONG_OPTIONS is not set 153 | # CONFIG_BUNZIP2 is not set 154 | CONFIG_BZCAT=y 155 | # CONFIG_UNLZMA is not set 156 | # CONFIG_LZCAT is not set 157 | # CONFIG_LZMA is not set 158 | # CONFIG_UNXZ is not set 159 | # CONFIG_XZCAT is not set 160 | # CONFIG_XZ is not set 161 | # CONFIG_BZIP2 is not set 162 | CONFIG_BZIP2_SMALL=0 163 | CONFIG_FEATURE_BZIP2_DECOMPRESS=y 164 | CONFIG_CPIO=y 165 | CONFIG_FEATURE_CPIO_O=y 166 | # CONFIG_FEATURE_CPIO_P is not set 167 | CONFIG_FEATURE_CPIO_IGNORE_DEVNO=y 168 | CONFIG_FEATURE_CPIO_RENUMBER_INODES=y 169 | # CONFIG_DPKG is not set 170 | # CONFIG_DPKG_DEB is not set 171 | CONFIG_GZIP=y 172 | # CONFIG_FEATURE_GZIP_LONG_OPTIONS is not set 173 | CONFIG_GZIP_FAST=2 174 | # CONFIG_FEATURE_GZIP_LEVELS is not set 175 | CONFIG_FEATURE_GZIP_DECOMPRESS=y 176 | # CONFIG_LZOP is not set 177 | # CONFIG_UNLZOP is not set 178 | # CONFIG_LZOPCAT is not set 179 | # CONFIG_LZOP_COMPR_HIGH is not set 180 | # CONFIG_RPM is not set 181 | # CONFIG_RPM2CPIO is not set 182 | CONFIG_TAR=y 183 | # CONFIG_FEATURE_TAR_LONG_OPTIONS is not set 184 | CONFIG_FEATURE_TAR_CREATE=y 185 | CONFIG_FEATURE_TAR_AUTODETECT=y 186 | CONFIG_FEATURE_TAR_FROM=y 187 | CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY=y 188 | CONFIG_FEATURE_TAR_OLDSUN_COMPATIBILITY=y 189 | CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y 190 | # CONFIG_FEATURE_TAR_TO_COMMAND is not set 191 | CONFIG_FEATURE_TAR_UNAME_GNAME=y 192 | CONFIG_FEATURE_TAR_NOPRESERVE_TIME=y 193 | # CONFIG_FEATURE_TAR_SELINUX is not set 194 | # CONFIG_UNZIP is not set 195 | # CONFIG_FEATURE_UNZIP_CDF is not set 196 | # CONFIG_FEATURE_UNZIP_BZIP2 is not set 197 | # CONFIG_FEATURE_UNZIP_LZMA is not set 198 | # CONFIG_FEATURE_UNZIP_XZ is not set 199 | # CONFIG_FEATURE_LZMA_FAST is not set 200 | 201 | # 202 | # Coreutils 203 | # 204 | CONFIG_FEATURE_VERBOSE=y 205 | 206 | # 207 | # Common options for date and touch 208 | # 209 | # CONFIG_FEATURE_TIMEZONE is not set 210 | 211 | # 212 | # Common options for cp and mv 213 | # 214 | CONFIG_FEATURE_PRESERVE_HARDLINKS=y 215 | 216 | # 217 | # Common options for df, du, ls 218 | # 219 | # CONFIG_FEATURE_HUMAN_READABLE is not set 220 | CONFIG_BASENAME=y 221 | CONFIG_CAT=y 222 | CONFIG_FEATURE_CATN=y 223 | CONFIG_FEATURE_CATV=y 224 | CONFIG_CHGRP=y 225 | CONFIG_CHMOD=y 226 | CONFIG_CHOWN=y 227 | CONFIG_FEATURE_CHOWN_LONG_OPTIONS=y 228 | CONFIG_CHROOT=y 229 | # CONFIG_CKSUM is not set 230 | # CONFIG_CRC32 is not set 231 | # CONFIG_COMM is not set 232 | CONFIG_CP=y 233 | CONFIG_FEATURE_CP_LONG_OPTIONS=y 234 | CONFIG_FEATURE_CP_REFLINK=y 235 | CONFIG_CUT=y 236 | CONFIG_FEATURE_CUT_REGEX=y 237 | CONFIG_DATE=y 238 | CONFIG_FEATURE_DATE_ISOFMT=y 239 | # CONFIG_FEATURE_DATE_NANO is not set 240 | # CONFIG_FEATURE_DATE_COMPAT is not set 241 | CONFIG_DD=y 242 | CONFIG_FEATURE_DD_SIGNAL_HANDLING=y 243 | CONFIG_FEATURE_DD_THIRD_STATUS_LINE=y 244 | CONFIG_FEATURE_DD_IBS_OBS=y 245 | CONFIG_FEATURE_DD_STATUS=y 246 | CONFIG_DF=y 247 | CONFIG_FEATURE_DF_FANCY=y 248 | # CONFIG_FEATURE_SKIP_ROOTFS is not set 249 | CONFIG_DIRNAME=y 250 | # CONFIG_DOS2UNIX is not set 251 | # CONFIG_UNIX2DOS is not set 252 | CONFIG_DU=y 253 | CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y 254 | CONFIG_ECHO=y 255 | CONFIG_FEATURE_FANCY_ECHO=y 256 | CONFIG_ENV=y 257 | # CONFIG_EXPAND is not set 258 | # CONFIG_UNEXPAND is not set 259 | CONFIG_EXPR=y 260 | CONFIG_EXPR_MATH_SUPPORT_64=y 261 | # CONFIG_FACTOR is not set 262 | CONFIG_FALSE=y 263 | # CONFIG_FOLD is not set 264 | CONFIG_HEAD=y 265 | CONFIG_FEATURE_FANCY_HEAD=y 266 | # CONFIG_HOSTID is not set 267 | CONFIG_ID=y 268 | # CONFIG_GROUPS is not set 269 | # CONFIG_INSTALL is not set 270 | # CONFIG_FEATURE_INSTALL_LONG_OPTIONS is not set 271 | # CONFIG_LINK is not set 272 | CONFIG_LN=y 273 | # CONFIG_LOGNAME is not set 274 | CONFIG_LS=y 275 | CONFIG_FEATURE_LS_FILETYPES=y 276 | CONFIG_FEATURE_LS_FOLLOWLINKS=y 277 | CONFIG_FEATURE_LS_RECURSIVE=y 278 | CONFIG_FEATURE_LS_WIDTH=y 279 | CONFIG_FEATURE_LS_SORTFILES=y 280 | CONFIG_FEATURE_LS_TIMESTAMPS=y 281 | CONFIG_FEATURE_LS_USERNAME=y 282 | CONFIG_FEATURE_LS_COLOR=y 283 | CONFIG_FEATURE_LS_COLOR_IS_DEFAULT=y 284 | # CONFIG_MD5SUM is not set 285 | # CONFIG_SHA1SUM is not set 286 | CONFIG_SHA256SUM=y 287 | CONFIG_SHA512SUM=y 288 | # CONFIG_SHA3SUM is not set 289 | 290 | # 291 | # Common options for md5sum, sha1sum, sha256sum, sha512sum, sha3sum 292 | # 293 | CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y 294 | CONFIG_MKDIR=y 295 | CONFIG_MKFIFO=y 296 | CONFIG_MKNOD=y 297 | CONFIG_MKTEMP=y 298 | CONFIG_MV=y 299 | CONFIG_NICE=y 300 | # CONFIG_NL is not set 301 | # CONFIG_NOHUP is not set 302 | # CONFIG_NPROC is not set 303 | # CONFIG_OD is not set 304 | # CONFIG_PASTE is not set 305 | CONFIG_PRINTENV=y 306 | CONFIG_PRINTF=y 307 | CONFIG_PWD=y 308 | CONFIG_READLINK=y 309 | CONFIG_FEATURE_READLINK_FOLLOW=y 310 | CONFIG_REALPATH=y 311 | CONFIG_RM=y 312 | CONFIG_RMDIR=y 313 | CONFIG_SEQ=y 314 | # CONFIG_SHRED is not set 315 | # CONFIG_SHUF is not set 316 | CONFIG_SLEEP=y 317 | # CONFIG_FEATURE_FANCY_SLEEP is not set 318 | CONFIG_SORT=y 319 | CONFIG_FEATURE_SORT_BIG=y 320 | # CONFIG_FEATURE_SORT_OPTIMIZE_MEMORY is not set 321 | # CONFIG_SPLIT is not set 322 | # CONFIG_FEATURE_SPLIT_FANCY is not set 323 | # CONFIG_STAT is not set 324 | # CONFIG_FEATURE_STAT_FORMAT is not set 325 | # CONFIG_FEATURE_STAT_FILESYSTEM is not set 326 | CONFIG_STTY=y 327 | # CONFIG_SUM is not set 328 | CONFIG_SYNC=y 329 | # CONFIG_FEATURE_SYNC_FANCY is not set 330 | # CONFIG_FSYNC is not set 331 | # CONFIG_TAC is not set 332 | CONFIG_TAIL=y 333 | CONFIG_FEATURE_FANCY_TAIL=y 334 | CONFIG_TEE=y 335 | CONFIG_FEATURE_TEE_USE_BLOCK_IO=y 336 | CONFIG_TEST=y 337 | CONFIG_TEST1=y 338 | CONFIG_TEST2=y 339 | CONFIG_FEATURE_TEST_64=y 340 | # CONFIG_TIMEOUT is not set 341 | CONFIG_TOUCH=y 342 | # CONFIG_FEATURE_TOUCH_SUSV3 is not set 343 | CONFIG_TR=y 344 | CONFIG_FEATURE_TR_CLASSES=y 345 | CONFIG_FEATURE_TR_EQUIV=y 346 | CONFIG_TRUE=y 347 | # CONFIG_TRUNCATE is not set 348 | CONFIG_TSORT=y 349 | CONFIG_TTY=y 350 | CONFIG_UNAME=y 351 | CONFIG_UNAME_OSNAME="Linux" 352 | # CONFIG_BB_ARCH is not set 353 | CONFIG_UNIQ=y 354 | # CONFIG_UNLINK is not set 355 | CONFIG_USLEEP=y 356 | # CONFIG_UUDECODE is not set 357 | # CONFIG_BASE32 is not set 358 | # CONFIG_BASE64 is not set 359 | # CONFIG_UUENCODE is not set 360 | CONFIG_WC=y 361 | CONFIG_FEATURE_WC_LARGE=y 362 | CONFIG_WHO=y 363 | CONFIG_W=y 364 | # CONFIG_USERS is not set 365 | CONFIG_WHOAMI=y 366 | CONFIG_YES=y 367 | 368 | # 369 | # Console Utilities 370 | # 371 | # CONFIG_CHVT is not set 372 | # CONFIG_CLEAR is not set 373 | # CONFIG_DEALLOCVT is not set 374 | # CONFIG_DUMPKMAP is not set 375 | # CONFIG_FGCONSOLE is not set 376 | # CONFIG_KBD_MODE is not set 377 | # CONFIG_LOADFONT is not set 378 | # CONFIG_SETFONT is not set 379 | # CONFIG_FEATURE_SETFONT_TEXTUAL_MAP is not set 380 | CONFIG_DEFAULT_SETFONT_DIR="" 381 | # CONFIG_FEATURE_LOADFONT_PSF2 is not set 382 | # CONFIG_FEATURE_LOADFONT_RAW is not set 383 | # CONFIG_LOADKMAP is not set 384 | # CONFIG_OPENVT is not set 385 | # CONFIG_RESET is not set 386 | # CONFIG_RESIZE is not set 387 | # CONFIG_FEATURE_RESIZE_PRINT is not set 388 | # CONFIG_SETCONSOLE is not set 389 | # CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS is not set 390 | # CONFIG_SETKEYCODES is not set 391 | # CONFIG_SETLOGCONS is not set 392 | # CONFIG_SHOWKEY is not set 393 | 394 | # 395 | # Debian Utilities 396 | # 397 | # CONFIG_PIPE_PROGRESS is not set 398 | # CONFIG_RUN_PARTS is not set 399 | # CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS is not set 400 | # CONFIG_FEATURE_RUN_PARTS_FANCY is not set 401 | # CONFIG_START_STOP_DAEMON is not set 402 | # CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS is not set 403 | # CONFIG_FEATURE_START_STOP_DAEMON_FANCY is not set 404 | # CONFIG_WHICH is not set 405 | 406 | # 407 | # klibc-utils 408 | # 409 | # CONFIG_MINIPS is not set 410 | # CONFIG_NUKE is not set 411 | # CONFIG_RESUME is not set 412 | # CONFIG_RUN_INIT is not set 413 | 414 | # 415 | # Editors 416 | # 417 | CONFIG_AWK=y 418 | CONFIG_FEATURE_AWK_LIBM=y 419 | CONFIG_FEATURE_AWK_GNU_EXTENSIONS=y 420 | CONFIG_CMP=y 421 | CONFIG_DIFF=y 422 | CONFIG_FEATURE_DIFF_LONG_OPTIONS=y 423 | CONFIG_FEATURE_DIFF_DIR=y 424 | # CONFIG_ED is not set 425 | # CONFIG_PATCH is not set 426 | CONFIG_SED=y 427 | CONFIG_VI=y 428 | CONFIG_FEATURE_VI_MAX_LEN=4096 429 | CONFIG_FEATURE_VI_8BIT=y 430 | CONFIG_FEATURE_VI_COLON=y 431 | CONFIG_FEATURE_VI_COLON_EXPAND=y 432 | CONFIG_FEATURE_VI_YANKMARK=y 433 | CONFIG_FEATURE_VI_SEARCH=y 434 | # CONFIG_FEATURE_VI_REGEX_SEARCH is not set 435 | CONFIG_FEATURE_VI_USE_SIGNALS=y 436 | CONFIG_FEATURE_VI_DOT_CMD=y 437 | CONFIG_FEATURE_VI_READONLY=y 438 | CONFIG_FEATURE_VI_SETOPTS=y 439 | CONFIG_FEATURE_VI_SET=y 440 | CONFIG_FEATURE_VI_WIN_RESIZE=y 441 | CONFIG_FEATURE_VI_ASK_TERMINAL=y 442 | CONFIG_FEATURE_VI_UNDO=y 443 | CONFIG_FEATURE_VI_UNDO_QUEUE=y 444 | CONFIG_FEATURE_VI_UNDO_QUEUE_MAX=256 445 | CONFIG_FEATURE_VI_VERBOSE_STATUS=y 446 | CONFIG_FEATURE_ALLOW_EXEC=y 447 | 448 | # 449 | # Finding Utilities 450 | # 451 | # CONFIG_FIND is not set 452 | # CONFIG_FEATURE_FIND_PRINT0 is not set 453 | # CONFIG_FEATURE_FIND_MTIME is not set 454 | # CONFIG_FEATURE_FIND_ATIME is not set 455 | # CONFIG_FEATURE_FIND_CTIME is not set 456 | # CONFIG_FEATURE_FIND_MMIN is not set 457 | # CONFIG_FEATURE_FIND_AMIN is not set 458 | # CONFIG_FEATURE_FIND_CMIN is not set 459 | # CONFIG_FEATURE_FIND_PERM is not set 460 | # CONFIG_FEATURE_FIND_TYPE is not set 461 | # CONFIG_FEATURE_FIND_EXECUTABLE is not set 462 | # CONFIG_FEATURE_FIND_XDEV is not set 463 | # CONFIG_FEATURE_FIND_MAXDEPTH is not set 464 | # CONFIG_FEATURE_FIND_NEWER is not set 465 | # CONFIG_FEATURE_FIND_INUM is not set 466 | # CONFIG_FEATURE_FIND_SAMEFILE is not set 467 | # CONFIG_FEATURE_FIND_EXEC is not set 468 | # CONFIG_FEATURE_FIND_EXEC_PLUS is not set 469 | # CONFIG_FEATURE_FIND_EXEC_OK is not set 470 | # CONFIG_FEATURE_FIND_USER is not set 471 | # CONFIG_FEATURE_FIND_GROUP is not set 472 | # CONFIG_FEATURE_FIND_NOT is not set 473 | # CONFIG_FEATURE_FIND_DEPTH is not set 474 | # CONFIG_FEATURE_FIND_PAREN is not set 475 | # CONFIG_FEATURE_FIND_SIZE is not set 476 | # CONFIG_FEATURE_FIND_PRUNE is not set 477 | # CONFIG_FEATURE_FIND_QUIT is not set 478 | # CONFIG_FEATURE_FIND_DELETE is not set 479 | # CONFIG_FEATURE_FIND_EMPTY is not set 480 | # CONFIG_FEATURE_FIND_PATH is not set 481 | # CONFIG_FEATURE_FIND_REGEX is not set 482 | # CONFIG_FEATURE_FIND_CONTEXT is not set 483 | # CONFIG_FEATURE_FIND_LINKS is not set 484 | CONFIG_GREP=y 485 | CONFIG_EGREP=y 486 | CONFIG_FGREP=y 487 | CONFIG_FEATURE_GREP_CONTEXT=y 488 | # CONFIG_XARGS is not set 489 | # CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION is not set 490 | # CONFIG_FEATURE_XARGS_SUPPORT_QUOTES is not set 491 | # CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT is not set 492 | # CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM is not set 493 | # CONFIG_FEATURE_XARGS_SUPPORT_REPL_STR is not set 494 | # CONFIG_FEATURE_XARGS_SUPPORT_PARALLEL is not set 495 | # CONFIG_FEATURE_XARGS_SUPPORT_ARGS_FILE is not set 496 | 497 | # 498 | # Init Utilities 499 | # 500 | # CONFIG_BOOTCHARTD is not set 501 | # CONFIG_FEATURE_BOOTCHARTD_BLOATED_HEADER is not set 502 | # CONFIG_FEATURE_BOOTCHARTD_CONFIG_FILE is not set 503 | # CONFIG_HALT is not set 504 | # CONFIG_POWEROFF is not set 505 | # CONFIG_REBOOT is not set 506 | # CONFIG_FEATURE_WAIT_FOR_INIT is not set 507 | # CONFIG_FEATURE_CALL_TELINIT is not set 508 | CONFIG_TELINIT_PATH="" 509 | # CONFIG_INIT is not set 510 | # CONFIG_LINUXRC is not set 511 | # CONFIG_FEATURE_USE_INITTAB is not set 512 | # CONFIG_FEATURE_KILL_REMOVED is not set 513 | CONFIG_FEATURE_KILL_DELAY=0 514 | # CONFIG_FEATURE_INIT_SCTTY is not set 515 | # CONFIG_FEATURE_INIT_SYSLOG is not set 516 | # CONFIG_FEATURE_INIT_QUIET is not set 517 | # CONFIG_FEATURE_INIT_COREDUMPS is not set 518 | CONFIG_INIT_TERMINAL_TYPE="" 519 | # CONFIG_FEATURE_INIT_MODIFY_CMDLINE is not set 520 | 521 | # 522 | # Login/Password Management Utilities 523 | # 524 | CONFIG_FEATURE_SHADOWPASSWDS=y 525 | # CONFIG_USE_BB_PWD_GRP is not set 526 | # CONFIG_USE_BB_SHADOW is not set 527 | # CONFIG_USE_BB_CRYPT is not set 528 | # CONFIG_USE_BB_CRYPT_SHA is not set 529 | # CONFIG_ADD_SHELL is not set 530 | # CONFIG_REMOVE_SHELL is not set 531 | # CONFIG_ADDGROUP is not set 532 | # CONFIG_FEATURE_ADDUSER_TO_GROUP is not set 533 | # CONFIG_ADDUSER is not set 534 | # CONFIG_FEATURE_CHECK_NAMES is not set 535 | CONFIG_LAST_ID=0 536 | CONFIG_FIRST_SYSTEM_ID=0 537 | CONFIG_LAST_SYSTEM_ID=0 538 | # CONFIG_CHPASSWD is not set 539 | CONFIG_FEATURE_DEFAULT_PASSWD_ALGO="" 540 | # CONFIG_CRYPTPW is not set 541 | # CONFIG_MKPASSWD is not set 542 | # CONFIG_DELUSER is not set 543 | # CONFIG_DELGROUP is not set 544 | # CONFIG_FEATURE_DEL_USER_FROM_GROUP is not set 545 | CONFIG_GETTY=y 546 | CONFIG_LOGIN=y 547 | CONFIG_LOGIN_SESSION_AS_CHILD=y 548 | # CONFIG_LOGIN_SCRIPTS is not set 549 | # CONFIG_FEATURE_NOLOGIN is not set 550 | # CONFIG_FEATURE_SECURETTY is not set 551 | # CONFIG_PASSWD is not set 552 | # CONFIG_FEATURE_PASSWD_WEAK_CHECK is not set 553 | # CONFIG_SU is not set 554 | # CONFIG_FEATURE_SU_SYSLOG is not set 555 | # CONFIG_FEATURE_SU_CHECKS_SHELLS is not set 556 | # CONFIG_FEATURE_SU_BLANK_PW_NEEDS_SECURE_TTY is not set 557 | # CONFIG_SULOGIN is not set 558 | # CONFIG_VLOCK is not set 559 | 560 | # 561 | # Linux Ext2 FS Progs 562 | # 563 | # CONFIG_CHATTR is not set 564 | CONFIG_FSCK=y 565 | # CONFIG_LSATTR is not set 566 | # CONFIG_TUNE2FS is not set 567 | 568 | # 569 | # Linux Module Utilities 570 | # 571 | # CONFIG_MODPROBE_SMALL is not set 572 | CONFIG_DEPMOD=y 573 | CONFIG_INSMOD=y 574 | CONFIG_LSMOD=y 575 | CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT=y 576 | CONFIG_MODINFO=y 577 | CONFIG_MODPROBE=y 578 | CONFIG_FEATURE_MODPROBE_BLACKLIST=y 579 | CONFIG_RMMOD=y 580 | 581 | # 582 | # Options common to multiple modutils 583 | # 584 | CONFIG_FEATURE_CMDLINE_MODULE_OPTIONS=y 585 | # CONFIG_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED is not set 586 | # CONFIG_FEATURE_2_4_MODULES is not set 587 | # CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set 588 | # CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set 589 | # CONFIG_FEATURE_INSMOD_LOADINKMEM is not set 590 | # CONFIG_FEATURE_INSMOD_LOAD_MAP is not set 591 | # CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set 592 | CONFIG_FEATURE_CHECK_TAINTED_MODULE=y 593 | CONFIG_FEATURE_INSMOD_TRY_MMAP=y 594 | CONFIG_FEATURE_MODUTILS_ALIAS=y 595 | CONFIG_FEATURE_MODUTILS_SYMBOLS=y 596 | CONFIG_DEFAULT_MODULES_DIR="/lib/modules" 597 | CONFIG_DEFAULT_DEPMOD_FILE="modules.dep" 598 | 599 | # 600 | # Linux System Utilities 601 | # 602 | # CONFIG_ACPID is not set 603 | # CONFIG_FEATURE_ACPID_COMPAT is not set 604 | # CONFIG_BLKDISCARD is not set 605 | # CONFIG_BLKID is not set 606 | # CONFIG_FEATURE_BLKID_TYPE is not set 607 | # CONFIG_BLOCKDEV is not set 608 | # CONFIG_CAL is not set 609 | # CONFIG_CHRT is not set 610 | CONFIG_DMESG=y 611 | CONFIG_FEATURE_DMESG_PRETTY=y 612 | # CONFIG_EJECT is not set 613 | # CONFIG_FEATURE_EJECT_SCSI is not set 614 | # CONFIG_FALLOCATE is not set 615 | # CONFIG_FATATTR is not set 616 | # CONFIG_FBSET is not set 617 | # CONFIG_FEATURE_FBSET_FANCY is not set 618 | # CONFIG_FEATURE_FBSET_READMODE is not set 619 | # CONFIG_FDFORMAT is not set 620 | # CONFIG_FDISK is not set 621 | # CONFIG_FDISK_SUPPORT_LARGE_DISKS is not set 622 | # CONFIG_FEATURE_FDISK_WRITABLE is not set 623 | # CONFIG_FEATURE_AIX_LABEL is not set 624 | # CONFIG_FEATURE_SGI_LABEL is not set 625 | # CONFIG_FEATURE_SUN_LABEL is not set 626 | # CONFIG_FEATURE_OSF_LABEL is not set 627 | # CONFIG_FEATURE_GPT_LABEL is not set 628 | # CONFIG_FEATURE_FDISK_ADVANCED is not set 629 | # CONFIG_FINDFS is not set 630 | # CONFIG_FLOCK is not set 631 | # CONFIG_FDFLUSH is not set 632 | # CONFIG_FREERAMDISK is not set 633 | # CONFIG_FSCK_MINIX is not set 634 | # CONFIG_FSFREEZE is not set 635 | # CONFIG_FSTRIM is not set 636 | # CONFIG_GETOPT is not set 637 | # CONFIG_FEATURE_GETOPT_LONG is not set 638 | CONFIG_HEXDUMP=y 639 | CONFIG_HD=y 640 | # CONFIG_XXD is not set 641 | # CONFIG_HWCLOCK is not set 642 | # CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS is not set 643 | # CONFIG_IONICE is not set 644 | # CONFIG_IPCRM is not set 645 | # CONFIG_IPCS is not set 646 | CONFIG_LAST=y 647 | CONFIG_FEATURE_LAST_FANCY=y 648 | # CONFIG_LOSETUP is not set 649 | # CONFIG_LSPCI is not set 650 | # CONFIG_LSUSB is not set 651 | # CONFIG_MDEV is not set 652 | # CONFIG_FEATURE_MDEV_CONF is not set 653 | # CONFIG_FEATURE_MDEV_RENAME is not set 654 | # CONFIG_FEATURE_MDEV_RENAME_REGEXP is not set 655 | # CONFIG_FEATURE_MDEV_EXEC is not set 656 | # CONFIG_FEATURE_MDEV_LOAD_FIRMWARE is not set 657 | # CONFIG_FEATURE_MDEV_DAEMON is not set 658 | # CONFIG_MESG is not set 659 | # CONFIG_FEATURE_MESG_ENABLE_ONLY_GROUP is not set 660 | # CONFIG_MKE2FS is not set 661 | # CONFIG_MKFS_EXT2 is not set 662 | # CONFIG_MKFS_MINIX is not set 663 | # CONFIG_FEATURE_MINIX2 is not set 664 | # CONFIG_MKFS_REISER is not set 665 | # CONFIG_MKDOSFS is not set 666 | # CONFIG_MKFS_VFAT is not set 667 | # CONFIG_MKSWAP is not set 668 | # CONFIG_FEATURE_MKSWAP_UUID is not set 669 | # CONFIG_MORE is not set 670 | CONFIG_MOUNT=y 671 | CONFIG_FEATURE_MOUNT_FAKE=y 672 | CONFIG_FEATURE_MOUNT_VERBOSE=y 673 | CONFIG_FEATURE_MOUNT_HELPERS=y 674 | CONFIG_FEATURE_MOUNT_LABEL=y 675 | # CONFIG_FEATURE_MOUNT_NFS is not set 676 | # CONFIG_FEATURE_MOUNT_CIFS is not set 677 | CONFIG_FEATURE_MOUNT_FLAGS=y 678 | CONFIG_FEATURE_MOUNT_FSTAB=y 679 | CONFIG_FEATURE_MOUNT_OTHERTAB=y 680 | # CONFIG_MOUNTPOINT is not set 681 | # CONFIG_NOLOGIN is not set 682 | # CONFIG_NOLOGIN_DEPENDENCIES is not set 683 | # CONFIG_NSENTER is not set 684 | # CONFIG_PIVOT_ROOT is not set 685 | # CONFIG_RDATE is not set 686 | # CONFIG_RDEV is not set 687 | # CONFIG_READPROFILE is not set 688 | # CONFIG_RENICE is not set 689 | # CONFIG_REV is not set 690 | # CONFIG_RTCWAKE is not set 691 | # CONFIG_SCRIPT is not set 692 | # CONFIG_SCRIPTREPLAY is not set 693 | # CONFIG_SETARCH is not set 694 | # CONFIG_LINUX32 is not set 695 | # CONFIG_LINUX64 is not set 696 | # CONFIG_SETPRIV is not set 697 | # CONFIG_FEATURE_SETPRIV_DUMP is not set 698 | # CONFIG_FEATURE_SETPRIV_CAPABILITIES is not set 699 | # CONFIG_FEATURE_SETPRIV_CAPABILITY_NAMES is not set 700 | # CONFIG_SETSID is not set 701 | # CONFIG_SWAPON is not set 702 | # CONFIG_FEATURE_SWAPON_DISCARD is not set 703 | # CONFIG_FEATURE_SWAPON_PRI is not set 704 | # CONFIG_SWAPOFF is not set 705 | # CONFIG_FEATURE_SWAPONOFF_LABEL is not set 706 | # CONFIG_SWITCH_ROOT is not set 707 | # CONFIG_TASKSET is not set 708 | # CONFIG_FEATURE_TASKSET_FANCY is not set 709 | # CONFIG_FEATURE_TASKSET_CPULIST is not set 710 | # CONFIG_UEVENT is not set 711 | CONFIG_UMOUNT=y 712 | # CONFIG_FEATURE_UMOUNT_ALL is not set 713 | # CONFIG_UNSHARE is not set 714 | CONFIG_WALL=y 715 | 716 | # 717 | # Common options for mount/umount 718 | # 719 | CONFIG_FEATURE_MOUNT_LOOP=y 720 | CONFIG_FEATURE_MOUNT_LOOP_CREATE=y 721 | # CONFIG_FEATURE_MTAB_SUPPORT is not set 722 | CONFIG_VOLUMEID=y 723 | 724 | # 725 | # Filesystem/Volume identification 726 | # 727 | # CONFIG_FEATURE_VOLUMEID_BCACHE is not set 728 | # CONFIG_FEATURE_VOLUMEID_BTRFS is not set 729 | # CONFIG_FEATURE_VOLUMEID_CRAMFS is not set 730 | # CONFIG_FEATURE_VOLUMEID_EROFS is not set 731 | # CONFIG_FEATURE_VOLUMEID_EXFAT is not set 732 | # CONFIG_FEATURE_VOLUMEID_EXT is not set 733 | # CONFIG_FEATURE_VOLUMEID_F2FS is not set 734 | # CONFIG_FEATURE_VOLUMEID_FAT is not set 735 | # CONFIG_FEATURE_VOLUMEID_HFS is not set 736 | # CONFIG_FEATURE_VOLUMEID_ISO9660 is not set 737 | # CONFIG_FEATURE_VOLUMEID_JFS is not set 738 | # CONFIG_FEATURE_VOLUMEID_LFS is not set 739 | # CONFIG_FEATURE_VOLUMEID_LINUXRAID is not set 740 | # CONFIG_FEATURE_VOLUMEID_LINUXSWAP is not set 741 | # CONFIG_FEATURE_VOLUMEID_LUKS is not set 742 | # CONFIG_FEATURE_VOLUMEID_MINIX is not set 743 | # CONFIG_FEATURE_VOLUMEID_NILFS is not set 744 | # CONFIG_FEATURE_VOLUMEID_NTFS is not set 745 | # CONFIG_FEATURE_VOLUMEID_OCFS2 is not set 746 | # CONFIG_FEATURE_VOLUMEID_REISERFS is not set 747 | # CONFIG_FEATURE_VOLUMEID_ROMFS is not set 748 | # CONFIG_FEATURE_VOLUMEID_SQUASHFS is not set 749 | # CONFIG_FEATURE_VOLUMEID_SYSV is not set 750 | # CONFIG_FEATURE_VOLUMEID_UBIFS is not set 751 | # CONFIG_FEATURE_VOLUMEID_UDF is not set 752 | # CONFIG_FEATURE_VOLUMEID_XFS is not set 753 | 754 | # 755 | # Miscellaneous Utilities 756 | # 757 | # CONFIG_ADJTIMEX is not set 758 | # CONFIG_ASCII is not set 759 | # CONFIG_BBCONFIG is not set 760 | # CONFIG_FEATURE_COMPRESS_BBCONFIG is not set 761 | CONFIG_BC=y 762 | CONFIG_DC=y 763 | CONFIG_FEATURE_DC_BIG=y 764 | # CONFIG_FEATURE_DC_LIBM is not set 765 | CONFIG_FEATURE_BC_INTERACTIVE=y 766 | CONFIG_FEATURE_BC_LONG_OPTIONS=y 767 | # CONFIG_BEEP is not set 768 | CONFIG_FEATURE_BEEP_FREQ=0 769 | CONFIG_FEATURE_BEEP_LENGTH_MS=0 770 | # CONFIG_CHAT is not set 771 | # CONFIG_FEATURE_CHAT_NOFAIL is not set 772 | # CONFIG_FEATURE_CHAT_TTY_HIFI is not set 773 | # CONFIG_FEATURE_CHAT_IMPLICIT_CR is not set 774 | # CONFIG_FEATURE_CHAT_SWALLOW_OPTS is not set 775 | # CONFIG_FEATURE_CHAT_SEND_ESCAPES is not set 776 | # CONFIG_FEATURE_CHAT_VAR_ABORT_LEN is not set 777 | # CONFIG_FEATURE_CHAT_CLR_ABORT is not set 778 | # CONFIG_CONSPY is not set 779 | # CONFIG_CROND is not set 780 | # CONFIG_FEATURE_CROND_D is not set 781 | # CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set 782 | # CONFIG_FEATURE_CROND_SPECIAL_TIMES is not set 783 | CONFIG_FEATURE_CROND_DIR="" 784 | # CONFIG_CRONTAB is not set 785 | # CONFIG_DEVFSD is not set 786 | # CONFIG_DEVFSD_MODLOAD is not set 787 | # CONFIG_DEVFSD_FG_NP is not set 788 | # CONFIG_DEVFSD_VERBOSE is not set 789 | # CONFIG_FEATURE_DEVFS is not set 790 | # CONFIG_DEVMEM is not set 791 | # CONFIG_FBSPLASH is not set 792 | # CONFIG_FLASH_ERASEALL is not set 793 | # CONFIG_FLASH_LOCK is not set 794 | # CONFIG_FLASH_UNLOCK is not set 795 | # CONFIG_FLASHCP is not set 796 | CONFIG_GETFATTR=y 797 | # CONFIG_HDPARM is not set 798 | # CONFIG_FEATURE_HDPARM_GET_IDENTITY is not set 799 | # CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF is not set 800 | # CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF is not set 801 | # CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET is not set 802 | # CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF is not set 803 | # CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA is not set 804 | # CONFIG_HEXEDIT is not set 805 | # CONFIG_I2CGET is not set 806 | # CONFIG_I2CSET is not set 807 | # CONFIG_I2CDUMP is not set 808 | # CONFIG_I2CDETECT is not set 809 | # CONFIG_I2CTRANSFER is not set 810 | # CONFIG_INOTIFYD is not set 811 | CONFIG_LESS=y 812 | CONFIG_FEATURE_LESS_MAXLINES=9999999 813 | CONFIG_FEATURE_LESS_BRACKETS=y 814 | CONFIG_FEATURE_LESS_FLAGS=y 815 | CONFIG_FEATURE_LESS_TRUNCATE=y 816 | CONFIG_FEATURE_LESS_MARKS=y 817 | CONFIG_FEATURE_LESS_REGEXP=y 818 | CONFIG_FEATURE_LESS_WINCH=y 819 | CONFIG_FEATURE_LESS_ASK_TERMINAL=y 820 | CONFIG_FEATURE_LESS_DASHCMD=y 821 | CONFIG_FEATURE_LESS_LINENUMS=y 822 | CONFIG_FEATURE_LESS_RAW=y 823 | CONFIG_FEATURE_LESS_ENV=y 824 | # CONFIG_LSSCSI is not set 825 | # CONFIG_MAKEDEVS is not set 826 | # CONFIG_FEATURE_MAKEDEVS_LEAF is not set 827 | # CONFIG_FEATURE_MAKEDEVS_TABLE is not set 828 | # CONFIG_MAN is not set 829 | # CONFIG_MICROCOM is not set 830 | # CONFIG_MIM is not set 831 | # CONFIG_MT is not set 832 | # CONFIG_NANDWRITE is not set 833 | # CONFIG_NANDDUMP is not set 834 | # CONFIG_PARTPROBE is not set 835 | # CONFIG_RAIDAUTORUN is not set 836 | # CONFIG_READAHEAD is not set 837 | # CONFIG_RFKILL is not set 838 | CONFIG_RUNLEVEL=y 839 | # CONFIG_RX is not set 840 | # CONFIG_SEEDRNG is not set 841 | # CONFIG_SETFATTR is not set 842 | # CONFIG_SETSERIAL is not set 843 | # CONFIG_STRINGS is not set 844 | # CONFIG_TIME is not set 845 | CONFIG_TREE=y 846 | # CONFIG_TS is not set 847 | # CONFIG_TTYSIZE is not set 848 | # CONFIG_UBIATTACH is not set 849 | # CONFIG_UBIDETACH is not set 850 | # CONFIG_UBIMKVOL is not set 851 | # CONFIG_UBIRMVOL is not set 852 | # CONFIG_UBIRSVOL is not set 853 | # CONFIG_UBIUPDATEVOL is not set 854 | # CONFIG_UBIRENAME is not set 855 | # CONFIG_VOLNAME is not set 856 | # CONFIG_WATCHDOG is not set 857 | # CONFIG_FEATURE_WATCHDOG_OPEN_TWICE is not set 858 | 859 | # 860 | # Networking Utilities 861 | # 862 | # CONFIG_FEATURE_IPV6 is not set 863 | # CONFIG_FEATURE_UNIX_LOCAL is not set 864 | # CONFIG_FEATURE_PREFER_IPV4_ADDRESS is not set 865 | # CONFIG_VERBOSE_RESOLUTION_ERRORS is not set 866 | # CONFIG_FEATURE_ETC_NETWORKS is not set 867 | # CONFIG_FEATURE_ETC_SERVICES is not set 868 | # CONFIG_FEATURE_HWIB is not set 869 | # CONFIG_FEATURE_TLS_SHA1 is not set 870 | # CONFIG_ARP is not set 871 | # CONFIG_ARPING is not set 872 | # CONFIG_BRCTL is not set 873 | # CONFIG_FEATURE_BRCTL_FANCY is not set 874 | # CONFIG_FEATURE_BRCTL_SHOW is not set 875 | # CONFIG_DNSD is not set 876 | # CONFIG_ETHER_WAKE is not set 877 | # CONFIG_FTPD is not set 878 | # CONFIG_FEATURE_FTPD_WRITE is not set 879 | # CONFIG_FEATURE_FTPD_ACCEPT_BROKEN_LIST is not set 880 | # CONFIG_FEATURE_FTPD_AUTHENTICATION is not set 881 | # CONFIG_FTPGET is not set 882 | # CONFIG_FTPPUT is not set 883 | # CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS is not set 884 | CONFIG_HOSTNAME=y 885 | # CONFIG_DNSDOMAINNAME is not set 886 | # CONFIG_HTTPD is not set 887 | CONFIG_FEATURE_HTTPD_PORT_DEFAULT=0 888 | # CONFIG_FEATURE_HTTPD_RANGES is not set 889 | # CONFIG_FEATURE_HTTPD_SETUID is not set 890 | # CONFIG_FEATURE_HTTPD_BASIC_AUTH is not set 891 | # CONFIG_FEATURE_HTTPD_AUTH_MD5 is not set 892 | # CONFIG_FEATURE_HTTPD_CGI is not set 893 | # CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR is not set 894 | # CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV is not set 895 | # CONFIG_FEATURE_HTTPD_ENCODE_URL_STR is not set 896 | # CONFIG_FEATURE_HTTPD_ERROR_PAGES is not set 897 | # CONFIG_FEATURE_HTTPD_PROXY is not set 898 | # CONFIG_FEATURE_HTTPD_GZIP is not set 899 | # CONFIG_FEATURE_HTTPD_ETAG is not set 900 | # CONFIG_FEATURE_HTTPD_LAST_MODIFIED is not set 901 | # CONFIG_FEATURE_HTTPD_DATE is not set 902 | # CONFIG_FEATURE_HTTPD_ACL_IP is not set 903 | # CONFIG_IFCONFIG is not set 904 | # CONFIG_FEATURE_IFCONFIG_STATUS is not set 905 | # CONFIG_FEATURE_IFCONFIG_SLIP is not set 906 | # CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ is not set 907 | # CONFIG_FEATURE_IFCONFIG_HW is not set 908 | # CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS is not set 909 | # CONFIG_IFENSLAVE is not set 910 | # CONFIG_IFPLUGD is not set 911 | # CONFIG_IFUP is not set 912 | # CONFIG_IFDOWN is not set 913 | CONFIG_IFUPDOWN_IFSTATE_PATH="" 914 | # CONFIG_FEATURE_IFUPDOWN_IP is not set 915 | # CONFIG_FEATURE_IFUPDOWN_IPV4 is not set 916 | # CONFIG_FEATURE_IFUPDOWN_IPV6 is not set 917 | # CONFIG_FEATURE_IFUPDOWN_MAPPING is not set 918 | # CONFIG_FEATURE_IFUPDOWN_EXTERNAL_DHCP is not set 919 | # CONFIG_INETD is not set 920 | # CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO is not set 921 | # CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD is not set 922 | # CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME is not set 923 | # CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME is not set 924 | # CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN is not set 925 | # CONFIG_FEATURE_INETD_RPC is not set 926 | CONFIG_IP=y 927 | # CONFIG_IPADDR is not set 928 | # CONFIG_IPLINK is not set 929 | # CONFIG_IPROUTE is not set 930 | # CONFIG_IPTUNNEL is not set 931 | # CONFIG_IPRULE is not set 932 | # CONFIG_IPNEIGH is not set 933 | CONFIG_FEATURE_IP_ADDRESS=y 934 | CONFIG_FEATURE_IP_LINK=y 935 | CONFIG_FEATURE_IP_LINK_CAN=y 936 | CONFIG_FEATURE_IP_ROUTE=y 937 | CONFIG_FEATURE_IP_ROUTE_DIR="/etc/iproute2" 938 | # CONFIG_FEATURE_IP_TUNNEL is not set 939 | CONFIG_FEATURE_IP_RULE=y 940 | # CONFIG_FEATURE_IP_NEIGH is not set 941 | # CONFIG_FEATURE_IP_RARE_PROTOCOLS is not set 942 | # CONFIG_IPCALC is not set 943 | # CONFIG_FEATURE_IPCALC_LONG_OPTIONS is not set 944 | # CONFIG_FEATURE_IPCALC_FANCY is not set 945 | # CONFIG_FAKEIDENTD is not set 946 | # CONFIG_NAMEIF is not set 947 | # CONFIG_FEATURE_NAMEIF_EXTENDED is not set 948 | # CONFIG_NBDCLIENT is not set 949 | # CONFIG_NC is not set 950 | # CONFIG_NETCAT is not set 951 | # CONFIG_NC_SERVER is not set 952 | # CONFIG_NC_EXTRA is not set 953 | # CONFIG_NC_110_COMPAT is not set 954 | CONFIG_NETSTAT=y 955 | CONFIG_FEATURE_NETSTAT_WIDE=y 956 | CONFIG_FEATURE_NETSTAT_PRG=y 957 | # CONFIG_NSLOOKUP is not set 958 | # CONFIG_FEATURE_NSLOOKUP_BIG is not set 959 | # CONFIG_FEATURE_NSLOOKUP_LONG_OPTIONS is not set 960 | # CONFIG_NTPD is not set 961 | # CONFIG_FEATURE_NTPD_SERVER is not set 962 | # CONFIG_FEATURE_NTPD_CONF is not set 963 | # CONFIG_FEATURE_NTP_AUTH is not set 964 | # CONFIG_PING is not set 965 | # CONFIG_PING6 is not set 966 | # CONFIG_FEATURE_FANCY_PING is not set 967 | # CONFIG_PSCAN is not set 968 | # CONFIG_ROUTE is not set 969 | # CONFIG_SLATTACH is not set 970 | # CONFIG_SSL_CLIENT is not set 971 | # CONFIG_TC is not set 972 | # CONFIG_FEATURE_TC_INGRESS is not set 973 | # CONFIG_TCPSVD is not set 974 | # CONFIG_UDPSVD is not set 975 | # CONFIG_TELNET is not set 976 | # CONFIG_FEATURE_TELNET_TTYPE is not set 977 | # CONFIG_FEATURE_TELNET_AUTOLOGIN is not set 978 | # CONFIG_FEATURE_TELNET_WIDTH is not set 979 | # CONFIG_TELNETD is not set 980 | # CONFIG_FEATURE_TELNETD_STANDALONE is not set 981 | CONFIG_FEATURE_TELNETD_PORT_DEFAULT=0 982 | # CONFIG_FEATURE_TELNETD_INETD_WAIT is not set 983 | # CONFIG_TFTP is not set 984 | # CONFIG_FEATURE_TFTP_PROGRESS_BAR is not set 985 | # CONFIG_FEATURE_TFTP_HPA_COMPAT is not set 986 | # CONFIG_TFTPD is not set 987 | # CONFIG_FEATURE_TFTP_GET is not set 988 | # CONFIG_FEATURE_TFTP_PUT is not set 989 | # CONFIG_FEATURE_TFTP_BLOCKSIZE is not set 990 | # CONFIG_TFTP_DEBUG is not set 991 | CONFIG_TLS=y 992 | # CONFIG_TRACEROUTE is not set 993 | # CONFIG_TRACEROUTE6 is not set 994 | # CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set 995 | # CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set 996 | # CONFIG_TUNCTL is not set 997 | # CONFIG_FEATURE_TUNCTL_UG is not set 998 | # CONFIG_VCONFIG is not set 999 | CONFIG_WGET=y 1000 | CONFIG_FEATURE_WGET_LONG_OPTIONS=y 1001 | CONFIG_FEATURE_WGET_STATUSBAR=y 1002 | CONFIG_FEATURE_WGET_FTP=y 1003 | CONFIG_FEATURE_WGET_AUTHENTICATION=y 1004 | CONFIG_FEATURE_WGET_TIMEOUT=y 1005 | CONFIG_FEATURE_WGET_HTTPS=y 1006 | CONFIG_FEATURE_WGET_OPENSSL=y 1007 | # CONFIG_WHOIS is not set 1008 | # CONFIG_ZCIP is not set 1009 | # CONFIG_UDHCPD is not set 1010 | # CONFIG_FEATURE_UDHCPD_BOOTP is not set 1011 | # CONFIG_FEATURE_UDHCPD_BASE_IP_ON_MAC is not set 1012 | # CONFIG_FEATURE_UDHCPD_WRITE_LEASES_EARLY is not set 1013 | CONFIG_DHCPD_LEASES_FILE="" 1014 | # CONFIG_DUMPLEASES is not set 1015 | # CONFIG_DHCPRELAY is not set 1016 | # CONFIG_UDHCPC is not set 1017 | # CONFIG_FEATURE_UDHCPC_ARPING is not set 1018 | # CONFIG_FEATURE_UDHCPC_SANITIZEOPT is not set 1019 | CONFIG_UDHCPC_DEFAULT_SCRIPT="" 1020 | CONFIG_UDHCPC6_DEFAULT_SCRIPT="" 1021 | # CONFIG_UDHCPC6 is not set 1022 | # CONFIG_FEATURE_UDHCPC6_RFC3646 is not set 1023 | # CONFIG_FEATURE_UDHCPC6_RFC4704 is not set 1024 | # CONFIG_FEATURE_UDHCPC6_RFC4833 is not set 1025 | # CONFIG_FEATURE_UDHCPC6_RFC5970 is not set 1026 | CONFIG_UDHCPC_DEFAULT_INTERFACE="" 1027 | # CONFIG_FEATURE_UDHCP_PORT is not set 1028 | CONFIG_UDHCP_DEBUG=0 1029 | CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=0 1030 | # CONFIG_FEATURE_UDHCP_RFC3397 is not set 1031 | # CONFIG_FEATURE_UDHCP_8021Q is not set 1032 | CONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS="" 1033 | 1034 | # 1035 | # Print Utilities 1036 | # 1037 | # CONFIG_LPD is not set 1038 | # CONFIG_LPR is not set 1039 | # CONFIG_LPQ is not set 1040 | 1041 | # 1042 | # Mail Utilities 1043 | # 1044 | CONFIG_FEATURE_MIME_CHARSET="" 1045 | # CONFIG_MAKEMIME is not set 1046 | # CONFIG_POPMAILDIR is not set 1047 | # CONFIG_FEATURE_POPMAILDIR_DELIVERY is not set 1048 | # CONFIG_REFORMIME is not set 1049 | # CONFIG_FEATURE_REFORMIME_COMPAT is not set 1050 | # CONFIG_SENDMAIL is not set 1051 | 1052 | # 1053 | # Process Utilities 1054 | # 1055 | CONFIG_FEATURE_FAST_TOP=y 1056 | CONFIG_FEATURE_SHOW_THREADS=y 1057 | CONFIG_FREE=y 1058 | # CONFIG_FUSER is not set 1059 | # CONFIG_IOSTAT is not set 1060 | CONFIG_KILL=y 1061 | # CONFIG_KILLALL is not set 1062 | # CONFIG_KILLALL5 is not set 1063 | CONFIG_LSOF=y 1064 | # CONFIG_MPSTAT is not set 1065 | # CONFIG_NMETER is not set 1066 | # CONFIG_PGREP is not set 1067 | # CONFIG_PKILL is not set 1068 | # CONFIG_PIDOF is not set 1069 | # CONFIG_FEATURE_PIDOF_SINGLE is not set 1070 | # CONFIG_FEATURE_PIDOF_OMIT is not set 1071 | # CONFIG_PMAP is not set 1072 | # CONFIG_POWERTOP is not set 1073 | # CONFIG_FEATURE_POWERTOP_INTERACTIVE is not set 1074 | CONFIG_PS=y 1075 | # CONFIG_FEATURE_PS_WIDE is not set 1076 | # CONFIG_FEATURE_PS_LONG is not set 1077 | CONFIG_FEATURE_PS_TIME=y 1078 | # CONFIG_FEATURE_PS_UNUSUAL_SYSTEMS is not set 1079 | CONFIG_FEATURE_PS_ADDITIONAL_COLUMNS=y 1080 | # CONFIG_PSTREE is not set 1081 | # CONFIG_PWDX is not set 1082 | # CONFIG_SMEMCAP is not set 1083 | CONFIG_BB_SYSCTL=y 1084 | CONFIG_TOP=y 1085 | CONFIG_FEATURE_TOP_INTERACTIVE=y 1086 | CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y 1087 | CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS=y 1088 | CONFIG_FEATURE_TOP_SMP_CPU=y 1089 | CONFIG_FEATURE_TOP_DECIMALS=y 1090 | CONFIG_FEATURE_TOP_SMP_PROCESS=y 1091 | CONFIG_FEATURE_TOPMEM=y 1092 | CONFIG_UPTIME=y 1093 | CONFIG_FEATURE_UPTIME_UTMP_SUPPORT=y 1094 | # CONFIG_WATCH is not set 1095 | 1096 | # 1097 | # Runit Utilities 1098 | # 1099 | # CONFIG_CHPST is not set 1100 | # CONFIG_SETUIDGID is not set 1101 | # CONFIG_ENVUIDGID is not set 1102 | # CONFIG_ENVDIR is not set 1103 | # CONFIG_SOFTLIMIT is not set 1104 | # CONFIG_RUNSV is not set 1105 | # CONFIG_RUNSVDIR is not set 1106 | # CONFIG_FEATURE_RUNSVDIR_LOG is not set 1107 | # CONFIG_SV is not set 1108 | CONFIG_SV_DEFAULT_SERVICE_DIR="" 1109 | # CONFIG_SVC is not set 1110 | # CONFIG_SVOK is not set 1111 | # CONFIG_SVLOGD is not set 1112 | # CONFIG_CHCON is not set 1113 | # CONFIG_GETENFORCE is not set 1114 | # CONFIG_GETSEBOOL is not set 1115 | # CONFIG_LOAD_POLICY is not set 1116 | # CONFIG_MATCHPATHCON is not set 1117 | # CONFIG_RUNCON is not set 1118 | # CONFIG_SELINUXENABLED is not set 1119 | # CONFIG_SESTATUS is not set 1120 | # CONFIG_SETENFORCE is not set 1121 | # CONFIG_SETFILES is not set 1122 | # CONFIG_FEATURE_SETFILES_CHECK_OPTION is not set 1123 | # CONFIG_RESTORECON is not set 1124 | # CONFIG_SETSEBOOL is not set 1125 | 1126 | # 1127 | # Shells 1128 | # 1129 | CONFIG_SH_IS_ASH=y 1130 | # CONFIG_SH_IS_HUSH is not set 1131 | # CONFIG_SH_IS_NONE is not set 1132 | # CONFIG_BASH_IS_ASH is not set 1133 | # CONFIG_BASH_IS_HUSH is not set 1134 | CONFIG_BASH_IS_NONE=y 1135 | CONFIG_SHELL_ASH=y 1136 | CONFIG_ASH=y 1137 | # CONFIG_ASH_OPTIMIZE_FOR_SIZE is not set 1138 | # CONFIG_ASH_INTERNAL_GLOB is not set 1139 | CONFIG_ASH_BASH_COMPAT=y 1140 | CONFIG_ASH_BASH_SOURCE_CURDIR=y 1141 | # CONFIG_ASH_BASH_NOT_FOUND_HOOK is not set 1142 | CONFIG_ASH_JOB_CONTROL=y 1143 | CONFIG_ASH_ALIAS=y 1144 | # CONFIG_ASH_RANDOM_SUPPORT is not set 1145 | CONFIG_ASH_EXPAND_PRMT=y 1146 | # CONFIG_ASH_IDLE_TIMEOUT is not set 1147 | # CONFIG_ASH_MAIL is not set 1148 | CONFIG_ASH_ECHO=y 1149 | CONFIG_ASH_PRINTF=y 1150 | CONFIG_ASH_TEST=y 1151 | # CONFIG_ASH_HELP is not set 1152 | CONFIG_ASH_GETOPTS=y 1153 | # CONFIG_ASH_CMDCMD is not set 1154 | # CONFIG_CTTYHACK is not set 1155 | # CONFIG_HUSH is not set 1156 | # CONFIG_SHELL_HUSH is not set 1157 | # CONFIG_HUSH_BASH_COMPAT is not set 1158 | # CONFIG_HUSH_BRACE_EXPANSION is not set 1159 | # CONFIG_HUSH_BASH_SOURCE_CURDIR is not set 1160 | # CONFIG_HUSH_LINENO_VAR is not set 1161 | # CONFIG_HUSH_INTERACTIVE is not set 1162 | # CONFIG_HUSH_SAVEHISTORY is not set 1163 | # CONFIG_HUSH_JOB is not set 1164 | # CONFIG_HUSH_TICK is not set 1165 | # CONFIG_HUSH_IF is not set 1166 | # CONFIG_HUSH_LOOPS is not set 1167 | # CONFIG_HUSH_CASE is not set 1168 | # CONFIG_HUSH_FUNCTIONS is not set 1169 | # CONFIG_HUSH_LOCAL is not set 1170 | # CONFIG_HUSH_RANDOM_SUPPORT is not set 1171 | # CONFIG_HUSH_MODE_X is not set 1172 | # CONFIG_HUSH_ECHO is not set 1173 | # CONFIG_HUSH_PRINTF is not set 1174 | # CONFIG_HUSH_TEST is not set 1175 | # CONFIG_HUSH_HELP is not set 1176 | # CONFIG_HUSH_EXPORT is not set 1177 | # CONFIG_HUSH_EXPORT_N is not set 1178 | # CONFIG_HUSH_READONLY is not set 1179 | # CONFIG_HUSH_KILL is not set 1180 | # CONFIG_HUSH_WAIT is not set 1181 | # CONFIG_HUSH_COMMAND is not set 1182 | # CONFIG_HUSH_TRAP is not set 1183 | # CONFIG_HUSH_TYPE is not set 1184 | # CONFIG_HUSH_TIMES is not set 1185 | # CONFIG_HUSH_READ is not set 1186 | # CONFIG_HUSH_SET is not set 1187 | # CONFIG_HUSH_UNSET is not set 1188 | # CONFIG_HUSH_ULIMIT is not set 1189 | # CONFIG_HUSH_UMASK is not set 1190 | # CONFIG_HUSH_GETOPTS is not set 1191 | # CONFIG_HUSH_MEMLEAK is not set 1192 | 1193 | # 1194 | # Options common to all shells 1195 | # 1196 | CONFIG_FEATURE_SH_MATH=y 1197 | # CONFIG_FEATURE_SH_MATH_64 is not set 1198 | CONFIG_FEATURE_SH_MATH_BASE=y 1199 | CONFIG_FEATURE_SH_EXTRA_QUIET=y 1200 | # CONFIG_FEATURE_SH_STANDALONE is not set 1201 | # CONFIG_FEATURE_SH_NOFORK is not set 1202 | # CONFIG_FEATURE_SH_READ_FRAC is not set 1203 | # CONFIG_FEATURE_SH_HISTFILESIZE is not set 1204 | # CONFIG_FEATURE_SH_EMBEDDED_SCRIPTS is not set 1205 | 1206 | # 1207 | # System Logging Utilities 1208 | # 1209 | # CONFIG_KLOGD is not set 1210 | # CONFIG_FEATURE_KLOGD_KLOGCTL is not set 1211 | # CONFIG_LOGGER is not set 1212 | # CONFIG_LOGREAD is not set 1213 | # CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING is not set 1214 | # CONFIG_SYSLOGD is not set 1215 | # CONFIG_FEATURE_ROTATE_LOGFILE is not set 1216 | # CONFIG_FEATURE_REMOTE_LOG is not set 1217 | # CONFIG_FEATURE_SYSLOGD_DUP is not set 1218 | # CONFIG_FEATURE_SYSLOGD_CFG is not set 1219 | # CONFIG_FEATURE_SYSLOGD_PRECISE_TIMESTAMPS is not set 1220 | CONFIG_FEATURE_SYSLOGD_READ_BUFFER_SIZE=0 1221 | # CONFIG_FEATURE_IPC_SYSLOG is not set 1222 | CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=0 1223 | # CONFIG_FEATURE_KMSG_SYSLOG is not set 1224 | --------------------------------------------------------------------------------