Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: GentooForum.de. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

1

10.02.2014, 15:43

Kernel für USB-Stick System

Hi,

wollte euch mal um Rat fragen.
Ich habe meine Kernel bis jetzt selber konfiguriert, für jedes System extra.
Dabei habe ich mit genkernel oft die Erfahrung gemacht, dass Treiber fehlen.
Initrds erstelle ich mit dracut, auch hier finde ich genkernel nicht so schön wie dracut.

Jetzt möchte ich ein gentoo auf einen USB-Stick installieren, mit dem ich als Live-Rettungssystem
auf möglichst viel verschiedener Hardware booten kann, als Rettungssystem oder als
"mein gewohntes Betriebssystem", das ich auch mal ohne eigenen Computer bei Freunden/Bekannten oder in der Arbeit booten kann.
Mit der gleichen Software drauf, gewohnt konfigurierte Umgebung und mein gewohntes, absynchronisiertes /home.

Nun brauch ich einen Kernel, der alle denkbaren Treiber als Modul laden kann.
Ich will mich da gerne an einer vorhandenen Konfiguration bedienen.
Nun ja, ich hab mir eben die default Konfiguration von genkernel-next-35 angeschaut und die scheint schon etwas älter zu sein.
Jede Menge Zeug wird da bei oldconfig gefragt und ehrlich gesagt mag ich genkernel irgendwie grundsätzlich nicht.

Ich dachte da an eine Konfiguration als Vorlage zum Beispiel von Knoppix, Debian oder so.
Wie würdet ihr vorgehen? Welche Distribution eignet sich hier, welche nicht?
Ubuntu beispielsweise patcht doch sehr viel, ich kann mir vorstellen, dass ubuntu keine gute Idee ist.
Ich würde auch gern einfach bei jedem Kernel update wieder neu die config aus meiner "Vorlagendistribution" holen,
anstatt mich durch alle Neuerungen zu kämpfen.

Bin mal auf eure Vorschläge gespannt.

Viele Grüße
Foyaxe

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Foyaxe« (10.02.2014, 18:02)


2

10.02.2014, 17:49

Zusatzinfo zu meiner Idee:
Ich fange erstmal auf einem anderen Stick an, aber später soll das System auf diesen oder einen ähnlichen Stick:
http://geizhals.at/de/patriot-tab-64gb-p…b-a1037854.html

64 GB sind gut, 32 sollten es mindestens sein, denke ich. Je mehr, desto besser.
Schnelle Lese- und Schreibgeschwindigkeit sind auch immer wünschenswert.
Der Stick soll so klein sein, damit er im Geldbeutel im Münzfach Platz findet, so dass er auch wirklich immer dabei ist, wenn ich außer Haus gehe.

Eine kleinere Partition soll FAT, werden, damit er auch für Windoofe zum "kannst du mir das bitte schnell da drauf ziehen" funktioniert.
Dann noch eine kleine boot Partition und der große Rest soll eine mit LUKS verschlüsselte btrfs Partition werden.
Verschlüsselt - ist wohl klar - wenn ich das Teil verliere, kaufe ich einfach einen neuen und brauche mir keine Sorgen machen, dass jemand meine Daten hat.
Btrfs aus drei Gründen:
1. Kompression: Da ein Stick grundsätzlich nicht so schnell schreibt und auch weniger Platz bietet, lässt sich mehr Platz und Performance durch on-the-fly Kompression raus holen.
2. Subvolumes: (das habe ich noch nie ausprobiert) Ich kann mehrere Gentoo Installationen als einzelne Subvolumes realisieren, zum Beispiel eine für x86 und eine für x86_64. Dabei können die die gleiche /home-subvolume benutzen und auch so was wie /usr/portage/distfiles kann ich gemeinsam verwenden. Dabei brauche ich mir nicht, wie sonst, Gedanken machen, wie groß die einzelnen Partitionen sein sollen.
3. Checksummen: btrfs macht, afaik, checksummen von jeder Datei. So sollte ich recht schnell mitbekommen, wenn der Stick hinüber ist und mich nicht ständig wundern, warum mein System einfriert oder sonstige merkwürdige Sachen passieren.

Zum System aktualisieren boote ich nicht vom Stick sondern gebe das block device einfach an VirtualBox o.ä. durch und boote den Stick in einer virtuellen Maschine.
So brauche ich nicht mein normales System runter fahren und kann schön wie gewohnt alle meine gentoo Installationen gleichzeitig updaten.
Aber ich möchte mich noch nicht zu weit aus dem Fenster lehnen - btrfs ist für mich relatives Neuland.

