Minimal

From PostgreSQL_wiki
Jump to: navigation, search

Debian minimal

Een minimal Linux komt op zijn tijd erg goed gelegen, vooral als data extractie in Windows omgevingen voor migratie uit de Windows omgeving aan de orde is. Webhuis heeft voor twee situaties een speciale minimal Linux ontwikkeld, webboot en de bootable USB-stick. Beide versie beschikken over basale tools voor data extractie. Het grote voordeel ligt in de veel hogere en efficientere werkwijze.

Debian minimal webboot

Webboot is een diskless Debian versie, die boot met behulp van PXE start. Diskless boot is een samenspel tussen een werkstation en een server. Het werkstation moet beschikken over de mogelijk om vanaf de netwerkkaart te booten, met het PXE protocol. Eenmaal gestart is het mogelijk om devices aan te haken en software te installeren.
Let op: debirf installeert elke gewenste versie van Debian, binnen de eigen architectuur van de opbouwende host zelf.
De server moet het volgende doen:

  • Beschikken over een werkende dhcp service
  • Een tftpd-hpa service
  • Een netboot kernel en initrd aanbieden

Informatie:

Debirf biedt de simpelste manier voor het bouwen van een webboot linux.

root@host:~# apt-get install fuse-utils psmisc debootstrap fakeroot build-essential lsof debirf
root@host:/home/martin/netboot/minimal# cat debirf.conf 
# DEBIRF configuration file: this will be sourced by bash
DEBIRF_LABEL="webboot"
DEBIRF_BUILDD=/home/martin/netboot
DEBIRF_SUITE=squeeze
DEBIRF_DISTRO=debian
DEBIRF_MIRROR=http://mirror.webhuis.nl:3142/${DEBIRF_DISTRO}
root@host:~# debirf make -c minimal

Na uitvoering van dit uiterst ingewikkelde commando heeft de host na korte tijd het volgende opgebouwd.

root@host:/home/martin/netboot# ls -al
-rw-r--r--  1 root   root      33415 Sep 14 00:33 .bootstrap.log
-rw-r--r--  1 root   root     578312 Sep 14 00:35 .fakeroot-state.webboot
drwxr-xr-x  3 martin martin     4096 Sep 14 00:28 minimal
drwxr-xr-x 20 root   root       4096 Sep 14 00:34 root
-rw-r--r--  1 root   root    2301440 May  6 09:50 vmlinuz-2.6.32-5-686
-rw-r--r--  1 root   root   64092140 Sep 14 00:35 webboot_squeeze_2.6.32-5-686.cgz

Het is verstandig om het image en de bijbehorende kernel bij elkaar te houden voor later gebruik.

De boot server

Op de bootserver is pxe-boot geconfigureerd.

martin@dom0-153:/var/lib/tftpboot$ ls -al 
-rw-r--r--  1 tftp tftp    68 Jan  6  2011 boot.txt
drwxr-xr-x  3 tftp tftp  4096 Sep 13 22:44 debian
-rw-r--r--  1 tftp tftp 26816 Nov 28  2010 pxelinux.0
drwxr-xr-x  2 tftp tftp  4096 Sep 14 00:38 pxelinux.cfg

De directory pxelinux.cfg bevat het bestand default:

martin@boot-server:/var/lib/tftpboot$ cat pxelinux.cfg/default
#       Configuratie voor pxe-boot
DISPLAY boot.txt

DEFAULT webboot

LABEL webboot
        kernel debian/squeeze/i386/vmlinuz-2.6.32-5-686
        append vga=791 initrd=debian/squeeze/i386/webboot_squeeze_2.6.32-5-686.cgz  --

In de directory debian/squeeze/ staan de kernel en het webboot image. De diskless machine doet er vanaf de start van pxe ongeveer 60 seconden over om operationeel te zijn.

Installatie voorbereiding

Een webboot installatie vondt plaats op een andere host dan op de machine waarop de installatie uiteindelijk draait. De installatie verloopt in stappen:

  • Met debootstrap in een installatie directory
  • Chroot naar de installatie directory

Noodzakelijke programmatuur:

# apt-get install debootstrap fakeroot
# debootstrap --arch i386 wheezy webboot-wheezy http://mirror.webhuis.nl:3142/debian
# chroot webboot-wheezy/

chrooted

