Booting from SD/de
From Openmoko
Line 243: | Line 243: | ||
Copy and paste may not work depending on your terminal emulator. Commi funktioniert alternativ kann auch der Terminal-Emulator [[NeoCon|NeoCon]]. Ansonsten muss alles manuell in die Kommandozeile eingetippt werden.}} | Copy and paste may not work depending on your terminal emulator. Commi funktioniert alternativ kann auch der Terminal-Emulator [[NeoCon|NeoCon]]. Ansonsten muss alles manuell in die Kommandozeile eingetippt werden.}} | ||
− | An dieser Stelle ist es wichtig zwischen FAT- und ext2-Kernel und zwischen ext2 und ext3 rootfs zu unterscheiden. | + | An dieser Stelle ist es wichtig zwischen FAT- und ext2-Kernel und zwischen ext2- und ext3-rootfs zu unterscheiden. |
Möglicherweise müssen die Nummern in root=/dev/mmcblk0p'''#''' (rootfs) und fatload mmc '''#''' oder ext2load mmc '''#''' (Kernel) geändert werden. | Möglicherweise müssen die Nummern in root=/dev/mmcblk0p'''#''' (rootfs) und fatload mmc '''#''' oder ext2load mmc '''#''' (Kernel) geändert werden. | ||
Line 258: | Line 258: | ||
setenv menu_9 Boot 200808 from microSD (FAT+ext2): setenv bootargs \${bootargs_base} rootfstype=ext2 root=/dev/mmcblk0p2 rootdelay=5 \${mtdparts} init=/sbin/init ro\; mmcinit\; fatload mmc 1 0x32000000 \${sd_image_name}\; bootm 0x32000000 | setenv menu_9 Boot 200808 from microSD (FAT+ext2): setenv bootargs \${bootargs_base} rootfstype=ext2 root=/dev/mmcblk0p2 rootdelay=5 \${mtdparts} init=/sbin/init ro\; mmcinit\; fatload mmc 1 0x32000000 \${sd_image_name}\; bootm 0x32000000 | ||
− | '''Boot | + | '''Boot-Eintrag für ext2-Kernel mit ext2-Rootfs Partition: (requires newer u-boot)''' |
setenv menu_2 Boot from microSD part2 (ext2+ext2): setenv bootargs \${bootargs_base} rootfstype=ext2 root=/dev/mmcblk0p2 rootdelay=5 \${mtdparts} ro\; mmcinit\; ext2load mmc 1 0x32000000 \${sd_image_name}\; bootm 0x32000000 | setenv menu_2 Boot from microSD part2 (ext2+ext2): setenv bootargs \${bootargs_base} rootfstype=ext2 root=/dev/mmcblk0p2 rootdelay=5 \${mtdparts} ro\; mmcinit\; ext2load mmc 1 0x32000000 \${sd_image_name}\; bootm 0x32000000 | ||
− | '''Boot | + | '''Boot-Eintrag für Kernel und Rootfs auf der gleichen ext2 Partition (getestet mit Qtopia/ benötigt ein neues U-boot)''' |
setenv menu_3 QTopia: setenv bootargs \${bootargs_base} rootfstype=ext2 root=/dev/mmcblk0p1 rootdelay=5 \${mtdparts} ro\; mmcinit\; ext2load mmc 1:1 0x32000000 \${sd_image_name}\; bootm 0x32000000 | setenv menu_3 QTopia: setenv bootargs \${bootargs_base} rootfstype=ext2 root=/dev/mmcblk0p1 rootdelay=5 \${mtdparts} ro\; mmcinit\; ext2load mmc 1:1 0x32000000 \${sd_image_name}\; bootm 0x32000000 | ||
− | |||
− | + | Jetzt nur noch prüfen, ob der neue Menü-Eintrag richtig angezeigt wird.: | |
− | + | printenv | |
− | + | Wenn alles passt dann speichern: | |
saveenv | saveenv | ||
− | + | Die neue Konfiguration wird jetzt im NAND gespeichert. | |
− | + | Herunterfahren des NEO: | |
neo1973 power-off | neo1973 power-off | ||
− | + | Nach dem Neustart in das NAND-Boot-Menü gehen und den neu erstellten Menü-Eintrag wählen um von der SD-Karte zu booten. | |
---- | ---- | ||
− | + | Siehe auch unter [[Moving current system from flash to SD]] wo gezeigt wird, wie das System vom Flash auf die SD-Karte verschoben wird. | |
---- | ---- | ||
− | == | + | == Sonstiges == |
− | === | + | === Booten von SDHC === |
− | {{Note| | + | {{Note|Der folgende Abschnitt wurde für das Neo1973 geschrieben. SDHC und SD beide im FreeRunner laufen wenn ein U-boot ab 2008-07-23 verwendet wird.}} |
− | + | Das Booten von SDHC-Karten wird von älteren U-Boot-Versionen nicht unterstützt. | |
− | + | Es gibt eine Mögichkeit dies zu umgehen indem man nur das Rootfs auf der SDHC-Karte installiert. | |
− | + | Folgen sie Schritt 1, um einen Kernel-Image mit MMC-und ext2-Unterstützung zu bekommen. Doch statt das Image auf die Rootfs zu kopieren, kopieren sie es in den internen NAND-Flash.(mit [[DFÜ-util]]). | |
− | + | Jetzt können Sie mit Schritt 2 fortfahren (wie schon erwähnt, nicht das uImage auf die Rootfs kopieren) und den Anweisungen bis zu Schritt 3 folgen. | |
− | + | Anstelle der setenv-Befehle in Schritt 3 führen Sie die folgenden Schritte aus: | |
GTA01Bv4 # setenv menu_5 Boot from SDHC: setenv bootargs root=/dev/mmcblk0p1 console=tty0 rootdelay=5 neo1973-nand:0x00040000(u-boot),0x00004000(u-boot_env),0x00200000(kernel),0x000a0000(splash)\; nand read.e 0x32000000 kernel\; bootm 0x32000000 | GTA01Bv4 # setenv menu_5 Boot from SDHC: setenv bootargs root=/dev/mmcblk0p1 console=tty0 rootdelay=5 neo1973-nand:0x00040000(u-boot),0x00004000(u-boot_env),0x00200000(kernel),0x000a0000(splash)\; nand read.e 0x32000000 kernel\; bootm 0x32000000 | ||
GTA01Bv4 # saveenv | GTA01Bv4 # saveenv | ||
− | + | Jetzt kann der neue Menü-Eintrag "Boot from SDHC" benutzt werden um den interen kernel zu booten und dabei das Root-Filesystem auf der SDHC-Karte zu laden. | |
− | + | ||
− | === Autoboot | + | === Autoboot von SDHC === |
− | + | Wenn automatisch von der SDHC-Karte gebootet werden soll: | |
− | + | Zuerst einen neue Bootmenü Eintrag für das Booten von NAND erstellen: | |
GTA01Bv4 # setenv menu_6 Boot from NAND: setenv bootargs \${bootargs_base} \${mtdparts}\; nand read.e 0x32000000 kernel\; bootm 0x32000000 | GTA01Bv4 # setenv menu_6 Boot from NAND: setenv bootargs \${bootargs_base} \${mtdparts}\; nand read.e 0x32000000 kernel\; bootm 0x32000000 | ||
GTA01Bv4 # saveenv | GTA01Bv4 # saveenv | ||
− | + | Danach neustarten und im Bootmenü den neuen Eintrag testen. Wenn dieser funktioniert wieder herrunterfahren, das Bootmenü starten, Bootloader verbinden und das autoboot-Komando zum booten von der SDHC-Karte erstellen: | |
GTA01Bv4 # setenv bootcmd setenv bootargs root=/dev/mmcblk0p1 rootdelay=10 console=tty0 neo1973-nand:0x00040000(u-boot),0x00004000(u-boot_env),0x00200000(kernel),0x000a0000(splash)\; nand read.e 0x32000000 kernel\; bootm 0x32000000 | GTA01Bv4 # setenv bootcmd setenv bootargs root=/dev/mmcblk0p1 rootdelay=10 console=tty0 neo1973-nand:0x00040000(u-boot),0x00004000(u-boot_env),0x00200000(kernel),0x000a0000(splash)\; nand read.e 0x32000000 kernel\; bootm 0x32000000 | ||
GTA01Bv4 # saveenv | GTA01Bv4 # saveenv | ||
− | + | Jetzt wird immer von der SDHC-Karte gebootetwenn der Power-Knopf gedrückt oder reboot ausgeführt wird. Wenn vom NAND gebootet werden soll muss das Bootmenü benutzt werden. | |
− | === | + | === Udev automount fixen === |
− | Udev | + | Udev mountet die SD-Karte automatisch unter /media/mmcblk0p1/ . |
+ | Dies kann geändert werden: | ||
echo /dev/mmcblk >> /etc/udev/mount.blacklist | echo /dev/mmcblk >> /etc/udev/mount.blacklist | ||
− | === | + | === Bemerkung zu Kernel Parametern === |
==== loglevel ==== | ==== loglevel ==== | ||
− | + | Einige Leute empfehlen folgendes zur KernelBefehlsZeile hinzuzufügen: | |
loglevel=8 | loglevel=8 | ||
− | + | Wenn Sie "console=tty0" in der KernelBefehlsZeile aufrufen verlangsamt das den Bootprozess extrem da der Framebuffer (Neo-Display im Text-Modus) unmengen von DebugInformationen schreiben muss. | |
− | + | ||
− | + | ||
− | + | ||
{{Languages|Booting_from_SD}} | {{Languages|Booting_from_SD}} |
Revision as of 23:29, 30 October 2008
Languages: |
English • العربية • Български • Česky • Dansk • Deutsch • Esperanto • Eesti • Español • فارسی • Suomi • Français • עברית • Magyar • Italiano • 한국어 • Nederlands • Norsk (bokmål) • Polski • Português • Română • Русский • Svenska • Slovenčina • Українська • 中文(中国大陆) • 中文(台灣) • Euskara • Català |
Diese Seite beschreibt, wie man mit dem FreeRunner von einer (Micro-)SD Karte statt vom eingebauten NAND-Flash-Speicher bootet. Da sich die SD-Karte einen Bus mit der GPU teilt, kann jedoch die Performance beeinträchtigt werden.
NOTE: Das Booten von SDHC kann derzeit noch zu Problemen führen (siehe unten). |
Contents |
Booten von SDHC
Vorweg eine Warnung: Ein Bug im Linux-Kernel kann dazu führen, daß die Partitionstabelle der SDHC-Karte während des Suspend zerstöhrt wird. Ticket: #1802. Thread: [1] Am Besten legt man sich ein Backup der Partitionstabelle an, um sie im Notfall schnell wieder zur Verfügung zu haben.
So funktionierts
U-boot spielt auf dem NEO eine ähnliche Rolle wie der Bootloader 'grub' auf einem PC. U-boot läd ein Kernelimage in den Speicher und übermittelt dem Kernel anschießend eine Reihe vom Parametern. Diese Parameter enthalten unteranderem den Ort an dem sich das Rootfilesystem befindet.
Wenn der Kernel bootet, wird die Hardware initialisiert und das Rootfilesystem gemountet. Anschließed startet der Kernel "/sbin/init", welche die restlichen Boot-Up-Sequenzen enthält. (z.B. Startbildschirm und Fortschrittsbalken).
Diese Sequenz ist die gleiche, unabhängig davon ob das Gerät von Built-In-Flash oder von der SD-Karte bootet. Die Unterschiede sind, wie der Kernel geladen wird, und welches Device als Rootfilesystem gemountet ist.
U-Boot-Menü-Einträge
U-boot-Menü-Einträge werden über Umgebungsvariablen definiert. Diese sind nach dem Muster "menu_X" (wobei X eine Zahl ist) aufgebaut. Der Wert dieser Umgebungsvariable ist ein String nach dem Muster "<label>:<commands>", wobei <label> der Text ist, der auf dem Display angezeigt wird und <commands> eine Abfolge der U-boot-Befehle (getrennt durch ';') welche ausgefürht werden wenn der Menüpunkt auswählt wird Beim Eingeben einer Befehlsabfolge müssen ';' und '$' durch "\;" und "\$" ersetzt werden.
Laden des Kernels
Zum Laden des Kernels von der SD-Karte müssen folgende U-Boot-Befehle ausgeführt werden: Die SD-Karte mit "mmcinit" initialisieren. Den Kernel in den Arbeitsspeicher laden:
Kernel befindet sich auf einem FAT-Filesystem:
fatload mmc 1:<p> 0x32000000 <filepath>
Kernel befindet sich auf einem ext2/ext3-Filesystem:
ext2load mmc 1:<p> 0x32000000 <filepath>
Hierbei entspricht <p> der Partitionsnummer und <filepath> dem Pfad zu dem zu ladendem Kernel.
NOTE: Der "ext2load"-Befehl funktioniert nicht bei U-boot-Versionen kleiner "20080723". Diese sind vom folgendem Bug betroffen: #799
Nach einem Update der U-Boot und Kernel Pakete kann man direkt von ext2/ext3 booten. |
WARNING: Beim U-Boot-Update auf dem NEO1973 ist Vorsicht geboten! Es besteht die Gefahr sich aus dem NEO auszuschließen, wenn man kein Debug-Board zur Verfügung hat. Dies betrifft nicht den Freerunner, da dieser eine Kopie von U-Boot im NOR-Flasch hat! |
NOTE: U-Boot unterstützt das SDHC-Protocol nur auf dem FreeRunner: Auf dem Neo1973, ist U-Boot nicht in der Lage mit SDHC-Karten (4G oder größer) zu arbeiten. Der Kernel unterstützt SDHC auf dem NEO1973, dadurch ist es möglich den Kernel auf dem NAND-Flash und das Root-Filesystem auf der SDHC-Karte laufen zu lassen. |
Root-Filesystem Parameter
Der Inhalt der "bootargs" Umgebungsvariable die an den Kernel übergeben wird, ist eine durch Leerzeichen getrennte Liste bestehend aus "name=value"-Definitionen. Relevante Elemente für das Booten von einer SD-Karte sind "root", "rootfstype" und "rootdelay".
Beispiel: Folgende Parameter veranlassen den Kernel die dritte Partition der SD-Karte zu mounten:
root=/dev/mmcblk0p3 rootfstype=ext3 rootdelay=5
Der "rootdelay"-Parameter gibt der SD-Karte die nötige Zeit um sich zu initialisieren bevor auf sie zugegriffen wird.
Wichtig ist, daß der Kernel das Root-Filesystem auch unterstützt. Der Default-Openmoko-Kernel 2008-07-17 unterstützt ext2 und ext3. Überprüfen kann man die unterstützten Filesysteme mit folgendem Linux-Befehl:
less /proc/filesystems
Es ist nicht möglich, VFAT als Root-Filesystem zu benutzen.
ext2 vs. ext3
Ext2 oder ext3 als Root-Filesystem verwenden? Das Journaling-Dateisystem Ext3 ist prinzipiell die bessere Wahl, da hier nach einem unsauberen Shutdown des Systems kein "fsck" (Datei-System-Check) durchgeführt werden muss. Jedoch unterstützt ext3 kein wear-leveling (schonende Schreibweise für Flash-Speicher).
Rootfs
Es gibt zwei Möglichkeiten an ein Rootfs-Image heran zu kommen. Entweder man baut sich mit der OpenEmbedded Distribution sein einges Rootfs-Image oder man läd es sich ein fertiges Image vom OpenMoko buildhost herunter.
Möglichkeit 1: Rootfs.tar und Kernel.tar vom Openmoko buildhost downloaden
Aktuelles Rootfs und Kernel einfach unter Latest Images downloaden.
Möglichkeit 2: Mit OpenEmbedded selber ein tar-File erstellen
Eine weitere Möglichkeit besteht darin, sich selber mit der OpenEmbedded Umgebung ein Rootfs-tar-Archiv zu erstellen.
Um OM-2007.2 zu erstellen, muss man "tar" zu den Image-Typen in seiner local.conf hinzudügen:
IMAGE_FSTYPES = "jffs2 tar"
Jetzt kann man das neue Image erstellen:
bitbake openmoko-devel-image
oder mit MokoMakefile:
make openmoko-devel-image
Das Openmoko-....tar findet sich anschließend im Out-Pfad.
Möglichkeit 3 : Ein jff2-Image in ein tar-File konvertieren
Siehe Userspace root image.
Vorbereiten der SD-Karte
Partitionieren der SD-Karte
U-Boot vor 2008-07-23 kan ausschließlich von FAT-Filesystemen booten. Nach einem U-Boot-Update kann auch von ext2/ext3 gebootet werden. Dieses Beispiel zeigt wie man mit fdisk Partitionen erstellt.
fdisk /dev/mmcblk0
Achtung: Der Gerätename kann variieren. Um sicher zu gehen, ob man den richtigen Gerätenamen hat, liest man die Kernel-Message-Log durch den Aufruf von dmesg. Jetzt erstellt man eine 8MB Partition für den Kernel und eine Partition mit dem restlichen Speicherplatz für das Root-Filesystem.
Command (m for help): d
Selected partition 1
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-983, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-983, default 983): +8M
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (18-983, default 18):
Using default value 18
Last cylinder or +size or +sizeM or +sizeK (18-983, default 983):
Using default value 983
Command (m for help): w
The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks.
bei folgender Fehlermeldung:
Calling ioctl() to re-read partition table fdisk: WARNING: rereading partition table failed, kernel still uses old table: Device or resource busy
einfach das Gerät aushängen:
umount /dev/mmcblk0p1
und nocheinmal von vorn beginnen.
Formatieren der SD-Karte
Folgender Befehl formatiert die erste Partition der SD-Karte mit dem FAT-Filesystem:
mkfs.vfat /dev/mmcblk0p1
NOTE: Sollte mkfs.vfat nicht installiert sein muss das "dosfstools"-Packet nachinstalliert werden. DIeses Paket ist zwar nicht in der offiziellen Software enthalten kann aber unter http://members.shaw.ca/mmontour/neo/dosfstools_2.11-r0_armv4t.ipk heruntergeladen werden. |
Die zweite Partition wird mit dem ext3-Filesystem formatiert:
mkfs.ext3 /dev/mmcblk0p2
Bespielen der SD-Karte
Die SD-Karte ist jetzt bereit mit dem Rootfs und dem Kernel bespielt zuwerden.
Zuerst wird die zweite Patrtition der SD-Karte gemountet und das Rootfs-Image aufgespielt:
mount /dev/mmcblk0p2 /mnt/moko tar -C /mnt/moko/ -xzvf openmoko-devel-image-fic-gta01-20070313022035.rootfs.tar.gz
Achtung: Die Pfade und Dateinamen müssen entsprechend angepasst werden.
Als nächstes wird die erste Partition der SD-Karte gemountet und der Kernel darauf installiert:
mount /dev/mmcblk0p1 /mnt/mokokernel cp uImage-fic-gta01-latest.bin /mnt/mokokernel/uImage.bin
Bei einigen Versionen des NOR U-boot:
mount /dev/mmcblk0p1 /mnt/mokokernel cp uImage-fic-gta01-latest.bin /mnt/mokokernel/uimage
(Ja, kleines i und keine Dateierweiterung.)
Es ist sicherzustellen, daß der Kernel uImage.bin (oder uimage bei einigen Versionen des NOR U-boot) heisst. Sollte U-Boot das Kernel-Image nicht finden: im Bootloader anmelden mit cu Die Partition mit mmcinit mounten und prüfen, ob der Kernel vorhanden und richtig benannt ist: Das geht mit fatls mmc 1:1 bei FAT-Filesystemen oder ext2ls mmc 1:1 bei ext2-Filesystemen.
Anschließend mit dem Ergebnis von printenv sd_image_name vergleichen. Es ist zu beachten, daß das die Umgebungsvariable im NAND-Flash aber nicht im NOR-Flash geändert werden kann. Wenn also aus dem NOR-Flash gebootet werden soll muss der Dateiname an die Umgebungsvariable angepasst werden.
Jetzt beide Partitionen aushängen und sicherstellen, daß alle Buffer geschrieben wurden:
umount /mnt/moko umount /mnt/mokokernel sync
U-Boot-Menü-Eintrag hinzufügen
Je nach Revision des NEO und des verwendeten Partitionstyps (ext2/ext3) kann es notwendig sein, daß ein dem BootMenü ein Eintraghinzugefügt werden muss, um das System von der SD-Karte booten zu können.
Beim einem FreeRunner mit einer FAT-Partition (Kernel) und einer ext2-Partition (rootfs) sollte es möglich sein direkt von der SD-Karte zu booten, da der Boot-Menü-Eintrag für bereits im NOR- und NAND-Boot-Menü enthalten ist. In allen anderen Fällen muss der benötigte Menü-Eintrag erst hinzugefügt werden. Eine Beschreibung dazu findet sich hier: Bootloader/de#Bootlader_Kommandozeile Wie man in das Bootmenü gelangt steht hier: Getting_Started_with_your_Neo_FreeRunner/de#Anschalten_des_Neo_FreeRunner.
Als erstes empfiehlt es sich, das U-Boot-TimeOut(60s) auf einen realistischen Wert zu setzen. Hierzu aus der UBoot-Kommandoeile folgenden Befehl ausführen:
setenv boot_menu_timeout 99999
Der TimeOut-Wert wird so auf 99999s gesetzt, was für alle weiteren Vorhaben ausreichen sollte.:-)
Jetzt wird geprüft, ob ein geeigneter Menü-Eintrag zum booten von der SD-Karte vorhanden ist:
printenv
Wenn eine Zeile existiert, die mit menu_ beginnt und auch die folgende Befehle enthält braucht kein neuer Menü-Eintrag erstellt werden.
NOTE: Die Backslashs (\) sind wichtig für UBoot um den Befehl als neue Umgebungsvariable (menu_9) einzutragen. Durch einfaches drücken der Enter-Taste würde der Befehl lediglich ausgeführt werden. |
NOTE: Kopieren und Einfügen funktioniert bei einigen Emulatoren nicht.
Copy and paste may not work depending on your terminal emulator. Commi funktioniert alternativ kann auch der Terminal-Emulator NeoCon. Ansonsten muss alles manuell in die Kommandozeile eingetippt werden. |
An dieser Stelle ist es wichtig zwischen FAT- und ext2-Kernel und zwischen ext2- und ext3-rootfs zu unterscheiden.
Möglicherweise müssen die Nummern in root=/dev/mmcblk0p# (rootfs) und fatload mmc # oder ext2load mmc # (Kernel) geändert werden.
Boot-Eintrag für FAT-Kernel mit ext3-Rootfs Partition:
setenv menu_9 Boot from microSD (FAT+ext3): setenv bootargs \${bootargs_base} rootfstype=ext3 root=/dev/mmcblk0p2 rootdelay=5 \${mtdparts} ro\; mmcinit\; fatload mmc 1 0x32000000 \${sd_image_name}\; bootm 0x32000000
Boot-Eintrag für FAT-Kernel mit ext2-Rootfs Partition:
setenv menu_9 Boot from microSD (FAT+ext2): setenv bootargs \${bootargs_base} rootfstype=ext2 root=/dev/mmcblk0p2 rootdelay=5 \${mtdparts} ro\; mmcinit\; fatload mmc 1 0x32000000 \${sd_image_name}\; bootm 0x32000000
or : with additional 'init=/sbin/init' kernel parameter (may be needed for some images) : setenv menu_9 Boot 200808 from microSD (FAT+ext2): setenv bootargs \${bootargs_base} rootfstype=ext2 root=/dev/mmcblk0p2 rootdelay=5 \${mtdparts} init=/sbin/init ro\; mmcinit\; fatload mmc 1 0x32000000 \${sd_image_name}\; bootm 0x32000000
Boot-Eintrag für ext2-Kernel mit ext2-Rootfs Partition: (requires newer u-boot)
setenv menu_2 Boot from microSD part2 (ext2+ext2): setenv bootargs \${bootargs_base} rootfstype=ext2 root=/dev/mmcblk0p2 rootdelay=5 \${mtdparts} ro\; mmcinit\; ext2load mmc 1 0x32000000 \${sd_image_name}\; bootm 0x32000000
Boot-Eintrag für Kernel und Rootfs auf der gleichen ext2 Partition (getestet mit Qtopia/ benötigt ein neues U-boot) setenv menu_3 QTopia: setenv bootargs \${bootargs_base} rootfstype=ext2 root=/dev/mmcblk0p1 rootdelay=5 \${mtdparts} ro\; mmcinit\; ext2load mmc 1:1 0x32000000 \${sd_image_name}\; bootm 0x32000000
Jetzt nur noch prüfen, ob der neue Menü-Eintrag richtig angezeigt wird.:
printenv
Wenn alles passt dann speichern:
saveenv
Die neue Konfiguration wird jetzt im NAND gespeichert.
Herunterfahren des NEO:
neo1973 power-off
Nach dem Neustart in das NAND-Boot-Menü gehen und den neu erstellten Menü-Eintrag wählen um von der SD-Karte zu booten.
Siehe auch unter Moving current system from flash to SD wo gezeigt wird, wie das System vom Flash auf die SD-Karte verschoben wird.
Sonstiges
Booten von SDHC
NOTE: Der folgende Abschnitt wurde für das Neo1973 geschrieben. SDHC und SD beide im FreeRunner laufen wenn ein U-boot ab 2008-07-23 verwendet wird. |
Das Booten von SDHC-Karten wird von älteren U-Boot-Versionen nicht unterstützt. Es gibt eine Mögichkeit dies zu umgehen indem man nur das Rootfs auf der SDHC-Karte installiert.
Folgen sie Schritt 1, um einen Kernel-Image mit MMC-und ext2-Unterstützung zu bekommen. Doch statt das Image auf die Rootfs zu kopieren, kopieren sie es in den internen NAND-Flash.(mit DFÜ-util). Jetzt können Sie mit Schritt 2 fortfahren (wie schon erwähnt, nicht das uImage auf die Rootfs kopieren) und den Anweisungen bis zu Schritt 3 folgen. Anstelle der setenv-Befehle in Schritt 3 führen Sie die folgenden Schritte aus:
GTA01Bv4 # setenv menu_5 Boot from SDHC: setenv bootargs root=/dev/mmcblk0p1 console=tty0 rootdelay=5 neo1973-nand:0x00040000(u-boot),0x00004000(u-boot_env),0x00200000(kernel),0x000a0000(splash)\; nand read.e 0x32000000 kernel\; bootm 0x32000000 GTA01Bv4 # saveenv
Jetzt kann der neue Menü-Eintrag "Boot from SDHC" benutzt werden um den interen kernel zu booten und dabei das Root-Filesystem auf der SDHC-Karte zu laden.
Autoboot von SDHC
Wenn automatisch von der SDHC-Karte gebootet werden soll: Zuerst einen neue Bootmenü Eintrag für das Booten von NAND erstellen:
GTA01Bv4 # setenv menu_6 Boot from NAND: setenv bootargs \${bootargs_base} \${mtdparts}\; nand read.e 0x32000000 kernel\; bootm 0x32000000 GTA01Bv4 # saveenv
Danach neustarten und im Bootmenü den neuen Eintrag testen. Wenn dieser funktioniert wieder herrunterfahren, das Bootmenü starten, Bootloader verbinden und das autoboot-Komando zum booten von der SDHC-Karte erstellen:
GTA01Bv4 # setenv bootcmd setenv bootargs root=/dev/mmcblk0p1 rootdelay=10 console=tty0 neo1973-nand:0x00040000(u-boot),0x00004000(u-boot_env),0x00200000(kernel),0x000a0000(splash)\; nand read.e 0x32000000 kernel\; bootm 0x32000000 GTA01Bv4 # saveenv
Jetzt wird immer von der SDHC-Karte gebootetwenn der Power-Knopf gedrückt oder reboot ausgeführt wird. Wenn vom NAND gebootet werden soll muss das Bootmenü benutzt werden.
Udev automount fixen
Udev mountet die SD-Karte automatisch unter /media/mmcblk0p1/ . Dies kann geändert werden:
echo /dev/mmcblk >> /etc/udev/mount.blacklist
Bemerkung zu Kernel Parametern
loglevel
Einige Leute empfehlen folgendes zur KernelBefehlsZeile hinzuzufügen:
loglevel=8
Wenn Sie "console=tty0" in der KernelBefehlsZeile aufrufen verlangsamt das den Bootprozess extrem da der Framebuffer (Neo-Display im Text-Modus) unmengen von DebugInformationen schreiben muss.
Languages: |
English • العربية • Български • Česky • Dansk • Deutsch • Esperanto • Eesti • Español • فارسی • Suomi • Français • עברית • Magyar • Italiano • 한국어 • Nederlands • Norsk (bokmål) • Polski • Português • Română • Русский • Svenska • Slovenčina • Українська • 中文(中国大陆) • 中文(台灣) • Euskara • Català |