Benutzer-Werkzeuge

Webseiten-Werkzeuge


freebsd:freebsd_-_auf_einen_usb-stick_installieren

FreeBSD (6.1-RC1-i386) - auf einen USB-Stick installieren

der einfache Weg

Einfach von der Installations-CD booten und dann auf den USB-Stick installieren…

Allerdings gibt es bei einer solchen Installation eine Menge zu optimieren. Zum Beispiel sollte man kein Swap auf den Stick legen und auch das "/tmp" sollte in eine Memory-Disk verlegt werden, denn so ein Flash-Speicher hat eine sehr begrenzte Lebensdauer, die in Schreib-Zyklen angegeben wird.

etwas aufwendiger

  • mounte ein CD-ISO-Image an /dist:
# mkdir /dist
# mdconfig -a -f /var/tmp/FreeBSD/6.1-RC1-i386-disc1.iso
  md17
# mount -t cd9660 /dev/md17 /dist
  • USB-Stick in den Port stecken, der ist mit FAT32 vorformatiert. Wir brauchen allerdings eine BSD-Slice und ein Disk-Label auf dem Stick - das folgende Kommando vernichtet alle Daten, die sich zur Zeit auf dem USB-Stick befinden. Erhältst du eine Warnung wie "Geom not found", mach dir keine Sorgen und ignoriere sie:
# fdisk -BI /dev/da0
  • nun brauchen wir noch ein Disk-Label:
# bsdlabel -B -w da0s1
  • und ein Dateisystem auf den USB-Stick schreiben, damit wir ihn an "/mnt" mounten können. Um die Anzahl der Schreibzugriffe auf den USB-Stick zu verringern, verwenden wir die Option "-U" damit soft update aktiviert wird. Zusätzlich werden wir das Dateisystem noch mit einem Label (FreeBSDonUSB) versehen, so kann man die Gerätedatei später wesentlich einfacher finden.
# newfs -U -L FreeBSDonUSB /dev/da0s1a
/dev/da0s1a: 481.0MB (985040 sectors) block size 16384, fragment size 2048
        using 4 cylinder groups of 120.25MB, 7696 blks, 15424 inodes.
        with soft updates
  super-block backups (for fsck -b #) at:
  160, 246432, 492704, 738976
# mount /dev/da0s1a /mnt
  • und jetzt die kinderleichte Installation:
# cd /dist/6.1-RC1/base
# DESTDIR=/mnt ./install.sh 
  You are about to extract the base distribution into /mnt - are you SURE
  you want to do this over your installed system (y/n)? y
  • Jetzt haben wir die Wahl den Generic-Kernel oder den SMP-Kernel zu verwenden, in diesem Beispiel entscheiden wir uns für den Generic-Kernel:
# cd /dist/6.1-RC1/kernels
# DESTDIR=/mnt sh ./install.sh generic
# rmdir /mnt/boot/kernel
# mv /mnt/boot/GENERIC /mnt/boot/kernel
  • Jetzt installieren wir den Boot-Manager, um den USB-Stick bootfähig machen. Wir verwenden hier die Option "noupdate", damit der MBR behandelt wird als wäre er "read-only":
# boot0cfg -v -B -o noupdate da0
#   flag     start chs   type       end chs       offset         size
1   0x80      0:  1: 1   0xa5    480: 63:32           32       985056
version=1.0  drive=0x80  mask=0xf  ticks=182
options=packet,noupdate,nosetdrv
default_selection=F1 (Slice 1)
  • erstelle dir eine "/etc/fstab" auf dem USB-Stick, hier ein einfaches Beispiel. Wir mounten auch /var/tmp an /tmp, wodurch auch dieses Verzeichnis die daten nur flüchtig halten kann:
# Device                Mountpoint      FStype  Options                 Dump    Pass#
/dev/ufs/FreeBSDonUSB   /               ufs     rw,noatime              1       1
md                      /tmp            mfs     rw,-s16M,nosuid,noatime 0       0
md                      /var/run        mfs     rw,-s4M,nosuid,noatime  0       0
md                      /var/log        mfs     rw,-s16M,nosuid,noatime 0       0
/dev/acd0               /cdrom          cd9660  ro,noauto,nosuid        0       0
/proc                   /proc           procfs  rw,noauto               0       0
/tmp                    /var/tmp        nullfs  rw                      0       0

Hier schieben wir noch ein paar sinnvolle Schritte ein, die man auch überspringen kann wenn man die Installation vereinfachen möchte. Allerdings bringt das auch Nachteile mit sich, denn "um sonst" sind sie ja nicht… ;-)

  • Da wir nun ja das UFS-Dateisystem-Label verwenden wollen, um das "root"-Dateisystem zu identifizieren, müssen wir das GEOM-Label-Modul schon mit dem Kernel zusammen laden:
# cat >> /mnt/boot/loader.conf << EOF
geom_label_load="YES"
EOF

Da wir eine vi-Ähnliche Wiederherstellungsfunktion /var/tmp/vi.recover im System haben möchten, ich bin mir nicht sicher ob das hier vorhanden sein wird, werden wir dieses Script runter laden und installieren:

# mkdir -p /mnt/usr/local/etc/rc.d/
# cd /mnt/usr/local/etc/rc.d/
# fetch http://people.freebsd.org/~ceri/FreeBSDonUSB/scripts/mkvirecover
# chmod 555 mkvirecover

In order for commands that use wtmp(5) to work correctly with /var/log on a memory disk, we need to tell newsyslog(8) that it is OK to create an empty /var/log/wtmp. Edit /mnt/etc/newsyslog.conf and add C to the /var/log/wtmp line:

Nach dem unser USB-System hoch gefahren ist, wird sich der Prozess beschweren, der als erstes in die Datei /var/log/wtmp schreiben möchte, weil diese Datei nicht existiert. Damit newsyslog sich nicht beschwert und sich die Datei selbst anlegt, müssen wir ein "C" an die folgende Zeile anhängen:

# vi /mnt/etc/newsyslog.conf
/var/log/wtmp                          644  3     *    @01T05 BC

Das Netzwerk konfigurieren wir so, das es sich die nötigen Daten per DHCP holt. In diesem Beispiel sind die NIC's "fwe0" und "plip0" von der DHCP-Auto-Konfiguration ausgeschlossen, da sie eigentlich nie in einem Netzwerk mit DHCP-Server kommen:

# cat >> /etc/rc.conf << EOF
ifconfig_DEFAULT="DHCP"
ifconfig_fwe0="NOAUTO"
ifconfig_plip0="NOAUTO"
EOF

Auch diese Maßnahme unternehmen wir nur, um die Anzahl der Schreibzugriffe auf den USB-Stick zu minimieren. Hier erstellen wir eine "locate"-Datenbank:

# chroot /mnt /bin/sh
# mount_devfs devfs /dev
# /etc/periodic/weekly/310.locate

… und schalten das wöchentliche Update aus:

Rebuilding locate database:
# cat >> /etc/periodic.conf << EOF
weekly_locate_enable="NO"
weekly_whatis_enable="NO"
EOF

  • installier dir jetzt alle Pakete, die du noch brauchst bzw. möchtest:
# chroot /mnt /bin/sh
# passwd root
# pkg_add -r lsof rsync unzip zsh gnome...

Das wars.

/home/http/wiki/data/pages/freebsd/freebsd_-_auf_einen_usb-stick_installieren.txt · Zuletzt geändert: von manfred