Donnerstag, 9. Februar 2012, 06:08

Du bist nicht angemeldet.



Easyy-S

Boardgrafiker

  • »Easyy-S« ist der Autor dieses Themas

Beiträge: 2 971

Ubuntu: 11.10

Kernel: generic

Desktop: Gnome

Architektur: 64-bit

  • Private Nachricht senden

1

Samstag, 19. Juli 2008, 02:11

Ubuntu 8.04 auf USB-Stick installieren (inkl. GRUB als bootloader)

Ein langes, aber wirkungsvolles HowTo

Ich habe etliche Möglichkeiten getestet, um das bestmögliche Ergebnis zu erzielen, Ubuntu auf einem USB-Stick lauffähig zu bekommen. Das HowTo ist dadurch recht lang geworden, dafür aber auch sehr transparent, sodass alles gut nachvollziehbar sein sollte. Es sieht anfänglich schlimmer aus, als es wirklich ist. Wenn man es einmal abgearbeitet hat, wird man schnell erkennen, dass es doch recht schnell geht, das Ganze ans laufen zu bekommen.

Das HowTo beschreibt, wie man Ubuntu Hardy Hero 8.04 auf einem USB-Stick installiert, um dieses anschließend von selbigen zu starten.

Inhaltsverzeichnis:


GRUB statt syslinux

Um Ubuntu vom Stick zu booten, wird GRUB als Bootloader eingesetzt. In vielen HowTos, die man im Internet findet, wird beschrieben, wie man Ubuntu mit Hilfe von 'syslinux' startet, was in meinen Augen allerdings nicht so komfortabel ist.
Darüber hinaus ist die Bootzeit mit GRUB um ein vielfaches geringer, als es mit syslinux der Fall ist.

In dem HowTo gehe ich davon aus, dass man bereits über ein installiertes Linux verfügt.
Sollte dem nicht so sein, muss man Ubuntu von einer Live-CD (Ubuntu-Desktop) starten.
Die hier verwendeten Dateien der Ubuntu-CD findet man nach dem Start der Live-CD dann unter /cdrom/.

Verwendungszweck - Bootoptionen

Das Bootloadermenü bietet mehrere Möglichkeiten, Ubuntu zu starten.

Zum einen gibt es die live Option, die Ubuntu im Standardmodus startet, ohne vorgenommene Änderungen oder Einstellungen am System zu speichern. In dem Fall verhält sich der USB-Stick genauso wie die bekannte Live-CD (Desktop).

Des Weiteren gibt es den persistent Modus (der beim Booten mehr Zeit benötigt als der Live-Modus). Startet man Ubuntu mit dieser Variante, werden Einstellungen und Änderungen auf der anzulegenden zweiten Partition gespeichert. Dabei legt Ubuntu eine Verzeichnisstruktur an, die unverändert bleiben sollte. Hat man einmal irgendetwas 'kaputtkonfiguriert', reicht es aus, den gesamten Inhalt der zweiten Partition (casper-rw) zu löschen (dazu gibt es einen Tipp am Ende des HowTos). Auf der ersten Partition (ubuntu) wird nichts geändert oder geschrieben. Somit sollte das System immer funktionieren und es bedarf keiner Neueinrichtung.

Sollte es beim Starten von Ubuntu zu dem Problem kommen, dass man nach oder während des Hochfahrens nichts auf dem Bildschirm sehen kann, gibt es die alternativen Bootoptionen 'Live VGA 791' und Live VGA 0x31B'. Teilweise wirkt sich dies auch auf die Desktopauflösung von Gnome aus. Hier gilt es dann zu testen, was auf dem jeweiligen System funktioniert.

Der USB-Stick

Benötigt wird ein USB-Stick mit mindestens 1GB Speicherkapazität. Sinnvoller sind 2GB oder mehr, da allein Ubuntu schon gut 700 MB des Sticks belegt. Je größer der Stick, desto mehr Platzt bleibt für eigene abzuspeichernde Dateien.

Laufwerksangaben im HowTo ( /dev/sdX )

Meine Erklärungen bauen darauf auf, dass der USB-Stick unter /dev/sde angesprochen wird.
Dies ist beispielhaft und an die eigenen Gegebenheiten anzupassen!
Wie man die Zuweisung des Sticks im eigenen System herausfindet, wird weiter unten beschrieben.

Damit das Ganze auch funktioniert,
sollten alle Anweisungen genau befolgt werden. Jede Abweichung (sei es auch nur ein '/' am Ende eines Verzeichnisnamens) kann dazu führen, dass sich das Ubuntu nicht booten lässt.
Wenn einmal alles läuft, kann man immer noch Änderungen vornehmen und das System an die eigenen Bedürfnisse anpassen.


