Arch Linux: USB-System mit Grub, Luks und BTRFS

0

Deutsches Tastatur Layout laden

loadkeys de-latin1-nodeadkeys

SSH Zugang aktivieren

wifi-menu
passwd
systemctl start sshd.service

Partitionierung

Laufwerksbuchstabe ermitteln

dmesg | grep disk

Partitionen anlegen

gdisk /dev/sda
Command (? for help): o
This option deletes all partitions and creates a new protective MBR.
Proceed? (Y/N): Y

Command (? for help): n
Partition number (1-128, default 1): [ENTER]
First sector (34-242187466, default = 2048) or {+-}size{KMGTP}: [ENTER]
Last sector (2048-242187466, default = 242187466) or {+-}size{KMGTP}: +512M
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): EF00
Changed type of partition to 'EFI System'

Command (? for help): n
Partition number (2-128, default 2): [ENTER]
First sector (34-242187466, default = 1050624) or {+-}size{KMGTP}: [ENTER]
Last sector (1050624-242187466, default = 242187466) or {+-}size{KMGTP}: [ENTER]
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): 
Changed type of partition to 'Linux filesystem'

Command (? for help): w

Partitionen formatieren

mkfs.vfat -n UEFIBOOT -F32 /dev/sda1

LUKS einrichten

cryptsetup -v luksFormat /dev/sda2
cryptsetup luksOpen /dev/sda2 luks_root

BTRFS (Sub)-Volume anlegen

mkfs.btrfs -L arch /dev/mapper/luks_root
mount -t btrfs /dev/mapper/luks_root /mnt
btrfs sub create /mnt/@
btrfs sub create /mnt/@home
umount /mnt

Partitionen zusammenmounten

mount -o subvol=@ /dev/mapper/luks_root /mnt
mkdir /mnt/home
mount -o subvol=@home /dev/mapper/luks_root /mnt/home
mkdir /mnt/boot
mount /dev/sda1 /mnt/boot

Basis System Installieren

Basis System inkl. Werkzeuge installieren

Bis zum 06.10.2019 wurde durch die Installation des Paketes base weitere  Pakete installiert, wie zum Beispiel der Linux Kernel. Am 06.10 wurde das Paket base durch ein das Meta Paket base ersetzt, in dem z.B. der Kernel fehlt. Bei einer Neuinstallation sind somit gegenüber älteren Anleitungen mehr Pakete anzugeben. Die meiner Meinung nach minimal notwendigen Pakete sind nachfolgend ergänzt und fett markiert.

pacstrap /mnt base cryptsetup device-mapper dhcpd e2fsprogs inetutils linux linux-firmware lvm2 logrotate man-db man-pages nano less netctl s-nail sysfsutils usbutils vi which base-devel btrfs-progs vim bash-completion dialog wpa_supplicant mlocate htop efibootmgr dosfstools gptfdisk mkinitcpio linux

fstab anpassen

genfstab -U -p /mnt >> /mnt/etc/fstab
vim /mnt/etc/fstab
tmpfs /tmp tmpfs rw,nodev,nosuid 0 0
tmpfs /dev/shm tmpfs rw,nodev,nosuid,noexec 0 0

# If you have SSD change relatime on all non-boot partitions to noatime.

Chroot Wechsel

arch-chroot /mnt

Zeitzone setzten

ln -sf /usr/share/zoneinfo/Europe/Berlin /etc/localtime
hwclock --systohc

Hostname setzten

echo <your-hostname> > /etc/hostname

Hosts Datei anpassen

vim /etc/hosts
...
127.0.0.1 localhost.localdomain localhost
::1 localhost.localdomain localhost
127.0.0.1 $HOSTNAME.localdomain $HOSTNAME

Root Kennwort setzen und normalen Benutzer anlegen

passwd
useradd -m -G wheel -s /bin/bash <username>
passwd <username>

Spracheinstellung festlegen

echo LANG=de_DE.UTF-8 > /etc/locale.conf

Vor diesen Einträgen „#“ entfernen:

vim /etc/locale.gen
#de_DE.UTF-8 UTF-8
#de_DE ISO-8859-1
#de_DE@euro ISO-8859-15

Locale generieren:

locale-gen

Tastaturbelegung festlegen:

echo KEYMAP=de-latin1-nodeadkeys > /etc/vconsole.conf

Linux Kernel erzeugen

vim /etc/mkinitcpio.conf
# on the MODULES section, add "vfat crc32c-intel"
# (and whatever else you know your hardware needs.)
#
# on the BINARIES section, add "/usr/bin/btrfsck", since it's useful
# to have in case your filesystem has troubles
#
# on the HOOKS section:
#  - add "encrypt" before "filesystems"
#  - remove "fsck" and
#  - add "btrfs" at the end
#
# re-generate your initrd images

mkinitcpio -p linux

Update 20.11.2020
aes_x86_64 wurde mit kernel 5.4 entfernt. (Link)

systemd bootctl installiere

bootctl install
blkid /dev/sda2 > /boot/loader/entries/arch.conf
blkid /dev/sda2 >> /boot/loader/entries/arch.conf
blkid /dev/mapper/luks_root >> /boot/loader/entries/arch.conf
# /dev/sda2 LABEL="arch" UUID=11111111-1111-1111-1111-111111111111
# /dev/mapper/root LABEL="Arch Linux" UUID=2222222-2222-2222-2222-22222222222

