Alternative Basisinstallation

Betrifft OS:
FreeBSD

FreeBSD mithilfe FreeBSD 7.0 Release Live-Dateisystem auf Rechner mit i386-Architektur (PC-kompatible Rechner) installieren.

Vorteile:

Nachteile:

  • Min. 512 MB RAM
  • Aufwändiger als die Sysinstall installation.
  • Performance verlust durch Datenverschlüsselung.
  • Datenverschlüsselung kann in manchen Situationen wie Bsp. akuter Stromausfall, die Datenwiederherstellung verunmöglichen.

Annahmen:

  • IP-Adresse: 192.168.0.2
  • Default Gateway: 192.168.0.1
  • Primary Nameserver: 192.168.0.1

  • Immer die gleiche Tastenzuordnung Bsp. german.iso oder swissgerman.iso.

  • Alle Tastenzuordnungen anzeigen
    ls /dist/usr/share/syscons/keymaps

Vorbereitung

Tastenzuordnung wechseln

kbdcontrol -l /dist/usr/share/syscons/keymaps/Tastenzuordnung

Shell wechseln

tcsh

LiveFS konfigurieren

# mkdir -v /0 /a /b
# rm /sbin
# ln -s /dist/sbin /
# setenv PATH $PATH
# mdmfs -M -s 300m md /0
# cp -Rv /dist/bin /dist/boot /dist/etc /dist/lib /dist/sbin /dist/usr /0
# rm -rv /bin /boot /etc /sbin /usr
# ln -sv /0/bin /0/boot /0/etc /0/lib /0/sbin /0/usr /
# setenv PATH $PATH

Benutzer wechseln

su root

Netzwerkschnittstelle konfigurieren

# ifconfig vr0 inet 192.168.0.2/16

Resolver konfigurieren

# echo "nameserver 192.168.0.1">/etc/resolv.conf

Standardroute konfigurieren

# route add default 192.168.0.1

Optionaler Remote-Zugriff

Dateisysteme

Drei Slices erzeugen

# sysinstall diskPartitionEditor

Bsp.

  • Bootslice ad0s1 mit min. 128 MB und bootbar.
  • Swapslice ad0s2 mit min. 32 MB und nicht bootbar.
  • Systemslice ad0s3 mit min. 2 GB und nicht bootbar.

Änderungen mit w übernehmen.

Swap-Dateisystem erzeugen

# dd bs=1m if=/dev/urandom of=/dev/ad0s2
# bsdlabel -w ad0s2
# bsdlabel -e ad0s2

b:* * swap

Boot-Dateisystem erzeugen

# dd bs=1m if=/dev/urandom of=/dev/ad0s1
# bsdlabel -B -w ad0s1
# newfs -U ad0s1a

Boot-Dateisystem mounten

# mount /dev/ad0s1a /a

Boot-Verzeichnisse konfigurieren

# mkdir -v /a/etc /a/keyfiles
# chmod 700 /a/keyfiles

Systemschlüssel erzeugen

# dd bs=1m count=1 if=/dev/urandom of=/a/keyfiles/ad0s3.key

System-Dateisystem erzeugen

# geli init -b -e Blowfish -K /a/keyfiles/ad0s3.key -l 448 -P -s 4096 ad0s3

  • Das -b Flag nicht vergessen!
  • Das -P Flag verschlüsselt ohne Passphrase.

# geli attach -k /a/keyfiles/ad0s3.key -p ad0s3

Das -p Flag entschlüsselt ohne Passphrase.

# dd bs=1m if=/dev/urandom of=/dev/ad0s3.eli
# bsdlabel -w ad0s3.eli
# bsdlabel -e ad0s3.eli

a:128m * 4.2BSD # Min. erforderlicher Speicherplatz.
d:20m * 4.2BSD # Min. erforderlicher Speicherplatz.
e:20m * 4.2BSD # Min. erforderlicher Speicherplatz.
f:1536m * 4.2BSD # Min. erforderlicher Speicherplatz.
g:* * 4.2BSD # Restlicher Speicherplatz.

# newfs -U ad0s3.elia
# newfs -U ad0s3.elid
# newfs -U ad0s3.elie
# newfs -U ad0s3.elif
# newfs -U ad0s3.elig

System-Dateisystem mounten

# mount /dev/ad0s3.elia /b

System-Verzeichnisse konfigurieren