Wie man Ubuntu 7.04 und 7.10 auf einem USB-Stick installiert kann hier nachgelesen werden:
[HowTo] Ubuntu 7.04 7.10 auf einem USB-Stick installieren (inkl. GRUB als Bootloader)
Easyy-S

Mein pubkey

Dein eigener UbuntuFreunde-Avatar: hier - Dein UbuntuFreunde-Banner: hier

Easyy-S

Boardgrafiker

  • »Easyy-S« ist der Autor dieses Themas

Beiträge: 2 971

Ubuntu: 11.10

Kernel: generic

Desktop: Gnome

Architektur: 64-bit

  • Private Nachricht senden

2

Samstag, 19. Juli 2008, 02:13

Vorbereitungen

Zu Beginn lädt man sich das ISO-Image der Ubuntu Desktop CD für 32-Bit-Systeme herunter.
Dieses findet man hier:
Ubuntu 8.04
Anmerkung:
Wer sich ein angepasstes und ggf. aktualisiertes Ubuntu erstellen möchte, kann dies mit dem 'Ubuntu Customization Kit' tun.
Dieses ermöglicht die Erstellung eines eigenen, neuen iso's von Ubuntu. Detaillierte Informationen zu UCK findet ihr hier:
[HowTo] Ubuntu Customization Kit 2.0 Bedienung und Tricks

Wichtig hierbei ist, dass es sich um die Variante 'Desktop CD' und nicht um die 'Alternate install CD' handelt.
Auf CD brennen muss man das Abbild nicht, da wir es in unser Dateisystem einhängen, um auf den Inhalt zugreifen zu können.
Hat man die Desktop-Variante von Ubuntu bereits auf einer CD und möchte das ISO-Image nicht erneut herunterladen, kann auch diese verwendet werden. In dem Fall kopiert man alle benötigten Dateien direkt von der eingelegten Installations-CD.

Anschließend meldet man sich in einem Terminal dauerhaft als root an:

Quellcode

1
sudo -s

und mountet das heruntergeladene ISO-Image nach /mnt:

Quellcode

1
mount -o loop -t iso9660 /PFAD/ZUM/ISO.iso /mnt

Easyy-S

Boardgrafiker

  • »Easyy-S« ist der Autor dieses Themas

Beiträge: 2 971

Ubuntu: 11.10

Kernel: generic

Desktop: Gnome

Architektur: 64-bit

  • Private Nachricht senden

3

Samstag, 19. Juli 2008, 02:17

USB-Stick partitionieren

Dazu muss man zunächst den zuvor eingesteckten USB-Stick ausfindig machen, damit man weiß, unter welcher Adresse er zu erreichen ist:

Quellcode

1
fdisk -l

In meinem Beispiel ist dies /dev/sde

Das HowTo baut auf dieser Bezeichnung auf. Der Laufwerksname ist ggf. den eigenen Gegebenheiten anzupassen!
Wer einfach die Beispiele kopiert und ins Terminal einfügt, riskiert u.U. Datenverlust!

Eventuell vorhandene Partitionen (in der Regel dürfte der Stick bereits über mindestens eine Partition verfügen) werden ausgehangen:

Quellcode

1
umount /dev/sde1

Sollten weitere Partitionen auf dem Stick existieren, sind diese ebenfalls auszuhängen (sde2, sde3, usw.)


Mit den folgenden Schritten werden alle Daten auf dem USB-Stick unwiederbringlich gelöscht!

Es ist unbedingt auf die richtigen Laufwerksangaben zu achten, sodass man nicht "aus Versehen" eine Festplatte löscht!

Zu allererst löscht man alle Daten auf dem Stick (dies entfernt ebenso alle vorhandenen Partitionen).
Der folgende Befehl beschreibt den kompletten Stick mit Nullen. Es kann einen Augenblick dauern bis dieser Vorgang abgeschlossen ist:

Quellcode

1
cat /dev/zero > /dev/sde

Abschließend kommt es zu dieser Meldung:

Zitat

cat: Schreibfehler: No space left on device

Das ist in Ordnung und bedeutet schlicht, dass der Vorgang abgeschlossen ist und der gesamte Stick überschrieben wurde.

Nachdem der USB-Stick nun komplett leer ist und auch die Partitionstabelle nicht mehr existiert, werden neue Partitionen erstellt. Es werden zwei Partitionen benötigt. Die erste für das Grundsystem und die zweite, um auf dieser Änderungen und Einstellungen speichern zu könnnen.

Dieser Schritt wird mit fdisk erledigt:

