Nachfolgend soll die Installation eines DEBIAN Linux
auf ein USB-Medium beschrieben werden. Hierbei handelt es sich um eine vollständige Installation (kein Kopieren einer Live-Distribution auf ein USB-Medium), so dass nach Erstellung von diesem Medium gestartet werden kann und es voll beschreibbar ist. Einige der nachfolgenden Informationen wurden dieser Webseite entnommen und entsprechend angepasst.
Es wird ein minimales DEBIAN-System vorausgesetzt (Minimalinstallation). Weiterhin ist der Zugriff auf ein DEBIAN Repository notwendig, weil mehrere Pakete benötigt werden.
Nachfolgend wird ein DEBIAN Stretch AMD64 (Version 9.5) als Voraussetzung benutzt. Die Paketliste der Minimalinstallation ist hier zu finden.
Im ersten Schritt wird das USB-Medium in den Rechner mit der Minimalinstallation gesteckt und hoffentlich vom System erkannt. Ein Einhängen ist nicht notwendig. Es erfolgt die Partitionierung des Mediums. Es würde ausreichen, eine einzige große Partition zu erstellen, worauf das Linux dann installiert wird. Nachfolgend soll aber trotzdem eine klassische Installation mit einer boot
-, einer root
- und einer swap
-Partition erstellt werden. Das USB-Medium (Größe: 32 GB) wird nachfolgend als zweite Festplatte (/dev/sdb
) erkannt.
~# fdisk /dev/sdb Command (m for help): o Building a new DOS disklabel with disk identifier 0xa19a2b66. Changes will remain in memory only, until you decide to write them. After that, of course, the previous content won't be recoverable. Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
boot
-Partition (Größe: 200 MB) erstellen:Command (m for help): n Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): p Partition number (1-4, default 1): 1 First sector (2048-61160447, default 2048): Using default value 2048 Last sector, +sectors or +size{K,M,G} (2048-61160447, default 61160447): +200M
Command (m for help): n Partition type: p primary (1 primary, 0 extended, 3 free) e extended Select (default p): e Partition number (1-4, default 2): 2 First sector (411648-61160447, default 411648): Using default value 411648 Last sector, +sectors or +size{K,M,G} (411648-61160447, default 61160447): Using default value 61160447
root
-Partition (der Rest minus etwas für die swap
-Partition) erstellen:Command (m for help): n Partition type: p primary (1 primary, 1 extended, 2 free) l logical (numbered from 5) Select (default p): l Adding logical partition 5 First sector (413696-61160447, default 413696): Using default value 413696 Last sector, +sectors or +size{K,M,G} (413696-61160447, default 61160447): +27G
swap
-Partition (der Rest) erstellen:Command (m for help): n Partition type: p primary (1 primary, 1 extended, 2 free) l logical (numbered from 5) Select (default p): l Adding logical partition 6 First sector (57038848-61160447, default 57038848): Using default value 57038848 Last sector, +sectors or +size{K,M,G} (57038848-61160447, default 61160447): Using default value 61160447
Command (m for help): a Partition number (1-6): 1
Command (m for help): p Disk /dev/sdb: 31.3 GB, 31314149376 bytes 255 heads, 63 sectors/track, 3807 cylinders, total 61160448 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0xa19a2b66 Device Boot Start End Blocks Id System /dev/sdb1 * 2048 411647 204800 83 Linux /dev/sdb2 411648 61160447 30374400 5 Extended /dev/sdb5 413696 57036799 28311552 83 Linux /dev/sdb6 57038848 61160447 2060800 83 Linux
fdisk
verlassen:Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks.
Für die einzelnen Partitionen müssen die Dateisysteme erstellt werden.
boot
-Partition:~# mkfs.ext2 -L boot /dev/sdb1 mke2fs 1.42.5 (29-Jul-2012) Dateisystem-Label=boot OS-Typ: Linux ... Superblock-Sicherungskopien gespeichert in den Blöcken: 8193, 24577, 40961, 57345, 73729 Platz für Gruppentabellen wird angefordert: erledigt Inode-Tabellen werden geschrieben: erledigt Schreibe Superblöcke und Dateisystem-Accountinginformationen: erledigt
root
-Partition:~# mkfs.ext4 -L root /dev/sdb5 mke2fs 1.42.5 (29-Jul-2012) Dateisystem-Label=root OS-Typ: Linux ... Superblock-Sicherungskopien gespeichert in den Blöcken: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000 Platz für Gruppentabellen wird angefordert: erledigt Inode-Tabellen werden geschrieben: erledigt Erstelle Journal (32768 Blöcke): erledigt Schreibe Superblöcke und Dateisystem-Accountinginformationen: erledigt
swap
-Partition:~# mkswap -L swap /dev/sdb6 Setting up swapspace version 1, size = 2060796 KiB LABEL=swap, UUID=4bbbfeb9-fc42-45b2-adaf-97988a2649c4
Jetzt kann das gewünschte DEBIAN-System auf das USB-Medium mit Hilfe von debootstrap
installiert werden. An dieser Stelle wird die Adresse des DEBIAN-Repository benötigt.
~# apt-get install debootstrap Paketlisten werden gelesen... Fertig Abhängigkeitsbaum wird aufgebaut. Statusinformationen werden eingelesen.... Fertig Die folgenden NEUEN Pakete werden installiert: debootstrap 0 aktualisiert, 1 neu installiert, 0 zu entfernen und 0 nicht aktualisiert. Es müssen 61,4 kB an Archiven heruntergeladen werden. ... debootstrap (1.0.48+deb7u2) wird eingerichtet ...
~# mkdir -p /tmp/usb ~# mount /dev/sdb5 /tmp/usb ~# mkdir /tmp/usb/boot ~# mount /dev/sdb1 /tmp/usb/boot
~# debootstrap --arch amd64 stable /tmp/usb http://ftp.de.debian.org/debian/ I: Retrieving Release I: Retrieving Release.gpg I: Checking Release signature I: Valid Release signature (key id ED6D65271AACF0FF15D123036FB2A1C265FFB764) I: Retrieving Packages I: Validating Packages ... I: Configuring tasksel... I: Configuring tasksel-data... I: Base system installed successfully.
proc
, dev
und sys
:~# mount -t proc none /tmp/usb/proc ~# mount --bind /sys /tmp/usb/sys ~# mount --bind /dev /tmp/usb/dev
/etc/resolv.conf
:~# cp /etc/resolv.conf /tmp/usb/etc/resolv.conf
Die Basiskonfiguration wird innerhalb des USB-Mediums durchgeführt. Dafür erfolgt mit dem Befehl chroot
ein Wechsel in das neue System.
~# chroot /tmp/usb /#
/# grep -Ev 'rootfs|sda' /proc/mounts > /etc/mtab
Mit sda
wird die erste Festplatte ausgeschlossen.
/# apt-get install grub-pc linux-base linux-image-3.2.0-4-amd64 Reading package lists... Done Building dependency tree... Done ... Setting up grub-pc (1.99-27+deb7u2) ... Creating config file /etc/default/grub with new version Installation finished. No error reported. Generating grub.cfg ... Found linux image: /boot/vmlinuz-3.2.0-4-amd64 Found initrd image: /boot/initrd.img-3.2.0-4-amd64 done Setting up dmsetup (2:1.02.74-8) ... update-initramfs: deferring update (trigger activated) Processing triggers for initramfs-tools ... update-initramfs: Generating /boot/initrd.img-3.2.0-4-amd64
/dev/sdb
ausgewählt werden.
/etc/fstab
:/dev/sdb1 /boot ext2 rw 0 2 /dev/sdb5 / ext4 errors=remount-ro 0 1 /dev/sdb6 none swap sw 0 0
Nachfolgend erfolgt bezüglich GRUB die Abänderung, dass nicht die UUID, sondern die Gerätebezeichnung verwendet wird. Dafür muss die Datei /etc/default/grub
angepasst werden:
GRUB_DISABLE_LINUX_UUID=true
Der Parameter ist im Normalfall auskommentiert.
/# update-grub Generating grub.cfg ... Found linux image: /boot/vmlinuz-3.2.0-4-amd64 Found initrd image: /boot/initrd.img-3.2.0-4-amd64 done
/# passwd Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully
chroot
-Umgebung:/# exit
~# umount /tmp/usb/sys ~# umount /tmp/usb/dev ~# umount /tmp/usb/proc
~# umount /tmp/usb/boot ~# umount /tmp/usb
Das neue System befindet sich jetzt in einem minimalen Zustand. Die Installation weiterer Programme, die Anpassungen einiger Konfigurationsdateien und die Erweiterung zu einem „normalen“ System sind hier beschrieben.
Nachfolgend soll die Anpassung und Erweiterung eines minimal installiertes DEBIAN Linux auf ein USB-Medium (hier nachzulesen) beschrieben werden.
Es sollten einige zusätzliche Pakete installiert werden, damit bestimmte Anpassungen vorgenommen werden können:
openssh-server
vim
molly-guard
mc
nmap
fakeroot
reprepro
makepasswd
chkconfig
strace
Bevor weitere Pakete installiert werden können, muss das Netzwerk konfiguriert werden.
eth0
):~# ifconfig -a eth0 Link encap:Ethernet HWaddr 04:b8:1f:d4:21:6a ... lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 ...
/etc/network/interfaces
für DHCP:auto eth0 iface eth0 inet dhcp
/etc/network/interfaces
für manuelle Netzwerkeinstellung:auto eth0 iface eth0 inet static address <IP-Adresse> netmask <Netzmaske> gateway <Gateway-Adresse>
~# ifup eth0
Falls eth0
das gewünschte Gerät ist, andernfalls muss hier ein anderes eingetragen werden.
Sollen die Eintragungen für die Datei „/etc/resolv.conf
“ nicht (normalerweise für jedes unterschiedliche Netzwerk mit unterschiedlichen DNS-Servern) manuell erfolgen, empfiehlt sich die Installation des Paketes resolvconf
:
~# apt-get install resolvconf
Jetzt muss bei einem manuell gesetztem Netzwerk die Datei „/etc/network/interfaces
“ noch ergänzt werden:
iface eth0 inet static ... dns-nameservers <IP-Adresse> [<IP-Adresse>]
Soll im System kein IPv6 verwendet werden, kann dies vollständig deaktiviert werden. Dafür muss eine neue Datei „/etc/sysctl.d/ipv6-disable.conf
“ erstellt werden mit folgendem Inhalt:
net.ipv6.conf.all.disable_ipv6 = 1
Damit die Änderung wirksam wird, muss das System neu gestartet werden.
Der Rechnername wird vom Rechner übernommen, auf dem das USB-Medium erstellt wurde. Eine Änderung muss an mehreren Stellen vorgenommen werden.
/etc/hostname
:<Rechnername>
Hier erfolgt der Eintrag als Rechnername, ohne FQDN.
/etc/hosts
:<IP-Adresse> <Rechnername>.<Domäne> <Rechername>
Für Domäne kann der FQDN, falls vorhanden, eingegeben werden. Existiert kein Domäne, reicht der Eintrag als einzelner Rechner aus.
192.168.10.135 usbstick.beispiel.de usbstick
/etc/hosts
entfernt werden.
Nach der Installation sind die Lokalisation und Tastatur standardmäßig nicht auf Deutsch eingestellt.
Zur Anpassung der Lokalisation wird das Paket locales
installiert:
~# apt-get install locales
Eine Abfrage mit dem Befehl locale
zeigt an, dass alle LC-Variablen auf POSIX
eingestellt sind. Zur Umstellung auf Deutsch (UTF-8
) ist folgender Aufruf notwendig:
dpkg-reconfigure locales
Es erscheint ein Auswahlfenster, wo folgendes ausgewählt werden muss:
[*] de_DE.UTF-8 UTF-8
“ → „<Ok>
“de_DE.UTF-8
“ → „<Ok>
“
Nach einem erneuten Anmelden und Abfragen mit dem Befehl locale
wird die richtige Lokalisation angezeigt.
Zur Anpassung des Tastaturlayouts werden die Pakete keyboard-configuration
und console-data
installiert und konfiguriert:
~# apt-get install keyboard-configuration console-data
Für beide Pakete erfolgt bereits während der Installation die Konfigurationsabfrage, wo für die Umstellung auf Deutsch folgendes ausgewählt werden muss:
keyboard-configuration
:Deutsch
“console-data
:Tastaturbelegung aus Liste für diese Architektur wählen
“qwertz
“German
“Standard
“latin - no dead keys
“
Die Konfiguration kann nachträglich mit folgendem Befehl aufgerufen werden:
~# dpkg-reconfigure console-data
Die Datei .bashrc
, die beim Login ausgeführt wird, kann wie folgt erweitert werden:
alias ll="ls -alh --color=always" alias cls='clear' alias dum='du -ach --max-depth=0' shopt -s histappend export HISTSIZE=90000 export HISTFILESIZE=150000 export HISTIGNORE='cm*:pwd' export HISTCONTROL=erasedups:ignorespace export HISTTIMEFORMAT='%d.%m.%Y %T ' PS1="\[\033[1;30m\]\u@\h\w:~# \[\033[0m\]" export PS1=$PS1$(history -a; history -r;)
— Steffen Bornemann 08.11.2018