:/# cat /etc/fstab
# UNCONFIGURED FSTAB FOR BASE SYSTEM
LABEL=webboot / ext2 defaults,errors=remount-ro,noatime 0 1
proc /proc proc defaults 0 0
tmpfs /tmp tmpfs defaults,noatime 0 0
tmpfs /var/lock tmpfs defaults,noatime 0 0
tmpfs /var/log tmpfs defaults,noatime 0 0
tmpfs /var/run tmpfs defaults,noatime 0 0
tmpfs /var/tmp tmpfs defaults,noatime 0 0

:/# mount -t proc proc /proc && mount -t sysfs sysfs /sys
:/# mount -a
:/# echo "127.0.0.1 localhost" > /etc/hosts

:/# echo "webboot" > /etc/hostname 

:/# cat /etc/network/interfaces 
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp

:/# cat /etc/resolv.conf 
nameserver 10.68.71.187

:/# apt-get install linux-image-3.2.0-3-686-pae
:/# apt-get install locales-all

:/# addgroup --system admin
:/# useradd -s /bin/bash -g admin -m -k /dev/null martin
:/# passwd root
:/# passwd martin 

:/# apt-get install ntfsprogs scrounge-ntfs dosfstools rsync localepurge gddrescue rungetty sshfs sudo

Bouwen diskless ram image

dhcp

De dhcp service biedt voor een of meerdere werkstations of de volgende wijze een pxe optie:

