ubuntuusers.de

Arch-Live-Stick erstellen

Autor:
tomtomtom
Datum:
2. September 2013 03:38
Code:
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
# Notwendige Programme installieren
pacman -S dosfstools squashfs-tools archiso 

# Grundsystem in Arbeitsordner work installieren
mkarchiso -v init

# Gewünschte Programme installieren
mkarchiso -v -p "PROGRAMM1 PROGRAMM2 PROGRAMM3" install

# Ins Arbeitssystem wechseln
mkarchiso -v -r "bash" run

# gewünschte Konfigurationsänderungen vornehmen
# Livesession-User anlegen, praktischer Weise für diesen auch Autostarteintrag anlegen
# ggfs. die sudoers für den Liveuser anpassen

# Zeitzone festlegen
ln -s /usr/share/zoneinfo/Europe/Berlin /etc/localtime

# hostname festlegen
echo HOSTNAME > /etc/hostname

# locale festlegen
echo 'LANG="de_DE.UTF-8"' > /etc/locale.conf 
echo 'de_DE.UTF-8 UTF-8' >> /etc/locale.gen
locale-gen

# Keymap der virtuellen Konsole festlegen
echo KEYMAP=de-latin1 > /etc/vconsole.conf

# per systemd zu startende Dienste festlegen (Beispiele haveged, NetworkManger, Displaymanager)
ln -s '/usr/lib/systemd/system/haveged.service' '/etc/systemd/system/multi-user.target.wants/haveged.service'
ln -s '/usr/lib/systemd/system/NetworkManager.service' '/etc/systemd/system/dbus-org.freedesktop.NetworkManager.service'
ln -s '/usr/lib/systemd/system/NetworkManager.service' '/etc/systemd/system/multi-user.target.wants/NetworkManager.service'
ln -s '/usr/lib/systemd/system/lxdm.service' '/etc/systemd/system/display-manager.service'  

# Arbeitssystem verlassen
exit

# Hooks und initcpio vorbereiten (im Beispiel für ein x86_64-System)
cp /usr/lib/initcpio/hooks/archiso work/root-image/usr/lib/initcpio/hooks
cp /usr/lib/initcpio/install/archiso work/root-image/usr/lib/initcpio/install
echo 'HOOKS="base udev archiso modconf block filesystems keyboard"' > work/root-image/etc/mkinitcpio-archiso.conf
echo 'COMPRESSION="xz"' >> work/root-image/etc/mkinitcpio-archiso.conf
mkdir work/root-image/boot/x86_64

# Kernelimage bauen
mkarchiso -r "mkinitcpio -c /etc/mkinitcpio-archiso.conf -k /boot/vmlinuz-linux -g /boot/x86_64/archiso.img" run

# Zum Booten notwendige Dateien ins passende Verzeichnis schieben
mkdir -p work/iso/arch/boot/x86_64
mv work/root-image/boot/vmlinuz-linux work/iso/arch/boot/x86_64/vmlinuz
mv work/root-image/boot/x86_64/archiso.img work/iso/arch/boot/x86_64/archiso.img

# Verzeichnis für den Bootloader anlegen
mkdir -p work/iso/arch/boot/syslinux

# Konfigurationsdatei anlegen
nano work/iso/arch/boot/syslinux/syslinux.cfg

# Inhalt einfügen, nach eigenen Wünschen anpassen
DEFAULT menu.c32
PROMPT 0
MENU TITLE GEWÜNSCHTER_NAME
TIMEOUT 300

LABEL arch
MENU LABEL GEWÜNSCHTER_NAME
LINUX /arch/boot/x86_64/vmlinuz
INITRD /arch/boot/x86_64/archiso.img
APPEND archisolabel=GEWÜNSCHTER_NAME

ONTIMEOUT arch

# von Isolinux benötigte Daten kopieren
cp work/root-image/usr/lib/syslinux/menu.c32 work/iso/arch/boot/syslinux/
mkdir work/iso/isolinux
cp work/root-image/usr/lib/syslinux/isolinux.bin work/iso/isolinux/
cp work/root-image/usr/lib/syslinux/isohdpfx.bin work/iso/isolinux/

# Isolinux-Konfigurationsdatei anlegen
nano work/iso/isolinux/isolinux.cfg

# Inhalt einfügen
DEFAULT loadconfig

LABEL loadconfig
  CONFIG /arch/boot/syslinux/syslinux.cfg
  APPEND /arch/boot/syslinux/

# aitab anlegen
echo 'root-image      /                     x86_64     xz          ext4       50%' > work/iso/arch/aitab

# Kernelmodul loop laden
modprobe loop

# Image zur Erstellung vorbereiten
mkarchiso -v prepare

# ISO bauen
mkarchiso -v -L "GEWÜNSCHTER_NAME" iso "GEWÜNSCHTER_NAME.iso"

# Ergebnis liegt im Ordner out, Beispiele so erstellter ISOs unter http://arglinux.tomtomtom.org/

# auf USB-Stick bringen
dd if=out/NAME_DES_ISOS.iso of=/dev/sdX