Mein neuestes Gadget: ein 1GB großer USB-Stick. Darauf kann man ganz passabel ein Debian installieren, bei dem die Root Partition verschlüsselt ist und nur /boot unverschlüsselt rumliegt. Damit das ganze mit Windows auch einigermaßen zu nutzen ist, gibt es noch eine 256MB große VFAT Partition. Darauf läuft jetzt ein Mini-Linux inlusive X11.
Das ganze funktioniert natürlich auch mit jedem anderen Linux. Da ich aber nicht weiß, wie man z.B. eine Minimal Suse Installation in ein Verzeichnis macht, kommt hier also die Debian Anleitung.
Friday, 11. November 2005
Debian in der Hosentasche
Für diese Anleitung gehe ich davon aus, dass der Stick als Gerät /dev/sda vorliegt.
1. Gerät ausnullen
Hiermit wird das komplette Gerät einmalig überschrieben und anschließendes ausgenullt. Vorsicht, falls man nicht das richtige Gerät benutzt, wird womöglich eine Festplatte ausgenullt.
Das ist ein optionaler Schritt, der aufgrund der kontinuierlichen Schreibzugriffe dem Stick schaden könnte, es ist also nicht unbedingt zu
empfehlen. Für normale Anwendungen dürfte das Löschen des Sticks ausreichen.
2. Partitionen erstellen:
Es werden 3 Partitionen erstellt. Die erste eine 256 MB große VFAT Datenpartition, damit man den Stick auch unter Windows als Datenträger nutzen kann, eine 15MB große /boot und der Rest als /root Partition.
Swap wird nicht erstellt, es kann später ins RAM gemounted werden (es würde sonst zu viele Schreibzugriffe auf den Stick auslösen und ihn so zu schnell altern lassen). Man kann später auch eine schon vorhandene Swap Partition auf dem Rechner nutzen, allerdings ist diese Voraussetzung nicht an jedem Rechner gegeben.
Achtung, das ist eine Zeile.
3. nochmaliges Überschreiben
Nochmaliges Überschreiben der Partition, auf der später / eingehängt wird. Auch hier gilt, das ist ein optionaler Schritt, der aufgrund der kontinuierlichen Schreibzugriffe nicht unbedingt zu empfehlen ist.
4. Benötigte Module laden:
Falls im aktuellen Kernel dm-crypt und der verwendete Verschlüsselungsalgorithmus als Modul vorhanden ist, die folgenden beiden Module laden:
Falls die Unterstüzung für dm-crypt fehlt, muß ein neuer Kernel erstellt werden. Wie das genau geht, übersteigt leider den Umfang dieser Anleitung. Was im Kernel aktiviert werden muß, habe ich aber bereits hier beschrieben.
5. Erstellung des Containers, der das Root-Dateisystem aufnehmen soll
Jetzt wird eine logische Verbindung zwischen der zu verschlüsselnden Partition und eines entschlüsselten Gerätes hergestellt. Hier wird jetzt der gewünschte Schlüssel angegeben.
Ein MapperDevice wird erstellt, in das die verschlüsselte Partition gemounted wird. Das gemappte Device befindet sich dann in /dev/mapper
Das sollte man unbedingt mit dem Parameter -y machen, denn dadurch muß das eingegebene Passwort wiederholt werden. Mit der Option -c kann der gewünschte Verschlüsselungsalgorithmus angegeben werden. Wenn nicht anders angegeben, wird der AES-Algorithmus verwendet. Aus dem Passwort wird ein Hash-erstellt, mit dem dann die Partition verschlüsselt wird.
Wenn man einen anderen als den Standard RIPEMD-160 Hash-Algorithmus verwenden möchte, kann man dies mit der Option -h festlegen.
6 Dateisysteme erstellen:
Zunächst wird ein Ext2 Dateisystem erstellt. Hier wird bewußt auf ein Journaling-Dateisystem verzichtet, um unnötige Schreibvorgänge zu verhindern. Mit dem Schalter -m 10 werden 10% der Blöcke für root reserviert, um Fragmentierung und Überlaufen des Dateisystems zu verhindern.
Nun muß noch das Dateisystem für /boot erstellt werden. Hier wird der Partition noch das Label USB_BOOT zugewiesen, um diese Partition später einfach identifizieren und mounten zu können.
Als letztes erstellen wir noch eine VFAT-Partition. Kann ja sein, dass man auch mal von Windows aus nutzen möchte. Auch hier benutzen wir wieder ein Label.
Der Vorteil der Label ist, dass man die gewünschten Partitionen nachher anhand des angegebenen Labels einhängen kann, ohne die genaue Partion zu kennen. (Bei unterschiedlichen Rechnern, kann dem USBSTICK z.B. /dev/sda oder /dev/sdb usw. zugewiesen werden).
7. Mountpunkte anlegen
Der Einfachheit halber lege ich noch die Variable $STICK an, um später damit das
chroot-System zu identifizieren.
8. Base-System installieren:
Jetzt installieren wir ein Sid Basis-System auf dem Stick. Dafür müssen ungefähr 150 MB heruntergeladen werden. Falls das System mit einem Fehler abbricht, besteht die Möglichkeit, das problematische Paket mit --exclude= auszuschließen. Hier hatte ich das Problem mit der libsigc++-1.2-5c102. Diese Bibliothek habe ich nicht gebraucht. Ansonsten kann man das gewünschte Paket später auch nach installieren. Ich hab hir bewußt sid verwendet, da ich den Kernel in Punkt 13 nicht mit den Sarge Tools installiert bekommen habe.
9. Dateisysteme einhängen
10. Chroot betreten
Mit der Variablen LC_ALL wird für das chroot die Lokalisierung vorübergehend auf den Standard (Englisch) gesetzt. Damit wird verhindert, dass folgende nervige Warnungen ausgegeben werden:
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = "",
LC_PAPER = "de_DE@euro",
LC_ADDRESS = "de_DE@euro",
LC_MONETARY = "de_DE@euro",
LC_NUMERIC = "de_DE@euro",
LC_TELEPHONE = "de_DE@euro",
LC_MESSAGES = "de_DE@euro",
LC_COLLATE = "de_DE@euro",
LC_IDENTIFICATION = "de_DE@euro",
LC_MEASUREMENT = "de_DE@euro",
LC_CTYPE = "de_DE@euro",
LC_NAME = "de_DE@euro",
LANG = "de_DE@euro"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
11. Basis System Konfigurieren
Zunächst setzen wir den System namen. Das erledigt ein:
Natürlich sollte name mit etwas sinnvollem ersetzt werden.
Danach erstellen wir die Hosts Datei. Die Sachen in eckigen Klammern sind optional und müssen nicht gesetzt werden.
Als nächstes passen wir die /etc/apt/sources.list an:
Jetzt müssen wir noch die /etc/fstab erstellen:
Wie man sieht, wird sehr oft das Dateisystem tmpfs eingehängt. Dabei handelt es sich um ein pseudo-Dateisystem, das die gewünschten Dateisysteme ins RAM einhängt. Damit gewinnt man Geschwindigkeit, aber verliert die Persistenz der zu speichernden Daten, sprich nach einen Neustart sind die Daten weg.
Nicht vergessen, die Verzeichnisse /home/user/Scratch und /mnt/data anzulegen.
[source]
stick:/# mkdir -p /mnt/data /home/user/Scratch
[/source]
Nun können alle eingetragenen Geräte eingehängt werden.
Um zu viele Schreibvorgänge zu verhindern, wird noch die /etc/mtab nach /proc/mounts verlinkt.
Außerdem wird die Datei Blkid.tab gelöscht und mit /dev/null verklinkt. Bei dieser Datei handelt es sich um einen Cache für Geräte. Wenn die Datei nicht existiert, wird ein Fehler ausgegeben, also stellen wir den Cache ab indem wir die Datei mit /dev/null verlinken.
Außerdem muß noch ein Passwort für Root vergeben werden und ein neuer User Account angelegt werden:
12. Zusätzliche Pakete installieren:
Das installiert die benötigten Pakete, um nachher die verschlüsselte
Root-Partition beim Starten mounten zu können.
Als initrd Skript, habe ich hier auf Basis von saout.de ein Beispielskript erstellt.
Im Prinzip macht das Skript nichts anderes, als die für dm-crypt und USB-Zugriff benötigten Module zu laden, anschließend vom Benutzer die Passphrase abzufragen und anschließend die eigentliche Root Partition zu mounten.
Das Skript sollte nach /usr/local/sbin/mkinitrd.dmcrypt-usb gespeichert werden und ein Symlink von /usr/sbin/mkinitrd nach /usr/local/sbin/mkinitrd.dmcrypt-usb angelegt werden.
Danach installieren wir noch localepurge, um überflüssige Lokalisierungen gleich nach dem installieren zu löschen, um unnötigen Platzverbrauch zu vermeiden.
13. Kernel-image installieren
Der Kernel sollte mittels des gegebenen initrd-Skriptes problemlos erstellt werden. Nun brauchen wir noch einen Bootloader.
14. Bootloader installieren
Nun brauchen wir noch eine Konfigurationsdatei für den Grub.
Diese Datei nach /etc/grub/menu.lst speichern.
15. Zusätzliche Pakete installieren
Natürlich alles optional, aber die Idee ist klar. Selbst der X-Server kann auf einem USB-Stick gestartet werden. Als letzten Befehl wird noch angegeben, dass alle heruntergeladene Pakete gelöscht werden sollen, um Platz zu sparen. Sind ja schon installiert.
16. Chroot verlassen:
17. Aufräumen
18. Reboot:
19. Stick Mounten
Um den Stick in einem anderen Rechner mounten zu können, muß dieser auch cryptsetup unterstüzen. Anderfalls kann man nur die VFAT Partition mounten. Danach weiter wie gehabt
Inklusive X-Server mit fluxbox als Window-Manager habe ich auf dem Stick jetzt knapp 400 MB verbraucht. Bleibt noch genug Platz für zusätzliche Daten.
Orginal-Howto: erschienen bei debian-administration.org und saout.de von Dave Vehrs
1. Gerät ausnullen
CODE:
root@ballenstedt:~# shred -n 1 -z -v /dev/sda
Hiermit wird das komplette Gerät einmalig überschrieben und anschließendes ausgenullt. Vorsicht, falls man nicht das richtige Gerät benutzt, wird womöglich eine Festplatte ausgenullt.
Das ist ein optionaler Schritt, der aufgrund der kontinuierlichen Schreibzugriffe dem Stick schaden könnte, es ist also nicht unbedingt zu
empfehlen. Für normale Anwendungen dürfte das Löschen des Sticks ausreichen.
2. Partitionen erstellen:
Es werden 3 Partitionen erstellt. Die erste eine 256 MB große VFAT Datenpartition, damit man den Stick auch unter Windows als Datenträger nutzen kann, eine 15MB große /boot und der Rest als /root Partition.
Swap wird nicht erstellt, es kann später ins RAM gemounted werden (es würde sonst zu viele Schreibzugriffe auf den Stick auslösen und ihn so zu schnell altern lassen). Man kann später auch eine schon vorhandene Swap Partition auf dem Rechner nutzen, allerdings ist diese Voraussetzung nicht an jedem Rechner gegeben.
CODE:
root@ballenstedt:~# parted /dev/sda "mklabel msdos mkpart primary 0 256
mkpart primary 257 272 mkpart primary ext2 273 -0"
Achtung, das ist eine Zeile.
3. nochmaliges Überschreiben
Nochmaliges Überschreiben der Partition, auf der später / eingehängt wird. Auch hier gilt, das ist ein optionaler Schritt, der aufgrund der kontinuierlichen Schreibzugriffe nicht unbedingt zu empfehlen ist.
CODE:
root@ballenstedt:~# shred -n 1 -v /dev/sda3
4. Benötigte Module laden:
Falls im aktuellen Kernel dm-crypt und der verwendete Verschlüsselungsalgorithmus als Modul vorhanden ist, die folgenden beiden Module laden:
CODE:
root@ballenstedt:~# modprobe dm-crypt
root@ballenstedt:~# modprobe aes
Falls die Unterstüzung für dm-crypt fehlt, muß ein neuer Kernel erstellt werden. Wie das genau geht, übersteigt leider den Umfang dieser Anleitung. Was im Kernel aktiviert werden muß, habe ich aber bereits hier beschrieben.
5. Erstellung des Containers, der das Root-Dateisystem aufnehmen soll
Jetzt wird eine logische Verbindung zwischen der zu verschlüsselnden Partition und eines entschlüsselten Gerätes hergestellt. Hier wird jetzt der gewünschte Schlüssel angegeben.
Ein MapperDevice wird erstellt, in das die verschlüsselte Partition gemounted wird. Das gemappte Device befindet sich dann in /dev/mapper
CODE:
root@ballenstedt:~# cryptsetup -y create usbstick /dev/sda3
Das sollte man unbedingt mit dem Parameter -y machen, denn dadurch muß das eingegebene Passwort wiederholt werden. Mit der Option -c kann der gewünschte Verschlüsselungsalgorithmus angegeben werden. Wenn nicht anders angegeben, wird der AES-Algorithmus verwendet. Aus dem Passwort wird ein Hash-erstellt, mit dem dann die Partition verschlüsselt wird.
Wenn man einen anderen als den Standard RIPEMD-160 Hash-Algorithmus verwenden möchte, kann man dies mit der Option -h festlegen.
6 Dateisysteme erstellen:
Zunächst wird ein Ext2 Dateisystem erstellt. Hier wird bewußt auf ein Journaling-Dateisystem verzichtet, um unnötige Schreibvorgänge zu verhindern. Mit dem Schalter -m 10 werden 10% der Blöcke für root reserviert, um Fragmentierung und Überlaufen des Dateisystems zu verhindern.
CODE:
root@ballenstedt:~# mkfs.ext2 -m 10 /dev/mapper/usbstick
mke2fs 1.37 (21-Mar-2005)
Dateisystem-Label=
OS-Typ: Linux
Blockgröße=4096 (log=2)
Fragmentgröße=4096 (log=2)
90432 Inodes, 180731 Blöcke
18073 Blöcke (10.00%) reserviert für den Superuser
erster Datenblock=0
6 Blockgruppen
32768 Blöcke pro Gruppe, 32768 Fragmente pro Gruppe
15072 Inodes pro Gruppe
Superblock-Sicherungskopien gespeichert in den Blöcken:
32768, 98304, 163840
Schreibe Inode-Tabellen: erledigt
Schreibe Superblöcke und Dateisystem-Accountinginformationen: erledigt
Das Dateisystem wird automatisch alle 37 Mounts bzw. alle 180 Tage überprüft,
je nachdem, was zuerst eintritt. Veränderbar mit tune2fs -c oder -t .
Nun muß noch das Dateisystem für /boot erstellt werden. Hier wird der Partition noch das Label USB_BOOT zugewiesen, um diese Partition später einfach identifizieren und mounten zu können.
CODE:
root@ballenstedt:~/usb# mkfs.ext2 -L USB_BOOT /dev/sda2
mke2fs 1.37 (21-Mar-2005)
Dateisystem-Label=USB_BOOT
OS-Typ: Linux
Blockgröße=1024 (log=0)
Fragmentgröße=1024 (log=0)
4016 Inodes, 16064 Blöcke
803 Blöcke (5.00%) reserviert für den Superuser
erster Datenblock=1
2 Blockgruppen
8192 Blöcke pro Gruppe, 8192 Fragmente pro Gruppe
2008 Inodes pro Gruppe
Superblock-Sicherungskopien gespeichert in den Blöcken:
8193
Schreibe Inode-Tabellen: erledigt
Schreibe Superblöcke und Dateisystem-Accountinginformationen: erledigt
Das Dateisystem wird automatisch alle 24 Mounts bzw. alle 180 Tage überprüft,
je nachdem, was zuerst eintritt. Veränderbar mit tune2fs -c oder -t .
Als letztes erstellen wir noch eine VFAT-Partition. Kann ja sein, dass man auch mal von Windows aus nutzen möchte. Auch hier benutzen wir wieder ein Label.
CODE:
root@ballenstedt:~/usb# mkfs.vfat -F 32 -v -n USBSTICK /dev/sda1
mkfs.vfat 2.11 (12 Mar 2005)
/dev/sdc1 has 255 heads and 63 sectors per track,
logical sector size is 512,
using 0xf8 media descriptor, with 530082 sectors;
file system has 2 32-bit FATs and 8 sectors per cluster.
FAT size is 517 sectors, and provides 66127 clusters.
Volume ID is 436e1394, volume label USBSTICK .
Der Vorteil der Label ist, dass man die gewünschten Partitionen nachher anhand des angegebenen Labels einhängen kann, ohne die genaue Partion zu kennen. (Bei unterschiedlichen Rechnern, kann dem USBSTICK z.B. /dev/sda oder /dev/sdb usw. zugewiesen werden).
7. Mountpunkte anlegen
CODE:
root@ballenstedt:~/usb# mkdir /tmp/stick
root@ballenstedt:~/usb# mount /dev/mapper/usbstick /tmp/stick
root@ballenstedt:~/usb# mkdir /tmp/stick/boot
root@ballenstedt:~/usb# mount /dev/sda2 /tmp/stick/boot
root@ballenstedt:~/usb# STICK=/tmp/stick
Der Einfachheit halber lege ich noch die Variable $STICK an, um später damit das
chroot-System zu identifizieren.
8. Base-System installieren:
CODE:
root@ballenstedt:~/usb# debootstrap --arch i386 sid /tmp/stick
Jetzt installieren wir ein Sid Basis-System auf dem Stick. Dafür müssen ungefähr 150 MB heruntergeladen werden. Falls das System mit einem Fehler abbricht, besteht die Möglichkeit, das problematische Paket mit --exclude=
9. Dateisysteme einhängen
CODE:
root@ballenstedt:~/usb# mount -t proc proc ${STICK}/proc
root@ballenstedt:~/usb# mount -t sysfs sysfs ${STICK}/sys
10. Chroot betreten
CODE:
root@ballenstedt:~/usb# LC_ALL=C chroot "$STICK" /bin/bash --login
Mit der Variablen LC_ALL wird für das chroot die Lokalisierung vorübergehend auf den Standard (Englisch) gesetzt. Damit wird verhindert, dass folgende nervige Warnungen ausgegeben werden:
QUOTE:
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = "",
LC_PAPER = "de_DE@euro",
LC_ADDRESS = "de_DE@euro",
LC_MONETARY = "de_DE@euro",
LC_NUMERIC = "de_DE@euro",
LC_TELEPHONE = "de_DE@euro",
LC_MESSAGES = "de_DE@euro",
LC_COLLATE = "de_DE@euro",
LC_IDENTIFICATION = "de_DE@euro",
LC_MEASUREMENT = "de_DE@euro",
LC_CTYPE = "de_DE@euro",
LC_NAME = "de_DE@euro",
LANG = "de_DE@euro"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
11. Basis System Konfigurieren
Zunächst setzen wir den System namen. Das erledigt ein:
CODE:
stick:/# echo "name" >/etc/hostname
Natürlich sollte name mit etwas sinnvollem ersetzt werden.
Danach erstellen wir die Hosts Datei. Die Sachen in eckigen Klammern sind optional und müssen nicht gesetzt werden.
CODE:
stick:/# cat <<EOF >/etc/hosts
# Begin /etc/hosts
127.0.0.1 localhost [Aliase]
[192.168.1.1 hostname.meinedomain]
# End /etc/hosts
EOF
stick:/#
Als nächstes passen wir die /etc/apt/sources.list an:
CODE:
stick:/# cat <<EOF >/etc/apt/sources.list
# Debian SID Sources
deb http://ftp.de.debian.org/debian sarge main contrib non-free
deb http://ftp.de.debian.org/debian etch main contrib non-free
deb http://ftp.de.debian.org/debian sid main contrib non-free
deb-src http://ftp.de.debian.org/debian sarge main contrib non-free
deb-src http://ftp.de.debian.org/debian etch main contrib non-free
deb-src http://ftp.de.debian.org/debian sid main contrib non-free
EOF
stick:/#
Jetzt müssen wir noch die /etc/fstab erstellen:
CODE:
stick:/# cat <<EOF >/etc/fstab
# Begin /etc/fstab
#
# filesystem mount-point type options dump fsck
LABEL=USB_BOOT /boot ext2 defaults,noatime 0 2
proc /proc proc defaults 0 0
sysfs /sys sysfs defaults 0 0
tmpfs /dev/shm tmpfs defaults,noatime 0 0
devpts /dev/pts devpts defaults,noatime 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
tmpfs /etc/network/run tmpfs defaults,noatime 0 0
tmpfs /home/user/Scratch tmpfs defaults,noatime 0 0
LABEL=USBSTICK /mnt/data vfat noatime,iocharset=iso8859-15,codepage=850,users 0 0
/dev/mapper/rootfs / ext2 defaults,errors=remount-ro,noatime 0 1
#Warning: By mounting /var/log on tmpfs, logs will only be available for the current session.
EOF
stick:/#
Wie man sieht, wird sehr oft das Dateisystem tmpfs eingehängt. Dabei handelt es sich um ein pseudo-Dateisystem, das die gewünschten Dateisysteme ins RAM einhängt. Damit gewinnt man Geschwindigkeit, aber verliert die Persistenz der zu speichernden Daten, sprich nach einen Neustart sind die Daten weg.
Nicht vergessen, die Verzeichnisse /home/user/Scratch und /mnt/data anzulegen.
[source]
stick:/# mkdir -p /mnt/data /home/user/Scratch
[/source]
Nun können alle eingetragenen Geräte eingehängt werden.
CODE:
stick:/# mount -a
Um zu viele Schreibvorgänge zu verhindern, wird noch die /etc/mtab nach /proc/mounts verlinkt.
CODE:
stick:/# ln -sf /proc/mounts /etc/mtab
Außerdem wird die Datei Blkid.tab gelöscht und mit /dev/null verklinkt. Bei dieser Datei handelt es sich um einen Cache für Geräte. Wenn die Datei nicht existiert, wird ein Fehler ausgegeben, also stellen wir den Cache ab indem wir die Datei mit /dev/null verlinken.
CODE:
stick:/#ln -sf /dev/null /etc/blkid.tab
Außerdem muß noch ein Passwort für Root vergeben werden und ein neuer User Account angelegt werden:
CODE:
stick:/# shadowconfig on
stick:/# passwd
Enter new UNIX password:
Retype new UNIX password:
stick:/# passwd: password updated successfully
stick:/# groupadd user
stick:/# useradd -s bash -g user user
stick:/# passwd user
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
stick:/#
12. Zusätzliche Pakete installieren:
CODE:
stick:/# apt-get update
stick:/# apt-get install cryptsetup dmsetup libdevmapper1.01
stick:/# apt-get install module-init-tools cramfsprogs
stick:/# apt-get clean
Das installiert die benötigten Pakete, um nachher die verschlüsselte
Root-Partition beim Starten mounten zu können.
Als initrd Skript, habe ich hier auf Basis von saout.de ein Beispielskript erstellt.
Im Prinzip macht das Skript nichts anderes, als die für dm-crypt und USB-Zugriff benötigten Module zu laden, anschließend vom Benutzer die Passphrase abzufragen und anschließend die eigentliche Root Partition zu mounten.
Das Skript sollte nach /usr/local/sbin/mkinitrd.dmcrypt-usb gespeichert werden und ein Symlink von /usr/sbin/mkinitrd nach /usr/local/sbin/mkinitrd.dmcrypt-usb angelegt werden.
CODE:
stick:/# ln -sf /usr/local/sbin/mkinitrd.dmcrypt-usb /usr/sbin/mkinitrd
stick:/# chown root.root /usr/local/sbin/mkinitrd.dmcrypt-usb
stick:/# chmod 750 /usr/local/sbin/mkinitrd.dmcrypt-usb
Danach installieren wir noch localepurge, um überflüssige Lokalisierungen gleich nach dem installieren zu löschen, um unnötigen Platzverbrauch zu vermeiden.
CODE:
stick:/# apt-get install localepurge
13. Kernel-image installieren
CODE:
stick:/# apt-get install linux-image-2.6.14-1-686
Der Kernel sollte mittels des gegebenen initrd-Skriptes problemlos erstellt werden. Nun brauchen wir noch einen Bootloader.
14. Bootloader installieren
CODE:
stick:/# apt-get install grub
stick:/# grub-install --no-floppy /dev/sdc
Probing devices to guess BIOS drives. This may take a long time.
Installation finished. No error reported.
This is the contents of the device map /boot/grub/device.map.
Check if this is correct or not. If any of the lines is incorrect,
fix it and re-run the script `grub-install'.
(hd0) /dev/hda
(hd1) /dev/hdb
(hd2) /dev/sdc
stick:/# grub
GNU GRUB version 0.95 (640K lower / 3072K upper memory)
[ Minimal BASH-like line editing is supported. For the first word, TAB
lists possible command completions. Anywhere else TAB lists the possible
completions of a device/filename. ]
grub> root (hd2,1)
Filesystem type is ext2fs, partition type 0x83
grub> setup (hd2)
Checking if "/boot/grub/stage1" exists... no
Checking if "/grub/stage1" exists... yes
Checking if "/grub/stage2" exists... yes
Checking if "/grub/e2fs_stage1_5" exists... yes
Running "embed /grub/e2fs_stage1_5 (hd2)"... 15 sectors are embedded.
succeeded
Running "install /grub/stage1 (hd2) (hd2)1+15 p (hd2,1)/grub/stage2 /grub/menu
.lst"... succeeded
Done.
grub> quit
stick:/#
Nun brauchen wir noch eine Konfigurationsdatei für den Grub.
CODE:
Beispiel menu.lst erstellen:
# Standardwert festlegen
default 0
# timeout in Sekunden
timeout 5
# Farbeinstellungen
color green/black black/green
title Debian GNU/Linux-2.6.14-1-686
root (hd0,0)
kernel /vmlinuz-2.6.14-1-686 root=/dev/ram0 init=/sbin/init
initrd /initrd.img-2.6.14-1-686
savedefault
boot
title Debian GNU/Linux-2.6.14-1-686 (Rescue/Single)
root (hd0,0)
kernel /vmlinuz-2.6.11-1-686 root=/dev/ram0 init=/sbin/init single
initrd /initrd.img-2.6.14-1-686
boot
title Memtest86+
root (hd0,0)
kernel /memtest86+.bin
Diese Datei nach /etc/grub/menu.lst speichern.
15. Zusätzliche Pakete installieren
CODE:
apt-get install mutt vim ssh gnupg screen ...
apt-get install fluxbox xbase-clients x11-common
apt-get clean
Natürlich alles optional, aber die Idee ist klar. Selbst der X-Server kann auf einem USB-Stick gestartet werden. Als letzten Befehl wird noch angegeben, dass alle heruntergeladene Pakete gelöscht werden sollen, um Platz zu sparen. Sind ja schon installiert.
16. Chroot verlassen:
CODE:
stick:/# umount -a
stick:/# umount /proc
stick:/# exit
17. Aufräumen
CODE:
root@ballenstedt:~# cd
root@ballenstedt:~# umount /tmp/stick
root@ballenstedt:~# cryptsetup remove usbstick
18. Reboot:
CODE:
root@ballenstedt:~# shutdown -r now
19. Stick Mounten
Um den Stick in einem anderen Rechner mounten zu können, muß dieser auch cryptsetup unterstüzen. Anderfalls kann man nur die VFAT Partition mounten. Danach weiter wie gehabt
CODE:
root@ballenstedt:~# cryptsetup create stick /dev/sda3
root@ballenstedt:~# mount /dev/mapper/stick /mnt/stick
root@ballenstedt:~# mount /dev/sda2 /mnt/stick/boot
root@ballenstedt:~# mount /dev/sda1 /mnt/data
Inklusive X-Server mit fluxbox als Window-Manager habe ich auf dem Stick jetzt knapp 400 MB verbraucht. Bleibt noch genug Platz für zusätzliche Daten.
Orginal-Howto: erschienen bei debian-administration.org und saout.de von Dave Vehrs
Trackbacks
Trackback specific URI for this entry
No Trackbacks