Findet ihr das cool?
Würdet ihr irgendwas anders machen?
Habt ihr so was ähnliches schon mal gebastelt?

Schöne Grüße
Foyaxe

3

10.02.2014, 21:44

Nun brauch ich einen Kernel, der alle denkbaren Treiber als Modul laden kann.

Wie das geht würde ich auch gerne wissen. Es gibt aber die Möglichkeit den Kernel mit allem möglichen zu bauen. Ein make allmodconfig wird alles erdenkliche in den Kernel bauen.

Zu deinem Vorhaben ein Linux auf einen Stick zu installieren ist schon ehrgeizig. Ich habe es noch nie hingekommen ein vollständiges und stabiles System zu installieren. Meist sind die Sticks von schlechter Qualität und es regnet recht schnell Lese- und Schreibfehler. Seit dem kommt alles brav in ein SquashFile. Damit das System read/write ist benutze ich aufs und für /home eine ImageFile mit ext2. Den kernel Kompiliere ich mit genkernel-next und passe ich nachträglich noch etwas an. Meist fehlt die ein oderer andere Hardware wie du schon bemerkt hast.
An Verschlüsselung habe ich noch nicht gedacht. Ich nutze meine LiveCd, oder USBStick, meist nur zum zeigen, reparieren von Windows und zur schnellen Neuinstallation eines Gentoos.

Findet ihr das cool?
Würdet ihr irgendwas anders machen?
Habt ihr so was ähnliches schon mal gebastelt?

3 mal Ja :thumbsup:
Intel Core2 Quad CPU @ 2.40GHz mit Gentoo/Gnome3

4

10.02.2014, 22:46

Zu deinem Vorhaben ein Linux auf einen Stick zu installieren ist schon ehrgeizig. Ich habe es noch nie hingekommen ein vollständiges und stabiles System zu installieren. Meist sind die Sticks von schlechter Qualität und es regnet recht schnell Lese- und Schreibfehler.

Mein letzter Geldbeutel-Stick war so schlecht, dass ich Knoppix ca. 10 mal drauf installiert habe, bis es gebootet hat. Nach ein paar Monaten war es dann wieder kaputt. Und das, obwohl Knoppix glaub auch squashfs und ein verschlüsseltes aufs benutzt und nicht ständig drauf rum geschrieben wurde. (das hat mir vom Konzept her schon ganz gut gefallen)
Ich hab lang gebraucht bis ich realisiert habe, dass der Stick schuld ist. Ich war es einfach noch nicht gewohnt, dass es das gibt.
Das war ein Intenso MicroLine wenn ich mich recht erinnere. Müsste noch irgendwo rumliegen.
Mein nächster war ein Corsair FlashVoyager GT. Mit dem hatte ich bisher keine Probleme. Nur ist der zu groß für den Geldbeutel.
Ich bezweifle, dass ich Erfolg haben werde wenn ich wieder einen kleinen und billigen kaufe. Aber was solls. Forschungszweck.
Puh, wenn ich darüber nachdenke, ob die Daten auf SSDs genauso sicher sind, dann wird mir ein bisschen Angst. Ich hab inzwischen fast überall eine drin.

5

10.02.2014, 23:09

Ich habe mir so ein Stick gebaut. Normalerweise sind ja Live-USB read-only, im Prinzip eine Live-CD auf USB gepackt. Das wollte ich nicht, ich wollte ein normales Gentoo.
Also, Stick ganz normal formattieren, Gentoo ganz normal installieren, Grub auch. Beim Kernel muss nur sicher gestellt sein dass der USB-Stick erkannt wird. Also USB_SUPPORT, USB_EHCI_HCD, USB_XHCI_HCD und weitere USB_*HCD Treiber (OHCD, UHCD) so wie USB_STORAGE mit allen unter-Optionen fest im Kernel, damit das Ding von jedem USB booten kann. Natürlich darf auch BLK_DEV_SD und das Dateisystem nicht fehlen.

Dann generiere ich eine initramfs mit Genkernel, damit ich UUID zum Booten nutzen kann. Somit kann der Kernel den "richtigen" Stick nicht verwechseln. Dazu nutze ich

Quellcode

1
genkernel --oldconfig --no-ramdisk-modules --no-keymap --disklabel all

