Benutzer-Werkzeuge

Webseiten-Werkzeuge


bootloader_editieren

**Dies ist eine alte Version des Dokuments!**

Kurzanleitung Bootloader editieren

am FR

  $ cat /proc/mtd

Mache ein Backup vom laufendem u-boot-env und kopiere es auf Deinen Rechner

  $ nanddump -b -o -f /media/card/u-boot-env /dev/mtd2
  $ scp /media/card/u-boot-env username@192.168.0.200:/home/username

am PC bearbeiten

  $ wget http://svn.openmoko.org/trunk/src/host/devirginator/envedit.pl
  $ wget http://svn.openmoko.org/trunk/src/host/devirginator/crc32.pl
  $ chmod +x envedit.pl

Die Quelldatei in ein lesbaren Format schreiben

  $ ./envedit.pl -s 262144 -p -i /home/username/u-boot-env > /home/username/u-boot-env.txt

wenn alle Einträge Deinen Wünschen entsprechen, wandeln wir es wieder in das Ursprungsformat um:

$ ./envedit.pl -s 262144 -f /home/username/u-boot-env.txt -o /home/username/u-boot-env.out

Kopieren es auf den FR

  $ scp u-boot-env.out root@192.168.0.202:/home/root

am FR Flashen wir u-bootenv $ flasheraseall /dev/mtd2 #Sichergehen dass das Image auch gelöscht wird in der u-boot-env steht

  $ nandwrite -p /dev/mtd2 /home/root/u-boot-env.out

Schalte den FR aus und starte im NAND, nun steht Dir DEINE Auswahl zur Verfügung.

Bootloader (NAND) editieren

Sodele habs mal zusammengfasst:

Vorbereitungen

Dies ist eigentlich eine Anleitung um mehrere Distributionen auf einer SD-Karte zu installieren. Eignet sich aber auch als HowTo für den Bootloader. Als 1. sollte man die SD-Karte Partitionieren:

  1. Partion ca 8MB. Hier kommen später die Kernels rein 2,3,4… Partition dein ROOTFS für die jeweilige Distri, bedenke ,dass evtl. mit Erweiterten Partiotnen gearbeitet werden muss. nach 7 ist Schluss, möglich das es mittlerweile geändert wurde.
  2. Partition als VFAT Formatieren 2,3,4… Partition als ext3 formatieren

die rootfs mit der Endung tar.gz runterladen und im jeweils gewünschten Partition entpacken (als root) die uImage.bin runterladen und in die 1. Partion kopieren, evtl. einen anderen Namen vergeben. Achte beim Update, dass Du die Datei von Hand da reinkopiertst, da der Update-Mechanisum automatisch auf den NAND-Flash schreibt.

Wo steht bei Dir die u-boot-env

am FR

  $ cat /proc/mtd
  dev:    size   erasesize  name
  mtd0: 00200000 00010000 "physmap-flash.0"
  mtd1: 00040000 00020000 "u-boot"
  mtd2: 00040000 00020000 "u-boot_env"
  mtd3: 00800000 00020000 "kernel"
  mtd4: 000a0000 00020000 "splash"
  mtd5: 00040000 00020000 "factory"
  mtd6: 0f6a0000 00020000 "rootfs"

Als hier ists mtd2

Mache ein Backup vom laufendem u-boot-env und kopiere es auf Deinen Rechner

  $ nanddump -b -o -f /media/card/u-boot-env /dev/mtd2
  $ scp /media/card/u-boot-env username@192.168.0.200:/home/username

am PC bearbeiten

  $ wget http://svn.openmoko.org/trunk/src/host/devirginator/envedit.pl
  $ wget http://svn.openmoko.org/trunk/src/host/devirginator/crc32.pl
  $ chmod +x envedit.pl

Die Quelldatei in ein lesbaren Format schreiben

  $ ./envedit.pl -s 262144 -p -i /home/username/u-boot-env > /home/username/u-boot-env.txt

nun steht folgedes ergebnis in der u-boot-env.txt-Datei:

