From 4196648b72c81ce90f8c4fdf64f088ecc5b3fbe9 Mon Sep 17 00:00:00 2001 From: Yaroslav Halchenko Date: Thu, 19 Jul 2012 18:16:15 -0400 Subject: [PATCH] trying to find matching preseeding for keyboard + ship initial_setup from wheezy/ dir --- vm/d-i/wheezy/initial_setup | 157 ++++++++++++++++++++++++++++++++++++ vm/d-i/wheezy/preseed.cfg | 7 +- vm/tools/nd_createappliance | 5 +- 3 files changed, 164 insertions(+), 5 deletions(-) create mode 100755 vm/d-i/wheezy/initial_setup diff --git a/vm/d-i/wheezy/initial_setup b/vm/d-i/wheezy/initial_setup new file mode 100755 index 0000000..6c2e5af --- /dev/null +++ b/vm/d-i/wheezy/initial_setup @@ -0,0 +1,157 @@ +#!/bin/bash + +# play safe +set -e +set -u + +# Standard Debian install + +# prepare on hydra and use debproxy for speed + +# have dedicated hard-drives for swap and home + +# expert install + +# hostname: neurodebian +# domain: '' + +# Needs to be assured since it got reset to debian +hostname neurodebian # this is not a permanent change +echo "neurodebian" >| /etc/hostname # make it permanent +sed -i -e 's/^127\.0\.1\.1.*/127.0.1.1\tneurodebian/g' /etc/hosts + +# all file in one partition + +# root: not there +# user: brain +# pwd: neurodebian + + +# Do a minimal install +# -------------------- + +# All files in one partition/ +# just base system, run selection, but no tasks (not even 'Standard system') + +# set root password to 'neurodebian' too +#echo "Set root passwd:" +#passwd root + +apt-get install --no-install-recommends -y etckeeper + +# setup etckeeper +git config --global user.name NeuroDebian +git config --global user.email nd@localhost + +# install new stuff +# ----------------- + +# Add sources.list for backports and neurodebian +wget -O /etc/apt/sources.list.d/neuro.debian.net.list http://neuro.debian.net/lists/squeeze.us-nh + +echo "deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free" > /etc/apt/sources.list.d/backports.debian.org.list +cat << EOT > /etc/apt/preferences.d/backports.debian.org.pref +Package: * +Pin: release a=squeeze-backports +Pin-Priority: 200 +EOT + +apt-get update -y +# Backports' Release files signed with both ftpmaster and old backports keys +# That causes APT to spit out a warning, but to not confuse users, lets simply +# obtain that key if possible +gpg --keyserver hkp://subkeys.pgp.net --recv-keys 16BA136C && \ + gpg --export 16BA136C | apt-key add - || : + +apt-get install -y --allow-unauthenticated neurodebian-keyring +apt-get update -y + +# to cheat the VM check +touch /dev/vboxguest + +# Assure that corresponding linux headers are installed since otherwise they +# might not be. There is also a dichotomy between target 686 and installer +# using 486 build of the kernel. It requires manual build/installation +# of guest additions for 686 at this point. Hence all the ugly logic below +cunamer=`uname -r` +cdarch=${cunamer##*-} +# We carry 686 only +[ $cdarch = '486' ] && darch='686' || darch=$cdarch +apt-get install -y linux-headers-2.6-$cdarch + +# Forcefully install guest additions from backports so we are +# compatible with VirtualBox 4.x series +apt-get install -y -t squeeze-backports virtualbox-ose-guest-dkms \ + virtualbox-ose-guest-utils virtualbox-ose-guest-x11 \ + >| /var/log/initial_setup-dkms.log 2>&1 + +# to get all the rest stuff in recommends +apt-get install -y dkms neurodebian-guest-additions + +if [ "$darch" != "$cdarch" ] ; then + # Because DKMS builds for currently running kernel, which during + # installation might be a more generic 486, lets force building for 686 + # and also install necessary headers (will be purged later on anyways) + apt-get install -y linux-headers-2.6-$darch + + unamer=${cunamer//$cdarch/$darch} + # First collect information about installed vb additions + vbg=( `dkms status | grep virtualbox | head -n 1 | tr ',' ' '` ) + echo "I: forcing build and install of guest additions for 686" + dkms build -m ${vbg[0]} -v ${vbg[1]} -a i686 -k $unamer \ + >| /var/log/initial_setup-dkms-686-build.log 2>&1 + dkms install -m ${vbg[0]} -v ${vbg[1]} -a i686 -k $unamer \ + >| /var/log/initial_setup-dkms-686-install.log 2>&1 +fi + +# Add brain use into vboxsf group so he gets access to shared folders +# by default +adduser brain vboxsf + +# assure at the end that we got right modules build in the right location +find /lib/modules/*$darch -iname vboxsf.ko | grep -q . + +apt-get install --no-install-recommends -y \ + gnome-core mc evince bash-completion ntpdate file-roller gnome-utils \ + gnome-themes eog vim reportbug \ + software-center gdebi gedit-plugins gnome-media synaptic menu less libxp6 + +# Clean-up installed development files which got pulled in for +# VM guest additions (to build kernel modules via DKMS) +apt-get purge -y libc6-dev +dpkg -l | awk '/^ii.*[ \t]linux-headers/{print $2;}' | xargs -r apt-get purge -y + +# Gnome optional pulled by gnome-core: +apt-get purge -y gnome-core evolution-common evolution libevolution + +# And utter cleanup +apt-get -y autoremove + +# intermediate cleanup to prevent virtual harddrive from fragmenting too much +find /var/cache/apt/archives/ -name '*.deb' -delete + +# cleanup unwanted stuff +# video drivers (all but vesa) +apt-get purge -y $(apt-cache search --names-only --installed xserver-xorg-video | grep xserver-xorg-video | cut -d ' ' -f 1,1) xserver-xorg-video-vesa+ +apt-get purge -y brasero + +# and whatever is obsolete +apt-get autoremove --purge -y + +# custom config +# use NeuroDebian website as default homepage +sed -i -e 's,http://www.debian.org,http://neuro.debian.net,g' /etc/chromium-browser/master_preferences + +# reduce grub timeout to speed up boot of VM +sed -i -e 's/GRUB_TIMEOUT=5/GRUB_TIMEOUT=1/g' /etc/default/grub +update-grub + +# finally configure geomirror for APT and disable deb-src lists +sed -i -e "s/10.0.0.1:9999/$(dpkg --print-architecture)-geomirror.debian.net/" \ + -e "s/^deb-src/#deb-src/" /etc/apt/sources.list + +etckeeper commit "Initial VM setup done" + +# Create a link to automatically mounted Shared folder +# Created by the Welcome Wizard +#sudo -u brain ln -s /mnt/host /home/brain/ diff --git a/vm/d-i/wheezy/preseed.cfg b/vm/d-i/wheezy/preseed.cfg index 6419cbc..4b78566 100644 --- a/vm/d-i/wheezy/preseed.cfg +++ b/vm/d-i/wheezy/preseed.cfg @@ -8,7 +8,8 @@ d-i debian-installer/locale string en_US # Keyboard selection. #d-i console-tools/archs select at -d-i console-keymaps-at/keymap select us +#d-i console-setup-pc-ekmap/keymap select us +d-i countrychooser/country-name select United States # Example for a different keyboard architecture #d-i console-keymaps-usb/keymap select mac-usb-us @@ -75,7 +76,7 @@ d-i mirror/http/directory string /debian #d-i mirror/http/proxy string # Suite to install. -d-i mirror/suite string squeeze +d-i mirror/suite string wheezy # Suite to use for loading installer components (optional). #d-i mirror/udeb/suite string testing @@ -323,7 +324,7 @@ d-i debian-installer/exit/poweroff boolean true # packages and run commands in the target system. #d-i preseed/late_command string apt-install zsh; in-target chsh -s /bin/zsh #d-i preseed/late_command string wget -O/target/tmp/initial_setup http://git.debian.org/?p=pkg-exppsy/neurodebian.git;a=blob_plain;f=vm/d-i/tools/initial_setup;hb=HEAD; \ -d-i preseed/late_command string wget -O/target/tmp/initial_setup http://head1.hydra.dartmouth.edu/d-i/tools/initial_setup ; \ +d-i preseed/late_command string wget -O/target/tmp/initial_setup http://head1.hydra.dartmouth.edu/d-i/wheezy/initial_setup ; \ in-target /bin/bash /tmp/initial_setup # XXX here get/call nd_setupguestos ? diff --git a/vm/tools/nd_createappliance b/vm/tools/nd_createappliance index 6a4539b..b5bdb08 100755 --- a/vm/tools/nd_createappliance +++ b/vm/tools/nd_createappliance @@ -6,14 +6,15 @@ set -eu # TODO: arguments later on to become cmdline args #iso=debian-squeeze-di-beta1-amd64-businesscard.iso -iso=debian-6.0.3-${ARCH:=amd64}-businesscard.iso +#iso=debian-6.0.3-${ARCH:=amd64}-businesscard.iso +iso=debian-wheezy-DI-a1-${ARCH:=amd64}-businesscard.iso di_cd=$(readlink -f $PWD/../../../neurodebian-images/$iso) di_host=head1.hydra.dartmouth.edu # where to look for di preseed build_dir=$PWD/build dist_dir=$PWD/dist vendor="NeuroDebian" -vm_version="6.0.5" +vm_version="6.999.20120716" vm_ostype=Debian vendor_url="http://neuro.debian.net" product_url="${vendor_url}/vm.html" -- 2.39.2