tazlito rev 426
Update loram http
author | Pascal Bellard <pascal.bellard@slitaz.org> |
---|---|
date | Tue Jun 28 11:24:00 2016 +0200 (2016-06-28) |
parents | 64aae5899df1 |
children | 486e3e2333a7 |
files | tazlito |
line diff
1.1 --- a/tazlito Sun Jun 19 14:17:14 2016 +0200 1.2 +++ b/tazlito Tue Jun 28 11:24:00 2016 +0200 1.3 @@ -280,11 +280,11 @@ 1.4 1.5 _ 'Generating %s' "$1" 1.6 make_bzImage_hardlink $2/boot 1.7 - genisoimage -R -o $1 -b boot/isolinux/isolinux.bin \ 1.8 + genisoimage -R -o $1 -hide-rr-moved -b boot/isolinux/isolinux.bin \ 1.9 -c boot/isolinux/boot.cat -no-emul-boot -boot-load-size 4 \ 1.10 -V "$VOLUM_NAME" -p "$PREPARED" -input-charset utf-8 \ 1.11 + -A "tazlito $VERSION/$(genisoimage --version)" \ 1.12 -copyright README -P "www.slitaz.org" -boot-info-table $2 1.13 - 1.14 if [ -x '/usr/bin/isohybrid' ]; then 1.15 action 'Creating hybrid ISO...' 1.16 /usr/bin/isohybrid $1 -entry 2 2>/dev/null 1.17 @@ -823,6 +823,13 @@ 1.18 } 1.19 1.20 1.21 +# Uncompress rootfs or module to stdout 1.22 + 1.23 +uncompress() { 1.24 + zcat $1 2> /dev/null || xzcat $1 2> /dev/null || unlzma < $1 || cat $i 1.25 +} 1.26 + 1.27 + 1.28 # Install a missing package 1.29 1.30 install_package() { 1.31 @@ -854,8 +861,9 @@ 1.32 # Build initial rootfs for loram ISO ram/cdrom/http 1.33 1.34 build_initfs() { 1.35 - urliso="mirror.slitaz.org mirror.switch.ch/ftp/mirror/slitaz \ 1.36 -download.tuxfamily.org/slitaz slitaz.c3sl.ufpr.br" 1.37 + urliso="mirror.switch.ch/ftp/mirror/slitaz \ 1.38 +download.tuxfamily.org/slitaz mirror1.slitaz.org mirror2.slitaz.org \ 1.39 +mirror3.slitaz.org mirror.slitaz.org" 1.40 version=$(ls $TMP_DIR/iso/boot/vmlinuz-* | sed 's/.*vmlinuz-//') 1.41 [ -z "$version" ] && die "Can't find the kernel version." \ 1.42 'No file /boot/vmlinuz-<version> in ISO image. Abort.' 1.43 @@ -894,15 +902,14 @@ 1.44 cp -a $i $TMP_DIR/initfs/dev 1.45 done 1.46 if [ "$1" == 'http' ]; then 1.47 - mkdir $TMP_DIR/initfs/etc 1.48 + mkdir $TMP_DIR/initfs/etc $TMP_DIR/fs 1.49 ln -s /proc/mounts $TMP_DIR/initfs/etc/mtab 1.50 cp /usr/share/udhcpc/default.script $TMP_DIR/initfs/lib/udhcpc 1.51 - sed -i 's|/sbin/||' $TMP_DIR/initfs/lib/udhcpc 1.52 + sed -i 's|/sbin/||;s/^logger/#&/' $TMP_DIR/initfs/lib/udhcpc 1.53 cp -a /dev/fuse $TMP_DIR/initfs/dev 1.54 if ! $need_lib && [ -x /usr/share/boot/fusermount-static ]; then 1.55 - cp /usr/share/boot/fusermount-static $TMP_DIR/initfs/bin/httpfs 1.56 + cp /usr/share/boot/fusermount-static $TMP_DIR/initfs/bin/fusermount 1.57 else 1.58 - cp /usr/bin/fusermount $TMP_DIR/initfs/bin 1.59 need_lib=true 1.60 fi 1.61 if ! $need_lib && [ -x /usr/share/boot/httpfs-static ]; then 1.62 @@ -910,6 +917,7 @@ 1.63 else 1.64 [ ! -f /usr/bin/httpfs ] && ! install_package httpfs-fuse && return 1 1.65 cp /usr/bin/httpfs $TMP_DIR/initfs/bin 1.66 + cp /usr/bin/fusermount $TMP_DIR/initfs/bin 1.67 cp -a /lib/librt* $TMP_DIR/initfs/lib 1.68 cp -a /lib/libdl* $TMP_DIR/initfs/lib 1.69 cp -a /lib/libpthread* $TMP_DIR/initfs/lib 1.70 @@ -918,12 +926,29 @@ 1.71 cp -a /lib/libnss_dns* $TMP_DIR/initfs/lib 1.72 need_lib=true 1.73 fi 1.74 - cd $TMP_DIR/initfs 1.75 - echo 'Getting slitaz-release...' 1.76 - for i in $TMP_DIR/iso/boot/rootfs*.gz; do 1.77 - (zcat $i 2>/dev/null || unlzma < $i) | cpio -idmu etc/slitaz-release >/dev/null 1.78 + cd $TMP_DIR/fs 1.79 + echo 'Getting slitaz-release & ethernet modules...' 1.80 + for i in $(ls -r $TMP_DIR/iso/boot/rootfs*z); do 1.81 + uncompress $i | cpio -idmu etc/slitaz-release lib/modules* >/dev/null 1.82 done 1.83 cd - > /dev/null 1.84 + cp $TMP_DIR/fs/etc/slitaz-release $TMP_DIR/initfs/etc/ 1.85 + find $TMP_DIR/fs/lib/modules/*/kernel/drivers/net/ethernet \ 1.86 + -type f -name '*.ko*' | while read mod; do 1.87 + f=$TMP_DIR/initfs/lib/modules/$(basename $mod | sed s/..z$//) 1.88 + uncompress $mod > $f 1.89 + grep -q alias=pci: $f || rm -f $f 1.90 + done 1.91 + for i in $TMP_DIR/initfs/lib/modules/*.ko ; do 1.92 + f=$(basename $i)..z 1.93 + grep -q $f:$ $TMP_DIR/fs/lib/modules/*/modules.dep && continue 1.94 + deps="$(grep $f: $TMP_DIR/fs/lib/modules/*/modules.dep | sed 's/.*: //')" 1.95 + echo "$deps" | sed 's|kernel/[^ ]*/||g;s/.ko..z//g' > $TMP_DIR/initfs/lib/modules/$(basename $i .ko).dep 1.96 + for j in $deps; do 1.97 + mod=$(ls $TMP_DIR/fs/lib/modules/*/$j) 1.98 + uncompress $mod > $TMP_DIR/initfs/lib/modules/$(basename $j | sed s/..z$//) 1.99 + done 1.100 + done 1.101 longline "Default URLs for /iso/$(cat $TMP_DIR/initfs/etc/slitaz-release)/flavors/slitaz-loram-cdrom.iso /iso/$(cat $TMP_DIR/initfs/etc/slitaz-release)/flavors/slitaz-$(cat $TMP_DIR/initfs/etc/slitaz-release)-loram-cdrom.iso: $urliso" 1.102 _n 'List of URLs to insert: ' 1.103 read -t 30 urliso2 1.104 @@ -975,6 +1000,18 @@ 1.105 sed 's/.*rootfssize=\\([0-9]*[kmg%]\\).*/-o size=\\1/')" 1.106 [ -n "\$size" ] || size="-o size=90%" 1.107 1.108 +mount -t sysfs sysfs /sys 1.109 +for i in /lib/modules/*.ko ; do 1.110 + for j in \$(grep alias=pci: \$i | sed 's/alias//;s/\*/.*/g'); do 1.111 + grep -q "\$j" /sys/bus/pci/devices/*/uevent || continue 1.112 + for k in \$(cat \${i/ko/dep} 2> /dev/null); do 1.113 + insmod /lib/modules/\$k.ko 2> /dev/null 1.114 + done 1.115 + insmod \$i 2> /dev/null 1.116 + break 1.117 + done 1.118 +done 1.119 +umount /sys 1.120 while read var default; do 1.121 eval \$var=\$default 1.122 getarg \$var \$var 1.123 @@ -1024,18 +1061,19 @@ 1.124 fs=\${i#*root} 1.125 branch=\$branch:/mnt/.\$fs 1.126 mkdir -p /mnt/.rw/mnt/.\$fs /mnt/.\$fs /mnt/.rw/mnt/.cdrom 1.127 - insmod /lib/squashfs.ko.gz 2> /dev/null 1.128 + insmod /lib/modules/squashfs.ko 2> /dev/null 1.129 mount -o loop,ro -t squashfs \${path}root\$fs /mnt/.\$fs 1.130 done 1.131 else 1.132 mkdir -p /mnt/.rw/mnt/.httpfs 1.133 fi 1.134 while read type opt; do 1.135 - insmod /lib/\$type.ko.gz && mount -t \$type -o \$opt none /mnt && break 1.136 + insmod /lib/modules/\$type.ko && mount -t \$type -o \$opt none /mnt && break 1.137 done <<EOT 1.138 aufs br=/mnt/.rw\$branch 1.139 overlayfs workdir=/mnt/.wd\${branch/:/,lowerdir=},upperdir=/mnt/.rw 1.140 EOT 1.141 +rm -rf /lib/modules 1.142 [ -x /bin/httpfs ] && sed -i 's/DHCP="yes"/DHCP="no"/' /mnt/etc/network.conf 1.143 [ \$memfree -lt 30000 ] && sed -i 's/ slim//' /mnt/etc/rcS.conf 1.144 [ -x /mnt/sbin/init ] && exec /bin/switch_root mnt /sbin/init || sh 1.145 @@ -1059,10 +1097,10 @@ 1.146 1.147 build_loram_rootfs() { 1.148 rootfs_sizes="" 1.149 - for i in $TMP_DIR/iso/boot/rootfs*.gz; do 1.150 + for i in $TMP_DIR/iso/boot/rootfs*; do 1.151 mkdir -p $TMP_DIR/fs 1.152 cd $TMP_DIR/fs 1.153 - (zcat $i 2>/dev/null || unlzma < $i) | cpio -idm 1.154 + uncompress $i | cpio -idm 1.155 cd - > /dev/null 1.156 rootfs=$TMP_DIR/$(basename $i) 1.157 /usr/sbin/mksquashfs $TMP_DIR/fs $rootfs -comp xz -Xbcj x86 1.158 @@ -1109,7 +1147,7 @@ 1.159 mkdir $TMP_DIR/loramiso/fs 1.160 cd $TMP_DIR/loramiso/fs 1.161 for i in $( ls ../boot/root* | sort -r ) ; do 1.162 - (zcat $i 2>/dev/null || unlzma < $i) | cpio -idmu 1.163 + uncompress $i | cpio -idmu 1.164 rm -f $i 1.165 done 1.166 mkdir -p $TMP_DIR/loramiso/fs/mnt/.cdrom 1.167 @@ -1119,6 +1157,8 @@ 1.168 VOLUM_NAME="SliTaz_LoRAM_CDROM" 1.169 sed -i "s|root=|isofs= rodev=/dev/cdrom/fs &|;s/.ive/cdrom/" \ 1.170 $TMP_DIR/loramiso/boot/isolinux/*.cfg 1.171 + sed -i '/LABEL slitaz/{NNNNp;s|z cdrom|& text|;s|L slitaz|&text|;s|root=|screen=text &|;s|,[^ ]*||}' \ 1.172 + $TMP_DIR/loramiso/boot/isolinux/*.cfg 1.173 create_iso $OUTPUT $TMP_DIR/loramiso 1.174 } 1.175 1.176 @@ -2057,8 +2097,8 @@ 1.177 _ 'No %s in ISO image. Needs a SliTaz ISO.' '/boot/rootfs.gz' 1.178 umount -d $TMP_DIR/iso 1.179 else 1.180 - for i in $(ls -r $TMP_DIR/iso/boot/rootfs*gz); do 1.181 - ( zcat < $i || unlzma < $i ) | \ 1.182 + for i in $(ls -r $TMP_DIR/iso/boot/rootfs*z); do 1.183 + uncompress $i | \ 1.184 ( cd $TMP_DIR/rootfs ; cpio -idmu > /dev/null 2>&1 ) 1.185 done 1.186 if [ ! -s $TMP_DIR/rootfs/etc/slitaz-release ]; then 1.187 @@ -2577,8 +2617,9 @@ 1.188 _ 'Generating ISO image...' 1.189 genisoimage -R -o $ISO_NAME.iso -b boot/isolinux/isolinux.bin \ 1.190 -c boot/isolinux/boot.cat -no-emul-boot -boot-load-size 4 \ 1.191 - -V "SliTaz" -p "$(id -un)" -input-charset utf-8 \ 1.192 - -A "tazlito/genisoimage" -P "$(hostname)" -boot-info-table $ROOTCD 1.193 + -V "SliTaz" -p "$(id -un)" -input-charset utf-8 -hide-rr-moved \ 1.194 + -A "tazlito $VERSION/$(genisoimage --version)" -P "$(hostname)" \ 1.195 + -boot-info-table $ROOTCD 1.196 if [ -x /usr/bin/isohybrid ]; then 1.197 action 'Creating hybrid ISO/disk...' 1.198 /usr/bin/isohybrid $ISO_NAME.iso -entry 2 2>/dev/null 1.199 @@ -2749,7 +2790,7 @@ 1.200 1.201 for i in $TMP_DIR/iso/boot/rootfs* ; do 1.202 action 'Repacking %s' "$(basename $i)" 1.203 - (zcat $i 2>/dev/null || unlzma < $i || cat $i) 2>/dev/null > $TMP_DIR/rootfs 1.204 + uncompress $i 2>/dev/null > $TMP_DIR/rootfs 1.205 lzma e $TMP_DIR/rootfs $i $(lzma_switches $TMP_DIR/rootfs) 1.206 align_to_32bits $i 1.207 status 1.208 @@ -2769,7 +2810,7 @@ 1.209 die "Usage: tazlito build-loram <input>.iso <output>.iso [cdrom|smallcdrom|http|ram]" 1.210 mkdir -p "$TMP_DIR/iso" 1.211 mount -o loop,ro -t iso9660 "$ISO" "$TMP_DIR/iso" 1.212 - loopdev=$( (losetup -a 2>/dev/null || losetup) | sed "/$ISO$/!d;s/:.*//;q") 1.213 + loopdev=$( (losetup -a 2>/dev/null || losetup) | sed "/$(echo $ISO | sed 's|/|\\/|g')$/!d;s/:.*//;q") 1.214 if ! check_iso_for_loram ; then 1.215 umount -d "$TMP_DIR/iso" 1.216 die "$ISO is not a valid SliTaz live CD. Abort."