boot_menu_timeout=300
bootargs_base=rootfstype=jffs2 root=/dev/mtdblock6 console=ttySAC2,115200 console=tty0 loglevel=8 regular_boot
bootcmd=setenv bootargs ${bootargs_base} ${mtdparts}; nand read.e 0x32000000 kernel 0x200000; bootm 0x32000000
bootdelay=1
menu_1=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
menu_2=Set console to USB: setenv stdin usbtty; setenv stdout usbtty; setenv stderr usbtty
menu_3=Set console to serial: setenv stdin serial; setenv stdout serial; setenv stderr serial
menu_4=Set console to USB: setenv stdin usbtty; setenv stdout usbtty; setenv stderr usbtty
menu_5=Set console to serial: setenv stdin serial; setenv stdout serial; setenv stderr serial
menu_6=Reboot: reset
menu_8=Power off: neo1973 power-off
mtddevname=nor
mtddevnum=0
mtdids=nor0=physmap-flash,nand0=neo1973-nand
mtdparts=mtdparts=physmap-flash:-(nor);neo1973-nand:0x00040000(u-boot),0x00040000(u-boot_env),0x00800000(kernel),0x000a0000(splash),0x00040000(factory),0x0f6a0000(rootfs)
partition=nor0,0
pcb_rev=0x001
pcf50633_int1=0x80
pcf50633_int2=0xaa
quiet=1
sd_image_name=uImage.bin
splashimage=nand read.e 0x32000000 splash 0x5000; unzip 0x32000000 0x8800000 0x96000
stderr=usbtty
stdin=usbtty
stdout=usbtty
usbtty=cdc_acm

Erklärungen zu dem Inhalt: alle Einträge vor dem „=“ sind Variablen, welche durch ${} abgerufen werden.

Ein Beispiel:

Du möchtest eine Variable test mit dem inhalt Hallo_Welt setzen:

test=Hallo_Welt

nun möchtest Du diese Variable in einer anderen Variable einsetzen. Nehmen wir an Du musst die Variable testerr auf „Wertvontest error“ setzen. Dann musst Du

testerr=${test} error

eintragen.

kommen wir zu den einzelnen Variablen:

  boot_menu_timeout=

Wieviele Sekunden soll nach der letzten Eingabe im NAND/NOR modues gewartet werden, bis dann der Default eintrag ausgeführt wird.

bootargs_base=

Diverse Variablen werden hier gesetzt die Später verwendet werden sollen. Hier steht auch der LOGLEVEL. Setzt man den auf 0, so bootet nachher der FR schneller

bootcmd=

Der Default boot-Befehl (also Powerknopf Drücken)

bootdelay=

wieviele Sekunden soll gewartet werden bis bootcmd ausgeführt werden soll.

menu_[1-9]=

Die Menu-Einträge im Nand. Es können maximal 9 Einträge eingeragen werden

sd_image_name=

Der Dateiname der Kernels, i. d. R. uImage.bin, kann aber auch anderst lauten, wenn man andere Kernel auf der 1. partition der SD-Karte ablegt und diese nutzen möchte.

Alle weiteren Einträge sind erstmal für Dein Vorhaben unwichtig.

Nun entscheide selber, in Welchem Menü Du von welcher Partition booten möchtest und bearbeite die u-boot-env.txt

menu_1=FSO: setenv bootargs ${bootargs_base} rootfstype=ext3 root=/dev/mmcblk0p2 rootdelay=5 ${mtdparts} ro; mmcinit; fatload mmc 1 0x32000000 ${sd_image_name}; bootm 0x32000000

Ein weiter Eintrag mit nem anderem Kernel, und dem RootFS auf Part3 könnte so lauten

menu_2=Debian: setenv bootargs ${bootargs_base} rootfstype=ext3 root=/dev/mmcblk0p3 rootdelay=5 ${mtdparts} ro; mmcinit; fatload mmc 1 0x32000000 Debkernel.bin ; bootm 0x32000000

wenn alle Einträge Deinen Wünschen entsprechen, wandeln wir es wieder in das Ursprungsformat um:

$ ./envedit.pl -s 262144 -f /home/username/u-boot-env.txt -o /home/username/u-boot-env.out

Kopieren es auf den FR

  $ scp u-boot-env.out root@192.168.0.202:/home/root

am FR Flashen wir u-bootenv $ flasheraseall /dev/mtd2 #Sichergehen dass das Image auch gelöscht wird in der u-boot-env steht

  $ nandwrite -p /dev/mtd2 /home/root/u-boot-env.out

Schalte den FR aus und starte im NAND, nun steht Dir DEINE Auswahl zur Verfügung.

Den letzten Schritt kann man auch mit dfu-util

  $ dfu-util -a u-boot_env -R -D u-boot-env.out

machen, falls der FR gar nicht mehr bootet, hat man ja noch das Backup

  $ dfu-util -a u-boot_env -R -D u-boot-env

Happy Flashing!!

bootloader_editieren.1247778409.txt.gz · Zuletzt geändert: 2025/05/03 09:10 (Externe Bearbeitung)