SuebenIT



mib4sa
multi iso boot for sysadmin

 

[work in progress]

Nur ein paar Stichpunkte. Mehr aus dem Grund, weil ich nun schon ein paar Mal gefragt wurde, wie ich denn diesen Stick hinbekommen habe ... Es ist ein 128 GB USB3 Stick, bis oben hin gefüllt mit Linux-Isos. Macht nicht wirklich Sinn, aber immer Eindruck :-)

Ich kann es natürlich demjenigen immer auch direkt erklären, und meist ist es auch nur ein "ganz einfach, mache zuerst dies, dann jenes". Aber da dann zu jedem "dies" und jedem "jenes" auch immer ein kleiner Einschub kommt: "Achte lediglich auf ... Ist nur eine Kleinigkeit, aber ohne gehts nicht oder führt zu Fehlern", habe ich mich entschieden zumindest doch schon mal dieses kleine, unvollständige Provisorium online zu stellen.

 

USB-Stick vorbereiten (partitionieren, formatieren, bootfähig machen)

 

Windows, mit Windowsbordmitteln

Beachte: Nur USB Sticks bis einschließlich 32 GB !!!

Sticks größer 32 GB (64, 128, etc.) kann (oder will?) Windows nicht mit FAT32 formatieren, nimmt immer extFat oder NTFS. Selbst wenn man unter diskpart FAT32 als Filesystem angibt, formatiert er mit extFat - ohne was zu sagen, ohne Rückmeldung, machts einfach.

a) diskpart (todo)

b) Datenträgerverwaltung (todo)

 

Windows, mit Rufus

Lege den Stick ein und starte Rufus. Reihenfolge egal; kannst auch erst Rufus starten und dann den Stick einlegen. Wenn du nur einen Stick am System hast, ist der autom. ausgewählt. Ansonsten wähle ganz oben den Stick für dein MIB4SA-Projekt aus.

Vertrauen ist gut, Kontrolle ist besser: sei sicher, daß du den richtigen Stick ausgewählt hast. Es wird formatiert und alle Daten sind dann weg. Schlecht wenn du versehentlich eine Festplatte erwischt hast.

Bis einschl. 32GB:

- soll "MBR" sein
- soll "FAT32" sein
- gebe Laufwerksbezeichnung ein, im Bild "MIB4SA", freie Wahl
- Rest habe ich auf den Defaults belassen

Klicke "Start".

Größer 32GB, also 64GB, 128GB, etc.:

- soll "MBR" sein
- soll "FAT32" sein; Rufus nennt es "Large FAT32"
- gebe Laufwerksbezeichnung ein, im Bild "MIB4SA", freie Wahl
- Rest habe ich auf den Defaults belassen

Beachte: Wenn du "Large FAT32" wählst springt Rufus autom. zurück auf "GPT" -> achte darauf, und stelle wieder "MBR" ein.

Klicke "Start".

 

Rufus und diese FreeDOS-Option

Rufus hat uns autom. einen Haken gesetzt bei "Startfähiges Laufwerk erstellen mit" und dort "FreeDOS" gewählt. Bei mir hats damit funktioniert und ich habe mir nicht mehr die Mühe gemacht, das zu hinterfragen. Fürs "echte" Tutorial werde ich natürlich mehr darüber berichten (können). For now: lösche das einfach. Dh. gehe in den Windows Explorer, zum USB Stick und lösche dort alle Dateien. FreeDOS ist damit weg; der Stick aber bleibt trotzdem "bootfähig". Wie gesagt: nimms einfach mal so hin. Außer du weißt es besser und machst es dann nach eigenem Gusto :-)

Dein Stick ist dann also leer.

Beachte: ich habe nichts von formatieren oder sonstwas anderes geschrieben. Einfach nur die Dateien und Verzeichnisse löschen. Ganz simpel.

 

Linux

Ganz simpel mit fdisk. Sind nur ein paar Stichpunkte. Für die Screenshots habe ich aber aktuell nicht die Zeit zu und verschiebe diesen Unterpunkt -> TODO.

 

Grub2 auf den Stick bringen

Wir arbeiten nun für alle Varianten mit einem Linux-Rechner. Sowohl unser Windows-Weg, als auch der Linux-Weg gehen diesen Punkt durch.

Es ist so einfach mit Linux und geht so schnell, daß es mir (aktuell noch) nicht einleuchtet, weshalb ich hier krampfhaft nach einer Möglichkeit in Windows suchen sollte.

