commit
d21c52be1c
@ -0,0 +1,112 @@ |
||||
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... |
@ -0,0 +1,19 @@ |
||||
How to make library functions available to manifest, explorer, etc. |
||||
|
||||
Some ideas / background: |
||||
|
||||
- do not have the user to source $__lib/foo if not needed |
||||
- have $__cdist_lib for internal stuff (probably referring to core/) |
||||
|
||||
Implementation: |
||||
|
||||
load_lib() |
||||
{ |
||||
. $__cdist_lib/* |
||||
} |
||||
|
||||
run_code_from_user() |
||||
{ |
||||
load_lib |
||||
. file_from_user |
||||
} |
Loading…
Reference in new issue