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