diff options
author | Fathi Boudra <fathi.boudra@linaro.org> | 2015-01-21 19:29:56 +0200 |
---|---|---|
committer | Fathi Boudra <fathi.boudra@linaro.org> | 2015-01-21 19:29:56 +0200 |
commit | 6e7ba9af04851eb8f9477845c6d72bd14f89e653 (patch) | |
tree | 61ce2217e3cd9628bc7801fcdc79c78572854849 /jessie-x86-nano | |
parent | 94c9e6b5ef143a2992647ccc5cfb3f4ee13c6131 (diff) |
Add initial configuration for Jessie x86 Nano
Signed-off-by: Fathi Boudra <fathi.boudra@linaro.org>
Diffstat (limited to 'jessie-x86-nano')
18 files changed, 391 insertions, 0 deletions
diff --git a/jessie-x86-nano/Makefile b/jessie-x86-nano/Makefile new file mode 100755 index 0000000..5c94ad1 --- /dev/null +++ b/jessie-x86-nano/Makefile @@ -0,0 +1,35 @@ +#!/bin/sh + +# (C) 2012-2015 Fathi Boudra <fathi.boudra@linaro.org> + +# Calls all necessary live-build programs in the correct order to complete +# the bootstrap, chroot, binary, and source stage. + +# You need live-build package installed and superuser privileges. + +BUILD_NUMBER?=1 +BASEIMG=linaro-jessie-nano +IMAGEPREFIX=$(BASEIMG)-`date +%Y%m%d`-$(BUILD_NUMBER) +LOGFILE=$(IMAGEPREFIX).build-log.txt +CONFIGFILE=$(IMAGEPREFIX).config.tar.bz2 +LISTFILE=$(IMAGEPREFIX).contents +PKGSFILE=$(IMAGEPREFIX).packages +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-tar.tar.gz ]; then \ + tar -jcf $(CONFIGFILE) auto/ config/ configure; \ + sudo mv binary.contents $(LISTFILE); \ + sudo mv chroot.packages.live $(PKGSFILE); \ + sudo mv binary-tar.tar.gz $(TARGZFILE); \ + md5sum $(LOGFILE) $(CONFIGFILE) $(LISTFILE) $(PKGSFILE) $(TARGZFILE) > $(MD5SUMSFILE); \ + sha1sum $(LOGFILE) $(CONFIGFILE) $(LISTFILE) $(PKGSFILE) $(TARGZFILE) > $(SHA1SUMSFILE); \ + fi + +clean: + sudo lb clean --purge + rm -f $(BASEIMG)-* + rm -rf config diff --git a/jessie-x86-nano/README b/jessie-x86-nano/README new file mode 100644 index 0000000..917e1f3 --- /dev/null +++ b/jessie-x86-nano/README @@ -0,0 +1,16 @@ +* To build binary image: + * install live-build qemu-user-static + * run configure + * run make + +* Scripts: + * configure + * Makefile + +* Configuration Layout + +`-- ./config + +* Customization Layout + +`-- ./customization diff --git a/jessie-x86-nano/configure b/jessie-x86-nano/configure new file mode 100755 index 0000000..025b38d --- /dev/null +++ b/jessie-x86-nano/configure @@ -0,0 +1,41 @@ +#!/bin/sh + +# (C) 2012-2015 Fathi Boudra <fathi.boudra@linaro.org> + +# Create configuration for live-build. + +# You need live-build package installed. + +set -e + +echo "I: create configuration" +export LB_BOOTSTRAP_INCLUDE="apt-transport-https gnupg" +lb config \ + --apt-indices false \ + --apt-recommends false \ + --apt-secure false \ + --architectures amd64 \ + --archive-areas 'main contrib non-free' \ + --binary-filesystem ext4 \ + --binary-images tar \ + --bootloader grub \ + --bootappend-live "hostname=linaro-nano username=linaro" \ + --cache false \ + --chroot-filesystem none \ + --compression gzip \ + --debootstrap-options "--variant=minbase" \ + --distribution jessie \ + --firmware-chroot false \ + --gzip-options '-9 --rsyncable' \ + --iso-publisher 'Linaro; http://www.linaro.org/; linaro-dev@lists.linaro.org' \ + --iso-volume 'Linaro Jessie $(date +%Y%m%d-%H:%M)' \ + --memtest none \ + --mode debian \ + --security false \ + --system normal \ + --updates false + +echo "I: copy customization" +test -d customization && cp -rf customization/* config/ + +echo "I: done" diff --git a/jessie-x86-nano/customization/archives/linaro-overlay-repo.key.chroot b/jessie-x86-nano/customization/archives/linaro-overlay-repo.key.chroot new file mode 100644 index 0000000..31f1900 --- /dev/null +++ b/jessie-x86-nano/customization/archives/linaro-overlay-repo.key.chroot @@ -0,0 +1,18 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: GnuPG v1.4.12 (GNU/Linux) + +mQENBFFKYd4BCAD1znxWHazOdG+F4BSPXdT3OrX3bwScw7ZVpyY9v4kNJwpr/PSj +BICrpFPY0OkX7TjvtFAGTJF8YA0hnq5GFA2YVCRd1Xplz0zeS/ktMDEYEBA1B4Mk +1wzX1Kp7LyJEntYBtd9g0Ge3f8Z4DCOTG15RnEONYXtbqdZ6xHGwDJtxyzU+ZPaH +RfxGDdHlIKmCaV4W17zXoJOW7KIR1NwakfgBBUgPVH+i1iuIvtniKe6mAvAUDfmN +DOMaMgofzIshKkq1wncwBmW81eW9Mg+JzTZaa0XAah1anbdCMoCS91txG2O3Gj1z +OF1tY0WXYL9oPeBxDoN+KgKPyehKiSRwQ+0XABEBAAG0E0xpbmFybyByZXBvc2l0 +b3JpZXOJATgEEwECACIFAlFKYd4CGwMGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheA +AAoJEOE9iPfjwdVsqAoH/RGrCKW1b9jImsxVUqrBfHPekiFk44JiG04f46qY7u/l +ZiWgsayBcE9JInUQF7GWYVamgj55263mOZfsezxEtxr+KWz0ny6miyQH+51XpI74 +8+6ljExfnYR/Fdkiplcc+Fr5oGWBZXNmTedo0nYWl3aVsjCgl7/wMt/hwbx3J/aA +66/CmG2IMAEwbXdedrk+hiTNBjBaaKnkiqCX7fOstE1Ie0q7ro6d0nhkZezxVK1a +GSOsIE2xtTOPlVp9k3YmxVVisZIRjIcEJu6YnuBI2G4MaOh6RJTQpw9Hprr58Z6v +vzJBYZzXnLMl7RrXEw0NIYmPcEM6m5cphUlDpRBd8Tg= +=dkH9 +-----END PGP PUBLIC KEY BLOCK----- diff --git a/jessie-x86-nano/customization/archives/linaro-overlay-repo.list.chroot b/jessie-x86-nano/customization/archives/linaro-overlay-repo.list.chroot new file mode 100644 index 0000000..f36c472 --- /dev/null +++ b/jessie-x86-nano/customization/archives/linaro-overlay-repo.list.chroot @@ -0,0 +1,2 @@ +#deb http://repo.linaro.org/ubuntu/linaro-overlay @DISTRIBUTION@ main +#deb-src http://repo.linaro.org/ubuntu/linaro-overlay @DISTRIBUTION@ main diff --git a/jessie-x86-nano/customization/hooks/01-setup_user_linaro.chroot b/jessie-x86-nano/customization/hooks/01-setup_user_linaro.chroot new file mode 100755 index 0000000..efe3c4a --- /dev/null +++ b/jessie-x86-nano/customization/hooks/01-setup_user_linaro.chroot @@ -0,0 +1,8 @@ +#!/bin/sh + +echo "I: create linaro user" +adduser --gecos linaro --disabled-login linaro + +echo "I: set linaro user password" +echo "linaro:linaro" | chpasswd +echo "root:linaro" | chpasswd diff --git a/jessie-x86-nano/customization/hooks/02-add_linaro_to_groups.chroot b/jessie-x86-nano/customization/hooks/02-add_linaro_to_groups.chroot new file mode 100755 index 0000000..f3b2d4e --- /dev/null +++ b/jessie-x86-nano/customization/hooks/02-add_linaro_to_groups.chroot @@ -0,0 +1,63 @@ +#!/bin/sh -x + +DEFGROUPS="admin,adm,dialout,cdrom,plugdev,audio,dip,video" + +/bin/egrep -i "^admin" /etc/group +if [ $? -eq 0 ]; then + echo "User admin exists in /etc/group" +else + echo "User admin does not exists in /etc/group must create" + groupadd admin +fi +/bin/egrep -i "^dialout" /etc/group +if [ $? -eq 0 ]; then + echo "User dialout exists in /etc/group" +else + echo "User dialout does not exists in /etc/group must create" + groupadd dialout +fi +/bin/egrep -i "^cdrom" /etc/group +if [ $? -eq 0 ]; then + echo "User cdrom exists in /etc/group" +else + echo "User cdrom does not exists in /etc/group must create" + groupadd cdrom +fi +/bin/egrep -i "^plugdev" /etc/group +if [ $? -eq 0 ]; then + echo "User plugdev exists in /etc/group" +else + echo "User plugdev does not exists in /etc/group must create" + groupadd plugdev +fi +/bin/egrep -i "^audio" /etc/group +if [ $? -eq 0 ]; then + echo "User audio exists in /etc/group" +else + echo "User audio does not exists in /etc/group must create" + groupadd audio +fi +/bin/egrep -i "^dip" /etc/group +if [ $? -eq 0 ]; then + echo "User dip exists in /etc/group" +else + echo "User dip does not exists in /etc/group must create" + groupadd dip +fi +/bin/egrep -i "^video" /etc/group +if [ $? -eq 0 ]; then + echo "User video exists in /etc/group" +else + echo "User video does not exists in /etc/group must create" + groupadd video +fi +/bin/egrep -i "^adm" /etc/group +if [ $? -eq 0 ]; then + echo "User adm exists in /etc/group" +else + echo "User adm does not exists in /etc/group must create" + groupadd adm +fi + +echo "I: add linaro to ($DEFGROUPS) groups" +usermod -a -G ${DEFGROUPS} linaro diff --git a/jessie-x86-nano/customization/hooks/03-check_sudoers_for_admin.chroot b/jessie-x86-nano/customization/hooks/03-check_sudoers_for_admin.chroot new file mode 100755 index 0000000..5c82429 --- /dev/null +++ b/jessie-x86-nano/customization/hooks/03-check_sudoers_for_admin.chroot @@ -0,0 +1,17 @@ +#!/bin/sh + +# check to make sure sudoers file has ref for admin +ADMINEXISTS="$(awk '$1 == "%admin" { print $1 }' /etc/sudoers)" +if [ -z "$ADMINEXISTS" ]; then + # append admin entry to sudoers + echo "# Members of the admin group may gain root privileges" >> /etc/sudoers + echo "%admin ALL = (ALL) NOPASSWD: ALL" >> /etc/sudoers +fi + +# make sure that NOPASSWD is set for %admin +# expecially in the case that we didn't add it to /etc/sudoers +# just blow the %admin line away and force it to be NOPASSWD +sed -i -e ' +/\%admin/ c \ +%admin ALL = (ALL) NOPASSWD: ALL +' /etc/sudoers diff --git a/jessie-x86-nano/customization/hooks/20-extract_initrd_uuid.binary b/jessie-x86-nano/customization/hooks/20-extract_initrd_uuid.binary new file mode 100755 index 0000000..fee2b1b --- /dev/null +++ b/jessie-x86-nano/customization/hooks/20-extract_initrd_uuid.binary @@ -0,0 +1,29 @@ +#!/bin/sh + +mkdir -p uuid +cd uuid + +prefix= + +if ls ../binary/casper/initrd.img-* 2>&1 > /dev/null; then + prefix=../binary/boot/filesystem.dir/casper/ +else + prefix=../binary/boot/filesystem.dir/boot/ +fi + +UUID=`uuidgen -r` + +for initrd in `ls $prefix/initrd.img-*`; do + zcat $initrd | cpio --quiet -id + echo $UUID > conf/uuid.conf + find . | cpio --quiet --dereference -o -H newc | gzip > $initrd + rm -rf * +done + +echo "I: setting rootfs UUID $UUID in initrd... copying to '.disk/casper-uuid'." +if [ ! -d ../binary/boot/filesystem.dir/.disk ]; then + mkdir -p ../binary/boot/filesystem.dir/.disk +fi +echo $UUID > ../binary/boot/filesystem.dir/.disk/casper-uuid +cd .. +rm -rf uuid diff --git a/jessie-x86-nano/customization/hooks/52-remove_etc_parts.binary b/jessie-x86-nano/customization/hooks/52-remove_etc_parts.binary new file mode 100755 index 0000000..fbdfd07 --- /dev/null +++ b/jessie-x86-nano/customization/hooks/52-remove_etc_parts.binary @@ -0,0 +1,14 @@ +#!/bin/sh + +cd binary + +#echo "I: rm /etc/X11 and /etc/firefox" +#rm -rf ./etc/X11 +#rm -rf ./etc/firefox + +echo "I: rm /etc/init/tty[2-6].conf" +rm -f ./etc/init/tty2.conf +rm -f ./etc/init/tty3.conf +rm -f ./etc/init/tty4.conf +rm -f ./etc/init/tty5.conf +rm -f ./etc/init/tty6.conf diff --git a/jessie-x86-nano/customization/hooks/99-cleanup_proxy.binary b/jessie-x86-nano/customization/hooks/99-cleanup_proxy.binary new file mode 100755 index 0000000..751faf5 --- /dev/null +++ b/jessie-x86-nano/customization/hooks/99-cleanup_proxy.binary @@ -0,0 +1,5 @@ +#!/bin/sh + +echo "I: Clean up proxy" +sed -i "s|localhost:3142/||" ./binary/etc/apt/sources.list +sed -i "s|localhost:3142/||" ./binary/etc/apt/sources.list.d/*.list diff --git a/jessie-x86-nano/customization/includes.chroot/etc/default/locale b/jessie-x86-nano/customization/includes.chroot/etc/default/locale new file mode 100644 index 0000000..f9c983c --- /dev/null +++ b/jessie-x86-nano/customization/includes.chroot/etc/default/locale @@ -0,0 +1 @@ +LANG=C.UTF-8 diff --git a/jessie-x86-nano/customization/includes.chroot/etc/hostname b/jessie-x86-nano/customization/includes.chroot/etc/hostname new file mode 100644 index 0000000..1d1dfdb --- /dev/null +++ b/jessie-x86-nano/customization/includes.chroot/etc/hostname @@ -0,0 +1 @@ +linaro-nano diff --git a/jessie-x86-nano/customization/includes.chroot/etc/hosts b/jessie-x86-nano/customization/includes.chroot/etc/hosts new file mode 100644 index 0000000..5c520b5 --- /dev/null +++ b/jessie-x86-nano/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-nano diff --git a/jessie-x86-nano/customization/includes.chroot/etc/network/interfaces b/jessie-x86-nano/customization/includes.chroot/etc/network/interfaces new file mode 100644 index 0000000..13f3827 --- /dev/null +++ b/jessie-x86-nano/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/jessie-x86-nano/customization/includes.chroot/etc/rc.local b/jessie-x86-nano/customization/includes.chroot/etc/rc.local new file mode 100755 index 0000000..bd2c208 --- /dev/null +++ b/jessie-x86-nano/customization/includes.chroot/etc/rc.local @@ -0,0 +1,17 @@ +#!/bin/sh -e +# +# rc.local +# +# This script is executed at the end of each multiuser runlevel. +# Make sure that the script will "exit 0" on success or any other +# value on error. +# +# In order to enable or disable this script just change the execution +# bits. +# +# By default this script does nothing. + +# Generate the SSH keys if non-existent +test -f /etc/ssh/ssh_host_dsa_key || dpkg-reconfigure openssh-server + +exit 0 diff --git a/jessie-x86-nano/customization/package-lists/linaro-nano.list.chroot b/jessie-x86-nano/customization/package-lists/linaro-nano.list.chroot new file mode 100644 index 0000000..b947ab2 --- /dev/null +++ b/jessie-x86-nano/customization/package-lists/linaro-nano.list.chroot @@ -0,0 +1,31 @@ +# Packages needed for Linaro - Nano +apt +apt-utils +console-setup +debconf +gnupg +ifupdown +initramfs-tools +initscripts +iproute2 +iputils-ping +isc-dhcp-client +kbd +makedev +mawk +module-init-tools +mountall +net-tools +netbase +netcat-openbsd +netperf +ntpdate +openssh-client +openssh-server +procps +python-minimal +rsyslog +sudo +udev +user-setup +whiptail diff --git a/jessie-x86-nano/lb2img.sh b/jessie-x86-nano/lb2img.sh new file mode 100755 index 0000000..32de949 --- /dev/null +++ b/jessie-x86-nano/lb2img.sh @@ -0,0 +1,76 @@ +#!/bin/sh + +# (C) 2013 Fathi Boudra <fathi.boudra@linaro.org> + +# Convert live-build tarball to KVM image + +PROGNAME=`basename $0` +DEVICE= +TARGZFILE= +IMGFILE= + +usage() { + echo "usage: ${PROGNAME} <device> <targzfile> <imgfile>" + echo "e.g. ${PROGNAME} ${DEVICE} ${TARGZFILE} ${IMGFILE}" + exit 1 +} + +DEVICE=$1 +TARGZFILE=$2 +IMGFILE=$3 + +# we must provide device name +[ -n "${DEVICE}" ] || usage +[ -n "${TARGZFILE}" ] || usage +[ -n "${IMGFILE}" ] || usage + +# we must be root +[ `whoami` = "root" ] || { echo "E: You must be root" && exit 1; } + +# we must have few tools +MKFS=`which mkfs.ext4` || { echo "E: You must have mkfs.ext4" && 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; } +GRUBINSTALL=`which grub-install` || { echo "E: You must have grub-install" && exit 1; } + +${QEMUIMG} create -f raw ${IMGFILE} 1G +losetup ${DEVICE} ${IMGFILE} + +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 ${TARGZFILE} -C ${MOUNTDIR} --strip-components=1 + +echo "I: Install grub bootloader" +${GRUBINSTALL} --boot-directory=${MOUNTDIR}/boot --force ${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} +losetup -d ${DEVICE} + +echo "I: Done" |