summaryrefslogtreecommitdiff
path: root/jessie-x86-nano
diff options
context:
space:
mode:
authorFathi Boudra <fathi.boudra@linaro.org>2015-01-21 19:29:56 +0200
committerFathi Boudra <fathi.boudra@linaro.org>2015-01-21 19:29:56 +0200
commit6e7ba9af04851eb8f9477845c6d72bd14f89e653 (patch)
tree61ce2217e3cd9628bc7801fcdc79c78572854849 /jessie-x86-nano
parent94c9e6b5ef143a2992647ccc5cfb3f4ee13c6131 (diff)
Add initial configuration for Jessie x86 Nano
Signed-off-by: Fathi Boudra <fathi.boudra@linaro.org>
Diffstat (limited to 'jessie-x86-nano')
-rwxr-xr-xjessie-x86-nano/Makefile35
-rw-r--r--jessie-x86-nano/README16
-rwxr-xr-xjessie-x86-nano/configure41
-rw-r--r--jessie-x86-nano/customization/archives/linaro-overlay-repo.key.chroot18
-rw-r--r--jessie-x86-nano/customization/archives/linaro-overlay-repo.list.chroot2
-rwxr-xr-xjessie-x86-nano/customization/hooks/01-setup_user_linaro.chroot8
-rwxr-xr-xjessie-x86-nano/customization/hooks/02-add_linaro_to_groups.chroot63
-rwxr-xr-xjessie-x86-nano/customization/hooks/03-check_sudoers_for_admin.chroot17
-rwxr-xr-xjessie-x86-nano/customization/hooks/20-extract_initrd_uuid.binary29
-rwxr-xr-xjessie-x86-nano/customization/hooks/52-remove_etc_parts.binary14
-rwxr-xr-xjessie-x86-nano/customization/hooks/99-cleanup_proxy.binary5
-rw-r--r--jessie-x86-nano/customization/includes.chroot/etc/default/locale1
-rw-r--r--jessie-x86-nano/customization/includes.chroot/etc/hostname1
-rw-r--r--jessie-x86-nano/customization/includes.chroot/etc/hosts7
-rw-r--r--jessie-x86-nano/customization/includes.chroot/etc/network/interfaces10
-rwxr-xr-xjessie-x86-nano/customization/includes.chroot/etc/rc.local17
-rw-r--r--jessie-x86-nano/customization/package-lists/linaro-nano.list.chroot31
-rwxr-xr-xjessie-x86-nano/lb2img.sh76
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"