Provisioning Server ideas - bootup kernel on target host via TFTP/PXE - start our code that - enables networking (dhcp) - enables sshd Requires: - Program that creates our blob that needs to be started - for Linux: initrd - Including ssh keys -> known! - startup sshd -------------------------------------------------------------------------------- Setup for installation server: - have dhcpd available - install tftpd server - configure dhcp to tell clients to boot from tftp server - have a kernel -------------------------------------------------------------------------------- Ideas on how to create "blob" - Use tools from system? -> requires same arch on destination! - Use debian|...| base? -> works with cuni! -------------------------------------------------------------------------------- tftp via cuni: debian pxelinux.0 pxelinux.cfg [19:44] kr:tftp% ln -s /usr/lib/syslinux/ -------------------------------------------------------------------------------- How to create the initrd? Base from ... arch? debian? - needs many hardware support / in kernel? - fit to kernel? -------------------------------------------------------------------------------- Based on Debian [21:33] kr:tftp% sudo debootstrap --arch=i386 squeeze debian-squeeze sudo chroot debian-squeeze /bin/bash apt-get install openssh-server -------------------------------------------------------------------------------- Based on Archlinux Edit / create pacman.conf Server = ftp://mirrors.kernel.org/archlinux/$repo/os/i686 [21:40] kr:~% grep -v ^# pacman.conf | grep -v '^$' [options] HoldPkg = pacman glibc SyncFirst = pacman Architecture = auto [core] Include = Server = ftp://mirrors.kernel.org/archlinux/$repo/os/i686 [extra] Include = Server = ftp://mirrors.kernel.org/archlinux/$repo/os/i686 [community] Include = Server = ftp://mirrors.kernel.org/archlinux/$repo/os/i686 [archlinuxfr] Server = http://repo.archlinux.fr/$arch [21:40] kr:tftp% sudo mkarchroot -C ~/pacman.conf archlinuxroot [21:42] kr:tftp% sudo mkarchroot -C ~/pacman.conf archlinuxroot base -------------------------------------------------------------------------------- Initramfs general: - need /init Test in Debian: root@kr:/# ln -s /sbin/init init Create initramfs: [22:47] kr:debian-squeeze% sudo find . -print0 | sudo cpio --null -ov --format=newc | gzip -9 > ../pre-os/initrd.gz -------------------------------------------------------------------------------- Gentoo: http://en.gentoo-wiki.com/wiki/Initramfs It is possible to specify multiple initramfs to be extracted during boot. This can be useful if you want to create a generic initramfs (for example one that does mdadm) and then add modifications in separate files (for example a custom /etc/mdadm.conf for every machine). http://syslinux.zytor.com/wiki/index.php/SYSLINUX#INITRD_initrd_file It supports multiple filenames separated by commas. This is mostly useful for initramfs, which can be composed of multiple separate cpio or cpio.gz archives. Note: all files except the last one are zero-padded to a 4K page boundary. This should not affect initramfs. -------------------------------------------------------------------------------- Multiple initrds, #1: LABEL preos MENU LABEL Pre OS (Debian Squeeze) KERNEL debian-squeeze/boot/vmlinuz-2.6.32-5-686 INITRD debian-squeeze/boot/initrd.img-2.6.32-5-686,pre-os/initrd.gz -------------------------------------------------------------------------------- Debug in rootfs: root@kr:/# passwd Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully test -------------------------------------------------------------------------------- Multiple nics in Debian...