# mkdir -v /b/etc /b/home /b/tmp /b/usr /b/var

System-Dateisysteme mounten

# mount /dev/ad0s3.elid /b/var
# mount /dev/ad0s3.elie /b/tmp
# mount /dev/ad0s3.elif /b/usr
# mount /dev/ad0s3.elig /b/home

System-Verzeichnisse konfigurieren

# chmod 1777 /b/tmp
# ln -s /tmp /b/var/tmp

LiveFS konfigurieren

# rm -rv /tmp /var
# ln -sv /b/tmp /b/var /
# mkdir /var/empty (1)

  • (1) Nur bei Remote-Zugriff.

Synchronisation

csup konfigurieren in /usr/share/examples/cvsup/standard-supfile

*default prefix=/b/usr
*default release=cvs tag=RELENG_7_0 (1)

FreeBSD herunterladen

# csup -b /b/var/db -h CVSup-Server /usr/share/examples/cvsup/standard-supfile

CVSup-Server ersetzen Bsp.

  • cvsup.at.FreeBSD.org
  • cvsup.ch.freebsd.org
  • cvsup.de.FreeBSD.org

Bauen & installieren

Umgebungsvariable setzen

# setenv MAKEOBJDIRPREFIX "/b/usr/obj"

Welt bauen

# cd /b/usr/src
# make -DNO_PROFILE -j4 buildworld

Kernelkonfigurationsdatei anpassen in /b/usr/src/sys/i386/conf/GENERIC

device crypto
makeoptions ATKBD_DFLT_KEYMAP="Tastenzuordnung"
options ATKBD_DFLT_KEYMAP
options GEOM_ELI
#cpu (1)
cpu (2)
ident CLIENT
#makeoptions DEBUG=-g
options SMP (3)
#device kbdmux
  • (1) Alle überflüssigen CPU Typen.
  • (2) CPU Typ deines Systems.
  • (3) Nur SMP-Systeme, aussgeschlossen i386 und i486 Maschinen.

Kernel bauen und installieren

# make -DNO_PROFILE buildkernel
# make -DNO_PROFILE installkernel DESTDIR=/b

Welt installieren

# cp /b/usr/src/share/examples/etc/make.conf /b/etc
# mergemaster -D /b -i -m /b/usr/src/etc -p -t /b/var/tmp/temproot
# make -DNO_PROFILE installworld DESTDIR=/b
# mergemaster -D /b -i -m /b/usr/src/etc -t /b/var/tmp/temproot
# chmod 700 /b/root

FreeBSD konfigurieren

Boot-Verzeichnis kopieren

# cp -pRv /b/boot /a

Bootvorgang konfigurieren in /a/boot/loader.conf

geli_ad0s3_keyfile0_load="YES"
geli_ad0s3_keyfile0_type="ad0s3:geli_keyfile0"
geli_ad0s3_keyfile0_name="/keyfiles/ad0s3.key"

Swap- und System-Dateisysteme eintragen in /a/etc/fstab

/dev/ad0s2b.eli none swap sw 0 0
/dev/ad0s3.elia / ufs rw 1 1
/dev/ad0s3.elid /var ufs rw 2 2
/dev/ad0s3.elie /tmp ufs rw 0 0
/dev/ad0s3.elif /usr ufs rw 2 2
/dev/ad0s3.elig /home ufs rw 2 2

Datei fstab kopieren

# cp /a/etc/fstab /b/etc

Dump, Swap und Hostname konfigurieren in /b/etc/rc.conf

dumpdev="NO"
geli_swap_flags="-d -e Blowfish -l 448 -s 4096"
hostname="client"

Beim ersten FreeBSD start, eine Datenbank für Mail-Aliases erstellen
# newaliases

Fehlerquellen

Hardware

  • GELI Passphrase & USB Tastatur vertragen sich nicht immer.
  • CD-/DVD-ROMs als Installationsmedium erzeugen gerne Lesefehler.
  • Einige HWs, egal ob PS/2 oder USB-Tastatur, reagieren bsp. erst nach 5x ENTER drücken. In solchen Szenarien sollte keine GELI Passphrase verwendet werden.
  • Wird ein externes Speichermedium für den Bootvorgang verwendet, ist es sehr wichtig, dass die Datei /etc/fstab im Hauptsystem mit der Datei …/etc/fstab des externen Speichermediums übereinstimmt.

Siehe auch