Quellcode

1
fdisk /dev/sde

Nun werden die folgenden Befehle ausgeführt, die über einzelne Buchstaben und Zahlen gesteuert werden:
Den jeweiligen Buchstaben oder die Zahl eingeben und mit 'Enter' bestätigen:

Zitat

n = Neue Parition
p = Primäre Partition
1 = Erste Partition
Enter = Übernimmt die Vorgaben für den ersten Zylinder
+750M = Legt die Größe der neuen Partition fest ( 750 MB )
t = Dateisystemtyp festlegen
b = FAT32
a = Zum Setzen des Parameters 'aktiv / boot'
1 = Auswahl der ersten Partition

Da künftig nichts in diese Partition geschrieben wird, muss die Partition nicht größer sein.
Für eigene Daten und das Speichern von Einstellungen wird die bereits erwähnte zweite Partition angelegt:

Zitat

n = Neue Parition
p = Primäre Partition
2 = Zweite Partition
Enter = Übernimmt die Vorgaben für den ersten Zylinder
Enter = Übernimmt die Vorgaben für den letzten Zylinder
w = Schreibt die Änderungen auf den Stick

Nach dem schreiben der Partitionstabellen hängt Ubuntu die beiden neuen Partitionen automatisch in das System ein. Bevor wir nun die Partitionen formatieren hängen wir diese aus dem Dateisystem erst einmal wieder aus:

Quellcode

1
umount /dev/sde1 /dev/sde2

Nun bekommen die beiden neuen Partitionen noch ihr Dateisystem.
Die erste Partition bekommt FAT32 die zweite ext2.

Quellcode

1
2
mkfs.vfat -F 32 -n ubuntu /dev/sde1
mkfs.ext2 -L casper-rw /dev/sde2

Hier angekommen, ist es ein guter Zeitpunkt die Anzahl von mounts der zweiten Partition zu ändern, bis das Dateisystem gecheckt wird:

Quellcode

1
tune2fs -c 80 /dev/sde2

Sind die Dateisysteme angelegt worden, zieht man der Einfachheit halber den Stick ab und steckt ihn wieder ein.
Ubuntu hängt die beiden neuen Partitionen nun automatisch nach /media/ubuntu und /media/casper-rw ein.
Die beiden Nautilusfenster, die sich u.U. dabei öffnen, können geschlossen werden.

Easyy-S

Boardgrafiker

  • »Easyy-S« ist der Autor dieses Themas

Beiträge: 2 971

Ubuntu: 11.10

Kernel: generic

Desktop: Gnome

Architektur: 64-bit

  • Private Nachricht senden

4

Samstag, 19. Juli 2008, 02:21

Installation des Bootloaders GRUB

In diesem Schritt wird der Stick bootfähig gemacht, indem GRUB installiert wird.

Der folgende Befehl erledigt alles Notwendige:

Quellcode

1
grub-install --no-floppy --root-directory=/media/ubuntu /dev/sde

Hat alles funktioniert, wird unter anderem die folgende Meldung ausgegeben:

Zitat

Installation finished. No error reported.


Nun fehlt noch eine menu.lst, damit GRUB auch anzeigen kann, welche Optionen wir zum Booten zur Auswahl haben.
Mit einem Editor seiner Wahl (hier gedit) erstellt man in /media/ubuntu/boot/grub/ die Datei 'menu.lst' mit folgendem Inhalt und speichert diese:

Quellcode

1
gedit /media/ubuntu/boot/grub/menu.lst

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
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
default 2
timeout 30

## Deutsches Tastaturlayout fuer grub
setkey y z
setkey z y
setkey Y Z
setkey Z Y
setkey equal parenright
setkey parenright parenleft
setkey parenleft asterisk
setkey doublequote at
setkey plus bracketright
setkey minus slash
setkey slash ampersand
setkey ampersand percent
setkey percent caret
setkey underscore question
setkey question underscore
setkey semicolon less
setkey less numbersign
setkey numbersign backslash
setkey colon greater
setkey greater bar
setkey asterisk braceright

title UbuntuFreunde.de
root
title ----------------
root

## Ubuntu im Live-Modus starten.
title UsBuntu - Live
root (hd0,0)
kernel /vmlinuz file=/preseed/ubuntu.seed boot=casper live locale=de_DE console-setup/layoutcode=de ramdisk_size=1048576 --
initrd /initrd.gz

## Ubuntu im Live-Modus mit angepasster Aufloesung starten.
title UsBuntu - Live VGA 1024
root (hd0,0)
kernel /vmlinuz file=/preseed/ubuntu.seed boot=casper live locale=de_DE console-setup/layoutcode=de ramdisk_size=1048576 vga=791 --
initrd /initrd.gz

