slitaz-arm annotate rpi/tazbian @ rev 194
tazbian: fix piboot perms
author | Pascal Bellard <pascal.bellard@slitaz.org> |
---|---|
date | Sun Nov 16 00:36:16 2014 +0100 (2014-11-16) |
parents | 9f10e89995a2 |
children | 2fe7d33c6d4c |
rev | line source |
---|---|
pascal@192 | 1 #!/bin/sh |
pascal@192 | 2 # |
pascal@192 | 3 # (C) 2014 SliTaz GNU/Linux - GPL2 |
pascal@192 | 4 # |
pascal@193 | 5 # creates a debian package to install SliTaz on a RaspBian without |
pascal@192 | 6 # repartitionning. |
pascal@192 | 7 # |
pascal@192 | 8 # AUTHORS: Pascal Bellard <pascal.bellard@slitaz.org> |
pascal@192 | 9 # |
pascal@192 | 10 |
pascal@192 | 11 [ $(id -u) -ne 0 ] && echo "Must be root. Abort." && exit 1 |
pascal@192 | 12 |
pascal@192 | 13 CURDIR=$PWD |
pascal@192 | 14 TMPDIR=/tmp/rasp$$ |
pascal@192 | 15 mkdir -p $TMPDIR |
pascal@192 | 16 cd $TMPDIR |
pascal@192 | 17 DESTDIR=var/os/slitaz |
pascal@192 | 18 URL=http://mirror.slitaz.org/arm/rpi/ |
pascal@192 | 19 wget -O - $URL | sed '/slitaz-rpi/!d;s/.*href=.\([a-zA-Z0-9._-]*\).*/\1/' | sort -r > index |
pascal@192 | 20 VERSION="$(sed '/rpi-desktop/!d' index | sed 's/.*-desktop-\([0-9_-]*\).*/\1/;q')" |
pascal@192 | 21 |
pascal@192 | 22 wget -O - $URL$(sed '/rpi-base/!d;q' index) | tar xjf - |
pascal@192 | 23 wget -O - $URL$(sed '/rpi-desktop/!d;q' index) | tar xjf - |
pascal@192 | 24 |
pascal@192 | 25 mkdir -p fs/$DESTDIR fs/boot/slitaz fs/boot/slitaz-base \ |
pascal@192 | 26 fs/boot/raspbian |
pascal@192 | 27 |
pascal@192 | 28 # setup boot configuration |
pascal@192 | 29 BASE=$(ls -d slitaz-rpi-base-*/boot) |
pascal@192 | 30 [ ! -d "$BASE" ] && echo "Abort ($BASE) !" && exit 1 |
pascal@192 | 31 mv $BASE/kernel.img fs/boot/slitaz |
pascal@192 | 32 cp $BASE/config.txt fs/boot/slitaz |
pascal@192 | 33 cp $BASE/config.txt fs/boot/slitaz-base |
pascal@192 | 34 echo "initrd rootfs-base.gz" >> fs/boot/slitaz/config.txt |
pascal@192 | 35 echo "entry=SliTaz $VERSION on SD-card" > fs/boot/slitaz/menu.txt |
pascal@192 | 36 sed -i 's|kernel.img|../slitaz/&|' fs/boot/slitaz-base/config.txt |
pascal@192 | 37 cp -a fs/boot/slitaz-base fs/boot/slitaz-live |
pascal@192 | 38 echo "initrd ../slitaz/rootfs-base.gz" >> fs/boot/slitaz-base/config.txt |
pascal@192 | 39 echo "entry=SliTaz base $VERSION in RAM" > fs/boot/slitaz-base/menu.txt |
pascal@192 | 40 echo "initrd ../slitaz/rootfs-base.gz ../slitaz/rootfs-live.gz" >> fs/boot/slitaz-live/config.txt |
pascal@192 | 41 echo "entry=SliTaz desktop $VERSION in RAM" > fs/boot/slitaz-live/menu.txt |
pascal@192 | 42 |
pascal@192 | 43 # update base package |
pascal@192 | 44 BASE=$(ls -d slitaz-rpi-base-*/rootfs) |
pascal@192 | 45 [ ! -d "$BASE" ] && echo "Abort ($BASE) !" && exit 1 |
pascal@192 | 46 wget http://hg.slitaz.org/slitaz-arm/raw-file/tip/rpi/piboot |
pascal@194 | 47 chmod +x piboot |
pascal@192 | 48 mv piboot $BASE/sbin |
pascal@192 | 49 wget http://cook.slitaz.org/cross/arm/packages/packages.list |
pascal@192 | 50 while read file pkg extra ; do |
pascal@192 | 51 [ -s boot$file ] && continue |
pascal@192 | 52 [ -n "$extra" ] && continue |
pascal@192 | 53 pkg=$(grep ^$pkg- packages.list | sort | sed q).tazpkg |
pascal@192 | 54 wget http://cook.slitaz.org/cross/arm/packages/$pkg |
pascal@192 | 55 tazpkg install $pkg --root=$BASE/ |
pascal@192 | 56 done <<EOT |
pascal@192 | 57 /usr/lib/libz.so zlib |
pascal@192 | 58 /usr/sbin/kexec kexec-tools |
pascal@192 | 59 /usr/bin/tset ncursesw |
pascal@192 | 60 /usr/bin/dialog dialog |
pascal@192 | 61 /usr/lib/libxml2.so libxml2 aria2 |
pascal@192 | 62 /usr/bin/gpg-error libgpg-error aria2 |
pascal@192 | 63 /usr/lib/libgcrypt.so libgcrypt aria2 |
pascal@192 | 64 /usr/lib/libgmp.so gmp aria2 |
pascal@192 | 65 /usr/lib/libnettle.so nettle aria2 |
pascal@192 | 66 /usr/share/terminfo/l/linux ncurses-common aria2 |
pascal@192 | 67 /lib/libncurses.so ncurses aria2 |
pascal@192 | 68 /usr/lib/libreadline.so readline aria2 |
pascal@192 | 69 /usr/lib/libstdc++.so gcc-lib-base p11-kit aria2 |
pascal@192 | 70 /usr/lib/libgnutls.so libgnutls aria2 |
pascal@192 | 71 /usr/lib/libcrypto.so libcrypto aria2 |
pascal@192 | 72 /usr/lib/libtasn1.so libtasn1 aria2 |
pascal@192 | 73 /usr/bin/gnutls-cli gnutls aria2 |
pascal@192 | 74 /usr/bin/aria2c aria2 aria2 |
pascal@192 | 75 EOT |
pascal@192 | 76 |
pascal@192 | 77 # deduplicate base & live |
pascal@192 | 78 LIVE=$(ls -d slitaz-rpi-desktop-*/rootfs) |
pascal@192 | 79 [ ! -d "$LIVE" ] && echo "Abort ($LIVE) !" && exit 1 |
pascal@192 | 80 LIVESZ=$(du -ks $LIVE | cut -f1) |
pascal@192 | 81 ( cd $BASE/ ; find ! -type d ) | while read file; do |
pascal@192 | 82 if [ -L $BASE/$file ]; then |
pascal@192 | 83 [ -L $LIVE/$file ] && |
pascal@192 | 84 [ "$(readlink $BASE/$file)" == "$(readlink $LIVE/$file)" ] && |
pascal@192 | 85 rm -f $LIVE/$file |
pascal@192 | 86 elif [ -f $BASE/$file ]; then |
pascal@192 | 87 [ -f $LIVE/$file ] && |
pascal@192 | 88 cmp $BASE/$file $LIVE/$file > /dev/null 2>&1 && |
pascal@192 | 89 rm -f $LIVE/$file |
pascal@192 | 90 elif [ -b $BASE/$file ]; then |
pascal@192 | 91 [ -b $LIVE/$file ] && |
pascal@192 | 92 [ "$(stat -c '%a:%u:%g:%t:%T' $BASE/$file)" == \ |
pascal@192 | 93 "$(stat -c '%a:%u:%g:%t:%T' $LIVE/$file)" ] && |
pascal@192 | 94 rm -f $LIVE/$file |
pascal@192 | 95 elif [ -c $BASE/$file ]; then |
pascal@192 | 96 [ -c $LIVE/$file ] && |
pascal@192 | 97 [ "$(stat -c '%a:%u:%g:%t:%T' $BASE/$file)" == \ |
pascal@192 | 98 "$(stat -c '%a:%u:%g:%t:%T' $LIVE/$file)" ] && |
pascal@192 | 99 rm -f $LIVE/$file |
pascal@192 | 100 fi |
pascal@192 | 101 done |
pascal@192 | 102 ( cd $BASE/ ; find -type d ) | while read dir; do |
pascal@192 | 103 rmdir $LIVE/$file 2> /dev/null |
pascal@192 | 104 done |
pascal@192 | 105 |
pascal@192 | 106 ( cd $BASE ; find * | cpio -o -H newc ) | \ |
pascal@192 | 107 gzip -9 > fs/boot/slitaz/rootfs-base.gz |
pascal@192 | 108 ( cd $LIVE ; find * | cpio -o -H newc ) | \ |
pascal@192 | 109 gzip -9 > fs/boot/slitaz/rootfs-live.gz |
pascal@192 | 110 |
pascal@192 | 111 |
pascal@192 | 112 # Create raspbian package |
pascal@192 | 113 echo "2.0" > debian-binary |
pascal@192 | 114 cat > control <<EOT |
pascal@192 | 115 Package: slitaz |
pascal@192 | 116 Version: $VERSION-1 |
pascal@192 | 117 Architecture: armhf |
pascal@192 | 118 Maintainer: Pascal Bellard <pascal.bellard@slitaz.org> |
pascal@192 | 119 Installed-Size: $(($(du -ks fs | cut -f1) + $LIVESZ)) |
pascal@192 | 120 Section: miscellaneous |
pascal@192 | 121 Priority: optional |
pascal@192 | 122 Homepage: http://arm.slitaz.org/ |
pascal@192 | 123 Description: Tiny Linux distribution with multi boot feature |
pascal@192 | 124 SliTaz can run fully in RAM or can be installed on the SD card in a |
pascal@192 | 125 subdirectory of your Raspbian (example /$DESTDIR). |
pascal@192 | 126 EOT |
pascal@192 | 127 ( cd fs ; find * -type f -exec md5sum {} \; ) > md5sums |
pascal@192 | 128 cat > postinst <<EOT |
pascal@192 | 129 #!/bin/sh |
pascal@192 | 130 |
pascal@192 | 131 set -e |
pascal@192 | 132 |
pascal@192 | 133 cd /$DESTDIR |
pascal@192 | 134 zcat /boot/slitaz/rootfs-base.gz | cpio -idmu |
pascal@192 | 135 zcat /boot/slitaz/rootfs-core.gz | cpio -idmu |
pascal@192 | 136 mkdir mnt/raspbian 2> /dev/null |
pascal@192 | 137 cat >> etc/inittab <<EOM |
pascal@192 | 138 \$RDEV /mnt/raspbian \$FSTYPE defaults 0 0 |
pascal@192 | 139 tmpfs /mnt/raspbian/$DESTDIR tmpfs size=0 0 0 |
pascal@192 | 140 EOM |
pascal@192 | 141 cd - |
pascal@192 | 142 |
pascal@192 | 143 if [ ! -f /boot/menu.txt ]; then |
pascal@192 | 144 |
pascal@192 | 145 for i in i18n keyboard ; di |
pascal@192 | 146 [ -s /etc/sysconfig/\$i ] && . /etc/sysconfig/\$i |
pascal@192 | 147 done |
pascal@192 | 148 find /$DESTDIR/usr/share/kbd/keymaps | grep /\$KEYTABLE.map.gz\$ && KMAP=\$KEYTABLE |
pascal@192 | 149 cat > /boot/menu.txt <<EOM |
pascal@192 | 150 title=Raspberry PI boot menu |
pascal@192 | 151 subtitle=Select the OS with ARROW keys and hit RETURN |
pascal@192 | 152 timeout=30 |
pascal@192 | 153 default=raspbian |
pascal@192 | 154 #kmap=\${KMAP:-us} |
pascal@192 | 155 edittitle=Edit menu |
pascal@192 | 156 #noedit |
pascal@192 | 157 #webpath=http://my.home.web.site/pxe/rpi/index.php |
pascal@192 | 158 EOM |
pascal@192 | 159 cp /boot/config.txt /boot/raspbian/ |
pascal@192 | 160 mv /boot/\$(sed '/^kernel/!d;s/.*=//' /boot/config.txt) /boot/raspbian/ |
pascal@192 | 161 echo "entry=Raspbian \$(cat /etc/debian_version)" > /boot/raspbian/menu.txt |
pascal@192 | 162 sed -i '/^kernel/d;/^initrd/d' /boot/config.txt |
pascal@192 | 163 echo "kernel=slitaz/kernel.img" >> /boot/config.txt |
pascal@192 | 164 echo "initrd=slitaz/rootfs-base.gz" >> /boot/config.txt |
pascal@192 | 165 set -- \$(awk '/ \/ / { if (\$1 != "rootfs") print \$1 " " \$3 }') |
pascal@192 | 166 RDEV=\$1 |
pascal@192 | 167 FSTYPE=\$2 |
pascal@192 | 168 echo "root=/dev/null rdinit=/sbin/piboot quiet" > /boot/cmdline.txt |
pascal@192 | 169 echo "root=/dev/null mount=\$RDEV subroot=$DESTDIR rootwait quiet" > /boot/slitaz/cmdline.txt |
pascal@192 | 170 if [ -s /$DESTDIR/usr/share/i18n/locales/\${LANG%.*} -a -n "\$KMAP" ]; then |
pascal@192 | 171 echo "root=/dev/null lang=\${LANG%.*} kmap=\$KMAP quiet" |
pascal@192 | 172 else |
pascal@192 | 173 echo "root=/dev/null quiet" |
pascal@192 | 174 fi > /boot/slitaz-base/cmdline.txt |
pascal@192 | 175 cp /boot/slitaz-base/cmdline.txt /boot/slitaz-live/cmdline.txt |
pascal@192 | 176 |
pascal@192 | 177 fi |
pascal@192 | 178 |
pascal@192 | 179 exit 0 |
pascal@192 | 180 EOT |
pascal@192 | 181 cat > postrm <<EOT |
pascal@192 | 182 #!/bin/sh |
pascal@192 | 183 |
pascal@192 | 184 purge() |
pascal@192 | 185 { |
pascal@192 | 186 rm -rf /$DESTDIR /boot/slitaz* |
pascal@192 | 187 } |
pascal@192 | 188 |
pascal@192 | 189 disable() |
pascal@192 | 190 { |
pascal@192 | 191 if [ -d /boot/rasbian ]; then |
pascal@192 | 192 mv -f /boot/rasbian/* /boot |
pascal@192 | 193 rm -rf /boot/rasbian |
pascal@192 | 194 fi |
pascal@192 | 195 rm -f /boot/menu.txt |
pascal@192 | 196 } |
pascal@192 | 197 |
pascal@192 | 198 case "\$1" in |
pascal@192 | 199 purge) |
pascal@192 | 200 disable |
pascal@192 | 201 purge |
pascal@192 | 202 ;; |
pascal@192 | 203 remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear) |
pascal@192 | 204 disable |
pascal@192 | 205 ;; |
pascal@192 | 206 *) |
pascal@192 | 207 echo "postrm called with unknown argument \\\`\$1'" >&2 |
pascal@192 | 208 exit 0 |
pascal@192 | 209 esac |
pascal@192 | 210 EOT |
pascal@192 | 211 chmod +x postinst postrm |
pascal@192 | 212 tar czf control.tar.gz md5sums control postinst postrm |
pascal@192 | 213 rm -rf fs/$DESTDIR/* |
pascal@192 | 214 cd fs ; tar czf ../data.tar.gz . ; cd .. |
pascal@192 | 215 [ -x /usr/bin/ar ] || tazpkg get-install binutils |
pascal@192 | 216 ar rcs slitaz-$VERSION-1_armhf.deb debian-binary control.tar.gz data.tar.gz |
pascal@192 | 217 mv slitaz-$VERSION-1_armhf.deb $CURDIR |
pascal@192 | 218 cd $CURDIR |
pascal@192 | 219 ls -l slitaz-$VERSION-1_armhf.deb |