====== Installation auf USB-Medium ======
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 [[http://verahill.blogspot.de/2013/03/361-installing-debian-on-usb-stick-from.html|Webseite]] entnommen und entsprechend angepasst.
\\
===== Voraussetzungen =====
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 {{debian-linux:debian-stretch-9.5_paketliste-minimalinstallation.txt|hier}} zu finden.
\\
===== Medium partitionieren =====
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.
\\
==== Partitionierung mit fdisk ====
* Festplatte löschen:
~# 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
\\
* Erweiterte Partition erstellen:
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
\\
* Setzen des Boot-Flag für die erste Partition
Command (m for help): a
Partition number (1-6): 1
\\
* Endergebnis:
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
\\
* Änderungen schreiben und Programm ''fdisk'' verlassen:
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
\\
===== Dateisysteme erstellen =====
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
\\
===== Betriebssystem installieren =====
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.
\\
* Installation der notwendigen Pakete
~# 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 ...
\\
* Einhängen der Partitionen:
~# mkdir -p /tmp/usb
~# mount /dev/sdb5 /tmp/usb
~# mkdir /tmp/usb/boot
~# mount /dev/sdb1 /tmp/usb/boot
\\
* Installation des Betriebssystems:
~# 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.
\\
* Einhängen von ''//proc//'', ''//dev//'' und ''//sys//'':
~# mount -t proc none /tmp/usb/proc
~# mount --bind /sys /tmp/usb/sys
~# mount --bind /dev /tmp/usb/dev
\\
* Kopieren der Datei ''///etc/resolv.conf//'':
~# cp /etc/resolv.conf /tmp/usb/etc/resolv.conf
\\
===== Basiskonfiguration =====
Die Basiskonfiguration wird **innerhalb** des USB-Mediums durchgeführt. Dafür erfolgt mit dem Befehl ''chroot'' ein Wechsel in das neue System.
\\
* Wechsel in das neue System (zu erkennen am veränderten Prompt):
~# chroot /tmp/usb
/#
\\
* Dateisysteme schreiben:
/# grep -Ev 'rootfs|sda' /proc/mounts > /etc/mtab
//Mit ''sda'' wird die erste Festplatte ausgeschlossen.//
\\
* Installation von Kernel und GRUB:
/# 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
Für GRUB erscheint während der Installation eine Abfrage, wohin die Installation der Daten erfolgen soll. Hier muss **''///dev/sdb//''** ausgewählt werden.
\\
* Erstellen der Datei ''///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.//
\\
* GRUB konfigurieren:
/# 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
\\
* Administratorkennwort setzen:
/# passwd
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
\\
* Verlassen der ''//chroot//''-Umgebung:
/# exit
\\
* Aushängen der eingehängten Dateisysteme:
~# umount /tmp/usb/sys
~# umount /tmp/usb/dev
~# umount /tmp/usb/proc
\\
* Aushängen des USB-Mediums:
~# umount /tmp/usb/boot
~# umount /tmp/usb
\\
Jetzt kann vom USB-Medium gestartet werden (sofern dies vom verwendeten System unterstützt wird)
\\
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 [[debian-linux:debian-linux_installation-auf-usb-medium-anpassungen|hier]] beschrieben.
\\
\\
\\
====== Anpassungen und Erweiterungen ======
Nachfolgend soll die Anpassung und Erweiterung eines minimal installiertes DEBIAN Linux auf ein USB-Medium ([[debian-linux:usb-installation|hier]] nachzulesen) beschrieben werden.
\\
===== Zusätzliche Pakete =====
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''
\\
===== Netzkonfiguration =====
Bevor weitere Pakete installiert werden können, muss das Netzwerk konfiguriert werden.
\\
* Prüfen auf ein erkanntes Netzwerkgerät (meist **''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
...
\\
* Anpassen der Datei ''///etc/network/interfaces//'' für DHCP:
auto eth0
iface eth0 inet dhcp
\\
* Anpassen der Datei ''///etc/network/interfaces//'' für manuelle Netzwerkeinstellung:
auto eth0
iface eth0 inet static
address
netmask
gateway
\\
* Netzwerk starten:
~# ifup eth0
//Falls **''eth0''** das gewünschte Gerät ist, andernfalls muss hier ein anderes eingetragen werden.//
\\
==== resolvconf ====
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 []
\\
==== IPv6 ====
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.//
\\
===== Rechnername =====
Der Rechnername wird vom Rechner übernommen, auf dem das USB-Medium erstellt wurde. Eine Änderung muss an mehreren Stellen vorgenommen werden.
\\
* Anpassen der Datei //''/etc/hostname''//:
//Hier erfolgt der Eintrag als Rechnername, ohne FQDN.//
\\
* Anpassen der Datei //''/etc/hosts''//:
.
//Für Domäne kann der FQDN, falls vorhanden, eingegeben werden. Existiert kein Domäne, reicht der Eintrag als einzelner Rechner aus.//
\\
* Beispiel:
192.168.10.135 usbstick.beispiel.de usbstick
\\
Sollte kein IPv6 verwendet werden, können diese Einträge aus der Datei //''/etc/hosts''// entfernt werden.
\\
===== Lokalisation und Tastatur =====
Nach der Installation sind die Lokalisation und Tastatur standardmäßig nicht auf Deutsch eingestellt.
\\
==== Lokalisation ====
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''" -> "''''"
* "''de_DE.UTF-8''" -> "''''"
\\
Nach einem erneuten Anmelden und Abfragen mit dem Befehl **''locale''** wird die richtige Lokalisation angezeigt.
\\
==== Tastatureinstellung ====
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
\\
===== .bashrc =====
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@gmx.de|Steffen Bornemann]] 08.11.2018//
\\
\\
{{tag>DEBIAN USB fdisk CHROOT bashrc resolvconf interfaces}}