# HG changeset patch # User Pascal Bellard # Date 1320265320 -3600 # Node ID cfdc7a3582512fe94d019e0b43264183803114f3 # Parent 83a43fa203298eebd1e03f6043ce82286a91f681 apache: do not override certificate diff -r 83a43fa20329 -r cfdc7a358251 apache/receipt --- a/apache/receipt Wed Nov 02 15:44:21 2011 +0000 +++ b/apache/receipt Wed Nov 02 21:22:00 2011 +0100 @@ -69,6 +69,7 @@ chown www.www $1/var/log/$PACKAGE ping -c 2 $(hostname) > /dev/null 2>&1 || sed -i "s/localhost/$(hostname) localhost/" /etc/hosts + [ -s $1/etc/ssl/apache/apache.pem ] || openssl req -new -x509 -keyout $1/etc/ssl/apache/apache.pem \ -out $1/etc/ssl/apache/apache.pem -days 3650 -nodes < /dev/null +} -# write a 16 bits data -# usage: store16 offset data16 file -store16() +dbg() { - n=$2; i=2; while [ $i -ne 0 ]; do - printf '\\\\x%02X' $(($n & 255)) - i=$(($i-1)); n=$(($n >> 8)) - done | xargs echo -en | \ - dd bs=2 conv=notrunc of=$3 seek=$(( $1 / 2 )) 2> /dev/null - [ -n "$DEBUG" ] && printf "store16(%04X) = %04X\n" $1 $2 1>&2 + [ -n "$DEBUG" ] && echo "$@" 1>&2 } # write a 32 bits data -# usage: storelong offset data32 file -storelong() +# usage: put offset data32 file [bytes] +put() { - n=$2; i=4; while [ $i -ne 0 ]; do + n=$2; for i in $(seq 1 ${4:-4}); do printf '\\\\x%02X' $(($n & 255)) - i=$(($i-1)); n=$(($n >> 8)) - done | xargs echo -en | \ - dd bs=4 conv=notrunc of=$3 seek=$(( $1 / 4 )) 2> /dev/null - [ -n "$DEBUG" ] && printf "storelong(%04X) = %08X\n" $1 $2 1>&2 + n=$(($n >> 8)) + done | xargs echo -en | ddq bs=1 conv=notrunc of=$3 seek=$1 + [ -n "$DEBUG" ] && printf "put$4(%04X) = %X\n" $1 $2 1>&2 } # read a 32 bits data -# usage: getlong offset file -getlong() +# usage: get offset file [bytes] +get() { - dd if=$2 bs=1 skip=$(( $1 )) count=4 2> /dev/null | \ - hexdump -e '"" 1/4 "%d" "\n"' + ddq if=$2 bs=1 skip=$(($1)) count=${3:-4} | hexdump -e '"" 1/4 "%d"' } +SetupSzOfs=0x1F1 +SyssizeOfs=0x1F4 +RamfsLenOfs=0x21C +ArgPtrOfs=0x228 + floppyset() { # bzImage offsets - CylinderCount=496 - SetupSzOfs=497 - FlagsOfs=498 - SyssizeOfs=500 - VideoModeOfs=506 - RootDevOfs=508 + CylinderCount=0x1F0 + FlagsOfs=0x1F2 + VideoModeOfs=0x1FA + RootDevOfs=0x1FC CodeAdrOfs=0x214 RamfsAdrOfs=0x218 - RamfsLenOfs=0x21C - ArgPtrOfs=0x228 # boot+setup address SetupBase=0x90000 @@ -109,8 +79,8 @@ # Get and patch boot sector # See http://hg.slitaz.org/wok/raw-file/711d076b277c/linux/stuff/linux-header-2.6.34.u - dd if=$KERNEL bs=512 count=1 of=$bs 2> /dev/null - uudecode < /dev/null + ddq if=$KERNEL bs=512 count=1 of=$bs + uudecode < /dev/null >> $bs + setupsz=$(get $SetupSzOfs $bs 1) + ddq if=$KERNEL bs=512 skip=1 count=$setupsz >> $bs if [ -n "$TRACKS" ]; then - [ -n "$DEBUG" ] && echo -n "--tracks " 1>&2 - n=$(getlong $CylinderCount $bs) - store16 $CylinderCount $(( ($n & -256) + $TRACKS )) $bs + dbg -n "--tracks " + put $CylinderCount $TRACKS $bs 1 fi if [ -n "$FLAGS" ]; then - [ -n "$DEBUG" ] && echo -n "--flags " 1>&2 - store16 $FlagsOfs $FLAGS $bs + dbg -n "--flags " + put $FlagsOfs $FLAGS $bs 2 fi if [ -n "$VIDEO" ]; then - [ -n "$DEBUG" ] && echo -n "--video " 1>&2 - store16 $VideoModeOfs $VIDEO $bs + dbg -n "--video " + put $VideoModeOfs $VIDEO $bs 2 fi if [ -n "$RDEV" ]; then - [ -n "$DEBUG" ] && echo -n "--rdev " 1>&2 + dbg -n "--rdev " n=$(stat -c '0x%02t%02T' $RDEV 2> /dev/null) [ -n "$n" ] || n=$RDEV - store16 $RootDevOfs $n $bs + put $RootDevOfs $n $bs 2 fi # Store cmdline after setup if [ -n "$CMDLINE" ]; then - [ -n "$DEBUG" ] && echo -n "--cmdline '$CMDLINE' " 1>&2 - echo -n "$CMDLINE" | dd bs=512 count=1 conv=sync 2> /dev/null >> $bs - storelong $ArgPtrOfs $(( $SetupBase + $stacktop )) $bs + dbg -n "--cmdline '$CMDLINE' " + echo -n "$CMDLINE" | ddq bs=512 count=1 conv=sync >> $bs + put $ArgPtrOfs $(( $SetupBase + $stacktop )) $bs fi # Compute initramfs size @@ -164,39 +132,39 @@ padding=0 for i in $( echo $INITRD | sed 's/,/ /' ); do [ -s "$i" ] || continue - [ -n "$DEBUG" ] && echo "--initrd $i " 1>&2 + dbg "--initrd $i " initrdlen=$(( $initrdlen + $padding )) padding=$(stat -c %s $i) initrdlen=$(( $initrdlen + $padding )) padding=$(( 4096 - ($padding & 4095) )) [ $padding -eq 4096 ] && padding=0 done - Ksize=$(( $(getlong $SyssizeOfs $bs)*16 )) + Ksize=$(( $(get $SyssizeOfs $bs)*16 )) Kpad=$(( (($Ksize+4095)/4096)*4096 - Ksize )) if [ $initrdlen -ne 0 ]; then - [ -n "$DEBUG" ] && echo "initrdlen = $initrdlen " 1>&2 - Kbase=$(getlong $CodeAdrOfs $bs) - storelong $RamfsAdrOfs \ + dbg "initrdlen = $initrdlen " + Kbase=$(get $CodeAdrOfs $bs) + put $RamfsAdrOfs \ $(( (0x1000000 - $initrdlen) & 0xFFFF0000 )) $bs - storelong $RamfsLenOfs $(( ($initrdlen + 3) & -4 )) $bs + put $RamfsLenOfs $(( ($initrdlen + 3) & -4 )) $bs fi # Output boot sector + setup + cmdline - dd if=$bs 2> /dev/null + ddq if=$bs # Output kernel code - dd if=$KERNEL bs=512 skip=$(( $setupszb + 1 )) 2> /dev/null + ddq if=$KERNEL bs=512 skip=$(( $setupsz + 1 )) # Pad to next sector Kpad=$(( 512 - ($(stat -c %s $KERNEL) & 511) )) - [ $Kpad -eq 512 ] || dd if=/dev/zero bs=1 count=$Kpad 2> /dev/null + [ $Kpad -eq 512 ] || ddq if=/dev/zero bs=1 count=$Kpad # Output initramfs padding=0 for i in $( echo $INITRD | sed 's/,/ /' ); do [ -s "$i" ] || continue - [ $padding -ne 0 ] && dd if=/dev/zero bs=1 count=$padding 2> /dev/null - dd if=$i 2> /dev/null + [ $padding -ne 0 ] && ddq if=/dev/zero bs=1 count=$padding + ddq if=$i padding=$(( 4 - ($(stat -c %s $i) & 3) )) [ $padding -eq 4 ] && padding=0 done @@ -205,6 +173,47 @@ rm -f $bs } +KERNEL="" +INITRD="" +CMDLINE="" +PREFIX="floppy." +FORMAT="1440" +RDEV="" +VIDEO="" +FLAGS="" +TRACKS="" +DEBUG="" +while [ -n "$1" ]; do + case "${1/--/-}" in + -c*) CMDLINE="$2"; shift;; + -i*) INITRD="$INITRD $2"; shift;; + -p*) PREFIX="$2"; shift;; + -fl*) FLAGS="$2"; shift;; # 1 read-only, 0 read-write + -f*) FORMAT="$2"; shift;; + -r*) RDEV="$2"; shift;; # /dev/??? + -v*) VIDEO="$2"; shift;; # -3 .. n + -t*) TRACKS="$2"; shift;; # likely 81 .. 84 + -d*) DEBUG="1";; + -e*) ddq bs=512 count=2 > kernel + setupsz=$(get $SetupSzOfs kernel 1) + ddq bs=512 count=$(($setupsz - 1)) >> kernel + [ $(get $ArgPtrOfs kernel) -ne 0 ] && + ddq bs=512 count=1 | strings > cmdline + syssz=$(get $SyssizeOfs kernel) + ddq bs=512 count=$(( ($syssz + 31) / 32 )) >> kernel + ddq bs=16 seek=$(($syssz + 32 + $setupsz*32)) count=0 of=kernel + ramsz=$(get $RamfsLenOfs kernel) + ddq bs=512 count=$((($ramsz + 511) / 512)) of=rootfs + ddq bs=1 seek=$ramsz count=0 of=rootfs + exit ;; + *) KERNEL="$1";; + esac + shift +done +[ -n "$KERNEL" -a -f "$KERNEL" ] || usage +[ -n "$TRACKS" ] && [ $(( $FORMAT % $TRACKS )) -ne 0 ] && + echo "Invalid track count for format $FORMAT." && usage + if [ "$FORMAT" == "0" ]; then # unsplitted floppyset > $PREFIX exit @@ -213,7 +222,7 @@ i=1 ls floppy$$* | while read file ; do output=$PREFIX$(printf "%03d" $i) - cat $file /dev/zero | dd bs=1k count=$FORMAT conv=sync of=$output 2> /dev/null + cat $file /dev/zero | ddq bs=1k count=$FORMAT conv=sync of=$output echo $output rm -f $file i=$(( $i + 1 ))