tazlito rev 512

loram: add 64 bits support
author Pascal Bellard <pascal.bellard@slitaz.org>
date Thu Jun 07 10:44:25 2018 +0200 (2018-06-07)
parents e11610f472bf
children 368b74f9c467
files tazlito
line diff
     1.1 --- a/tazlito	Tue Jun 05 15:34:05 2018 +0200
     1.2 +++ b/tazlito	Thu Jun 07 10:44:25 2018 +0200
     1.3 @@ -1298,29 +1298,37 @@
     1.4  
     1.5  	[ -s /usr/share/boot/busybox-static ] || install_package busybox-static
     1.6  	need_lib=false
     1.7 -	for i in bin dev run mnt proc tmp sys lib/modules; do
     1.8 +	for i in bin dev run mnt proc tmp sys lib/modules/64; do
     1.9  		mkdir -p $TMP_DIR/initfs/$i
    1.10  	done
    1.11  	ln -s bin $TMP_DIR/initfs/sbin
    1.12  	ln -s .   $TMP_DIR/initfs/usr
    1.13  	for aufs in aufs overlayfs; do
    1.14 -		[ -f /lib/modules/$version/kernel/fs/$aufs/$aufs.ko.?z ] && break
    1.15 -		install_package linux-$aufs $version && break
    1.16 +		for v in $version ; do
    1.17 +			[ -f /lib/modules/$v/kernel/fs/$aufs/$aufs.ko.?z ] && continue
    1.18 +			install_package ${v/*taz/linux}-$aufs $v && continue
    1.19 +		done
    1.20  		install_package $aufs $version && break
    1.21  	done || return 1
    1.22  	[ -s /init ] || install_package slitaz-boot-scripts
    1.23  	cp /init $TMP_DIR/initfs/
    1.24 -	cp /lib/modules/$version/kernel/fs/$aufs/$aufs.ko.?z \
    1.25 -		$TMP_DIR/initfs/lib/modules
    1.26 +	for v in $version ; do
    1.27 +		cp /lib/modules/$v/kernel/fs/$aufs/$aufs.ko.?z \
    1.28 +			$TMP_DIR/initfs/lib/modules/${v/*taz/}
    1.29 +	done
    1.30  	if [ "$1" == 'cdrom' ]; then
    1.31  		sed -i '/mod squashfs/d' $TMP_DIR/initfs/init
    1.32  	else
    1.33  		[ ! -f /usr/sbin/mksquashfs ] && ! install_package squashfs && return 1
    1.34 -		while [ ! -f /lib/modules/$version/kernel/fs/squashfs/squashfs.ko.?z ]; do
    1.35 -			install_package linux-squashfs $version || return 1
    1.36 +		for v in $version ; do
    1.37 +			while [ ! -f /lib/modules/$v/kernel/fs/squashfs/squashfs.ko.?z ]; do
    1.38 +				install_package linux-squashfs $v || return 1
    1.39 +			done
    1.40  		done
    1.41 -		cp /lib/modules/$version/kernel/fs/squashfs/squashfs.ko.?z \
    1.42 -			$TMP_DIR/initfs/lib/modules
    1.43 +		for v in $version ; do
    1.44 +			cp /lib/modules/$v/kernel/fs/squashfs/squashfs.ko.?z \
    1.45 +				$TMP_DIR/initfs/lib/modules/${v/*taz/}
    1.46 +		done
    1.47  		#ls /sbin/unsquashfs /usr/lib/liblzma.so* $INSTALLED/squashfs/* | \
    1.48  		#cpio -o -H newc > $TMP_DIR/initfs/extractfs.cpio
    1.49  	fi
    1.50 @@ -1359,20 +1367,22 @@
    1.51  		done 2>&1 > /dev/null
    1.52  		cd - > /dev/null
    1.53  		cp $TMP_DIR/fs/etc/slitaz-release $TMP_DIR/initfs/etc/
    1.54 -		find $TMP_DIR/fs/lib/modules/*/kernel/drivers/net/ethernet \
    1.55 -				-type f -name '*.ko*' | while read mod; do
    1.56 -			f=$TMP_DIR/initfs/lib/modules/$(basename $mod | sed s/..z$//)
    1.57 -			uncompress $mod > $f
    1.58 -			grep -q alias=pci: $f || rm -f $f
    1.59 -		done
    1.60 -		for i in $TMP_DIR/initfs/lib/modules/*.ko ; do
    1.61 -			f=$(basename $i)..z
    1.62 -			grep -q $f:$ $TMP_DIR/fs/lib/modules/*/modules.dep && continue
    1.63 -			deps="$(grep $f: $TMP_DIR/fs/lib/modules/*/modules.dep | sed 's/.*: //')"
    1.64 -			echo "$deps" | sed 's|kernel/[^ ]*/||g;s/.ko..z//g' > $TMP_DIR/initfs/lib/modules/$(basename $i .ko).dep
    1.65 -			for j in $deps; do
    1.66 -				mod=$(ls $TMP_DIR/fs/lib/modules/*/$j)
    1.67 -				uncompress $mod > $TMP_DIR/initfs/lib/modules/$(basename $j | sed s/..z$//)
    1.68 +		for v in $version ; do
    1.69 +			find $TMP_DIR/fs/lib/modules/$v/kernel/drivers/net/ethernet \
    1.70 +					-type f -name '*.ko*' | while read mod; do
    1.71 +				f=$TMP_DIR/initfs/lib/modules/${v/*taz/}/$(basename $mod | sed s/..z$//)
    1.72 +				uncompress $mod > $f
    1.73 +				grep -q alias=pci: $f || rm -f $f
    1.74 +				done
    1.75 +			for i in $TMP_DIR/initfs/lib/modules/${v/*taz/}/*.ko ; do
    1.76 +				f=$(basename $i)..z
    1.77 +				grep -q $f:$ $TMP_DIR/fs/lib/modules/$v/modules.dep && continue
    1.78 +				deps="$(grep $f: $TMP_DIR/fs/lib/modules/$v/modules.dep | sed 's/.*: //')"
    1.79 +				echo "$deps" | sed 's|kernel/[^ ]*/||g;s/.ko..z//g' > ${i/.ko/}.dep
    1.80 +				for j in $deps; do
    1.81 +					mod=$(ls $TMP_DIR/fs/lib/modules/$v/$j)
    1.82 +					uncompress $mod > $(echo $j | sed s/..z$//)
    1.83 +				done
    1.84  			done
    1.85  		done
    1.86  		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.87 @@ -1398,8 +1408,10 @@
    1.88  		ln $TMP_DIR/initfs/bin/busybox $TMP_DIR/initfs/bin/$i
    1.89  	done
    1.90  	# bootfloppybox will need floppy.ko.?z, /dev/fd0, /dev/tty0
    1.91 -	cp /lib/modules/$version/kernel/drivers/block/floppy.ko.?z \
    1.92 -		$TMP_DIR/initfs/lib/modules 2>/dev/null
    1.93 +	for v in $version ; do
    1.94 +		cp /lib/modules/$v/kernel/drivers/block/floppy.ko.?z \
    1.95 +			$TMP_DIR/initfs/lib/modules/${v/*taz/} 2>/dev/null
    1.96 +	done
    1.97  	for i in /dev/console /dev/null /dev/tty /dev/tty0 /dev/zero \
    1.98  		 /dev/kmem /dev/mem /dev/random /dev/urandom; do
    1.99  		cp -a $i $TMP_DIR/initfs/dev
   1.100 @@ -1440,7 +1452,8 @@
   1.101  [ -n "\$size" ] || size="-o size=90%"
   1.102  
   1.103  mount -t sysfs sysfs /sys
   1.104 -for i in /lib/modules/*.ko ; do
   1.105 +for i in /lib/modules/*/*.ko /lib/modules/*.ko ; do
   1.106 +	[ -s \$i ] && continue
   1.107  	echo -en "Probe \$i           \\r"
   1.108  	for j in \$(grep alias=pci: \$i | sed 's/alias//;s/\*/.*/g'); do
   1.109  		grep -q "\$j" /sys/bus/pci/devices/*/uevent || continue
   1.110 @@ -1501,7 +1514,9 @@
   1.111  if [ ! -d /mnt/.cdrom/\$DIR/etc ]; then
   1.112  branch=
   1.113  lp=1
   1.114 -insmod /lib/modules/squashfs.ko 2> /dev/null
   1.115 +for i in /lib/modules/*/squashfs.ko /lib/modules/squashfs.ko ; do
   1.116 +	[ -s \$i ] && insmod \$i
   1.117 +done 2> /dev/null
   1.118  for i in \${path}boot/rootfs?.* ; do
   1.119  	fs=\${i#*root}
   1.120  	branch=\$branch:/mnt/.\$fs
   1.121 @@ -1513,7 +1528,10 @@
   1.122  fi
   1.123  mkdir -p /mnt/.rw/mnt/.httpfs
   1.124  while read type opt; do
   1.125 -	insmod /lib/modules/\$type.ko && mount -t \$type -o \$opt none /mnt && break
   1.126 +	for i in /lib/modules/*/\$type.ko /lib/modules/\$type.ko ; do
   1.127 +		[ -s \$i ] && insmod \$i &&
   1.128 +		mount -t \$type -o \$opt none /mnt && break 2
   1.129 +	done
   1.130  done <<EOT
   1.131  aufs		br=/mnt/.rw\$branch
   1.132  overlayfs	workdir=/mnt/.wd\${branch/:/,lowerdir=},upperdir=/mnt/.rw
   1.133 @@ -1524,7 +1542,8 @@
   1.134  [ -x /mnt/sbin/init ] && exec /bin/switch_root mnt /sbin/init || sh
   1.135  EOTEOT
   1.136  	chmod +x $TMP_DIR/initfs/init
   1.137 -	for i in $TMP_DIR/initfs/lib/modules/*z ; do
   1.138 +	for i in $TMP_DIR/initfs/lib/modules/*z $TMP_DIR/initfs/lib/modules/*/*z ; do
   1.139 +		[ -s $i ] || continue
   1.140  		unxz $i || gunzip $i || lzma d $i ${i%.gz}
   1.141  		rm -f $i
   1.142  	done 2>/dev/null
   1.143 @@ -1541,19 +1560,22 @@
   1.144  
   1.145  build_loram_rootfs() {
   1.146  	rootfs_sizes=""
   1.147 -	for i in $TMP_DIR/iso/boot/rootfs*; do
   1.148 +	for i in $(ls -r $TMP_DIR/iso/boot/rootfs*); do
   1.149  		mkdir -p $TMP_DIR/fs
   1.150  		cd $TMP_DIR/fs
   1.151  		uncompress $i | cpio -idm
   1.152  		deduplicate
   1.153  		cd - > /dev/null
   1.154 -		rootfs=$TMP_DIR/$(basename $i)
   1.155 +		rootfs=$TMP_DIR/$(basename $i 64)
   1.156 +		[ $rootfs == $TMP_DIR/rootfs.gz ] && rootfs=$TMP_DIR/rootfs0.gz
   1.157  		/usr/sbin/mksquashfs $TMP_DIR/fs $rootfs -comp ${1:-xz -Xbcj x86}
   1.158  		cd $TMP_DIR
   1.159  		rootfs_sizes="$rootfs_sizes $(( $(du -s $TMP_DIR/fs | cut -f1) - $(du -s $rootfs | cut -f1) ))"
   1.160  		( cd $(dirname $rootfs); echo $(basename $rootfs) | cpio -o -H newc ) > $rootfs.cpio
   1.161 +		[ $(ls -a fs | wc -l) -le 2 ] && cpio -o -H newc > $rootfs.cpio < /dev/null
   1.162 +		case "$i" in *64) rootfs=${rootfs}64 ;; esac
   1.163  		rm -f $rootfs
   1.164 -		mv $rootfs.cpio $rootfs
   1.165 +		mv ${rootfs%64}.cpio $rootfs
   1.166  		cd - > /dev/null
   1.167  		rm -rf $TMP_DIR/fs
   1.168  	done
   1.169 @@ -1627,6 +1649,8 @@
   1.170  # Reduce sizes with rootfs gains.
   1.171  
   1.172  update_metaiso_sizes() {
   1.173 +	[ -s $TMP_DIR/loramiso/boot/rootfs0.gz ] &&
   1.174 +		sed -i 's|rootfs.gz|&,/boot/rootfs0.gz|' $TMP_DIR/loramiso/boot/isolinux/*.cfg
   1.175  	for cfg in $(grep -El '(append|ifmem) [0-9]' $TMP_DIR/loramiso/boot/isolinux/*.cfg)
   1.176  	do
   1.177  		local append="$(grep -E '(append|ifmem) [0-9]' $cfg)"