From cb63a6b94e55dccd5e175a7d0a38f9fde1bbf4cd Mon Sep 17 00:00:00 2001 From: Fathi Boudra Date: Sun, 8 Sep 2013 15:18:43 +0300 Subject: sid-kvm-debian: generate a normal image instead of live image Signed-off-by: Fathi Boudra --- sid-kvm-debian/Makefile | 11 +- sid-kvm-debian/configure | 9 +- .../customization/bootloaders/syslinux/install.cfg | 1 - .../customization/bootloaders/syslinux/live.cfg.in | 12 - .../customization/bootloaders/syslinux/menu.c32 | Bin 55140 -> 0 bytes .../customization/bootloaders/syslinux/menu.cfg | 10 - .../bootloaders/syslinux/splash.svg.in | 388 --------------------- .../customization/bootloaders/syslinux/stdmenu.cfg | 15 - .../bootloaders/syslinux/syslinux.cfg | 4 - .../hooks/01-setup_user_linaro.chroot | 7 + .../includes.chroot/bin/auto-root-login | 4 + .../includes.chroot/bin/auto-serial-console | 35 ++ .../includes.chroot/etc/default/autogetty | 5 + .../customization/includes.chroot/etc/hostname | 1 + .../customization/includes.chroot/etc/hosts | 7 + .../customization/includes.chroot/etc/inittab | 71 ++++ .../includes.chroot/etc/network/interfaces | 10 + sid-kvm-debian/lb2img.sh | 76 ++++ 18 files changed, 227 insertions(+), 439 deletions(-) delete mode 100644 sid-kvm-debian/customization/bootloaders/syslinux/install.cfg delete mode 100644 sid-kvm-debian/customization/bootloaders/syslinux/live.cfg.in delete mode 100644 sid-kvm-debian/customization/bootloaders/syslinux/menu.c32 delete mode 100644 sid-kvm-debian/customization/bootloaders/syslinux/menu.cfg delete mode 100644 sid-kvm-debian/customization/bootloaders/syslinux/splash.svg.in delete mode 100644 sid-kvm-debian/customization/bootloaders/syslinux/stdmenu.cfg delete mode 100644 sid-kvm-debian/customization/bootloaders/syslinux/syslinux.cfg create mode 100755 sid-kvm-debian/customization/hooks/01-setup_user_linaro.chroot create mode 100755 sid-kvm-debian/customization/includes.chroot/bin/auto-root-login create mode 100755 sid-kvm-debian/customization/includes.chroot/bin/auto-serial-console create mode 100644 sid-kvm-debian/customization/includes.chroot/etc/default/autogetty create mode 100644 sid-kvm-debian/customization/includes.chroot/etc/hostname create mode 100644 sid-kvm-debian/customization/includes.chroot/etc/hosts create mode 100644 sid-kvm-debian/customization/includes.chroot/etc/inittab create mode 100644 sid-kvm-debian/customization/includes.chroot/etc/network/interfaces create mode 100755 sid-kvm-debian/lb2img.sh diff --git a/sid-kvm-debian/Makefile b/sid-kvm-debian/Makefile index 60c4a94..6c4263d 100755 --- a/sid-kvm-debian/Makefile +++ b/sid-kvm-debian/Makefile @@ -12,20 +12,19 @@ LOGFILE=$(IMAGEPREFIX).build-log.txt CONFIGFILE=$(IMAGEPREFIX).config.tar.bz2 LISTFILE=$(IMAGEPREFIX).contents PKGSFILE=$(IMAGEPREFIX).packages -GZFILE=$(IMAGEPREFIX).img.gz +TARGZFILE=$(IMAGEPREFIX).tar.gz MD5SUMSFILE=$(IMAGEPREFIX).md5sums.txt SHA1SUMSFILE=$(IMAGEPREFIX).sha1sums.txt all: set -e; sudo lb build 2>&1 | tee $(LOGFILE) - if [ -f binary.img ]; then \ + if [ -f binary-tar.tar.gz ]; then \ tar -jcf $(CONFIGFILE) auto/ config/ configure; \ sudo mv binary.contents $(LISTFILE); \ sudo mv binary.packages $(PKGSFILE); \ - sudo mv binary.img $(IMAGEPREFIX).img; \ - gzip -9 --rsyncable $(IMAGEPREFIX).img; \ - md5sum $(LOGFILE) $(CONFIGFILE) $(LISTFILE) $(PKGSFILE) $(GZFILE) > $(MD5SUMSFILE); \ - sha1sum $(LOGFILE) $(CONFIGFILE) $(LISTFILE) $(PKGSFILE) $(GZFILE) > $(SHA1SUMSFILE); \ + sudo mv binary-tar.tar.gz $(TARGZFILE); \ + md5sum $(LOGFILE) $(CONFIGFILE) $(LISTFILE) $(PKGSFILE) $(TARGZFILE) > $(MD5SUMSFILE); \ + sha1sum $(LOGFILE) $(CONFIGFILE) $(LISTFILE) $(PKGSFILE) $(TARGZFILE) > $(SHA1SUMSFILE); \ fi clean: diff --git a/sid-kvm-debian/configure b/sid-kvm-debian/configure index 82587aa..13a51de 100755 --- a/sid-kvm-debian/configure +++ b/sid-kvm-debian/configure @@ -16,9 +16,12 @@ lb config \ --apt-secure false \ --architectures amd64 \ --archive-areas 'main contrib non-free' \ - --binary-images hdd \ - --bootappend-live "boot=live config quiet hostname=linaro-sid username=linaro" \ + --binary-filesystem ext4 \ + --binary-images tar \ + --bootloader grub \ + --bootappend-live "quiet hostname=linaro-sid username=linaro" \ --cache false \ + --chroot-filesystem none \ --compression gzip \ --debootstrap-options "--variant=minbase" \ --distribution sid \ @@ -29,7 +32,7 @@ lb config \ --memtest none \ --mode debian \ --security false \ - --system live \ + --system normal \ --updates false echo "I: copy customization" diff --git a/sid-kvm-debian/customization/bootloaders/syslinux/install.cfg b/sid-kvm-debian/customization/bootloaders/syslinux/install.cfg deleted file mode 100644 index 94fb816..0000000 --- a/sid-kvm-debian/customization/bootloaders/syslinux/install.cfg +++ /dev/null @@ -1 +0,0 @@ -# FIXME diff --git a/sid-kvm-debian/customization/bootloaders/syslinux/live.cfg.in b/sid-kvm-debian/customization/bootloaders/syslinux/live.cfg.in deleted file mode 100644 index 97ceb92..0000000 --- a/sid-kvm-debian/customization/bootloaders/syslinux/live.cfg.in +++ /dev/null @@ -1,12 +0,0 @@ -label live-@FLAVOUR@ - menu label ^Live (@FLAVOUR@) - menu default - linux @LINUX@ - initrd @INITRD@ - append @APPEND_LIVE@ - -label live-@FLAVOUR@-failsafe - menu label ^Live (@FLAVOUR@ failsafe) - linux @LINUX@ - initrd @INITRD@ - append @APPEND_LIVE_FAILSAFE@ diff --git a/sid-kvm-debian/customization/bootloaders/syslinux/menu.c32 b/sid-kvm-debian/customization/bootloaders/syslinux/menu.c32 deleted file mode 100644 index 33c76d0..0000000 Binary files a/sid-kvm-debian/customization/bootloaders/syslinux/menu.c32 and /dev/null differ diff --git a/sid-kvm-debian/customization/bootloaders/syslinux/menu.cfg b/sid-kvm-debian/customization/bootloaders/syslinux/menu.cfg deleted file mode 100644 index 6e2ae94..0000000 --- a/sid-kvm-debian/customization/bootloaders/syslinux/menu.cfg +++ /dev/null @@ -1,10 +0,0 @@ -menu hshift 0 -menu width 82 - -menu title Boot menu -include stdmenu.cfg -include live.cfg -include install.cfg -menu end - -menu clear diff --git a/sid-kvm-debian/customization/bootloaders/syslinux/splash.svg.in b/sid-kvm-debian/customization/bootloaders/syslinux/splash.svg.in deleted file mode 100644 index 4c3e3d3..0000000 --- a/sid-kvm-debian/customization/bootloaders/syslinux/splash.svg.in +++ /dev/null @@ -1,388 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - @PROJECT@ @VERSION@ (@DISTRIBUTION@)@DESCRIPTION@ @ARCHITECTURE@Build: @YEAR@-@MONTH@-@DAY@ @HOUR@:@MINUTE@:@SECOND@linux: @LINUX_VERSIONS@live-build: @LIVE_BUILD_VERSION@live-boot: @LIVE_BOOT_VERSION@live-config: @LIVE_CONFIG_VERSION@live-tools: @LIVE_TOOLS_VERSION@ - - - - - - - - - - - - - - - - diff --git a/sid-kvm-debian/customization/bootloaders/syslinux/stdmenu.cfg b/sid-kvm-debian/customization/bootloaders/syslinux/stdmenu.cfg deleted file mode 100644 index d4036bf..0000000 --- a/sid-kvm-debian/customization/bootloaders/syslinux/stdmenu.cfg +++ /dev/null @@ -1,15 +0,0 @@ -menu background splash.png -menu color title * #FFFFFFFF * -menu color border * #00000000 #00000000 none -menu color sel * #ffffffff #76a1d0ff * -menu color hotsel 1;7;37;40 #ffffffff #76a1d0ff * -menu color tabmsg * #ffffffff #00000000 * -menu color help 37;40 #ffdddd00 #00000000 none -menu vshift 17 -menu rows 10 -menu helpmsgrow 15 -# The command line must be at least one line from the bottom. -menu cmdlinerow 16 -menu timeoutrow 16 -menu tabmsgrow 18 -menu tabmsg Press ENTER to boot or TAB to edit a menu entry diff --git a/sid-kvm-debian/customization/bootloaders/syslinux/syslinux.cfg b/sid-kvm-debian/customization/bootloaders/syslinux/syslinux.cfg deleted file mode 100644 index cc7827a..0000000 --- a/sid-kvm-debian/customization/bootloaders/syslinux/syslinux.cfg +++ /dev/null @@ -1,4 +0,0 @@ -include menu.cfg -default menu.c32 -prompt 0 -timeout 20 diff --git a/sid-kvm-debian/customization/hooks/01-setup_user_linaro.chroot b/sid-kvm-debian/customization/hooks/01-setup_user_linaro.chroot new file mode 100755 index 0000000..9c65f97 --- /dev/null +++ b/sid-kvm-debian/customization/hooks/01-setup_user_linaro.chroot @@ -0,0 +1,7 @@ +#!/bin/sh + +echo "I: create linaro user" +adduser --gecos linaro --disabled-login linaro + +echo "I: set linaro user password" +echo "linaro:linaro" | chpasswd diff --git a/sid-kvm-debian/customization/includes.chroot/bin/auto-root-login b/sid-kvm-debian/customization/includes.chroot/bin/auto-root-login new file mode 100755 index 0000000..a653e6f --- /dev/null +++ b/sid-kvm-debian/customization/includes.chroot/bin/auto-root-login @@ -0,0 +1,4 @@ +#!/bin/sh + +exec /bin/login -f root + diff --git a/sid-kvm-debian/customization/includes.chroot/bin/auto-serial-console b/sid-kvm-debian/customization/includes.chroot/bin/auto-serial-console new file mode 100755 index 0000000..239f48d --- /dev/null +++ b/sid-kvm-debian/customization/includes.chroot/bin/auto-serial-console @@ -0,0 +1,35 @@ +#!/bin/sh -e + +[ -f /etc/default/autogetty ] && . /etc/default/autogetty + +[ 1 -gt $ENABLED ] && exit + +for arg in $(cat /proc/cmdline) +do + case $arg in + console=*) + tty=${arg#console=} + tty=${tty#/dev/} + + case $tty in + tty[a-zA-Z]* ) + PORT=${tty%%,*} + + # check for service which do something on this port + if [ -f /etc/init/$PORT.conf ];then continue;fi + + tmp=${tty##$PORT,} + SPEED=${tmp%%n*} + BITS=${tmp##${SPEED}n} + + # 8bit serial is default + [ -z $BITS ] && BITS=8 + [ 8 -eq $BITS ] && GETTY_ARGS="$GETTY_ARGS -8 " + + [ -z $SPEED ] && SPEED='115200,57600,38400,19200,9600' + + GETTY_ARGS="$AUTOGETTY_ARGS $GETTY_ARGS $SPEED $PORT" + exec /sbin/getty $GETTY_ARGS + esac + esac +done diff --git a/sid-kvm-debian/customization/includes.chroot/etc/default/autogetty b/sid-kvm-debian/customization/includes.chroot/etc/default/autogetty new file mode 100644 index 0000000..d8b2255 --- /dev/null +++ b/sid-kvm-debian/customization/includes.chroot/etc/default/autogetty @@ -0,0 +1,5 @@ +# here you can provide what to run instead of /bin/login +AUTOGETTY_ARGS="-n -l /bin/auto-root-login" + +# Should autogetty be enabled? +ENABLED=1 diff --git a/sid-kvm-debian/customization/includes.chroot/etc/hostname b/sid-kvm-debian/customization/includes.chroot/etc/hostname new file mode 100644 index 0000000..7bd52bb --- /dev/null +++ b/sid-kvm-debian/customization/includes.chroot/etc/hostname @@ -0,0 +1 @@ +linaro-sid diff --git a/sid-kvm-debian/customization/includes.chroot/etc/hosts b/sid-kvm-debian/customization/includes.chroot/etc/hosts new file mode 100644 index 0000000..c53a094 --- /dev/null +++ b/sid-kvm-debian/customization/includes.chroot/etc/hosts @@ -0,0 +1,7 @@ +127.0.0.1 localhost +::1 localhost ip6-localhost ip6-loopback +fe00::0 ip6-localnet +ff00::0 ip6-mcastprefix +ff02::1 ip6-allnodes +ff02::2 ip6-allrouters +127.0.1.1 linaro-sid diff --git a/sid-kvm-debian/customization/includes.chroot/etc/inittab b/sid-kvm-debian/customization/includes.chroot/etc/inittab new file mode 100644 index 0000000..6b724cf --- /dev/null +++ b/sid-kvm-debian/customization/includes.chroot/etc/inittab @@ -0,0 +1,71 @@ +# /etc/inittab: init(8) configuration. +# $Id: inittab,v 1.91 2002/01/25 13:35:21 miquels Exp $ + +# The default runlevel. +id:2:initdefault: + +# Boot-time system configuration/initialization script. +# This is run first except when booting in emergency (-b) mode. +si::sysinit:/etc/init.d/rcS + +# What to do in single-user mode. +~~:S:wait:/sbin/sulogin + +# /etc/init.d executes the S and K scripts upon change +# of runlevel. +# +# Runlevel 0 is halt. +# Runlevel 1 is single-user. +# Runlevels 2-5 are multi-user. +# Runlevel 6 is reboot. + +l0:0:wait:/etc/init.d/rc 0 +l1:1:wait:/etc/init.d/rc 1 +l2:2:wait:/etc/init.d/rc 2 +l3:3:wait:/etc/init.d/rc 3 +l4:4:wait:/etc/init.d/rc 4 +l5:5:wait:/etc/init.d/rc 5 +l6:6:wait:/etc/init.d/rc 6 +# Normally not reached, but fallthrough in case of emergency. +z6:6:respawn:/sbin/sulogin + +# What to do when CTRL-ALT-DEL is pressed. +ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now + +# Action on special keypress (ALT-UpArrow). +#kb::kbrequest:/bin/echo "Keyboard Request--edit /etc/inittab to let this work." + +# What to do when the power fails/returns. +pf::powerwait:/etc/init.d/powerfail start +pn::powerfailnow:/etc/init.d/powerfail now +po::powerokwait:/etc/init.d/powerfail stop + +# /sbin/getty invocations for the runlevels. +# +# The "id" field MUST be the same as the last +# characters of the device (after "tty"). +# +# Format: +# ::: +# +# Note that on most Debian systems tty7 is used by the X Window System, +# so if you want to add more getty's go ahead but skip tty7 if you run X. +# +1:2345:respawn:/bin/login -f root /dev/tty1 2>&1 +2:23:respawn:/sbin/getty 38400 tty2 +3:23:respawn:/sbin/getty 38400 tty3 +4:23:respawn:/sbin/getty 38400 tty4 +5:23:respawn:/sbin/getty 38400 tty5 +6:23:respawn:/sbin/getty 38400 tty6 + +# Example how to put a getty on a serial line (for a terminal) +# +#T0:23:respawn:/sbin/getty -L ttyS0 9600 vt100 +#T1:23:respawn:/sbin/getty -L ttyS1 9600 vt100 + +T0:23:respawn:/bin/auto-serial-console + +# Example how to put a getty on a modem line. +# +#T3:23:respawn:/sbin/mgetty -x0 -s 57600 ttyS3 + diff --git a/sid-kvm-debian/customization/includes.chroot/etc/network/interfaces b/sid-kvm-debian/customization/includes.chroot/etc/network/interfaces new file mode 100644 index 0000000..13f3827 --- /dev/null +++ b/sid-kvm-debian/customization/includes.chroot/etc/network/interfaces @@ -0,0 +1,10 @@ +# interfaces(5) file used by ifup(8) and ifdown(8) +# Include files from /etc/network/interfaces.d: +source-directory /etc/network/interfaces.d + +# The loopback network interface +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet dhcp diff --git a/sid-kvm-debian/lb2img.sh b/sid-kvm-debian/lb2img.sh new file mode 100755 index 0000000..f944708 --- /dev/null +++ b/sid-kvm-debian/lb2img.sh @@ -0,0 +1,76 @@ +#!/bin/sh + +# (C) 2013 Fathi Boudra + +# Convert live-build tarball to KVM image + +PROGNAME=`basename $0` +DEVICE=${DEVICE:-/dev/loop0} +IMAGE=${IMAGE:-kvm.img} + +# we must be root +[ `whoami` = "root" ] || { echo "E: You must be root" && exit 1; } + +# we must have mkfs/tune2fs/qemu-img +MKFS=`which mkfs.ext4` || { echo "E: You must have mkfs.ext3" && exit 1; } +TUNE2FS=`which tune2fs` || { echo "E: You must have tune2fs" && exit 1; } +QEMUIMG=`which qemu-img` || { echo "E: You must have qemu-img" && exit 1; } + +${QEMUIMG} create -f raw ${IMAGE} 1G +losetup ${DEVICE} ${IMAGE} + +echo "I: Create filesystem" +${MKFS} -O ^has_journal ${DEVICE} + +echo "I: Tune filesystem" +${TUNE2FS} -c 0 -i 0 ${DEVICE} + +echo "I: Mount device on local filesystem" +MOUNTDIR=$(mktemp -d /tmp/${PROGNAME}.XXXXXX) +mount ${DEVICE} ${MOUNTDIR} + +tar -zxf binary-tar.tar.gz -C ${MOUNTDIR} --strip-components=1 + +echo "I: Install grub bootloader" +echo "(hd0) ${DEVICE}" > device.map +echo "set prefix=(hd0)/boot/grub" > mycfg.cfg +cp -a /usr/lib/grub/i386-pc/boot.img ${MOUNTDIR}/boot/grub/ +cp -a /usr/lib/grub/i386-pc ${MOUNTDIR}/boot/grub/ + +grub-mkimage \ + --config=mycfg.cfg \ + --directory=/usr/lib/grub/i386-pc \ + --output=${MOUNTDIR}/boot/grub/core.img \ + --format=i386-pc \ + --prefix=/boot \ + biosdisk part_msdos ext2 + +grub-bios-setup \ + --directory=${MOUNTDIR}/boot/grub \ + --force \ + --device-map=device.map \ + ${DEVICE} + +echo "I: Create grub configuration file" +VMLINUZ=`find ${MOUNTDIR}/boot -type f -name 'vmlinuz-*' |xargs basename` +INITRD=`find ${MOUNTDIR}/boot -type f -name 'initrd.img-*' |xargs basename` +UUID=`blkid ${DEVICE} |cut -d' ' -f2 |cut -d'"' -f2` +cat > ${MOUNTDIR}/boot/grub/grub.cfg << EOF +set default=0 +set timeout=2 + +insmod part_msdos +insmod ext2 +set root=(hd0) + +menuentry 'linux' { + linux /boot/${VMLINUZ} root=UUID=${UUID} console=ttyS0,115200 ro quiet + initrd /boot/${INITRD} +} +EOF + +umount ${MOUNTDIR} +rm -rf ${MOUNTDIR} device.map mycfg.cfg +losetup -d ${DEVICE} + +echo "I: Done" -- cgit v1.2.3