Dh. hast du mit Windows angefangen, ziehe den Stick dort ab (korrekt auswerfen lassen, nicht einfach abziehen!). Gehe zu deinem Linux-Laptop oder boote den Rechner/Laptop an dem du arbeitest mit einer Linux-Live-Iso-CD oder -Stick. Stecke den Stick an diesem Linux-Laptop ein.

Sicherheitshalber erwähn ichs evtl. nochmal. Es sollte ein einigermaßen aktuelles Linux sein. Ein uraltes Linux, das noch mit Grub arbeitet und nicht mit Grub2, wird dir kein Grub2 aufspielen.

Linuxkommando in einer Shell (Terminal, CLI, wie auch immer du es nennst) ...

grub-install --force --no-floppy --boot-directory=[mountpoint-usbstick]/boot [partition]

[mountpoint-usbstick] ist dein Stick ansich. [partition] ist die Partition auf dem Stick, wo Grub2 hin soll.

PS.: Laut Anleitung oben hast du nur diese eine (Primär-)Partition. Später, wenn das "richtige" Tutorial kommt, wirst du lernen, mit mehreren Partitionen zu jonglieren. Um Windows in eigener NTFS-Partiton zu haben, um HP ServicePacks for Proliant mit Dateien größer 4GB auf den Stick zu bekommen, etc.

Dh. du mußt dir den [mountpoint-usbstick] erst erstellen. Das ist das mit dem mount Befehl.

Beispiel:

mkdir /mnt/USB
mount /dev/sdc1 /mnt/USB
grub-install --force --no-floppy --boot-directory=/mnt/USB/boot /dev/sdc1

Im Beispiel ist dein USB-Stick "/dev/sdc" und die Partition ist "/dev/sdc1". Mit mount hast du diese Partition auf diesem Stick als "/mnt/USB" zugänglich gemacht.

 

Grub2 konfigurieren, Isos kopieren

 

Windows

Bringe den Stick wieder zu deinem Windows-Rechner. Stecke ihn ein. Die Meldung, daß Windows damit ein Problem hat, quittierst du mit "Ohne Überprüfung fortfahren". Du willst auf keinen Fall Windows etwas reparieren lassen.

Auf dem Stick findest du nun ein Verzeichnis "boot", darunter ein Verzeichnis "grub" und darin eine Konfigdatei "grub.cfg".

[USB-Stick:]\boot\grub\grub.cfg

a) Erstelle dir auf oberster Ebene des Sticks ein Verzeichnis "iso".

b) Ins Verzeichnis "iso" kopiere alle Iso-Dateien, die du auf deinem MIB4SA-Stick so haben magst.

c) Editiere die Datei grub.cfg

Hinweis: Ich öffne die grub.cfg nicht mit dem windows-eigenen Editor, sondern mit Notepad++. Hintergrund ist der, daß der windows-eigene Editor keine Linux-Lineendings kann. Notepad++ kann sowohl Windows-, als auch Linux-Lineendings; und ich muß nichtmal dran denken, da Notepad++ bereits beim Öffnen der grub.cfg erkennt, daß es Linux-Lineendings sind und sich gleich darauf einstellt, also auch wieder mit Linux-Lineendings speichert.

 

Linux

todo

 

Anmerkung/Einschub

Auf FAT32 ist die maximale Dateigröße 4GB. Größere Dateien kannst du nicht dorthin kopieren. Gelöst wird dieses Problem, indem mehrere Partionen erstellt werden. Eine ganz kleine mit FAT32 für den Bootloader Grub2. Und eine oder mehrere größere mit anderen Dateisystemen - bspw. NTFS für Windows oder eins der Linux-üblichen - worauf dann die "eigentlichen Daten" hinkommen.

Sobald du anfängst die Isos auf den Stick zu kopieren, erkennst du sofort einen weiteren Nachteil von FAT32. Vrmtl. liegts auch einfach nur an der "Größe der Zuordnungseinheit"; aber es waren nunmal die Defaults und wir haben uns daran gehalten. Nun, du wirst feststellen, daß quälend langsam kopiert wird. Noch ein Grund, um zu verstehen, weshalb die Bootloader meist nur eine kleine Minipartition für sich selbst bekommen und das eigentliche Geschehen so bald als möglich auf eine andere Partition mit "gefälligerem" Filesystem geleitet wird.

