mirror of
https://github.com/netdata/libbpf.git
synced 2026-03-23 01:39:06 +08:00
Given that the rootfs for Arch Linux uses the busybox variant of mount(8), the `-l` doesn't exist on that binary and gives the following error msg with version v1.34.1 of busybox when invoking mkrootfs_arch.sh: ``` ... [ 0.781471] random: fast init done starting pid 72, tty '': '/etc/init.d/rcS' + for path in /etc/rcS.d/S* + '[' -x /etc/rcS.d/S10-mount ']' + /etc/rcS.d/S10-mount + /bin/mount proc /proc -t proc ++ /bin/mount -l -t devtmpfs /bin/mount: unrecognized option: l ... ``` This prevented me from generating a rootfs. This is fixed by removing the `-l`, as plainly invoking `mount -t devtmpfs` returns the same output with `mount -l ...` on the non-busybox variant (on Arch Linux, it comes from the `utils-linux` package). After this change, I was able to run `./tools/testing/selftests/bpf/vmtest.sh -i` (from the kernel src; with modification to the script to pick up my locally-generated .zstd of the new rootfs) and it worked. Signed-off-by: Chris Tarazi <tarazichris@gmail.com>
62 lines
1.1 KiB
Bash
Executable File
62 lines
1.1 KiB
Bash
Executable File
#!/bin/bash
|
|
# This script prepares a mounted root filesystem for testing libbpf in a virtual
|
|
# machine.
|
|
set -e -u -x -o pipefail
|
|
root=$1
|
|
shift
|
|
|
|
chroot "${root}" /bin/busybox --install
|
|
|
|
cat > "$root/etc/inittab" << "EOF"
|
|
::sysinit:/etc/init.d/rcS
|
|
::ctrlaltdel:/sbin/reboot
|
|
::shutdown:/sbin/swapoff -a
|
|
::shutdown:/bin/umount -a -r
|
|
::restart:/sbin/init
|
|
EOF
|
|
chmod 644 "$root/etc/inittab"
|
|
|
|
mkdir -m 755 -p "$root/etc/init.d" "$root/etc/rcS.d"
|
|
cat > "$root/etc/rcS.d/S10-mount" << "EOF"
|
|
#!/bin/sh
|
|
|
|
set -eux
|
|
|
|
/bin/mount proc /proc -t proc
|
|
|
|
# Mount devtmpfs if not mounted
|
|
if [[ -z $(/bin/mount -t devtmpfs) ]]; then
|
|
/bin/mount devtmpfs /dev -t devtmpfs
|
|
fi
|
|
|
|
/bin/mount sysfs /sys -t sysfs
|
|
/bin/mount bpffs /sys/fs/bpf -t bpf
|
|
/bin/mount debugfs /sys/kernel/debug -t debugfs
|
|
|
|
echo 'Listing currently mounted file systems'
|
|
/bin/mount
|
|
EOF
|
|
chmod 755 "$root/etc/rcS.d/S10-mount"
|
|
|
|
cat > "$root/etc/rcS.d/S40-network" << "EOF"
|
|
#!/bin/sh
|
|
|
|
set -eux
|
|
|
|
ip link set lo up
|
|
EOF
|
|
chmod 755 "$root/etc/rcS.d/S40-network"
|
|
|
|
cat > "$root/etc/init.d/rcS" << "EOF"
|
|
#!/bin/sh
|
|
|
|
set -eux
|
|
|
|
for path in /etc/rcS.d/S*; do
|
|
[ -x "$path" ] && "$path"
|
|
done
|
|
EOF
|
|
chmod 755 "$root/etc/init.d/rcS"
|
|
|
|
chmod 755 "$root"
|