## Ubuntu im Live-Modus mit angepasster Aufloesung starten.
title UsBuntu - Live VGA 1280
root (hd0,0)
kernel /vmlinuz file=/preseed/ubuntu.seed boot=casper live locale=de_DE console-setup/layoutcode=de ramdisk_size=1048576 vga=794 --
initrd /initrd.gz

## Ubuntu im Persistent-Modus starten. Speichert Aenderungen und Einstellungen am System.
title UsBuntu - Persistent
root (hd0,0)
kernel /vmlinuz file=/preseed/ubuntu.seed boot=casper persistent locale=de_DE console-setup/layoutcode=de ramdisk_size=1048576 --
initrd /initrd.gz

## RAM-Test
title Arbeitsspeichertest
root (hd0,0)
kernel /install/mt86plus
quiet

Easyy-S

Boardgrafiker

  • »Easyy-S« ist der Autor dieses Themas

Beiträge: 2 971

Ubuntu: 11.10

Kernel: generic

Desktop: Gnome

Architektur: 64-bit

  • Private Nachricht senden

5

Samstag, 19. Juli 2008, 02:29

Ubuntu auf den Stick kopieren

Nun werden alle notwendigen Daten auf den Stick kopiert.

Dazu wechselt man in das Verzeichnis /mnt, in welchem wir alle Dateien der Live-CD finden:

Quellcode

1
cd /mnt/

und kopiert folgende Dateien und Verzeichnisse auf den Stick (diesen Befehl am besten kopieren und in das eigene Terminal einfügen, da beim Kopieren Dateien anders auf dem Stick abgelegt werden, als sie auf der CD vorliegen):

Quellcode

1
cp -rf casper casper/vmlinuz casper/initrd.gz .disk dists install isolinux/splash.* md5sum.txt pool preseed README.diskdefines /media/ubuntu/

Die folgenden Fehlermeldungen können ignoriert werden:

Zitat

cp: Erzeugen der symbolischen Verknüpfung „/media/ubuntu/dists/stable“ nicht möglich: Operation not permitted
cp: Erzeugen der symbolischen Verknüpfung „/media/ubuntu/dists/unstable“ nicht möglich: Operation not permitted

Da die initrd.gz und vmlinuz nach dem Kopieren nicht mehr an ihren Ursprungsorten liegen und somit doppelt vorhanden sind, können diese gelöscht werden.

Quellcode

1
rm /media/ubuntu/casper/initrd.gz /media/ubuntu/casper/vmlinuz

Easyy-S

Boardgrafiker

  • »Easyy-S« ist der Autor dieses Themas

Beiträge: 2 971

Ubuntu: 11.10

Kernel: generic

Desktop: Gnome

Architektur: 64-bit

  • Private Nachricht senden

6

Samstag, 19. Juli 2008, 03:13

Anpassen der initrd.gz

Damit das Ubuntu-System auf dem Stick in der Lage ist, Änderungen am System zu speichern, bedarf es einer Anpassung der initrd.gz.

Bevor man die initrd.gz entpackt, wird ein ein Arbeitsverzeichnis erstellt:

Quellcode

1
mkdir /var/tmp/initedit

In dieses Verzeichnis wechseln:

Quellcode

1
cd /var/tmp/initedit

und die initrd.gz unseres USB-Sticks in das neue Verzeichnis entpacken:

Quellcode

1
gzip -dc /media/ubuntu/initrd.gz | cpio -i

Die Datei 'init' mit einem Editor (hier: gedit) öffnen:

Quellcode

1
gedit init

Zu suchender Eintrag:
Zeile 131-133

Quellcode

1
2
3
	break)
		break=premount
		;;

Darunter den Eintrag um das Folgende erweitern:

Quellcode

1
2
3
4
5
	persistent)
		PERSISTENT=yes
		root_persistence=casper-rw
		home_persistence=casper-rw
		;;

Abschließend die Datei speichern.

Die Datei 'casper' mit einem Editor (hier: gedit) öffnen

Quellcode

1
gedit scripts/casper

Zu suchender Eintrag:
Zeile 395

Quellcode

1
mount ${cowdevice} -t ${cow_fstype} -o rw,noatime,mode=775 /cow || panic "Can not mount $cowdevice on /cow"

und den Eintrag 'mode=775' in der Zeile entfernen, sodaß die Zeile anschliessend wie folgt aussieht:

Quellcode

1
mount ${cowdevice} -t ${cow_fstype} -o rw,noatime /cow || panic "Can not mount $cowdevice on /cow"