Zur Erklärung:
--oldconfig: nutze die vorhandene ".config" Datei anstatt der genkernel-gelieferten
--no-ramdisk-modules: Keine Module in die initramfs. Diese wird kleiner und die "Hardware-Detection" entfehlt. Wir haben ja das richtige im Kernel
--no-keymap: Braucht jemand die Keymap in der initramfs überhaupt? ich nicht.
--disklabel: die UUID Unterstützung
all: Baue Kernel (mit --oldconfig) und die initramfs.

In der Grub-Konfiguration dann folgende Kernel-Parameter:

Quellcode

1
scandelay root=/dev/ram0 real_root=UUID=xyz

scandelay: Warte bis der Kernel USB komplett initialisiert hat
root=/dev/ram0: Wir nutzen eine initramfs
real_root: unsere Stick-UUID

Mein Stick hat nur 8 GB, daher lasse ich Portage aussen-vor und kompiliere nicht auf dem Stick. Aktualisiert wird wenn ich den Stick an meine Workstation anklemme. Dazu nutze ich folgenden Skript:

Quellcode

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
#!/bin/sh

DEST=/mnt/usbgentoo

mount -t ext4 '/dev/disk/by-id/usb-SanDisk_U3_Cruzer_Micro_08766109E3D1B7E1-0:0-part1' $DEST

mount -o bind /dev/ $DEST/dev/
mount -o bind /sys/ $DEST/sys/
mount -t proc proc  $DEST/proc/
mount -o bind /mnt/overlays/ $DEST/mnt/overlays/
mount -o bind /usr/portage/ $DEST/usr/portage/
cp /etc/resolv.conf $DEST/etc/resolv.conf
mount -t tmpfs temp -o size=100% $DEST/tmp
mount -t tmpfs temp -o size=100% $DEST/var/tmp

chroot $DEST /bin/bash

umount $DEST/usr/portage/
umount $DEST/mnt/overlays/
umount $DEST/proc
umount $DEST/dev
umount $DEST/sys
umount $DEST/tmp
umount $DEST/var/tmp
umount $DEST
Dieses Skript bringt mich in eine Chroot-Umgebung des Stickes in der ich alle Wartungsarbeiten durchführen kann, und nach dem Verlassen auch wieder raus.

Übrigens, der Stick ist x86 (wg. maximaler Kompatibilität) und der Host ist amd64. Kein Problem wenn der Host auch 32-bit Ausführung unterstützt.
Auch wenn Open-Source kostenlos ist, ist sie nicht umsonst. Dein Preis ist Dein Engagement und Mitarbeit an OS-Projekten.
Wenn Du keinen Preis bezahlen willst, bist Du die Ware. Und das ist nicht Open Source, geschweigedenn frei.

6

11.02.2014, 08:28

Danke bell!
Das hilft mir ein Stück weiter, wenn es so weit ist.
Übrigens, der Stick ist x86 (wg. maximaler Kompatibilität) und der Host ist amd64. Kein Problem wenn der Host auch 32-bit Ausführung unterstützt.

Was machst du, wenn du in eine vorhandene x86_64 Installation chrooten möchtest oder eine Neuinstallation machen möchtest?

7

11.02.2014, 10:04

Was machst du, wenn du in eine vorhandene x86_64 Installation chrooten möchtest oder eine Neuinstallation machen möchtest?

Äm, das musste ich noch nie. Theoretisch müsste es gehen wenn man die 64-Bit-Unterstützung in den Kernel einbaut.
Auch wenn Open-Source kostenlos ist, ist sie nicht umsonst. Dein Preis ist Dein Engagement und Mitarbeit an OS-Projekten.
Wenn Du keinen Preis bezahlen willst, bist Du die Ware. Und das ist nicht Open Source, geschweigedenn frei.

8

11.02.2014, 11:06

Was den Kernel betrifft, könnte man auch mal einen Blick auf Sabayon riskieren. Zumindest der Kernel ist recht gut gemacht, falls man den Stick auf vielen verschiedenen Rechnern zum Laufen bringen möchte. Einen Sabayon Live USB Stick habe ich auch immer in meiner Schublade, falls ich mal in mein System chrooten muss. Dafür eignet sich das ziemlich gut. Für dein Vorhaben lässt sich das sicherlich auch gut verwenden. Du könntest das System nach deinen Bedürfnissen anpassen und persistent auf den USB Stick speichern. So hättest du dir zumindest einiges an Arbeit gespart, da Sabayon eigentlich genau das ist, was du vorhast, ein vorkompiliertes Gentoo, welches auf möglichst vieler Hardware läuft.

9

04.03.2014, 01:10

Update:

