aboutsummaryrefslogtreecommitdiffstats
path: root/make-vm-debootstrap
diff options
context:
space:
mode:
Diffstat (limited to 'make-vm-debootstrap')
-rwxr-xr-xmake-vm-debootstrap392
1 files changed, 0 insertions, 392 deletions
diff --git a/make-vm-debootstrap b/make-vm-debootstrap
deleted file mode 100755
index 667eead..0000000
--- a/make-vm-debootstrap
+++ /dev/null
@@ -1,392 +0,0 @@
-#!/bin/bash
-
-set -eu
-
-#if [ "$UID" != "0" ]; then
-# exec sudo -- "$0" "$@"
-#fi
-
-traperror()
-{
- echo "args: $*" >&2
- echo "trace: ${FUNCNAME[*]} ${BASH_LINENO[*]}" >&2
- exit 1
-}
-
-fail() { echo "${FUNCNAME[1]} ${BASH_LINENO[0]}: $*" >&2; exit 1; }
-#trap 'fail unhandled exception' ERR
-trap 'traperror $LINENO ${FUNCNAME:-main} $BASH_LINENO; trap - ERR' ERR
-
-exec 3>&1
-exec >debootstrap.log
-echo "I: log=debootstrap.log">&2
-
-RELEASE=unstable
-#MIRROR=http://fr.archive.ubuntu.com/ubuntu/
-MIRROR=http://apt:9999/debian/
-ARCH=amd64
-PKGS="$(sed 's/^#.*$//'<<EOF
-apt
-aptitude
-bash
-bash-completion
-bind9-host
-bmon
-busybox
-bzip2
-curl
-ed
-grub2
-htop
-iftop
-ifupdown
-iotop
-iperf
-iproute2
-iptables
-iputils-ping
-isc-dhcp-client
-less
-lftp
-linux-image-virtual
-locales
-locales libui-dialog-perl dialog
-locate
-ncdu
-ncurses-base
-ncurses-term
-net-tools
-netbase
-netcat
-nload
-openssh-client
-openssh-server
-psmisc
-python3
-ranger
-rsync
-runit
-screen
-sed
-sl
-socat
-socklog
-strace
-tar
-tcpdump
-telnet
-tmux
-tree
-tzdata
-vim
-vim-nox
-vim-runtime
-w3m
-wget
-zsh
-EOF
-)"
-
-
-
- fail I want to fail
-#false
-
-test0() {
- traperror test
- #fail test of the week
- echo 'test0' >&2
- false
- echo 'test0-end' >&2
-}
-
-test0
-
-false
-
-#echo "Warning: will erase $BLOCKDEV with mkfs.ext4 in 10seconds...">&2
-#for i in $(seq 10 -1 0); do sleep 1; printf "%d... " $i>&2; done
-#echo>&2
-#mkfs -q -F -t ext4 -L rootfs "$BLOCKDEV" || exit 1
-#mkdir -p "$DESTDIR"
-#echo "mounting block device...">&2
-#mount -v -t ext4 "$BLOCKDEV" "$DESTDIR" || \
-# mount -v -t ext4 -o loop "$BLOCKDEV" "$DESTDIR" || exit 1
-#echo "In case of error, please remember to umount $DESTDIR">&2
-
-# compacting qcow2 images files
-# You have to zerofill the data on the disk first.
-# sfill -fllvz
-# Then clone the image file
-# qemu-img convert -p -O qcow2 ./source.img ./packed.
-
-#modprobe nbd max_part=16
-#qemu-nbd -c /dev/nbd0 image.qcow2
-#partprobe /dev/nbd0
-#mount /dev/nbd0p1 /mnt/image
-
-echo "I: debootstraping...">&2
-qemu-debootstrap --arch="$ARCH" \
- --include="$PKGS" --components=main,universe \
- "$RELEASE" "$DESTDIR" "$MIRROR"
-
-if [ ! -e "$KERNEL" ];then
- echo "I: wget kernel...">&2
- wget -q "$MIRROR/dists/$RELEASE/main/installer-$ARCH/current/images/netboot/ubuntu-installer/$ARCH/linux" -O "$KERNEL"
-fi
-
-echo "I: adjust configuration...">&2
-rm -f "$DESTDIR/etc/localtime"
-cat "$DESTDIR/usr/share/zoneinfo/Europe/Paris" > "$DESTDIR/etc/localtime"
-
-# network
-cat >"$DESTDIR/etc/network/interfaces"<<EOF
-auto lo
-iface lo inet loopback
-
-auto eth0
-iface eth0 inet static
-address 10.1.1.252
-netmask 255.255.255.0
-gateway 10.1.1.254
-EOF
-echo "127.0.0.1 localhost localhost.localdomain">"$DESTDIR/etc/hosts"
-echo "localhost">"$DESTDIR/etc/hostname"
-echo "servername 10.1.1.254">"$DESTDIR/etc/resolv.conf"
-
-for f in "$DESTDIR"/etc/init/tty[1-6].conf; do
- echo "manual">${f%.conf}.override
-done
-
-chmod +w "$DESTDIR/etc/sudoers"
-sed 's,#* *%sudo.*,%sudo ALL=(ALL) NOPASSWD: ALL,' -i "$DESTDIR/etc/sudoers"
-chmod -w "$DESTDIR/etc/sudoers"
-
-#UUID="$(blkid "$BLOCKDEV" | sed 's/^.*UUID="\([a-zA-Z0-9-]\+\)".*$/\1/')"
-cat >"$DESTDIR/etc/fstab"<<EOF
-# <device> <mount point> <type> <options> <dump> <pass>
-/dev/vda / ext4 errors=remount-ro,noatime 0 1
-tmpfs /tmp tmpfs mode=1777,noatime,size=128m,nodev,nosuid,noexec 0 0
-tmpfs /var/log tmpfs mode=1777,noatime,size=4m,nodev,nosuid,noexec 0 0
-tmpfs /var/tmp tmpfs mode=1777,noatime,size=128m,nodev,nosuid,noexec 0 0
-
-#UUID=$UUID / ext4 errors=remount-ro,noatime 0 1
-#UUID=use blkid for uuid discovery /home ext4 noatime 0 2
-#UUID=6d9ac889-3c25-4e05-90f3-d183f8b14aca none swap sw,auto 0 0
-EOF
-
-mkdir -p "$DESTDIR/etc/sv/ttyS0/"
-mkdir -p "$DESTDIR/etc/service/"
-cat >"$DESTDIR/etc/sv/ttyS0/run"<<"EOF"
-#!/bin/bash
-dev=/dev/ttyS0
-/bin/stty -F $dev sane clocal -crtscts -hupcl
-exec <$dev >$dev 2>$dev
-echo
-echo "Press enter to continue..."; read
-cd /root
-/usr/bin/env -i HOME=/root PATH=/usr/sbin:/usr/bin:/sbin:/bin TERM=screen-256color /usr/bin/setsid /bin/bash
-exec wait
-#exec /bin/bash
-#exec /usr/bin/env -i /bin/sh
-#exec /usr/bin/setsid /bin/sh
-EOF
-chmod +x "$DESTDIR/etc/sv/ttyS0/run"
-ln -sfv "/etc/sv/ttyS0/" "$DESTDIR/etc/service/"
-
-mkdir -p "$DESTDIR/etc/ssh"
-cat >"$DESTDIR/etc/ssh/sshd_config"<<EOF
-Port 22
-Protocol 2
-HostKey /etc/ssh/ssh_host_rsa_key
-HostKey /etc/ssh/ssh_host_dsa_key
-HostKey /etc/ssh/ssh_host_ecdsa_key
-UsePrivilegeSeparation yes
-KeyRegenerationInterval 3600
-ServerKeyBits 768
-SyslogFacility AUTH
-LogLevel INFO
-LoginGraceTime 120
-PermitRootLogin no
-StrictModes yes
-RSAAuthentication yes
-PubkeyAuthentication yes
-IgnoreRhosts yes
-RhostsRSAAuthentication no
-HostbasedAuthentication no
-PermitEmptyPasswords no
-ChallengeResponseAuthentication no
-PasswordAuthentication no
-X11Forwarding yes
-X11DisplayOffset 10
-PrintMotd no
-PrintLastLog yes
-TCPKeepAlive yes
-AcceptEnv LANG LC_*
-Subsystem sftp /usr/lib/openssh/sftp-server
-UsePAM yes
-AllowUsers calendros
-EOF
-
-cat > "$DESTDIR/etc/apt/sources.list" <<EOF
-deb $MIRROR $RELEASE main universe
-deb http://security.ubuntu.com/ubuntu/ $RELEASE-security main universe
-EOF
-
-# /etc/default files:
-cat > "$DESTDIR/etc/default/console-setup"<<EOF
-VERBOSE_OUTPUT="no"
-ACTIVE_CONSOLES="/dev/ttyS0"
-CHARMAP="UTF-8"
-CODESET="Uni2"
-FONTFACE="Fixed"
-FONTSIZE="16"
-if [ -f /etc/default/keyboard ]; then
- . /etc/default/keyboard
-fi
-EOF
-cat >"$DESTDIR/etc/default/keyboard"<<EOF
-XKBMODEL="pc105"
-XKBLAYOUT="fr"
-XKBVARIANT="bepo"
-XKBOPTIONS=""
-EOF
-cat >"$DESTDIR/etc/default/locale"<<EOF
-LANG="en_US.UTF-8"
-LC_TIME="en_DK.UTF-8"
-LC_PAPER="en_GB.UTF-8"
-LC_MEASUREMENT="en_GB.UTF-8"
-EOF
-
-cat >>"$DESTDIR/etc/bash.bashrc"<<EOF
-# enable bash completion in interactive shells
-if ! shopt -oq posix; then
- if [ -f /usr/share/bash-completion/bash_completion ]; then
- . /usr/share/bash-completion/bash_completion
- elif [ -f /etc/bash_completion ]; then
- . /etc/bash_completion
- fi
-fi
-alias ls="ls --color=aut"
-alias l="ls -CF"
-alias ll="l -lh"
-alias la="l -a"
-alias e="vim"
-alias rm='rm -i'
-alias cp='cp -i'
-alias mv='mv -i'
-export PAGER=less
-export EDITOR=vim
-export VISUAL=vim
-EOF
-
-mkdir -p "$DESTDIR/etc/vim"
-cat >"$DESTDIR/etc/vim/vimrc"<<EOF
-set nocompatible
-set modelines=0
-set backspace=2
-syntax on
-set autoindent
-set ts=4
-set shiftwidth=4
-set ruler
-set laststatus=2
-set statusline=%<%f%h%m%r%=%l,%c\ %P
-set wildmode=list:full
-set nobackup nowritebackup
-set hlsearch
-set whichwrap=<,>,[,]
-set scrolloff=1
-EOF
-
-rm -r "$DESTDIR/etc/skel"
-mkdir -p "$DESTDIR/etc/skel"
-
-cat > "$DESTDIR/init-stage2.sh" << EOF
-#!/bin/sh
-export PATH="/usr/sbin:/usr/bin:/sbin:/bin"
-mount -no remount,rw /
-mount -t proc proc /proc
-mount -t sysfs sysfs /sys
-
-/debootstrap/debootstrap --second-stage
-
-# second stage may unmount this...
-[ -e /proc/mounts ] || mount -t proc proc /proc
-[ -e /sys/kernel ] || mount -t sysfs sysfs /sys
-busybox mdev -s
-
-echo '------ mounts:'
-cat /proc/mounts
-echo '------'
-
-mv /etc/default/extlinux /etc/default/extlinux.dist
-cat >/etc/default/extlinux<<EOF2
-EXTLINUX_UPDATE="true"
-EXTLINUX_ALTERNATIVES="default"
-EXTLINUX_DEFAULT="l0"
-EXTLINUX_ENTRIES="all"
-EXTLINUX_MEMDISK="true"
-EXTLINUX_MEMDISK_DIRECTORY="/boot"
-EXTLINUX_MENU_LABEL="Ubuntu GNU/Linux, kernel"
-EXTLINUX_OS_PROBER="false"
-EXTLINUX_PARAMETERS="ro quiet console=ttyS0,115200n8 panic=120 oops=panic"
-EXTLINUX_ROOT="root=/dev/vda"
-EXTLINUX_THEME="none"
-EXTLINUX_TIMEOUT="1" # wait 1 tenth of a second (0 is wait forever...)
-EOF2
-[ -e /dev/root ] || ln -sv /dev/vda /dev/root
-extlinux -i /boot/extlinux/
-
-passwd -d -l root
-useradd -M -b /home -d /home/calendros -U -G sudo -s /bin/bash calendros
-mkdir -p /home/calendros/.ssh/
-touch /home/calendros/.ssh/authorized_keys
-chmod 700 /home/calendros/.ssh
-chmod 600 /home/calendros/.ssh/authorized_keys
-chown calendros:calendros -R /home/calendros
-echo '. /etc/bash.bashrc' >~root/.bashrc
-echo '. ~/.bashrc' >~root/.bash_profile
-echo '. /etc/bash.bashrc' >~calendros/.bashrc
-echo '. ~/.bashrc' >~calendros/.bash_profile
-
-locale-gen en_US.UTF-8 en_GB.UTF-8 en_DK.UTF-8 fr_FR.UTF-8
-
-# dhclient may erase /etc/resolv.conf, and is not really useful here
-#ip link set eth0 up
-#dhclient eth0
-#apt-get update
-
-echo "Dropping a shell, press Ctrl-D or type exit to finish."
-/bin/bash
-
-rm -v /etc/udev/rules.d/70-persistent-*.rules
-
-echo "Bootstrap ended, poweroff in 10seconds..."
-rm /init-stage2.sh
-#sleep 10 || exec /bin/bash # for debug
-#poweroff & # does not work
-sync
-fuser -k /
-sleep 1
-mount -o remount,ro /
-exit 0 # will panic, but does not matter now (don't know how to shutdown o/w)
-EOF
-chmod +x "$DESTDIR/init-stage2.sh"
-
-cat >&2 <<EOF
-I: please umount destination blockdev...
-I: like: sudo umount -v "$DESTDIR"
-I: then run vm, deboostrap phase 2 (adjust blockdev)...
-I: export DEV=blockdev; qemu-system-x86_64 -machine accel=kvm -m 256 \\
- -monitor unix:/tmp/debootstrap-monitor,server,nowait \\
- -serial unix:/tmp/debootstrap-serial,server \\
- -vga vmware -display none \\
- -drive file="\$DEV",if=virtio \\
- -kernel "$KERNEL" \\
- -append "quiet rootdelay=10 root=/dev/vda init=/init-stage2.sh console=ttyS0,115200n8"
-I: To copy this image to another host, remember to run:
-I: extlinux -i /yourcopyplace/boot/extlinux/
-I: end of script...
-EOF
-