Noch eins. Selbst habe ichs nicht ausprobiert, aber es wurde mir aus vertrauenswürdiger Quelle mitgeteilt, daß grub2 wohl nur mit FAT32 von Haus aus umgehen kann. Dh. wenn mit mehreren Partitionen und unterschiedlichen Dateisystemen gerabeitet wird, um die oben angesprochen Probleme zu lösen, müssen die Isos, die grub2 einbinden können soll, trotzdem auf der FAT32-Partition liegen. Man könne zwar Treiber für die gewünschten Dateisysteme einbinden und es grub2 beibringen. Doch das sei eine himmels Friemelei und für uns aus der Windowsecke kommende Linux-Newbies nicht zu empfehlen.

 

grub.cfg - Konfigurieren

(Windows + Linux)

Nachfolgend eine beispielhafte grub.cfg. Beachte bitte, daß das alles ungetestete Werte sind. Von einigen weiß ich sicher, daß sie funktionieren, von anderen weiß ich sicher, daß sie nicht funktionieren, einige habe ich noch garnicht ausprobiert ... Alles in allem so aus dem Netz zusammenkopiert und nur grob an meine Bedürfnisse angepaßt, ohne es zu testen. Du wirst selber testen und im Netz suchen müssen.

 

# windows7-sp1-64bit.iso

# windows10-64bit.iso

# server2008r2eval64bit.iso

# sbs2008premium-trial.iso




# die Isos gleich mit deutscher Tastatur starten lassen:
# in der Zeile
#    linux (loop)/.......etc...
# am ende, noch vor dem "---", einfügen
# locale=de_DE bootkbd=de console-setup/layoutcode=de




# antergos-17.6-x86_64.iso
menuentry 'Antergos 17.6' {
  set isofile='/iso/antergos-17.6-x86_64.iso'
  search --no-floppy --set=root --file $isofile      # get $root of the $isofile = path to the partition holding the iso images
  probe -u $root --set=rootuuid                      # get uuid ($rootuuid) of $root
  probe -l $root --set=label                         # get $label of $root
  set imgdevpath="/dev/disk/by-uuid/$rootuuid"       # set devpath by uuid   /  set it either by uuid or label
#  set imgdevpath=/dev/disk/by-label/$label           # set devpath by label
  loopback loop $isofile
  linux (loop)/arch/boot/vmlinuz img_dev=$imgdevpath img_loop=$isofile
  initrd (loop)/arch/boot/archiso.img
}

# archlinux-2017.02.01-dual.iso
menuentry 'Arch Linux 2017.02.01' {
  set isofile='/iso/archlinux-2017.02.01-dual.iso'
  search --no-floppy --set=root --file $isofile      # get $root of the $isofile = path to the partition holding the iso images
  probe -u $root --set=rootuuid                      # get uuid ($rootuuid) of $root
  probe -l $root --set=label                         # get $label of $root
  set imgdevpath="/dev/disk/by-uuid/$rootuuid"       # set devpath by uuid   /  set it either by uuid _or_ label
#  set imgdevpath=/dev/disk/by-label/$label           # set devpath by label
  loopback loop $isofile
  linux (loop)/arch/boot/x86_64/vmlinuz img_dev=$imgdevpath img_loop=$isofile earlymodules=loop
  initrd (loop)/arch/boot/x86_64/archiso.img
}

#menuentry 'Ubuntu Live 11.04 64bit' {
#  set isofile='/iso/ubuntu-11.04-desktop-amd64.iso'
#  loopback loop $isofile
#  linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/iso/ubuntu-11.04-desktop-amd64.iso noeject noprompt --
#  initrd (loop)/casper/initrd.lz
#}

# xubuntu-16.04.3-desktop-amd64.iso
     menuentry 'Xubuntu 16.04.3 64bit (todo test - diese version ist ausm netz kopiert)' {
       set isofile='/iso/xubuntu-16.04.3-desktop-amd64.iso'
       loopback loop $isofile
       linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile noprompt noeject splash --
       initrd (loop)/casper/initrd.lz
     }
menuentry 'Try Xubuntu without installing - Xubuntu 16.04.3 64bit (todo test)' {
  set isofile='/iso/xubuntu-16.04.3-desktop-amd64.iso'
  loopback loop $isofile
  linux (loop)/casper/vmlinuz.efi file=/cdrom/preseed/xubuntu.seed boot=casper quiet splash ---
  initrd (loop)/casper/initrd.lz
}
menuentry 'Install Xubuntu - Xubuntu 16.04.3 64bit (todo test)' {
  set isofile='/iso/xubuntu-16.04.3-desktop-amd64.iso'
  loopback loop $isofile
  linux (loop)/casper/vmlinuz.efi file=/cdrom/preseed/xubuntu.seed boot=casper only-ubiquity quiet splash ---
  initrd (loop)/casper/initrd.lz
}
menuentry 'Check disc for defects - Xubuntu 16.04.3 64bit (todo test)' {
  set isofile='/iso/xubuntu-16.04.3-desktop-amd64.iso'
  loopback loop $isofile
  linux (loop)/casper/vmlinuz.efi boot=casper integrity-check quiet splash ---
  initrd (loop)/casper/initrd.lz
}