Ich hatte die letzten Tage Lust und Zeit, mich mit dem Stick auseinanderzusetzen.
Ein kleines Gentoo ist installiert und es bootet mit GRUB2 auf BIOS. Mehr Info gebe ich, wenn er fertig ist, aber ein paar Sachen oder Erkenntnisse, die ich die letzten Abende recherchiert habe, kann ich der Nachwelt schon hinterlassen.
  • Formatierung: MSDOS-Partitionstabelle. Der Stick (oder zumindest der öffentliche Teil) soll von vielen Geräten erkannt werden, darunter sehr alte Windows-Installationen, Drucker mit USB-Port usw. Daher ist GPT ausgeschlossen. Als Dateisystem für die "öffentliche" Partition wähle ich FAT32, weil zum Beispiel mein Drucker kein NTFS erkennt. Den Nachteil, dass ich keine Dateien größer 4GB darauf speichern kann nehme ich in Kauf und mache die Partition gleich nur 5GB groß. Ist ja nur zum Dateiaustausch, sollte es mal mehr sein, muss ich mich eben um einen anderen Datenträger kümmern, den ich nicht immer im Geldbeutel mittrage. Zusammenfassung:
    • sdx1 5GB FAT32 Edit: Wichtig: Windows erkennt bei USB-Sticks nur die erste Partition. Es muss also wirklich sdx1 sein.
    • sdx2 200MB ext4 mit boot-Flag, für GRUB, Kernels und initrds. Weil es nicht verschlüsselt sein kann.
    • sdx3 Rest(57GB) LUKS verschlüsselt, darauf btrfs, darunter subvolumes:
      • amd64 - das habe ich jetzt als default volume gesetzt, weil ich noch nicht probiert habe, ob man ein subvolume als rootfs benutzen kann
      • x86 - ist noch leer und soll ein paralleles, komplett eigenständiges System werden, das nur benutzt wird, wenn der Rechner eine 32Bit Maschine ist.
      • home

  • Hardware: Es ist der besagte Patriot Tab 64GB geworden. Bis jetzt kann ich zur Qualität nicht viel sagen, aber ich kann sagen, er ist wirklich sehr klein (ich liefere ein Foto nach, kann ihn jetzt nicht abziehen) und ich kann sagen, dass er sehr heiß wird. Wobei ich nicht weiß, ob die Wärme vom Stick kommt oder vom Mainboard. Er steckt jetzt in der Buchse in meinem Laptop. Das ist ein Thinkpad X201t.
  • Kompression: Ich verwende lzo, weil ich weiß, dass es sehr schnell ist. Es ist auch bei Festplatten und SSDs sinnvoll. Ob Gzip bei einem USB-Stick besser ist, weiß ich nicht, aber ich denke, es trotzdem zu langsam. Ein Algorithmus, der vom Performance-/Kompressionsgrad ungefähr dazwischen liegt wäre wahrscheinlich gut. Platz habe ich genug, also wähle ich das Schnellere.
  • Kompilieren: Ich bin nicht ganz sicher, ob die Downloads der Sourcen das verursacht haben, aber ich denke nicht. Als ich angefangen habe, die übliche Software für mein System zu kompilieren, hatte ich heftigen I/O load und es ging nur langsam voran. Dann habe ich den emerge abgebrochen, /var/tmp/portage als tmpfs gemountet und wieder gestartet. Gleich viel besser. Erstens, es wird der Stick nicht so stark mit Schreibvorgängen belastet. Zweitens, es sollte viel schneller sein, das im RAM zu machen und selbst wenn wenig davon da ist, ist es immer noch viel schneller, ein tmpfs zu benutzen, das dann im swap des hosts ausgelagert wird, als das Ganze auf einem USB-Stick zu machen.
  • Kernel: Ich habe jetzt keine fertige Vorlage genommen, sondern einen, wie ich ihn schon auf einem meiner Systeme am Laufen hatte und habe bei ein, zwei Bier die menuconfig durchfostet und alles, was nach einem im entferntesten Sinne brauchbaren Treiber aussieht, als Modul gebaut. Fest einkompiliert habe ich bewusst: Alle USB Host-Treiber, ext- und btrfs-Dateisysteme und für die Krypto sinnvolle Treiber: sha*, aes*, xts, Kompressionen.

Ich melde mich wieder, wenn ich weiter bin.

Was ich noch vor habe:
  • EFI-bootbar (natürlich kein Secure Boot)
  • 32Bit Kompatibilität


Gruß
Foyaxe