# HG changeset patch # User Pascal Bellard # Date 1459074030 -7200 # Node ID 5be8b2141f105a85e99d78cf6ea293b6463e5a9f # Parent fc34c01e1405f31bcd02c6705d0f34ad9a9a39b9 tazbian: rpi2+ support diff -r fc34c01e1405 -r 5be8b2141f10 rpi/tazbian --- a/rpi/tazbian Fri Mar 25 15:13:32 2016 +0100 +++ b/rpi/tazbian Sun Mar 27 12:20:30 2016 +0200 @@ -1,6 +1,6 @@ #!/bin/sh # -# (C) 2014-2015 SliTaz GNU/Linux - GPL2 +# (C) 2014-2016 SliTaz GNU/Linux - GPL2 # # Creates a Debian package to install SliTaz on a Raspbian without # repartitioning. @@ -10,6 +10,7 @@ [ $(id -u) -ne 0 ] && echo "Must be root. Abort." && exit 1 +REVISION=2 DESTDIR=var/os/slitaz DESCRIPTION="Tiny Linux distribution with multi boot features" LONG_DESCRIPTION="SliTaz can run fully in RAM or can be installed \ @@ -19,17 +20,17 @@ tazpkg() { - if [ -x /usr/bin/tazpkg ]; then + if [ -x /usr/bin/tazpkg -a "$1" == "get-install" ]; then /usr/bin/tazpkg "$@" return $? fi [ "$1" == "get-install" ] && echo "abort: can't find $2" && exit 1 mkdir -p tazpkg$$ cd tazpkg$$ - cpio -i < ../$2 + cpio -i < ../$2 > /dev/null 2>&1 gunzip fs.cpio.gz 2> /dev/null [ -s fs.cpio ] || unlzma fs.cpio.lzma - cpio -idmu < fs.cpio + cpio -idmu < fs.cpio > /dev/null 2>&1 cd .. sh < index VERSION="$(sed '/rpi-desktop/!d' index | sed 's/.*-desktop-\([0-9_-]*\).*/\1/;q')" -wget -O - $URL$(sed '/rpi-base/!d;q' index) | tar xjf - -wget -O - $URL$(sed '/rpi-desktop/!d;q' index) | tar xjf - +for file in $(sed '/rpi-base/!d;q' index) $(sed '/rpi-desktop/!d;q' index); do + echo "Get $file " + wget -O - $URL$file | tar xjf - +done -mkdir -p fs/$DESTDIR fs/boot/slitaz fs/boot/slitaz-base \ +mkdir -p fs/$DESTDIR fs/boot/slitaz fs/boot/slitaz-base fs/boot/slitaz-live \ fs/boot/$raspos +BOOT=$(ls -d slitaz-rpi-base-*/boot) +[ ! -d "$BOOT" ] && echo "Abort ($BOOT) !" && exit 1 + # setup boot configuration -BASE=$(ls -d slitaz-rpi-base-*/boot) -[ ! -d "$BASE" ] && echo "Abort ($BASE) !" && exit 1 -mv $BASE/kernel.img fs/boot/slitaz -cp $BASE/config.txt fs/boot/slitaz -cp $BASE/config.txt fs/boot/slitaz-base +echo "entry=SliTaz $VERSION on SD-card" > fs/boot/slitaz/menu.txt +echo "entry=SliTaz base $VERSION in RAM" > fs/boot/slitaz-base/menu.txt +echo "entry=SliTaz desktop $VERSION in RAM" > fs/boot/slitaz-live/menu.txt +cp $BOOT/config.txt fs/boot/slitaz +grep -q ^kernel= fs/boot/slitaz/config.txt || +echo "kernel=kernel.img >> fs/boot/slitaz/config.txt" +sed -i '/^initramfs/d' fs/boot/slitaz/config.txt +cp fs/boot/slitaz/config.txt fs/boot/slitaz-base +cp fs/boot/slitaz/config.txt fs/boot/slitaz-live echo "initramfs rootfs-base.gz" >> fs/boot/slitaz/config.txt -echo "entry=SliTaz $VERSION on SD-card" > fs/boot/slitaz/menu.txt -sed -i 's|kernel.img|../slitaz/&|' fs/boot/slitaz-base/config.txt -cp -a fs/boot/slitaz-base fs/boot/slitaz-live echo "initramfs ../slitaz/rootfs-base.gz" >> fs/boot/slitaz-base/config.txt -echo "entry=SliTaz base $VERSION in RAM" > fs/boot/slitaz-base/menu.txt -echo "initramfs ../slitaz/rootfs-base.gz ../slitaz/rootfs-live.gz" >> fs/boot/slitaz-live/config.txt -echo "entry=SliTaz desktop $VERSION in RAM" > fs/boot/slitaz-live/menu.txt +echo "initramfs ../slitaz/rootfs-base.gz,../slitaz/rootfs-live.gz" >> fs/boot/slitaz-live/config.txt + +if [ -s $BOOT/kernel7.img ]; then + mv $BOOT/kernel*.img fs/boot/slitaz + sed -i 's|kernel.img|../slitaz/&|' fs/boot/slitaz-*/config.txt +else + rm -rf slitaz-rpi-*/boot/kernel.img \ + slitaz-rpi-*/rootfs/lib/modules/* \ + slitaz-rpi-*/rootfs/lib/firmware/* + sed -i 's|kernel.img|../&|' fs/boot/slitaz-*/config.txt +fi # update base package BASE=$(ls -d slitaz-rpi-base-*/rootfs) +[ ! -d "$BASE" ] && echo "Abort ($BASE) !" && exit 1 LIVE=$(ls -d slitaz-rpi-desktop-*/rootfs) [ ! -d "$LIVE" ] && echo "Abort ($LIVE) !" && exit 1 LIVESZ=$(du -ks $LIVE | cut -f1) -[ ! -d "$BASE" ] && echo "Abort ($BASE) !" && exit 1 wget http://hg.slitaz.org/slitaz-arm/raw-file/tip/rpi/piboot wget http://hg.slitaz.org/slitaz-boot-scripts/raw-file/tip/init chmod +x piboot init mv piboot $BASE/sbin sed -i 's|mnt /mnt|mnt "/mnt -o noatime"|' init -mv init $BASE/sbin/pisubroot +sed -i 's#.*remount,ro#grep -q "tmpfs /mnt tmpfs" /proc/mounts || &#' init mknod -m 660 $BASE/dev/mmcblk0 b 179 0 -mknod -m 660 $BASE/dev/mmcblk0p1 b 179 1 -mknod -m 660 $BASE/dev/mmcblk0p2 b 179 2 +for i in $(seq 1 5); do + mknod -m 660 $BASE/dev/mmcblk0p$i b 179 $i +done +grep /dev/pts $BASE/etc/fstab || cat >> $BASE/etc/fstab < /dev/null\numount /mnt\n\n&#' init +mv init $BASE/rdinit sed -i 's/.*mmcblk0p[2-9].*/# &/;s/noatime/noauto,&/' $BASE/etc/fstab $LIVE/etc/fstab wget http://cook.slitaz.org/cross/arm/packages/packages.list while read file pkg extra ; do @@ -117,7 +140,7 @@ /usr/bin/aria2c aria2 aria2 EOT -# deduplicate base & live +echo "Deduplicate base & live" ( cd $BASE/ ; find ! -type d ) | while read file; do if [ -L $BASE/$file ]; then [ -L $LIVE/$file ] && @@ -139,31 +162,45 @@ rm -f $LIVE/$file fi done -cp $EXE $BASE/root/ ( cd $BASE/ ; find -type d ) | while read dir; do rmdir $LIVE/$dir 2> /dev/null done -( cd $BASE ; find * | cpio -o -H newc ) | \ - gzip -9 > fs/boot/slitaz/rootfs-base.gz -( cd $LIVE ; find * | cpio -o -H newc ) | \ - gzip -9 > fs/boot/slitaz/rootfs-live.gz -if [ -x /usr/bin/advdef ]; then - advdef -z4 fs/boot/slitaz/rootfs-base.gz - advdef -z4 fs/boot/slitaz/rootfs-live.gz -fi +while read dir suffix ; do + echo "Build $suffix archive" + ( cd $dir ; find * | cpio -o -H newc ) | if [ -x /usr/bin/zopfli ]; then + cat > fs/boot/slitaz/rootfs-$suffix + zopfli fs/boot/slitaz/rootfs-$suffix + rm -f fs/boot/slitaz/rootfs-$suffix + else + gzip -9 > fs/boot/slitaz/rootfs-$suffix.gz + fi + [ -x /usr/bin/advdef ] && advdef -z4 fs/boot/slitaz/rootfs-$suffix.gz + r=$(($(stat -c %s fs/boot/slitaz/rootfs-$suffix.gz) % 4)) + [ $r -eq 0 ] || dd if=/dev/zero bs=1 count=$((4 - $r)) \ + >> fs/boot/slitaz/rootfs-$suffix.gz 2> /dev/null +done < /dev/null -if ! grep -qs ARMv6-compatible /proc/cpuinfo ; then - -echo "CPU unknown. Can't update /boot. Not RPI model 1?" - -elif [ ! -f /boot/menu.txt ]; then +if [ ! -f /boot/menu.txt ]; then echo "Update /boot ..." for i in keyboard locale ; do @@ -190,7 +223,7 @@ cat > /boot/menu.txt < /boot/$raspos/menu.txt KERNEL=\$(sed '/^kernel/!d;s/.*=//' /boot/config.txt) cp /boot/config.txt /boot/cmdline.txt /boot/$raspos/ +sed -i '/^initramfs/d' /boot/config.txt +echo "initramfs slitaz/rootfs-base.gz" >> /boot/config.txt +EOT + [ -s slitaz-rpi-base*/boot/kernel7.img ] && cat < /boot/$raspos/menu.txt -sed -i '/^kernel/d;/^initramfs/d' /boot/config.txt +sed -i '/^kernel/d' /boot/config.txt echo "kernel=slitaz/kernel.img" >> /boot/config.txt -echo "initramfs slitaz/rootfs-base.gz" >> /boot/config.txt -echo "root=/dev/null rdinit=/sbin/piboot quiet" > /boot/cmdline.txt +EOT + cat < /boot/slitaz/cmdline.txt -echo "root=/dev/null \$L \$KMAP quiet" > /boot/slitaz-base/cmdline.txt +for i in \$LANG \${LANG%.*} \${LANG%@*} \${LANG%_*} ; do + [ -s /$DESTDIR/usr/share/i18n/locales/\$i ] && L=lang=\$i +done +TZ=\$(cat /etc/timezone 2> /dev/null || true) +X="\$L \$KMAP \${TZ:+tz=\$TZ} quiet" +echo "\$(cat /boot/cmdline.txt) \$X rdinit=/sbin/piboot" > /boot/cmdline.txt +echo "root=/dev/null \$X rdinit=/rdinit mount=\$RDEV subroot=$DESTDIR rootwait" > /boot/slitaz/cmdline.txt +echo "root=/dev/null \$X" > /boot/slitaz-base/cmdline.txt cp /boot/slitaz-base/cmdline.txt /boot/slitaz-live/cmdline.txt echo "The SliTaz boot menu is available for the next (re)boot." @@ -233,6 +275,7 @@ echo "Restore $raspos boot files..." rm -f /boot/$raspos/menu.txt mv -f /boot/$raspos/* /boot + rmdir /boot/$raspos fi rm -f /boot/menu.txt /boot/slitaz*/cmdline.txt EOT @@ -244,7 +287,7 @@ echo "2.0" > debian-binary cat > control < md5sums cat > postinst < .PKGINFO <