tazlito diff 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 | 16df1f602d4d |
children | 6535a8744af2 |
line diff
1.1 --- a/tazlito Tue Aug 07 18:49:08 2012 +0200 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