# debian-8.7.1-amd64-netinst.iso
submenu 'Debian 8.7.1 64bit netinst - internet install [... mehr ...]' {
  menuentry 'Install - Debian 8.7.1 64bit netinst - internet install (todo test)' {
    set isofile='/iso/debian-8.7.1-amd64-netinst.iso'
    loopback loop $isofile
    linux (loop)/install.amd/vmlinuz vga=788 --- quiet
    initrd (loop)/install.amd/initrd.gz
  }
  menuentry 'Graphical install - Debian 8.7.1 64bit netinst - internet install (todo test)' {
    set isofile='/iso/debian-8.7.1-amd64-netinst.iso'
    loopback loop $isofile
    linux (loop)/install.amd/vmlinuz vga=788 --- quiet
    initrd (loop)/install.amd/gtk/initrd.gz
  }
  submenu '... Debian ... Advanced options [... mehr ...]' {
    menuentry '... Expert install - Debian 8.7.1 64bit netinst (todo test)' {
      set isofile='/iso/debian-8.7.1-amd64-netinst.iso'
      loopback loop $isofile
      linux (loop)/install.amd/vmlinuz priority=low vga=788 ---
      initrd (loop)/install.amd/initrd.gz
    }
    menuentry '... Rescue mode - Debian 8.7.1 64bit netinst (todo test)' {
      set isofile='/iso/debian-8.7.1-amd64-netinst.iso'
      loopback loop $isofile
      linux (loop)/install.amd/vmlinuz vga=788 rescue/enable=true --- quiet
      initrd (loop)/install.amd/initrd.gz
    }
    menuentry '... Automated install - Debian 8.7.1 64bit netinst (todo test)' {
      set isofile='/iso/debian-8.7.1-amd64-netinst.iso'
      loopback loop $isofile
      linux (loop)/install.amd/vmlinuz auto=true priority=critical vga=788 --- quiet
      initrd (loop)/install.amd/initrd.gz
    }
    menuentry '... Graphical expert install - Debian 8.7.1 64bit netinst (todo test)' {
      set isofile='/iso/debian-8.7.1-amd64-netinst.iso'
      loopback loop $isofile
      linux (loop)/install.amd/vmlinuz priority=low vga=788 ---
      initrd (loop)/install.amd/gtk/initrd.gz
    }
    menuentry '... Graphical rescue mode - Debian 8.7.1 64bit netinst (todo test)' {
      set isofile='/iso/debian-8.7.1-amd64-netinst.iso'
      loopback loop $isofile
      linux (loop)/install.amd/vmlinuz vga=788 rescue/enable=true --- quiet
      initrd (loop)/install.amd/gtk/initrd.gz
    }
    menuentry '... Graphical automated install - Debian 8.7.1 64bit netinst (todo test)' {
      set isofile='/iso/debian-8.7.1-amd64-netinst.iso'
      loopback loop $isofile
      linux (loop)/install.amd/vmlinuz auto=true priority=critical vga=788 --- quiet
      initrd (loop)/install.amd/gtk/initrd.gz
    }
  }
  menuentry 'Install with speech synthesis - Debian 8.7.1 64bit netinst - internet install (todo test)' {
    set isofile='/iso/debian-8.7.1-amd64-netinst.iso'
    loopback loop $isofile
    linux (loop)/install.amd/vmlinuz vga=788 speakup.synth=soft --- quiet
    initrd (loop)/install.amd/gtk/initrd.gz
  }
} # submenu debian

