tazlito rev 289

tazlito: align rootfs to 32bits boundary
author Pascal Bellard <pascal.bellard@slitaz.org>
date Mon Sep 03 10:10:22 2012 +0200 (2012-09-03)
parents 6a319bec916a
children 6535a8744af2
files tazlito
line diff
     1.1 --- a/tazlito	Sun Sep 02 13:49:05 2012 -0300
     1.2 +++ b/tazlito	Mon Sep 03 10:10:22 2012 +0200
     1.3 @@ -323,6 +323,14 @@
     1.4  	done | xargs echo -en | dd of=$1 conv=notrunc bs=1 seek=5 2> /dev/null
     1.5  }
     1.6  
     1.7 +align_to_32bits()
     1.8 +{
     1.9 +	local size
    1.10 +	size=$(stat -c %s $1)
    1.11 +	[ $(($size & 3)) -ne 0 ] &&
    1.12 +	dd if=/dev/zero bs=1 count=$((4 - ($size & 3))) >> $1 2> /dev/null
    1.13 +}
    1.14 +
    1.15  # Pack rootfs
    1.16  pack_rootfs()
    1.17  {
    1.18 @@ -338,6 +346,7 @@
    1.19  		echo "Generating gziped initramfs... "
    1.20  		gzip -9 > $2
    1.21  	fi
    1.22 +	align_to_32bits $2
    1.23  	echo 1 > /tmp/rootfs
    1.24  }
    1.25  
    1.26 @@ -355,6 +364,7 @@
    1.27  		echo "Creating rootfs.gz without compression... "
    1.28  		cat /tmp/list | cpio -o -H newc > /rootfs.gz
    1.29  	fi
    1.30 +	align_to_32bits $2
    1.31  	echo 1 > /tmp/rootfs
    1.32  }
    1.33  
    1.34 @@ -750,32 +760,27 @@
    1.35  	fi
    1.36  	[ -s /usr/share/boot/busybox-static ] || install_package busybox-static
    1.37  	need_lib=false
    1.38 -	mkdir -p $TMP_DIR/initfs/bin $TMP_DIR/initfs/dev $TMP_DIR/initfs/lib \
    1.39 +	mkdir -p $TMP_DIR/initfs/bin $TMP_DIR/initfs/dev $TMP_DIR/initfs/run \
    1.40  		 $TMP_DIR/initfs/mnt $TMP_DIR/initfs/proc $TMP_DIR/initfs/tmp \
    1.41 -		 $TMP_DIR/initfs/sys
    1.42 -	while [ ! -f /lib/modules/$version/kernel/fs/aufs/aufs.ko.gz ]; do
    1.43 +		 $TMP_DIR/initfs/sys $TMP_DIR/initfs/lib/modules
    1.44 +	while [ ! -f /lib/modules/$version/kernel/fs/aufs/aufs.ko.?z ]; do
    1.45  		install_package aufs $version || return 1
    1.46  	done
    1.47 -	# bootfloppybox will need floppy.ko.gz, /dev/fd0, /dev/tty0
    1.48 -	cp /lib/modules/$version/kernel/drivers/block/floppy.ko.gz \
    1.49 -		$TMP_DIR/initfs/lib 2> /dev/null
    1.50 +	cp /init $TMP_DIR/initfs/
    1.51 +	# bootfloppybox will need floppy.ko.?z, /dev/fd0, /dev/tty0
    1.52 +	cp /lib/modules/$version/kernel/drivers/block/floppy.ko.?z \
    1.53 +		$TMP_DIR/initfs/lib/modules 2> /dev/null
    1.54  	cp -a /dev/tty0 /dev/fd0 $TMP_DIR/initfs/dev 2> /dev/null
    1.55 -	cp /lib/modules/$version/kernel/fs/aufs/aufs.ko.gz \
    1.56 -		$TMP_DIR/initfs/lib
    1.57 -	if [ -f /bin/cromfs-driver ]; then
    1.58 -		cp /bin/cromfs-driver $TMP_DIR/initfs/bin
    1.59 -		ls /bin/unmkcromfs | \
    1.60 -			cpio -o -H newc > $TMP_DIR/initfs/extractfs.cpio
    1.61 -	else
    1.62 -		[ ! -f /usr/sbin/mksquashfs ] && ! install_package squashfs && return 1
    1.63 -		while [ ! -f /lib/modules/$version/kernel/fs/squashfs/squashfs.ko.gz ]; do
    1.64 -			install_package linux-squashfs $version || return 1
    1.65 -		done
    1.66 -		cp /lib/modules/$version/kernel/fs/squashfs/squashfs.ko.gz \
    1.67 -			 $TMP_DIR/initfs/lib
    1.68 -		ls /sbin/unsquashfs /usr/lib/liblzma.so* $INSTALLED/squashfs/* | \
    1.69 -			cpio -o -H newc > $TMP_DIR/initfs/extractfs.cpio
    1.70 -	fi
    1.71 +	cp /lib/modules/$version/kernel/fs/aufs/aufs.ko.?z \
    1.72 +		$TMP_DIR/initfs/lib/modules
    1.73 +	[ ! -f /usr/sbin/mksquashfs ] && ! install_package squashfs && return 1
    1.74 +	while [ ! -f /lib/modules/$version/kernel/fs/squashfs/squashfs.ko.?z ]; do
    1.75 +		install_package linux-squashfs $version || return 1
    1.76 +	done
    1.77 +	cp /lib/modules/$version/kernel/fs/squashfs/squashfs.ko.?z \
    1.78 +		 $TMP_DIR/initfs/lib/modules
    1.79 +	ls /sbin/unsquashfs /usr/lib/liblzma.so* $INSTALLED/squashfs/* | \
    1.80 +		cpio -o -H newc > $TMP_DIR/initfs/extractfs.cpio
    1.81  	if [ "$1" == "cdrom" ]; then
    1.82  		for i in $(ls /dev/[hs]d[a-f]*); do
    1.83  			cp -a $i $TMP_DIR/initfs/dev
    1.84 @@ -820,6 +825,7 @@
    1.85  	fi
    1.86  	if ! $need_lib && [ -x /usr/share/boot/busybox-static ]; then
    1.87  		cp /usr/share/boot/busybox-static $TMP_DIR/initfs/bin/busybox
    1.88 +		sed -i 's/LD_T.*ot/echo ""/;s/".*ld-.) /"/' $TMP_DIR/initfs/init
    1.89  	else
    1.90  		cp /bin/busybox $TMP_DIR/initfs/bin
    1.91  		need_lib=true
    1.92 @@ -835,7 +841,7 @@
    1.93  	$need_lib && for i in /lib/ld-* /lib/lib[cm].so* /lib/lib[cm]-* ; do
    1.94  		cp -a $i $TMP_DIR/initfs/lib
    1.95  	done
    1.96 -	cat > $TMP_DIR/initfs/init <<EOTEOT
    1.97 +	false && cat > $TMP_DIR/initfs/init <<EOTEOT
    1.98  #!/bin/sh
    1.99  
   1.100  getarg()
   1.101 @@ -963,12 +969,8 @@
   1.102  	fs=\${i#*root}
   1.103  	branch=\$branch:/mnt/.\$fs
   1.104  	mkdir -p /mnt/.rw/mnt/.\$fs /mnt/.\$fs /mnt/.rw/mnt/.cdrom
   1.105 -	if [ -f /bin/cromfs-driver ]; then
   1.106 -		cromfs-driver \${path}root\$fs /mnt/.\$fs -o ro,dev,suid,allow_other
   1.107 -	else
   1.108 -		insmod /lib/squashfs.ko.gz 2> /dev/null
   1.109 -		mount -o loop,ro -t squashfs \${path}root\$fs /mnt/.\$fs
   1.110 -	fi
   1.111 +	insmod /lib/squashfs.ko.gz 2> /dev/null
   1.112 +	mount -o loop,ro -t squashfs \${path}root\$fs /mnt/.\$fs
   1.113  done
   1.114  else
   1.115  mkdir -p /mnt/.rw/mnt/.httpfs
   1.116 @@ -984,13 +986,11 @@
   1.117  	lzma e $TMP_DIR/initfs.gz -si
   1.118  	lzma_set_size $TMP_DIR/initfs.gz
   1.119  	rm -rf $TMP_DIR/initfs
   1.120 -	rem=$(( $(stat -c "%s" $TMP_DIR/initfs.gz) % 4 ))
   1.121 -	[ $rem -ne 0 ] &&
   1.122 -	dd if=/dev/zero bs=1 count=$(( 4 - $rem )) >> $TMP_DIR/initfs.gz 2> /dev/null
   1.123 +	align_to_32bits $TMP_DIR/initfs.gz
   1.124  	return 0
   1.125  }
   1.126  
   1.127 -# Move each initramfs to squashfs (or cromfs)
   1.128 +# Move each initramfs to squashfs
   1.129  build_loram_rootfs()
   1.130  {
   1.131  	rootfs_sizes=""
   1.132 @@ -1000,11 +1000,7 @@
   1.133  		( zcat $i 2> /dev/null || unlzma -c $i) | cpio -idm
   1.134  		cd - > /dev/null
   1.135  		rootfs=$TMP_DIR/$(basename $i)
   1.136 -		if [ -x /usr/bin/mkcromfs ]; then
   1.137 -			/usr/bin/mkcromfs -qq -f 262144 -b 16384 $TMP_DIR/fs $rootfs
   1.138 -		else
   1.139 -			/usr/sbin/mksquashfs $TMP_DIR/fs $rootfs -comp xz -Xbcj x86
   1.140 -		fi
   1.141 +		/usr/sbin/mksquashfs $TMP_DIR/fs $rootfs -comp xz -Xbcj x86
   1.142  		cd $TMP_DIR
   1.143  		rootfs_sizes="$rootfs_sizes $(( $(du -s $TMP_DIR/fs | cut -f1) - $(du -s $rootfs | cut -f1) ))"
   1.144  		( cd $(dirname $rootfs); echo $(basename $rootfs) | \
   1.145 @@ -1016,7 +1012,7 @@
   1.146  	done
   1.147  }
   1.148  
   1.149 -# Move each initramfs to squashfs (or cromfs)
   1.150 +# Move each initramfs to squashfs
   1.151  build_loram_rootfs_cdrom()
   1.152  {
   1.153  	mkdir -p $TMP_DIR/fs
   1.154 @@ -1025,11 +1021,7 @@
   1.155  		( zcat $i 2> /dev/null || unlzma -c $i) | cpio -idmu
   1.156  	done
   1.157  	rootfs=$TMP_DIR/rootfs.gz
   1.158 -	if [ -x /usr/bin/mkcromfs ]; then
   1.159 -		/usr/bin/mkcromfs -qq -f 262144 -b 16384 $TMP_DIR/fs $rootfs
   1.160 -	else
   1.161 -		/usr/sbin/mksquashfs $TMP_DIR/fs $rootfs -comp xz -Xbcj x86
   1.162 -	fi
   1.163 +	/usr/sbin/mksquashfs $TMP_DIR/fs $rootfs -comp xz -Xbcj x86
   1.164  	rm -rf $TMP_DIR/fs
   1.165  	cd - > /dev/null
   1.166  }
   1.167 @@ -1137,9 +1129,7 @@
   1.168  	cp -a $TMP_DIR/iso $TMP_DIR/loramiso
   1.169  	rm -f $TMP_DIR/loramiso/boot/bzImage
   1.170  	ln $TMP_DIR/loramiso/boot/vmlinuz* $TMP_DIR/loramiso/boot/bzImage
   1.171 -	rootfs=$(ls $TMP_DIR/rootfs* | sort | tail -n 1)
   1.172 -	cat $rootfs >> $TMP_DIR/initfs.gz
   1.173 -	mv $TMP_DIR/initfs.gz $rootfs
   1.174 +	mv $TMP_DIR/initfs.gz $TMP_DIR/loramiso/boot/rootfs.gz
   1.175  	cp $TMP_DIR/rootfs* $TMP_DIR/loramiso/boot
   1.176  	update_metaiso_sizes
   1.177  	create_iso $OUTPUT $TMP_DIR/loramiso
   1.178 @@ -2508,6 +2498,7 @@
   1.179  				2>/dev/null > $TMP_DIR/rootfs
   1.180  			lzma e $TMP_DIR/rootfs $i \
   1.181  				 $(lzma_switches $TMP_DIR/rootfs)
   1.182 +			align_to_32bits $i
   1.183  			status
   1.184  		done
   1.185