wok-tiny rev 141

linux: pack setup (again)
author Pascal Bellard <pascal.bellard@slitaz.org>
date Sat Jul 07 11:56:18 2018 +0200 (2018-07-07)
parents d71bd8881bcd
children 3de5e6325aab
files linux/receipt linux/stuff/pack linux/stuff/unpacklz4.S
line diff
     1.1 --- a/linux/receipt	Wed Jul 04 20:33:53 2018 +0200
     1.2 +++ b/linux/receipt	Sat Jul 07 11:56:18 2018 +0200
     1.3 @@ -24,7 +24,8 @@
     1.4  
     1.5  S2bin()
     1.6  {
     1.7 -	cc -o $1.o -Wa,-algms=$1.lst -c $stuff/$1.S
     1.8 +	[ -s $stuff/$1.S ] &&
     1.9 +	cc -o $1.o -Wa,-algms=$1.lst -c $stuff/$1.S &&
    1.10  	objcopy -O binary $1.o $1.bin
    1.11  }
    1.12  
    1.13 @@ -36,25 +37,28 @@
    1.14  	bzcat $SRC/$(basename $PATCH) | patch -p1
    1.15  	patch -p0 < $stuff/linux-2.6.14-unpack.u
    1.16  	patch -p0 < $stuff/jsclipboard.u
    1.17 -	sed -i 's|\([>\.]\)val|\1u.val|;s|\([>\.]\)next|\1u.next|;216s|};|} u;|' lib/inflate.c
    1.18 +	sed -i 's|\([>\.]\)val|\1u.val|;s|\([>\.]\)next|\1u.next|;216s|};|} u;|' \
    1.19 +		lib/inflate.c
    1.20  	sed '/DEBUG/,/* kstrdup/d' < mm/slab.c > mm/kstrdup.c
    1.21  	echo 'obj-y += kstrdup.o' >> mm/Makefile
    1.22  	sed -i 's|3.1024|11*256|' arch/i386/boot/compressed/misc.c
    1.23  	sed -i 's/O_CREAT/&|O_TRUNC/' init/initramfs.c
    1.24  	which advdef 2> /dev/null &&
    1.25 -	sed -i 's|gzip)|&\n	advdef -z4 $@|' usr/Makefile arch/i386/boot/compressed/Makefile
    1.26 +	sed -i 's|gzip)|&\n	advdef -z4 $@|' \
    1.27 +		usr/Makefile arch/i386/boot/compressed/Makefile
    1.28  	which zopfli 2> /dev/null &&
    1.29  	sed -i 's|gzip -f -9 <|time zopfli --i100 -c|' scripts/Makefile.lib
    1.30  
    1.31 -	if [ ! -s $WOK/busybox/source/busybox*/rootfs.cpio ]; then
    1.32 -		tazwok cook busybox
    1.33 -	fi
    1.34 +	[ -s $WOK/busybox/source/busybox*/rootfs.cpio ] || tazwok cook busybox
    1.35  	cp $WOK/busybox/source/busybox*/rootfs.cpio $src
    1.36  	cp $WOK/busybox/source/busybox*/.config $src/config-busybox
    1.37  	mkdir $src/slitaz
    1.38  	cp $stuff/list_modules.sh $src/slitaz
    1.39  	S2bin bootloader
    1.40 +	S2bin helper
    1.41  	S2bin unpacklz4
    1.42 +	cp $stuff/pack .
    1.43 +	./pack --build
    1.44  
    1.45  	sed -i '/config %config:/{NNNps/config %config:/%config:/}' Makefile
    1.46  	sed -i 's/^config %config:/config:/' Makefile
    1.47 @@ -77,7 +81,7 @@
    1.48  	cp -a $src/arch/i386/boot/bzImage $fs/boot/
    1.49  	dd if=$src/bootloader.bin of=$fs/boot/bzImage conv=notrunc
    1.50  	dd if=$src/cmdline.bin bs=1 seek=560 of=$fs/boot/bzImage conv=notrunc
    1.51 -	#( cd $src ; $stuff/pack $fs/boot/bzImage )
    1.52 +	cp -a $src/pack $fs/boot/
    1.53  	cp -a $src/System.map $fs/boot/
    1.54  	cp -a $src/.config $fs/boot/config
    1.55  	cp -a $src/config-busybox $fs/boot
    1.56 @@ -87,31 +91,34 @@
    1.57  # Pre and post install commands for Tazpkg.
    1.58  post_install()
    1.59  {
    1.60 -    echo "Processing post-install commands..."
    1.61 -    chroot "$1/" /boot/depmod -a $VERSION-slitaz
    1.62 -    [ -s $1/boot/cmdline ] && cat $1/boot/cmdline | sed 's/^ *//' | \
    1.63 -	dd of=$1/boot/bzImage conv=notrunc bs=1 seek=768 count=3072
    1.64 -    # GRUB stuff.
    1.65 -    if [ -f "$1/boot/grub/menu.lst" ]; then
    1.66 -    	root_dev=`cat $1/boot/grub/menu.lst | grep root= | sed 's/.*root=\([^ ]*\).*/\1/' | head -n 1`
    1.67 -		grub_dev=`cat $1/boot/grub/menu.lst | grep "root (" | head -n 1`
    1.68 +	echo "Processing post-install commands..."
    1.69 +	chroot "$1/" /boot/depmod -a $VERSION-slitaz
    1.70 +	[ -s $1/boot/cmdline ] && cat $1/boot/cmdline | sed 's/^ *//' | \
    1.71 +	dd of=$1/boot/bzImage conv=notrunc bs=1 seek=768 count=3072 2> /dev/null
    1.72 +	$1/boot/pack $1/boot/bzImage
    1.73 +
    1.74 +	# GRUB stuff.
    1.75 +	if [ -f "$1/boot/grub/menu.lst" ]; then
    1.76 +		root_dev=$(sed '/root=/!d;s/.*root=\([^ ]*\).*/\1/' \
    1.77 +				< $1/boot/grub/menu.lst | head -n 1)
    1.78 +		grub_dev=$(grep "root (" < $1/boot/grub/menu.lst | head -n 1)
    1.79  		# Add new kernel entry in case of upgrade for installed system.
    1.80 -		if ! grep -q $SOURCE-$VERSION-slitaz $1/boot/grub/menu.lst; then
    1.81 -    		cat >> $1/boot/grub/menu.lst << EOT
    1.82 +		grep -q $SOURCE-$VERSION-slitaz $1/boot/grub/menu.lst ||
    1.83 +		[ -s $1/boot/cmdline ] && cmdline=" $(cat $1/boot/cmdline)"
    1.84 +		cat >> $1/boot/grub/menu.lst << EOT
    1.85  
    1.86  title SliTaz GNU/Linux (Kernel $VERSION-slitaz)
    1.87  $grub_dev
    1.88 -kernel /boot/vmlinuz-$VERSION-slitaz root=$root_dev
    1.89 +kernel /boot/vmlinuz-$VERSION-slitaz root=$root_dev$cmdline
    1.90  EOT
    1.91 -		fi
    1.92  		# Display information message.
    1.93 -    	cat <<EOT
    1.94 +		cat <<EOT
    1.95  ----
    1.96  GRUB is installed, these tree lines must be in your /boot/grub/menu.lst:
    1.97  
    1.98  title  SliTaz GNU/Linux (Kernel $VERSION-slitaz)
    1.99  $grub_dev
   1.100 -kernel /boot/vmlinuz-$VERSION-slitaz root=$root_dev
   1.101 +kernel /boot/vmlinuz-$VERSION-slitaz root=$root_dev$cmdline
   1.102  ----
   1.103  EOT
   1.104  	fi
     2.1 --- a/linux/stuff/pack	Wed Jul 04 20:33:53 2018 +0200
     2.2 +++ b/linux/stuff/pack	Sat Jul 07 11:56:18 2018 +0200
     2.3 @@ -1,5 +1,13 @@
     2.4  #!/bin/sh
     2.5  
     2.6 +if [ "$1" == "--build" ]; then	#install-begin
     2.7 +	uuencode -m - < unpacklz4.bin | sed -e '/^unpacklz4\.bin$/r/dev/stdin' \
     2.8 +		-e '/^unpacklz4\.bin$/d' -i $0
     2.9 +	cat helper.bin 2>/dev/null | uuencode -m - | sed -e \
    2.10 +		'/^helper\.bin$/r/dev/stdin' -e '/^helper\.bin$/d' -i $0
    2.11 +	sed '/install-begin$/,/install-end$/d' -i $0
    2.12 +	exit
    2.13 +fi	#install-end
    2.14  ddq()
    2.15  {
    2.16  	dd "$@" 2> /dev/null
    2.17 @@ -23,12 +31,14 @@
    2.18  	echo $(od -j $(($1)) -N ${3:-2} -t u${3:-2} -An "$2")
    2.19  }
    2.20  
    2.21 -if [ ! -s "$1" ]; then
    2.22 -	cat << EOT
    2.23 -Usage: $0 bzImage [bootsector helper] [bootsector]
    2.24 +helper()
    2.25 +{
    2.26 +uudecode << EOT
    2.27 +helper.bin
    2.28  EOT
    2.29 -	exit 1
    2.30 -fi
    2.31 +}
    2.32 +
    2.33 +[ ! -s "$1" ] && echo "Usage: $0 bzImage" && exit 1
    2.34  
    2.35  if which lz4 > /dev/null ; then
    2.36  
    2.37 @@ -37,7 +47,9 @@
    2.38  ddq if=$1 bs=1 count=$param > /tmp/setup$$
    2.39  
    2.40  # unlz4 + data
    2.41 -ddq if=unpacklz4.bin >> /tmp/setup$$
    2.42 +uudecode >> /tmp/setup$$ << EOT
    2.43 +unpacklz4.bin
    2.44 +EOT
    2.45  setupsz=$(get 0x1F1 $1 1)
    2.46  ddq if=$1 bs=1 skip=$param count=$(($setupsz*512-$param+512)) | \
    2.47  	lz4 -l -12 | ddq bs=4 skip=1 >> /tmp/setup$$
    2.48 @@ -45,6 +57,7 @@
    2.49  # version string
    2.50  word $(get 0x20E $1) >> /tmp/setup$$
    2.51  word $setupsz 1 >> /tmp/setup$$
    2.52 +setupend=$(stat -Lc %s "/tmp/setup$$")
    2.53  versionofs=
    2.54  version="$(ddq if=$1 bs=1 skip=$((0x200+$(get 0x20E $1))) | strings | sed q)"
    2.55  if grep --help 2>&1 | grep -q byte-offset; then
    2.56 @@ -56,18 +69,18 @@
    2.57  fi
    2.58  store 0x20E $(($versionofs-512)) /tmp/setup$$
    2.59  
    2.60 -helpersz=0
    2.61 -[ -n "$2" ] && helpersz=$(stat -Lc %s "$2")
    2.62 +helpersz=$(helper | wc -c)
    2.63  newsetupsz=$((($(stat -c %s /tmp/setup$$)+$helpersz-1)/512))
    2.64  [ $newsetupsz -lt 4 ] && newsetupsz=4
    2.65 -store 0x1F1 $newsetupsz /tmp/setup$$ 1
    2.66  
    2.67  if [ $newsetupsz -lt $setupsz ]; then
    2.68 -	ddq of=/tmp/setup$$ bs=512 seek=$(($newsetupsz+1)) count=0
    2.69 -	[ -n "$2" ] && ddq if="$2" bs=1 of=/tmp/setup$$ \
    2.70 +	while [ $(($setupend + $helpersz)) -gt $((512 + 512*$newsetupsz)) ]; do
    2.71 +		newsetupsz=$(($newsetupsz+1))
    2.72 +	done
    2.73 +#	ddq of=/tmp/setup$$ bs=512 seek=$(($newsetupsz+1)) count=0
    2.74 +	store 0x1F1 $newsetupsz /tmp/setup$$ 1
    2.75 +	helper | ddq bs=1 of=/tmp/setup$$ \
    2.76  		seek=$((512 + 512*$newsetupsz - $helpersz))
    2.77 -	[ -n "$3" ] && [ $(stat -Lc %s "$3") -eq 497 ] &&
    2.78 -		ddq if="$3" conv=notrunc of=/tmp/setup$$
    2.79  	ddq if=$1 bs=512 skip=$((1+$setupsz)) >> /tmp/setup$$
    2.80  	cp /tmp/setup$$ $1
    2.81  fi
     3.1 --- a/linux/stuff/unpacklz4.S	Wed Jul 04 20:33:53 2018 +0200
     3.2 +++ b/linux/stuff/unpacklz4.S	Sat Jul 07 11:56:18 2018 +0200
     3.3 @@ -5,6 +5,7 @@
     3.4  
     3.5  #define LZMA		0
     3.6  #define HOLE		0x4000
     3.7 +#define DS_OFS		0x0200
     3.8  
     3.9  start:
    3.10  	cld
    3.11 @@ -17,12 +18,12 @@
    3.12  	rep movsb %ds:(%si), %es:(%di)	// move setup
    3.13  	pushw	%cs			// CS
    3.14  	pushw	%cx			// IP = 0
    3.15 +	//pushaw
    3.16  	call	packed_moved
    3.17  next:
    3.18  	popw	%bx
    3.19 -	//leaw	packed-next(%bx,%si), %si
    3.20 -	.byte	0x8D,0x70,packed-next
    3.21 -	leaw	start-next(%bx), %di
    3.22 +	leaw	DS_OFS+start-next(%bx), %di
    3.23 +	leaw	DS_OFS+packed-next(%bx,%si), %si
    3.24  #if LZMA
    3.25  	call	unlzma
    3.26  #else
    3.27 @@ -101,13 +102,11 @@
    3.28  	jb	lz4string
    3.29  #endif
    3.30  done:
    3.31 -	movw	$0x000E, %di
    3.32 +	movw	$0x020E, %di
    3.33  	movsw				// version string
    3.34 -	//movw	%ds, %ax
    3.35 -	//decw	%ax
    3.36 -	//movw	%ax, %es
    3.37 -	//movw	$0x0001, %di
    3.38 -	//movsb				// setup size
    3.39 +	movw	$0x01F1, %di
    3.40 +	movsb				// setup size
    3.41 +	//popaw
    3.42  	retf
    3.43  
    3.44  #if LZMA