Andrew G. Morgan | dce069b | 2016-02-06 19:42:27 -0800 | [diff] [blame] | 1 | #!/bin/bash |
| 2 | # The following is a synthesis of info in: |
| 3 | # |
| 4 | # http://vmsplice.net/~stefan/stefanha-kernel-recipes-2015.pdf |
| 5 | # http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/README |
| 6 | # |
| 7 | KBASE=../../linux |
| 8 | #APPEND="console=ttyS0" |
| 9 | |
| 10 | function die { |
| 11 | echo "$*" |
| 12 | exit 1 |
| 13 | } |
| 14 | |
| 15 | pushd .. |
Andrew G. Morgan | 8361f29 | 2020-12-01 21:04:14 -0800 | [diff] [blame] | 16 | make test || die "failed to make test of libcap tree" |
| 17 | make -C progs tcapsh-static || die "failed to make progs/tcapsh-static" |
Andrew G. Morgan | dce069b | 2016-02-06 19:42:27 -0800 | [diff] [blame] | 18 | popd |
| 19 | |
| 20 | # Assumes desired make *config (eg. make defconfig) is already done. |
| 21 | pushd $KBASE |
| 22 | pwd |
| 23 | make V=1 all || die "failed to build kernel: $0" |
| 24 | popd |
| 25 | |
| 26 | HERE=$(/bin/pwd) |
| 27 | |
| 28 | cat > fs.conf <<EOF |
| 29 | file /init test-init.sh 0755 0 0 |
| 30 | dir /etc 0755 0 0 |
| 31 | file /etc/passwd test-passwd 0444 0 0 |
| 32 | dir /lib 0755 0 0 |
| 33 | dir /proc 0755 0 0 |
| 34 | dir /dev 0755 0 0 |
| 35 | dir /sys 0755 0 0 |
| 36 | dir /sbin 0755 0 0 |
| 37 | file /sbin/busybox /usr/sbin/busybox 0755 0 0 |
| 38 | dir /bin 0755 0 0 |
| 39 | file /bin/myprompt test-prompt.sh 0755 0 0 |
| 40 | file /bin/bash test-bash.sh 0755 0 0 |
| 41 | dir /usr 0755 0 0 |
| 42 | dir /usr/bin 0755 0 0 |
| 43 | dir /root 0755 0 0 |
| 44 | file /root/quicktest.sh $HERE/../progs/quicktest.sh 0755 0 0 |
| 45 | file /root/setcap $HERE/../progs/setcap 0755 0 0 |
| 46 | file /root/getcap $HERE/../progs/getcap 0755 0 0 |
| 47 | file /root/capsh $HERE/../progs/capsh 0755 0 0 |
| 48 | file /root/getpcaps $HERE/../progs/getpcaps 0755 0 0 |
Andrew G. Morgan | 8361f29 | 2020-12-01 21:04:14 -0800 | [diff] [blame] | 49 | file /root/tcapsh-static $HERE/../progs/tcapsh-static 0755 0 0 |
Andrew G. Morgan | dce069b | 2016-02-06 19:42:27 -0800 | [diff] [blame] | 50 | EOF |
| 51 | |
Andrew G. Morgan | 8361f29 | 2020-12-01 21:04:14 -0800 | [diff] [blame] | 52 | # convenience for some local experiments |
| 53 | if [ -f "$HERE/extras.sh" ]; then |
| 54 | echo "local, uncommitted enhancements to kernel test" |
| 55 | . "$HERE/extras.sh" |
| 56 | fi |
| 57 | |
| 58 | COMMANDS="awk cat chmod cp dmesg fgrep id less ln ls mkdir mount pwd rm rmdir sh sort umount uniq vi" |
Andrew G. Morgan | dce069b | 2016-02-06 19:42:27 -0800 | [diff] [blame] | 59 | for f in $COMMANDS; do |
| 60 | echo slink /bin/$f /sbin/busybox 0755 0 0 >> fs.conf |
| 61 | done |
| 62 | |
| 63 | UCOMMANDS="id cut" |
| 64 | for f in $UCOMMANDS; do |
| 65 | echo slink /usr/bin/$f /sbin/busybox 0755 0 0 >> fs.conf |
| 66 | done |
| 67 | |
| 68 | $KBASE/usr/gen_init_cpio fs.conf | gzip -9 > initramfs.img |
| 69 | |
Andrew G. Morgan | 8361f29 | 2020-12-01 21:04:14 -0800 | [diff] [blame] | 70 | KERNEL=$KBASE/arch/$(uname -m)/boot/bzImage |
Andrew G. Morgan | dce069b | 2016-02-06 19:42:27 -0800 | [diff] [blame] | 71 | |
| 72 | qemu-system-$(uname -m) -m 1024 \ |
| 73 | -kernel $KERNEL \ |
| 74 | -initrd initramfs.img \ |
Andrew G. Morgan | 8361f29 | 2020-12-01 21:04:14 -0800 | [diff] [blame] | 75 | -append "$APPEND" \ |
| 76 | -smp sockets=2,dies=1,cores=4 |