Anschließend die Datei /boot/loader/entries/arch-uefi.conf mit folgendem Inhalt erstellen:

vim /boot/loader/loader.conf
...
timeout 3
default arch
...
vim /boot/loader/entries/arch.conf
...

title Arch Linux
linux /vmlinuz-linux
initrd /initramfs-linux.img
options rw cryptdevice=UUID=11111111-1111-1111-1111-111111111111:luks-11111111-1111-1111-1111-111111111111 root=UUID=2222222-2222-2222-2222-22222222222 rootfstype=btrfs rootflags=subvol=@
...
#options cryptdevice=UUID=<UUID>:<mapped-name> root=/dev/mapper/<mapped-name> rootflags=subvol=<subvol> quiet rw
options cryptdevice=UUID=11111111-1111-1111-1111-111111111111:luks_root root=UUID=2222222-2222-2222-2222-22222222222 rootfstype=btrfs rootflags=subvol=@

Das Gleiche noch für Arch Linux fallback die Datei /boot/loader/entries/arch-uefi-fallback.conf mit folgendem Inhalt erstellen:

title Arch Linux Fallback
linux /vmlinuz-linux
initrd /initramfs-linux-fallback.img
options root=LABEL=p_arch rw resume=LABEL=p_swap

Der timeout (in Sekunden) kann natürlich frei gewählt werden.

Quelle: https://wiki.archlinux.de/title/UEFI_Installation#systemd_bootctl_.28ehemals_Gummiboot.29

Software installieren

Gnome und GDM installieren

pacman -Syu gnome gnome-extra gdm firefox firefox-i18n-de networkmanager network-manager-applet gnome-software-packagekit-plugin
systemctl enable gdm.service
systemctl enable NetworkManager.service

Nautilus thumbnailer

pacman -S gst-libav gst-plugins-ugly gstreamer
nautilus -q

Cups

pacman -S cups
systemctl enable --now org.cups.cupsd.service

LibreOffice

pacman -S libreoffice-fresh libreoffice-fresh-de

Thunderbird

pacman -S thunderbird thunderbird-i18n-de libgnome-keyring

Design

pacman -S papirus-icon-theme arc-gtk-theme

Gnome-Shell Extension

pacman -S chrome-gnome-shell

VLC

pacman -S vlc

NTFS Support

ntfs-3g

Audio Codecs

pacman -S a52dec faac faad2 flac jasper lame libdca libdv libmad libmpeg2 libtheora libvorbis libxv wavpack x264 xvidcore gstreamer0.10-plugins

Veracrypt

pacman -S veracrypt

Sudo Rechte anpassen

Sudo Rechte folgen folgendem Schema:
<wer> <auf welchem Host>=(<als welcher Benutzer>) <darf was ausführen>

$USER ALL=(ALL) ALL

Nextcloud Client

pacman -S nextcloud-client

Firmware Update Daemon

pacman -S fwupd
fwupdmgr refresh
fwupdmgr update

FWBuilder

pacman -S fwbuilder

Gnome Update Viewer

pacman -S gnome-packagekit

Powerline

pacman -S powerline powerline-fonts

.bashrc (end of file)

# Debian
if [ -f /usr/local/lib/python2.7/dist-packages/powerline/bindings/bash/powerline.sh ]; then  
  source /usr/local/lib/python2.7/dist-packages/powerline/bindings/bash/powerline.sh  
fi  

# (open)SUSE; Fedora
if [ -f /usr/share/powerline/bash/powerline.sh ]; then  
  source /usr/share/powerline/bash/powerline.sh
fi  

# Arch
if [ -f /usr/share/powerline/bindings/bash/powerline.sh ]; then
  . /usr/share/powerline/bindings/bash/powerline.sh
fi

.vimrc (end of file)

set rtp+=/usr/local/lib/python2.7/dist-packages/powerline/bindings/vim/
" Always show statusline
set laststatus=2
" Use 256 colours (Use this setting only if your terminal supports 256 colours)
set t_Co=256
let g:powerline_pycmd = 'py3'

Wireguard

pacman -Sy wireguard-arch resolvconf

Power Management

pacman -Sy acpid tlp powertop
systemctl enable --now acpid
systemctl enable --now tlp.service

AUR package manager

pacman -S git
git clone https://aur.archlinux.org/yay.git
cd yay
makepkg -si

yay -Sy

Vorta

yay -Sy vorta

Microsoft Schriften

yay -Sy ttf-ms-fonts

Timeshift

yay -Sy timeshift

Spotify

flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

Software öffnen und nach Spotify suchen

Known Issues

Error: grub-install: error: efibootmgr failed to register the boot entry: No such file or directory.

Reason: Live System was booted in legacy mode

Quellen

Share.

About Author

Seit der Ausbildung zum Fachinformatiker Systemintegration (2002-2005) bei der DaimlerChrysler AG, beruflich im Bereich der E-Mail Kommunikation (Exchange, Linux) sowie des ActiveDirectory, mit entsprechenden Zertifizierungen (MCSE 2003, MCITP Ent.-Admin 2008, MCSE 2012, LPIC 1-3) tätig. Abgeschlossenes Studium zum Master of Science IT-Management an der FOM sowie zertifizierter Datenschutzbeauftragter. Aktuell als Teamleiter tätig.

Leave A Reply