чување e59b45d35732a24219bbdf9a6e2321dbaa9744ca
родитељ 805792d23bf68337bb0477a5694eb84625eddb8b
Аутор: Страхиња Радић <contact@strahinja.org>
Датум: Sat, 13 Aug 2022 20:52:24 +0200
Add information about boot image to BOOTING; INSTALL: New file; finish mkbootimage
Signed-off-by: Страхиња Радић <contact@strahinja.org>
Diffstat:
измењених датотека: 21, додавања: 261(+), брисања: 152(-)
diff --git a/.gitignore b/.gitignore
@@ -6,6 +6,8 @@
*.bak
*.err
*.orig
+*.raw
+*.raw.xz
*.rej
*.swp
*.session
diff --git a/01-cross.sh b/01-cross.sh
@@ -42,7 +42,7 @@ check_dir ${TL}/bin
check_dir ${TL}/lib
check_dir ${G_SPKG}
-check_dir ${G_SPKG}/X
+#check_dir ${G_SPKG}/X
msg info "Creating directories"
./lib/createdirs 01-cross.sh || exit 1
@@ -51,8 +51,8 @@ msg info "Creating symlinks"
./lib/createlinks 01-cross.sh || exit 1
cat <<! >${GR}/etc/fstab
-/dev/sda2 / ext4 rw,relatime 0 1
-/dev/sda1 /boot vfat rw,relatime,fmask=0133,dmask=0022,errors=remount-ro 0 2
+${USBROOT} / ext4 rw,relatime 0 1
+${USBESP} /boot vfat rw,relatime,fmask=0133,dmask=0022,errors=remount-ro 0 2
!
if [ ! -e /${CTD} ] && [ ! -e /${TLD} ]; then
@@ -108,8 +108,8 @@ done <${WD}/lib/pkgs.tsv
echo
unset lineno totallines
-msg info "Regenerating SHA sums"
-(cd ${WD}; ${WD}/lib/gensums)
+# msg info "Regenerating SHA sums"
+# (cd ${WD}; ${WD}/lib/gensums)
begin_substep linux-5.17.13 "Linux headers"
if [ -e ${CT}/${G_TARGET}/include/linux/stddef.h ]; then
@@ -354,7 +354,7 @@ end_step # cross-tools
begin_step tools
-totalsubsteps=28
+totalsubsteps=29
substep=1
begin_substep musl-1.2.3
diff --git a/02-chroot.sh b/02-chroot.sh
@@ -191,3 +191,12 @@ msg info "Cleaning up"
./lib/rmfiles 02-chroot.sh-end
mv_or_fail ${GR}/etc/profile.final ${GR}/etc/profile
+
+msg query "Run 05-mkbootimage.sh to generate a boot image [y/N]? "
+read -r run_mkbootimage
+case "${run_mkbootimage}" in
+ y|Y) ;;
+ *) exit;;
+esac
+
+./05-mkbootimage.sh
diff --git a/03-packages.sh b/03-packages.sh
@@ -25,7 +25,7 @@ fi
export JN=-j1
-totalsteps=3
+totalsteps=2
step=1
msg info "Creating symlinks"
@@ -33,7 +33,7 @@ msg info "Creating symlinks"
begin_step "packages"
-totalsubsteps=100
+totalsubsteps=128
substep=1
msg info "Creating temporary links"
@@ -4021,14 +4021,14 @@ timestamp=$(date +'%Y-%m-%d %T')
printf "%s\t%s\t%s\n" reflex 20210808 "${timestamp}" >>${G_PKGDB}
end_substep
-begin_substep table-0.6.3
+begin_substep table-0.6.4
if [ -x /bin/table ]; then
msg info "%s exists, skipping %s" /bin/table ${pkg}
elif [ -e ${G_SPKG}/${pkg}.tar.xz ]; then
unpack_pkg ${pkg} /
else
remove_dir ${G_SRC}/${pkg}
- extract_pkg ${G_SRC} table-v0.6.3 ${pkg}.tar.gz ${pkg}
+ extract_pkg ${G_SRC} table-v0.6.4 ${pkg}.tar.gz ${pkg}
(
cd_or_fail ${G_SRC}/${pkg}
@@ -4059,7 +4059,7 @@ mkpk_install()
) || exit 1
fi
timestamp=$(date +'%Y-%m-%d %T')
-printf "%s\t%s\t%s\n" table 0.6.3 "${timestamp}" >>${G_PKGDB}
+printf "%s\t%s\t%s\n" table 0.6.4 "${timestamp}" >>${G_PKGDB}
end_substep
# Needed for PRoot
@@ -6184,87 +6184,84 @@ end_substep
# fi
# end_substep
-# rsync is not needed for boot image - better to use mkpk mkfiles later on
# Needed for rsync
-# https://github.com/Cyan4973/xxHash/archive/refs/tags/v0.8.1.tar.gz xxhash-0.8.1.tar.gz 12feedd6a1859ef55e27218dbd6dcceccbb5a4da34cd80240d2f7d44cd246c7afdeb59830c2d5b90189bb5159293532208bf5bb622250102e12d6e1bad14a193
-# begin_substep xxhash-0.8.1
-# if [ -x /sucks/lib/libxxhash.so.0.8.1 ]; then
-# msg info "%s exists, skipping %s" /sucks/lib/libxxhash.so.0.8.1 ${pkg}
-# elif [ -e ${G_SPKG}/${pkg}.tar.xz ]; then
-# unpack_pkg ${pkg} /
-# else
-# extract_pkg ${G_SRC} xxHash-0.8.1 ${pkg}.tar.gz ${pkg}
-# (
-# cd_or_fail ${G_SRC}/${pkg}
-#
-# cat <<! >MKPK
-# mkpk_name()
-# {
-# printf "%s" "${pkg}"
-# }
-#
-# mkpk_install()
-# {
-# CFLAGS='-Os -pipe'
-# LDFLAGS='-s'
-# PREFIX=/sucks
-# DESTDIR=/build
-# SED=/${TLD}/bin/sed
-# export CFLAGS LDFLAGS PREFIX DESTDIR SED
-#
-# make ${JN} PREFIX=\${PREFIX} DESTDIR=\${DESTDIR} SED=\${SED} \\
-# -C . install || exit 1
-# }
-# !
-# mkpk ${pkg}
-# remove_dir ${G_SRC}/${pkg}
-# unpack_pkg ${pkg} /
-# ) || exit 1
-# fi
-# timestamp=$(date +'%Y-%m-%d %T')
-# printf "%s\t%s\t%s\n" xxhash 0.8.1 "${timestamp}" >>${G_PKGDB}
-# end_substep
-#
-# https://github.com/WayneD/rsync/archive/refs/tags/v3.2.5pre2.tar.gz rsync-3.2.5pre2.tar.gz cc7884cced95ce6fafd8d322b8bdb42c250c869d94186f7c471ce09cc3906f596903aed65c070e3de1c6a5e28966c4cea4d75797f444424484ebb9e574a0d42c
-# begin_substep rsync-3.2.5pre2
-# if [ -x /bin/rsync ]; then
-# msg info "%s exists, skipping %s" /bin/rsync ${pkg}
-# elif [ -e ${G_SPKG}/${pkg}.tar.xz ]; then
-# unpack_pkg ${pkg} /
-# else
-# extract_pkg ${G_SRC} ${pkg} ${pkg}.tar.gz
-# (
-# cd_or_fail ${G_SRC}/${pkg}
-#
-# cat <<! >MKPK
-# mkpk_name()
-# {
-# printf "%s" "${pkg}"
-# }
-#
-# mkpk_install()
-# {
-# CFLAGS='-Os -pipe -static --static -fcommon'
-# LDFLAGS='-static --static -fcommon -s'
-# DESTDIR=/build
-# export CFLAGS LDFLAGS DESTDIR
-#
-#
-# ./configure --prefix='' \\
-# --disable-md2man \\
-# --disable-lz4 || exit 1
-# make ${JN} || exit 1
-# make install
-# }
-# !
-# mkpk ${pkg}
-# remove_dir ${G_SRC}/${pkg}
-# unpack_pkg ${pkg} /
-# ) || exit 1
-# fi
-# timestamp=$(date +'%Y-%m-%d %T')
-# printf "%s\t%s\t%s\n" rsync 3.2.5pre2 "${timestamp}" >>${G_PKGDB}
-# end_substep
+begin_substep xxhash-0.8.1
+if [ -x /sucks/lib/libxxhash.so.0.8.1 ]; then
+ msg info "%s exists, skipping %s" /sucks/lib/libxxhash.so.0.8.1 ${pkg}
+elif [ -e ${G_SPKG}/${pkg}.tar.xz ]; then
+ unpack_pkg ${pkg} /
+else
+ extract_pkg ${G_SRC} xxHash-0.8.1 ${pkg}.tar.gz ${pkg}
+ (
+ cd_or_fail ${G_SRC}/${pkg}
+
+ cat <<! >MKPK
+mkpk_name()
+{
+ printf "%s" "${pkg}"
+}
+
+mkpk_install()
+{
+ CFLAGS='-Os -pipe'
+ LDFLAGS='-s'
+ PREFIX=/sucks
+ DESTDIR=/build
+ SED=/${TLD}/bin/sed
+ export CFLAGS LDFLAGS PREFIX DESTDIR SED
+
+ make ${JN} PREFIX=\${PREFIX} DESTDIR=\${DESTDIR} SED=\${SED} \\
+ -C . install || exit 1
+}
+!
+ mkpk ${pkg}
+ remove_dir ${G_SRC}/${pkg}
+ unpack_pkg ${pkg} /
+ ) || exit 1
+fi
+timestamp=$(date +'%Y-%m-%d %T')
+printf "%s\t%s\t%s\n" xxhash 0.8.1 "${timestamp}" >>${G_PKGDB}
+end_substep
+
+begin_substep rsync-3.2.5pre2
+if [ -x /bin/rsync ]; then
+ msg info "%s exists, skipping %s" /bin/rsync ${pkg}
+elif [ -e ${G_SPKG}/${pkg}.tar.xz ]; then
+ unpack_pkg ${pkg} /
+else
+ extract_pkg ${G_SRC} ${pkg} ${pkg}.tar.gz
+ (
+ cd_or_fail ${G_SRC}/${pkg}
+
+ cat <<! >MKPK
+mkpk_name()
+{
+ printf "%s" "${pkg}"
+}
+
+mkpk_install()
+{
+ CFLAGS='-Os -pipe -static --static -fcommon'
+ LDFLAGS='-static --static -fcommon -s'
+ DESTDIR=/build
+ export CFLAGS LDFLAGS DESTDIR
+
+
+ ./configure --prefix='' \\
+ --disable-md2man \\
+ --disable-lz4 || exit 1
+ make ${JN} || exit 1
+ make install
+}
+!
+ mkpk ${pkg}
+ remove_dir ${G_SRC}/${pkg}
+ unpack_pkg ${pkg} /
+ ) || exit 1
+fi
+timestamp=$(date +'%Y-%m-%d %T')
+printf "%s\t%s\t%s\n" rsync 3.2.5pre2 "${timestamp}" >>${G_PKGDB}
+end_substep
begin_substep shim-15.6
if [ -x /share/shim ]; then
@@ -6609,7 +6606,7 @@ totalsubsteps=1
substep=1
begin_substep linux-5.17.13
- extract_pkg ${G_SRC} ${pkg} ${pkg}.tar.gz
+ extract_pkg ${G_SRC} ${pkg} ${pkg}.tar.xz
remove_file ${G_SRC}/linux
link_if_ne ${pkg} ${G_SRC}/linux
cd_or_fail ${G_SRC}/${pkg}
diff --git a/04-finale.sh b/04-finale.sh
@@ -27,7 +27,7 @@ step=1
begin_step "finale"
-totalsubsteps=100
+totalsubsteps=6
substep=1
begin_substep byacc-20220128
@@ -245,7 +245,7 @@ timestamp=$(date +'%Y-%m-%d %T')
printf "%s\t%s\t%s\n" ubase 20220709 "${timestamp}" >>${G_PKGDB}
end_substep
-begin_substep svc-20220808
+begin_substep svc-20220813
if [ -x /bin/svc ]; then
msg info "%s exists, skipping %s" /bin/svc ${pkg}
elif [ -e ${G_SPKG}/${pkg}.tar.xz ]; then
@@ -276,7 +276,7 @@ mkpk_install()
) || exit 1
fi
timestamp=$(date +'%Y-%m-%d %T')
-printf "%s\t%s\t%s\n" svc 20220808 "${timestamp}" >>${G_PKGDB}
+printf "%s\t%s\t%s\n" svc 20220813 "${timestamp}" >>${G_PKGDB}
end_substep
begin_substep mkpk-20220808
@@ -320,7 +320,7 @@ cp_or_fail ${GR}/boot/vmlinuz ${GR}/boot/EFI/GALEB/vmlinuz
msg info "Generating %s" "${GR}/boot/EFI/GALEB/BOOT.CSV"
cat <<! >${GR}/boot/EFI/GALEB/BOOT-ASC.CSV
-vmlinuz,Galeb EFISTUB,root=${USBROOT} rootdelay=5,Boot entry for Galeb EFISTUB
+vmlinuz,Galeb USB,root=${USBROOT} ro rootdelay=5,Boot entry for Galeb USB
!
iconv -f ASCII -t UCS-2LE <${GR}/boot/EFI/GALEB/BOOT-ASC.CSV \
>${GR}/boot/EFI/GALEB/BOOT.CSV
diff --git a/05-mkbootimage.sh b/05-mkbootimage.sh
@@ -0,0 +1,44 @@
+#!/bin/sh
+
+. ./lib/env.sh
+. ./lib/fun.sh
+
+if [ "$(id -u)" -ne 0 ]; then
+ msg err "You must run this script as root"
+ exit 1
+fi
+
+(
+ver=2.0
+arch=x86_64
+timestamp=$(date +'%Y%m%d')
+diskimg=galeb-${ver}-${arch}-${timestamp}.raw
+
+rm "${diskimg}"
+
+truncate -s $(echo '(25 * 1024 * 1024 * 1024)/10' | bc) "${diskimg}" || exit 1
+
+printf "g\nn\n\n\n+500M\nt\n1\nn\n\n\n\nx\nn\n1\nGALBOOT\n"\
+"n\n2\nGalRoot\nr\nw\n" | fdisk "${diskimg}" || exit 1
+
+losetup -P -f "${diskimg}" || exit 1
+
+mkfs.ext4 -L GalRoot /dev/loop0p2 || exit 1
+mkfs.vfat -F 32 -n GALBOOT /dev/loop0p1 || exit 1
+
+mount -t ext4 /dev/loop0p2 /mnt || exit 1
+mkdir -p /mnt/boot || exit 1
+mount -t vfat /dev/loop0p1 /mnt/boot || exit 1
+
+rsync -arv --numeric-ids \
+ --exclude='/cross-tools' \
+ --exclude='/src/*' \
+ --exclude='/tools' \
+ ${GR}/* /mnt/ || exit 1
+
+umount /mnt/boot || exit 1
+umount /mnt || exit 1
+losetup -d /dev/loop0 || exit 1
+xz -9vvf "${diskimg}" || exit 1
+chown ${GUSER}:${GUSER} "${diskimg}".xz
+) || msg err "Image generation failed"
diff --git a/BOOTING b/BOOTING
@@ -6,6 +6,20 @@ setting up boot configuration correctly. The perceived difficulty mostly comes
from not understanding the basic concepts behind booting.
+Disclaimer
+----------
+
+Galeb is a distro for advanced users, who know how a Unix-like system is
+organized internally. I will not be responsible for any damage resulting from
+not paying attention when needed, lack of will to read documentation, or lack of
+experience in administering a Unix-like system. You have been warned, so please
+pay attention, read the documentation, search the Web and avoid sending
+questions or requests for guidance.
+
+What I will appreciate, and will take into consideration, is patches solving
+potential issues.
+
+
Firmware type
-------------
@@ -90,7 +104,7 @@ The necessary command line parameters will be briefly explained here. For more
information, see `man 8 efibootmgr` and `efibootmgr -h`.
efibootmgr -c -d /dev/sda -l '\vmlinuz' -L 'Galeb EFISTUB' -p1 \
- -u root=/dev/sda2
+ -u 'root=/dev/sda2 ro'
-c Create a new boot entry.
@@ -109,8 +123,45 @@ information, see `man 8 efibootmgr` and `efibootmgr -h`.
-u Treat the kernel command line as UCS-2.
-root=/dev/sda2
- Kernel command line.
+'root=/dev/sda2 ro'
+ Kernel command line, quoted to prevent parsing by the shell.
+
+
+Boot image
+----------
+
+After the boot scripts have finished, you will be presented with a choice to
+create a boot image. The boot image will be compressed with xz and needs to be
+sent to a USB flash medium, for example:
+
+ # xz -dc galeb-2.0-x86_64-20220813.raw.xz > /dev/sdb
+
+or, if you have pv[4]:
+
+ # xz -dc galeb-2.0-x86_64-20220813.raw.xz | pv > /dev/sdb
+
+_Be careful when specifying the device you send the output to, in order to not
+overwrite any existing partitions (your hard disk, etc)!_ You can find out the
+correct device by using
+
+ $ lsblk -f
+
+or
+
+ $ blkid
+
+The boot image is designed for UEFI systems and will be partitioned as GPT.
+
+When you reboot, enter UEFI setup and choose to boot from USB flash. Fallback
+shim will automatically create a boot entry for Galeb, which will set the device
+specified as USBROOT in lib/env.sh as the root device for that entry. If the
+boot fails, you need to reboot back into your original system, remove the UEFI
+entry (for example, by using efibootmgr(8)), change USBROOT in lib/env.sh, rerun
+the bootstrap scripts, copy the newly generated image to USB flash and reboot.
+
+You can safely remove the "Galeb USB" UEFI entry if you don't need it anymore,
+since it will be automatically generated by fallback shim whenever you choose to
+boot from the Galeb USB medium.
See also
@@ -119,3 +170,4 @@ See also
1. https://wiki.archlinux.org/title/Partitioning#Example\_layouts
2. https://wiki.archlinux.org/title/EFI_system_partition
3. https://wiki.archlinux.org/title/EFISTUB
+4. http://www.ivarch.com/programs/pv.shtml
diff --git a/INSTALL b/INSTALL
@@ -0,0 +1,17 @@
+Galeb installation
+==================
+
+Installation is quite straightforward: adjust lib/env.sh, then run the numbered
+scripts, 01-* to 05-*. This will leave you with a directory $GR (by default,
+$HOME/galeb-root) containing the files of the root filesystem, and a compressed
+raw disk image made from those files.
+
+02-chroot.sh needs to be run with root privileges, which you will be warned
+about if you try to execute it as a regular user. Other than that, just pay
+attention to on-screen prompts and messages. See BOOTING for information on what
+to do next.
+
+Note: Files in the created directory $GR are configured for a system on a USB
+medium. You should adjust files like /etc/fstab and /etc/rc.conf (for example)
+if you don't intend on using the raw disk image, and wish to install the files
+directly (for example, with rsync(1)).
diff --git a/TODO b/TODO
@@ -1,11 +1,6 @@
TODO
====
-[ ] Add information about boot image to BOOTING
-
-[ ] Add rsync to lib/mkbootimage
-
-
Low priority
------------
@@ -28,6 +23,10 @@ Low priority
Done
----
+[x] Add information about boot image to BOOTING
+
+[x] Add rsync to lib/mkbootimage
+
[x] Add shim
[x] Use shim and mksquashfs to create boot iso
- Using a slightly different method with raw image
diff --git a/fil/man/man8/galeb.8 b/fil/man/man8/galeb.8
@@ -52,6 +52,7 @@ adopts and extends the filesystem hierarchy of stali:
.It Li /local Ta programs specific to the local system
.It Li /mnt Ta mount points
.It Li /pkg Ta compiled packages
+.It Li /plan9 Ta 9base
.It Li /proc Ta procfs
.It Li /run Ta 0755 tmpfs
.It Li /sbin -> /bin Ta symlink pointing to /bin
diff --git a/fil/rc.d/rc.conf b/fil/rc.d/rc.conf
@@ -4,6 +4,8 @@ FONT_UNIMAP=
KEYMAP=us
INTERFACE=eth0
KILLDELAY=1 # Delay before sending TERM and KILL on shutdown
+STATUSDELAY=5 # Delay before issuing 'service running all' after
+ # 'service start all' and similar commands by rc.*
LANG=en_US.UTF-8
HOSTNAME=galeb
TIMEZONE=Europe/Belgrade
diff --git a/fil/rc.d/rc.init b/fil/rc.d/rc.init
@@ -155,6 +155,7 @@ if [ -x /bin/rc.inet ]; then
/bin/rc.inet
fi
+env STATUSDELAY=${STATUSDELAY} \
service start all
if [ -x /bin/rc.local ]; then
diff --git a/fil/rc.d/rc.shutdown b/fil/rc.d/rc.shutdown
@@ -53,6 +53,7 @@ msg info "Shutting down"
msg info "Storing random seed"
dd if=/dev/urandom of=/etc/random-seed count=1 bs=512 2>/dev/null
+env STATUSDELAY=${STATUSDELAY} \
service stop all
KILLDELAY=${KILLDELAY:-3}
diff --git a/lib/createdirs b/lib/createdirs
@@ -26,12 +26,22 @@ do
ownerid=''
if [ -n "${owner}" ]; then
- ownerid=$(grep "^${owner}:" ${GR}/etc/passwd | cut -d: -f3)
+ if [ -e ${GR}/etc/passwd ]; then
+ ownerid=$(grep "^${owner}:" ${GR}/etc/passwd | \
+ cut -d: -f3)
+ else
+ ownerid=0 # fallback
+ fi
fi
groupid=''
if [ -n "${group}" ]; then
- groupid=$(grep "^${owner}:" ${GR}/etc/group | cut -d: -f3)
+ if [ -e ${GR}/etc/group ]; then
+ groupid=$(grep "^${owner}:" ${GR}/etc/group | \
+ cut -d: -f3)
+ else
+ groupid=0 # fallback
+ fi
fi
# If no step was passed, do all
diff --git a/lib/env.sh b/lib/env.sh
@@ -6,6 +6,7 @@
GUSER=strajder
USBROOT=/dev/sdb2 # Change to /dev/sda2, remove Galeb UEFI boot entry and
# rerun bootstrap scripts if you can't boot
+USBESP=/dev/sdb1 # Should match the disk with USBROOT
# /Edit this
diff --git a/lib/fun.sh b/lib/fun.sh
@@ -233,7 +233,7 @@ extract_pkg()
if [ -n "${realdir}" ] && [ -d "${realdir}" ]; then
#msg info "Directory %s exists" "${realdir}"
return
- elif [ -n "${dir}" ] && [ -d "${dir}" ]; then
+ elif [ -z "${realdir}" ] && [ -n "${dir}" ] && [ -d "${dir}" ]; then
#msg info "Directory %s exists" "${dir}"
return
fi
diff --git a/lib/mkbootimage b/lib/mkbootimage
@@ -1,40 +0,0 @@
-#!/bin/sh
-
-. ./lib/env.sh
-. ./lib/fun.sh
-
-if [ "$(id -u)" -ne 0 ]; then
- msg err "You must run this script as root"
- exit 1
-fi
-
-(
-ver=2.0
-timestamp=$(date +'%Y%m%d')
-diskimg=galeb-${ver}-${timestamp}.raw
-
-rm "${diskimg}"
-
-truncate -s $(echo '(25 * 1024 * 1024 * 1024)/10' | bc) "${diskimg}" || exit 1
-
-printf "g\nn\n\n\n+500M\nt\n1\nn\n\n\n\nx\nn\n1\nGALBOOT\n"\
-"n\n2\nGalRoot\nr\nw\n" | fdisk "${diskimg}" || exit 1
-
-losetup -P -f "${diskimg}" || exit 1
-
-mkfs.ext4 -L GalRoot /dev/loop0p2 || exit 1
-mkfs.vfat -F 32 -n GALBOOT /dev/loop0p1 || exit 1
-
-mount -t ext4 /dev/loop0p2 /mnt || exit 1
-mkdir -p /mnt/boot || exit 1
-mount -t vfat /dev/loop0p1 /mnt/boot || exit 1
-
-# rsync ...
-
-umount /mnt/boot
-umount /mnt
-losetup -d /dev/loop0 || exit 1
-
-#xz -9vvf "${diskimg}"
-) || msg err "Image generation failed"
-
diff --git a/lib/perms.tsv b/lib/perms.tsv
@@ -20,9 +20,17 @@ Path Mode Owner Group
/bin/rc.inet 555 root root
/bin/rc.init 555 root root
/bin/rc.shutdown 555 root root
-/bin/rc.svc 555 root root
/bin/service 755 root root
/bin/svc 755 root root
/bin/svc.d/bare.sh 755 root root
/bin/remountroot 500 root root
/bin/umountall 500 root root
+/etc/fstab 644 root root
+/pkg 755 root root
+/src 755 root root
+/sbin 755 root root
+/share/legal 755 root root
+/local/sbin 755 root root
+/var/log/galeb 755 root root
+/var/log/galeb/shortlog 644 root root
+/var/log/galeb/log 644 root root
diff --git a/lib/pkgs.tsv b/lib/pkgs.tsv
@@ -4,7 +4,7 @@ git+https://git.adelielinux.org/adelie/musl-locales.git musl-locales-20220708
git+https://git.sr.ht/~strahinja/mkpk mkpk-20220808
git+https://git.sr.ht/~strahinja/reflow reflow-20220716
git+https://git.sr.ht/~strahinja/sbase sbase-20220801
-git+https://git.sr.ht/~strahinja/svc svc-20220808
+git+https://git.sr.ht/~strahinja/svc svc-20220813
git+https://github.com/cpeuvrel/usleep-aur usleep-20220718
git+https://github.com/mirbsd/mksh mksh-20220709
git+https://github.com/onetrueawk/awk awk-20220709
@@ -74,10 +74,12 @@ https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-3.4.2.tar.gz ae91a840b293
https://ftpmirror.gnu.org/autoconf-archive/autoconf-archive-2022.02.11.tar.xz 243e06a356ea2c0fddc527febd4241da49fe4c11fb64b548873744a54e079860739d7a1da842833b99540acde3f6a2ebfddc41897306cc2e61e2c6037a7d22ff
https://gcc.gnu.org/pub/gcc/snapshots/11-20220101/gcc-11-20220101.tar.xz 33ae3f00c48e19659b9fc26e2dd2ccf98d52babd97c4fc2bf02171507572e1324892699b80e9c5036daec1453b04fc431366317c0456a3a2f59465a2374182a4
https://git.sr.ht/~strahinja/sled/archive/v0.10.8.tar.gz sled-0.10.8.tar.gz 9a1992bdf75f6a9a8b564563af3d7e5e61e93deae480e3aa643ae249a8fa8572d16bad6959cf6a7d339022c41fb4347d1e146aecc246257ebf6108439c1b0654
-https://git.sr.ht/~strahinja/table/archive/v0.6.3.tar.gz table-0.6.3.tar.gz 4562c701a9cd443db06bf37585425e2d1bf91856da59bc1ade9cef99abfbf60bb3888b6b4d7adc255b7b6235251e0d12df19a50578e62cd619da2db75ceca2e5
+https://git.sr.ht/~strahinja/table/archive/v0.6.4.tar.gz table-0.6.4.tar.gz a86c8bca4cc2250aa8fcdb49508e802fb3b78d950a4f95c8d2d214ad1dd72ffdda78ed20165317041c1afdf0f039b1a8b594bed5ab0d43c61cb21140e7adc37a
+https://github.com/Cyan4973/xxHash/archive/refs/tags/v0.8.1.tar.gz xxhash-0.8.1.tar.gz 12feedd6a1859ef55e27218dbd6dcceccbb5a4da34cd80240d2f7d44cd246c7afdeb59830c2d5b90189bb5159293532208bf5bb622250102e12d6e1bad14a193
https://github.com/Duncaen/OpenDoas/releases/download/v6.8.2/opendoas-6.8.2.tar.xz 5f349763dcc56b60f3707af3b3b7557e4721427a093dff725235c54b741670e0606272063527d00442eb7510dfd96482f7c6f38f15ece148bea41c9aa514865c
https://github.com/Mic92/iana-etc/releases/download/20210611/iana-etc-20210611.tar.gz 3db4d509699930bb48950b54d916d0aafbd6eb6ecbd98d6ffdf77f79fb9dd644754b2d479b675f1f0afb094e49e70fa583bbdb4432d976fa980b8696ca2387a7
https://github.com/PhilipHazel/pcre2/releases/download/pcre2-10.39/pcre2-10.39.tar.bz2 b3d898198f4b5ffc3453d2ba56fe2a7298c01c52e5f67d45f1e046fc0dee62e16a4024fcb65839ac9c367beedb531647affd6f8599fbeb102f19423c150d80d4
+https://github.com/WayneD/rsync/archive/refs/tags/v3.2.5pre2.tar.gz rsync-3.2.5pre2.tar.gz cc7884cced95ce6fafd8d322b8bdb42c250c869d94186f7c471ce09cc3906f596903aed65c070e3de1c6a5e28966c4cea4d75797f444424484ebb9e574a0d42c
https://github.com/arsv/perl-cross/releases/download/1.4/perl-cross-1.4.tar.gz bde73cac13c0b42c4c6783d7e30dea491d70b65131e1c8434ef75db1f39a8e15ef5857568b706e8456faa3822402676dd247a1f20f4bed983597fdd5a6b4faad
https://github.com/dosfstools/dosfstools/releases/download/v4.2/dosfstools-4.2.tar.gz 3cc0808edb4432428df8a67da4bb314fd1f27adc4a05754c1a492091741a7b6875ebd9f6a509cc4c5ad85643fc40395b6e0cadee548b25cc439cc9b725980156
https://github.com/ericonr/argp-standalone/archive/refs/tags/1.4.1.tar.gz argp-standalone-1.4.1.tar.gz c5f07e88434589a13a2e88e66d1142b581f19aa82da28507f3c31ea782e080a13a4504d8108c003b5d3c8a3aa20f52ea5e81f337c11a4b1342b16361d4877c1c
diff --git a/lib/setperms b/lib/setperms
@@ -47,9 +47,9 @@ do
if [ "${startuid}" -eq 0 ] && [ -n "${owner}" ] && \
[ -n "${group}" ]; then
- msg info "chown %s:%s %s" "${ownerid}" "${groupid}" \
+ msg info "chown -h %s:%s %s" "${ownerid}" "${groupid}" \
"${GR}${path}"
- chown ${ownerid}:${groupid} "${GR}${path}" || exit 1
+ chown -h ${ownerid}:${groupid} "${GR}${path}" || exit 1
fi
if [ -n "${mode}" ]; then
diff --git a/lib/symlinks.tsv b/lib/symlinks.tsv
@@ -11,5 +11,8 @@ lksh /bin/sh 03-packages.sh
/bin/rc.shutdown /bin/shutdown 02-chroot.sh-end
/bin/rc.shutdown /bin/poweroff 02-chroot.sh-end
/bin/rc.shutdown /bin/reboot 02-chroot.sh-end
+../avail/gpm /bin/svc.d/run/gpm 02-chroot.sh-end
+../avail/hwclock /bin/svc.d/run/hwclock 02-chroot.sh-end
+../avail/sdhcp /bin/svc.d/run/sdhcp 02-chroot.sh-end
/ /usr 02-chroot.sh-end
/run /var/run 02-chroot.sh-end