Auch diese Datei in gedit speichern.

Nachtrag (29.07.09)
Bei der aktuellen Version von Hardy 8.04.3 verhält sich die Änderung ein bischen anders.
Hierbei sucht man die Zeile (383)

Quellcode

1
cow_mountopt="rw,noatime,mode=755"

und entfernt das mode=755 inkl. des vorrausstehenden Kommas. Das Ergebnis sieht dann wie folgt aus:

Quellcode

1
cow_mountopt="rw,noatime"

Nachtrag Ende

Nun muss aus den entpackten Dateien wieder eine initrd.gz erstellt werden.
Sich immer noch im Verzeichnis /var/tmp/initedit befindend, führt man folgenden Befehl aus, welcher die initrd.gz nach /var/tmp/ schreibt:

Quellcode

1
find . | cpio -o -H newc | gzip -9 > ../initrd.gz

Die initrd.gz darf nicht in das gleiche Verzeichnis erstellt werden, in dem die entpackten Dateien liegen, da sie sich sonst selber einpackt und somit die initrd.gz doppelt so groß wird.
Dann ändert man die Rechte der neuen Datei und kopiert sie auf den Stick:

Quellcode

1
chmod 700 /var/tmp/initrd.gz

Quellcode

1
cp /var/tmp/initrd.gz /media/ubuntu/

Um sicher zu stellen, dass alle Daten auf den Stick geschrieben werden, hängt man diesen aus:

Quellcode

1
umount /media/ubuntu/ /media/casper-rw/

Dabei werden eventuell noch ein paar Daten auf den Stick geschrieben.

Und zu guter letzt löschen wir das zuvor erstellte temporäre Verzeichnis, welches wir zum editieren der initrd.gz benötigt haben:

Quellcode

1
2
cd
rm -r /var/tmp/initedit/

Easyy-S

Boardgrafiker

  • »Easyy-S« ist der Autor dieses Themas

Beiträge: 2 971

Ubuntu: 11.10

Kernel: generic

Desktop: Gnome

Architektur: 64-bit

  • Private Nachricht senden

7

Samstag, 19. Juli 2008, 03:16

Fertig

Die Installation ist damit abgeschlossen. Der Stick kann herausgezogen und verwendet werden.
Easyy-S

Mein pubkey

Dein eigener UbuntuFreunde-Avatar: hier - Dein UbuntuFreunde-Banner: hier

Easyy-S

Boardgrafiker

  • »Easyy-S« ist der Autor dieses Themas

Beiträge: 2 971

Ubuntu: 11.10

Kernel: generic

Desktop: Gnome

Architektur: 64-bit

  • Private Nachricht senden

8

Mittwoch, 29. Juli 2009, 20:47

Aktualisierung

Möchte man irgendwann einmal das auf dem Stick installierte Ubuntu aktualisieren, sollte man dies auf keinen Fall aus dem auf dem Stick verwendeten System heraus tun. Zum einen dauert dies unter Umständen eine halbe Ewigkeit und zum anderen wird die Partition 'casper-rw' mit sehr vielen Daten beschrieben.
Hier empfiehlt es sich mittels UCK ein aktuallisiertes eigenes Image zu erstellen.
[HowTo] Ubuntu Customization Kit 2.0 Bedienung und Tricks
Hat man dies gemacht, arbeitet man das HowTo einfach nochmal von oben bis unten durch. Einzig das Partitionieren und die Installation von Grub kann man sich sparen. Hierbei ist zu bedenken, daß man vor dem Löschen aller Dateien auf dem Stick das Verzeichnis 'boot' nicht mit entfernt.

Ein Befehl zum löschen aller Systemdateien auf dem Stick in der Partition 'ubuntu' sieht wie folgt aus:

Quellcode

1
sudo rm -r casper/ .disk/ dists/ initrd.gz install/ md5sum.txt pool/ preseed/ README.diskdefines splash.pcx splash.rle VERSIONSINFO.txt vmlinuz

Dies entfernt alles bis auf den Ordner 'boot'.

Die Daten in der 'casper-rw'-Partion können ausnahmslos alle gelöscht werden. Hierbei gehen alle im persistenmode vorgenommenen Einstellungen verloren. Es muss jeder für sich selber entscheiden, wie neu sein System werden soll. Auf dem Stick befinden sich unzählige versteckte Verzeichnisse und Dateien. Diese sollte man sichtbar machen oder man löscht alles über ein Terminal.
Easyy-S

Mein pubkey

Dein eigener UbuntuFreunde-Avatar: hier - Dein UbuntuFreunde-Banner: hier