host webboot.webhuis.nl {
        hardware ethernet 00:68:84:e2:ea:a1;
        next-server 10.99.99.11;
        option root-path "10.99.99.11:/var/lib/tftpboot";
        option host-name "webboot";
        fixed-address 10.99.99.19;
        filename "pxelinux.0";

De dhcp service (op 10.99.99.1) geeft hier aan dat het werkstation voor de volgende stap van het bootproces naar de service tftpboot op de server 10.99.99.11.

tftpboot

Op de server 10.99.99.11 is het bestand pxelinux.0 geinstalleerd. Dit bootprogramma instrueert het werkstation om het bestand pxelinux.cfg/default op te vragen.

pxelinux.cfg/default

Onderstaande pxe default configuratie geeft drie boot mogelijkheden.

  • webboot, een diskless Linux, die volledig in RAM draait.
  • amd64-minimal, een minimale 64 bits Linux
  • i386-minimal, een minimale 32 bits Linux
#       Configuratie voor pxe-boot
DISPLAY boot.txt
DEFAULT webboot
LABEL webboot
        kernel debian/squeeze/i386/vmlinuz-2.6.32-5-686
        append vga=791 initrd=debian/squeeze/i386/webboot_squeeze_2.6.32-5-686.cgz  --
LABEL
start_amd64_minimal
        kernel debian/squeeze/amd64/vmlinuz-2.6.32-5-amd64
        append vga=791 initrd=debian/squeeze/amd64/debirf-minimal_squeeze_2.6.32-5-amd64.cgz  --
LABEL
start_i386_minimal
        kernel debian/squeeze/i386/vmlinuz-2.6.32-5-686
        append vga=791 initrd=debian/squeeze/i386/debirf-minimal_squeeze_2.6.32-5-686.cgz  --
PROMPT 1
TIMEOUT 30

De default aktie is het starten van webboot na 5 seconden.

Debian minimal USB

Een bootable Debian USB is goud waard in een migratie uit Windows naar Linux of bij het herstel van een Linux machine.

  • maak met unetbootin een netinstall aan op een partitie op een usb-stick
  • Boot de doel machine met de usb-stick en voer de installatie uit
  • Grub maakt een foutje door de devices te verwisselen, sda <-> sdb
  • Herstel de fout in grub edit en boot
  • Pas na de boot /etc/fstab aan en doe update-grub

De installatie is nog niet erg minimaal, maar hij werkt.

root@host:~# apt-get clean
root@host:~# apt-get install localepurge
root@host:~# localepurge
root@squeeze-usb-i386:~# ln -s /home/squeeze-usb-i386/var/lib/* /var
root@squeeze-usb-i386:~# ln -s /home/squeeze-usb-i386/var/cache/* /var

Installeer ook nog tools om met Windows file systems te werken:

apt-get install ntfsprogs scrounge-ntfs dosfstools rsync

Op de host

Maak een file system aan voor het OS op de USB stick.

root@host:~# fdisk /dev/sdb
root@host:~# mkfs.ext2 /dev/sdb1

Maak een directory aan op de host om daarin de installatie voor de usb-stick voor te bereiden.

root@host:~# mkdir /usbsystem
root@host:~# debootstrap --arch i386 squeeze /usbsystem http://ftp.nl.debian.org/debian
root@host:~# ./croot.sh /usbsystem

Doe eerst alle stappen uit chrooted en doe daarna:

root@host:~# umount /usbsystem/dev/ /usbsystem/sys /usbsystem/proc /usbsystem/tmp
root@host:~# umount /usbsystem-amd64/dev/ /usbsystem-amd64/sys /usbsystem-amd64/proc /usbsystem-amd64/tmp

chrooted

fstab

# UNCONFIGURED FSTAB FOR BASE SYSTEM
LABEL=USB_ROOT / ext2 defaults,errors=remount-ro,noatime 0 1
proc /proc proc defaults 0 0
tmpfs /tmp tmpfs defaults,noatime 0 0
tmpfs /var/lock tmpfs defaults,noatime 0 0
tmpfs /var/log tmpfs defaults,noatime 0 0
tmpfs /var/run tmpfs defaults,noatime 0 0
tmpfs /var/tmp tmpfs defaults,noatime 0 0

Ruim de bestanden in bovenstaande directories op na een umount.

   6  rm -f /etc/mtab && ln -s /proc/mounts /etc/mtab
   7  echo "127.0.0.1 localhost" > /etc/hosts
   9  apt-get install localepurge
  10  localepurge 
  15  apt-get install linux-image-2.6-686
  16  vi /etc/default/locale 
  17  apt-get install grub
  18  echo lang
  19  echo LANG
  20  echo $LANG
  21  vi /boot/grub/grub.cfg 
  22  groupadd martin
  23  useradd --home /home/martin --shell /bin/bash --gid martin
  24  mkdir /home/martin
  25  useradd --home /home/martin --shell /bin/bash --gid martin
  26  useradd --home-dir /home/martin --shell /bin/bash --gid martin
  27  useradd --home-dir /home/martin --shell /bin/bash --gid martin martin
  28  apt-get install rungetty
  29  sed -i '/getty/d' /etc/inittab
  30  vi rungetty-script
  31  cat >> /etc/inittab << face="courier new">1:2345:respawn:/sbin/rungetty --autologin martin
  32  EOF
  33  cat >> /etc/inittab << face="courier new">1:2345:respawn:/sbin/rungetty --autologin martin EOF
  34  cat >> /etc/inittab << face="courier new">1:2345:respawn:/sbin/rungetty --autologin martin
  35  vi /etc/inittab 
  36  apt-get clean
  37  exit
  38  history    1  uname -a
   2  vi /etc/fstab 
   3  vi /etc/fstab 
   4  vi /etc/fstab 
   5  vi /etc/apt/sources.list
   6  rm -f /etc/mtab && ln -s /proc/mounts /etc/mtab
   7  echo "127.0.0.1 localhost" > /etc/hosts
   8  history 
   9  apt-get install localepurge
  10  localepurge 
  11  apt-cache search linux | grep image | grep 386
  12  apt-cache search linux 
  13  apt-cache search kernel
  14  uname -a
  15  apt-get install linux-image-2.6-686
  16  vi /etc/default/locale 
  17  apt-get install grub
  18  echo lang
  19  echo LANG
  20  echo $LANG
  21  vi /boot/grub/grub.cfg 
  22  groupadd martin
  23  useradd --home /home/martin --shell /bin/bash --gid martin
  24  mkdir /home/martin
  25  useradd --home /home/martin --shell /bin/bash --gid martin
  26  useradd --home-dir /home/martin --shell /bin/bash --gid martin
  27  useradd --home-dir /home/martin --shell /bin/bash --gid martin martin
  28  apt-get install rungetty
  29  sed -i '/getty/d' /etc/inittab
  30  vi rungetty-script
  31  cat >> /etc/inittab << face="courier new">1:2345:respawn:/sbin/rungetty --autologin martin
  32  EOF
  33  cat >> /etc/inittab << face="courier new">1:2345:respawn:/sbin/rungetty --autologin martin EOF
  34  cat >> /etc/inittab << face="courier new">1:2345:respawn:/sbin/rungetty --autologin martin
  35  vi /etc/inittab 
  36  apt-get clean
  37  exit
  38  history

Terug naar: Webhuis bouwstenen