wok annotate busybox-boot/receipt @ rev 13883

busybox-boot: boot with loopfs= cmdline arg
author Pascal Bellard <pascal.bellard@slitaz.org>
date Thu Jan 17 16:09:53 2013 +0100 (2013-01-17)
parents be782e714030
children a0759293a0ca
rev   line source
pascal@13591 1 # SliTaz package receipt.
pascal@13591 2
pascal@13591 3 PACKAGE="busybox-boot"
pascal@13591 4 VERSION="1.20.2"
pascal@13591 5 CATEGORY="base-system"
pascal@13591 6 SHORT_DESC="Many common UNIX utilities for core-5in1/boot flavor."
pascal@13591 7 MAINTAINER="pascal.bellard@slitaz.org"
pascal@13591 8 DEPENDS="linux syslinux"
pascal@13591 9 WANTED="busybox"
pascal@13591 10 WEB_SITE="http://www.busybox.net/"
pascal@13591 11 CONFIG_FILES=""
pascal@13591 12
pascal@13591 13 # Rules to gen a SliTaz package suitable for Tazpkg.
pascal@13591 14 genpkg_rules()
pascal@13591 15 {
pascal@13591 16 jslinux=false
pascal@13879 17 mkdir -p $fs/bin $fs/sbin $fs/dev/pts $fs/proc $fs/sys $fs/tmp $fs/mnt
pascal@13591 18 cp -a $src/busybox-static $fs/bin/busybox
pascal@13591 19 mknod -m 660 $fs/dev/console c 5 1
pascal@13591 20 mknod -m 771 $fs/dev/null c 1 3
pascal@13591 21 mknod -m 660 $fs/dev/tty c 5 0
pascal@13879 22 mknod -m 660 $fs/dev/loop0 b 7 0
pascal@13879 23 mknod -m 660 $fs/dev/loop1 b 7 1
pascal@13879 24 while read name major minor ; do
pascal@13879 25 for i in '' 1 2 3 4 5 6 7 8 9 ; do
pascal@13879 26 mknod -m 644 $fs/dev/$name$i b $major $(($i + $minor))
pascal@13879 27 done
pascal@13879 28 done <<EOT
pascal@13879 29 hda 3 0
pascal@13879 30 hdb 3 64
pascal@13879 31 sda 8 0
pascal@13879 32 sdb 8 16
pascal@13879 33 EOT
pascal@13591 34 if $jslinux; then
pascal@13591 35 mknod -m 644 $fs/dev/clipboard c 10 231
pascal@13591 36 mknod -m 660 $fs/dev/ttyS0 c 4 64
pascal@13591 37 fi
pascal@13591 38 mknod -m 660 $fs/dev/tty1 c 4 1
pascal@13591 39 cat > $fs/init <<EOT
pascal@13591 40 #!/bin/busybox sh
pascal@13591 41
pascal@13591 42 for i in \$(busybox --list) ; do busybox ln /bin/busybox /bin/\$i; done
pascal@13591 43
pascal@13591 44 export PATH=/bin
pascal@13591 45 export HOME=/
pascal@13591 46 export TERM=vt100
pascal@13591 47
pascal@13591 48 mount -t proc none /proc
pascal@13879 49
pascal@13879 50 arg()
pascal@13879 51 {
pascal@13882 52 grep -q \$1= /proc/cmdline && root="\$(sed "s/.*\$1=\\([^ ]*\\).*/\\1/" </proc/cmdline)"
pascal@13879 53 }
pascal@13879 54
pascal@13882 55 arg mount && mount \$root /mnt
pascal@13882 56 arg loopfs && losetup /dev/loop0 /mnt/\$root && mount /dev/loop0 /mnt
pascal@13882 57 arg subroot && cp /bin/busybox /mnt/\$root/dev/shm &&
pascal@13882 58 exec switch_root mnt \$root/dev/shm/busybox chroot \$root /sbin/init
pascal@13883 59 arg loopfs && exec switch_root mnt /sbin/init
pascal@13879 60
pascal@13591 61 [ -d /proc/bus/usb ] && mount -t usbfs usbfs /proc/bus/usb
pascal@13591 62 mount -t sysfs none /sys
pascal@13591 63 mount -t devpts none /dev/pts
pascal@13591 64
pascal@13591 65 TTY=\$(tty 2>/dev/null)
pascal@13591 66 TTY=\${TTY:-/dev/tty1}
pascal@13591 67 EOT
pascal@13591 68 $jslinux && cat >> $fs/init <<EOT
pascal@13591 69 stty -F \$TTY rows 30 2>/dev/null
pascal@13591 70 EOT
pascal@13591 71 cat >> $fs/init <<EOT
pascal@13591 72
pascal@13591 73 busybox | sed '/Current/,\$!d'
pascal@13591 74 while true; do
pascal@13591 75 if [ -x /bin/setsid ]; then
pascal@13591 76 setsid sh -c "exec sh <\$TTY >\$TTY 2>&1"
pascal@13591 77 else
pascal@13591 78 sh <\$TTY >\$TTY 2>&1
pascal@13591 79 fi
pascal@13591 80 done
pascal@13591 81 EOT
pascal@13591 82 chmod +x $fs/init
pascal@13591 83 ln $fs/init $fs/sbin/init
pascal@13591 84 }
pascal@13591 85
pascal@13591 86 pre_install()
pascal@13591 87 {
pascal@13591 88 rm -rf $1/bin $1/sbin
pascal@13591 89 }
pascal@13591 90
pascal@13591 91 post_install()
pascal@13591 92 {
pascal@13591 93 rm -rf $1/lib $1/var $1/sbin $1/home $1/root $1/media
pascal@13591 94 }