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."