# tails-amd64-3.1.iso
menuentry 'Tails 3.1 64bit (todo: hat error)' {  
  set isofile='/iso/tails-amd64-3.1.iso'
#  set timezone='Etc/UTC'            # uncomment your desired timezone
  set timezone='Europe/Berlin'
  loopback loop $isofile
  linux (loop)/live/vmlinuz boot=live config live-media=removable apparmor=1 security=apparmor nopersistence noprompt timezone=$timezone block.events_dfl_poll_msecs=1000 splash noautologin module=Tails kaslr slab_nomerge slub_debug=FZP mce=0 vsyscall=none page_poison=1 union=aufs quiet
  initrd (loop)/live/initrd.img
}
menuentry 'Tails 3.1 64bit (Troubleshooting Mode) (todo: hat error)' {  
  set isofile='/iso/tails-amd64-3.1.iso'
#  set timezone='Etc/UTC'            # uncomment your desired timezone
  set timezone='Europe/Berlin'
  loopback loop $isofile
  linux (loop)/live/vmlinuz boot=live config live-media=removable apparmor=1 security=apparmor nopersistence noprompt timezone=$timezone block.events_dfl_poll_msecs=1000 splash noautologin module=Tails kaslr slab_nomerge slub_debug=FZP mce=0 vsyscall=none page_poison=1 union=aufs  noapic noapm nodma nomce nolapic nomodeset nosmp vga=normal
  initrd (loop)/live/initrd.img
}

# gparted-live-0.28.1-1-amd64.iso
submenu 'GParted 0.28.1 64bit [... mehr ...]' {
  # Since no network setting in the squashfs image, therefore if ip=, the network is disabled. That's what we want.
  menuentry '... GParted 0.28.1 64bit (Default settings) [todo: error]' {
    set isofile='/iso/gparted-live-0.28.1-1-amd64.iso'
    loopback loop $isofile
    linux (loop)/live/vmlinuz boot=live union=overlay username=user config components quiet noswap ip= net.ifnames=0 nosplash
    initrd (loop)/live/initrd.img
  }
  menuentry '... GParted 0.28.1 64bit (Default settings, KMS) [todo: error]' {
    set isofile='/iso/gparted-live-0.28.1-1-amd64.iso'
    loopback loop $isofile
    linux (loop)/live/vmlinuz boot=live union=overlay username=user config components quiet noswap vga=791 ip= net.ifnames=0 nosplash
    initrd (loop)/live/initrd.img
  }
  menuentry '... GParted 0.28.1 64bit (To RAM, boot media can be removed later) [todo: error]' {
    set isofile='/iso/gparted-live-0.28.1-1-amd64.iso'
    loopback loop $isofile
    linux (loop)/live/vmlinuz boot=live union=overlay username=user config components quiet noswap toram=filesystem.squashfs ip= net.ifnames=0 nosplash
    initrd (loop)/live/initrd.img
  }
  menuentry '... GParted 0.28.1 64bit Safe graphic settings (vga=normal) [todo: error]' {
    set isofile='/iso/gparted-live-0.28.1-1-amd64.iso'
    loopback loop $isofile
    linux (loop)/live/vmlinuz boot=live union=overlay username=user config components quiet noswap ip= net.ifnames=0 nomodeset vga=normal nosplash
    initrd (loop)/live/initrd.img
  }
  menuentry '... GParted 0.28.1 64bit (Failsafe mode) [todo: error]' {
    set isofile='/iso/gparted-live-0.28.1-1-amd64.iso'
    loopback loop $isofile
    linux (loop)/live/vmlinuz boot=live union=overlay username=user config components quiet noswap acpi=off irqpoll noapic noapm nodma nomce nolapic nosmp ip= net.ifnames=0 nomodeset vga=normal nosplash
    initrd (loop)/live/initrd.img
  }
  menuentry '... memtest' {
    set isofile='/iso/gparted-live-0.28.1-1-amd64.iso'
    loopback loop $isofile
    linux16 (loop)/live/memtest
  }
} # submenu gparted

menuentry 'Acronis TrueImage 11 plus (todo)' {
  # todo
}

menuentry 'BIOS im UEFI-Modus aufrufen' {
  fwsetup
}

menuentry 'Weiter mit booten von Festplatte' {
 set root=(hd1)
 chainloader +1
}

menuentry 'Restart / Reboot' {
 reboot
}
 
menuentry 'Shut Down / Ausschalten' {
 halt
}

 

Anregungen für dich:

Anhand der Install-Iso von den jeweiligen Linux-Distributionen und -Varianten kannst du versuchen die richtigen Parameter herauszufinden. Genauen Platz und Suchort, wo du auf der CD/Iso suchen sollst, habe ich vergessen. Infos dazu findest du aber sicher im Netz.

Grub2 kannst du grafisch "voll aufmotzen". Suche im Netz danach. Du kannst Farben ändern, der Texte, des Hintergrundes, Fonts ändern, ich glaube auch Grafiken einbinden, dein Logo, usw. usw. Grub konnte das alles wohl noch nicht; kam alles mit Grub2.

Happy testing :-)