Toon posts:

U-boot hoe krijg ik de correcte bootcmd?

Pagina: 1
Acties:

Vraag


  • bucovaina89
  • Registratie: Juli 2010
  • Laatst online: 20:41
Ik ben aan het proberen om via TFTP mijn WD My Cloud Mirror aan het booten met een zelf gecompileerde kernel maar hij loopt vast vanaf hij de kernel wil gaan booten. Ik doe waarschijnlijk ergens iets mis.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Marvell>> dhcp                  
BOOTP broadcast 1
*** Unhandled DHCP Option in OFFER/ACK: 28
*** Unhandled DHCP Option in OFFER/ACK: 119
*** Unhandled DHCP Option in OFFER/ACK: 28
*** Unhandled DHCP Option in OFFER/ACK: 119
DHCP client bound to address 10.10.10.52
Marvell>> setenv serverip 10.10.10.10
Marvell>> tftp ${loadaddr} zImage
Using egiga1 device
TFTP from server 10.10.10.10; our IP address is 10.10.10.52
Filename 'zImage'.
Load address: 0x2000000
Loading: #################################################################
         #################################################################
         #################################################################
         #################################################################
         ######################################
done
Bytes transferred = 4371853 (42b58d hex)
Marvell>> setenv bootargs 'root=/dev/ram console=ttyS0,115200 max_loop=32'
#Marvell>> set bootcmd "dhcp; tftp ${kernel_addr} ${serverip}:zImage; tftp ${fdt_addr} ${serverip}:armada-370-wdmc-mirror-gen1.dtb; booti ${kernel_addr} - ${fdt_addr}"


code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Marvell>> bootm
## Booting image at 02000000 ...
## Booting kernel from Legacy Image at 02000000 ...
   Image Name:   armada-370-wdmc-mirror-gen1
   Created:      2021-12-27   6:16:34 UTC
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    4371789 Bytes = 4.2 MiB
   Load Address: 00008000
   Entry Point:  00008000
   Verifying Checksum ... OK
   Loading Kernel Image ... OK
OK

Starting kernel ...

DTB:0x0042FB00 (0x00003A4D)
C:0x000080E0-0x004335C0->0x00D7DA00-0x011A8EE0
DTB:0x011A5420 (0x00003AA2)
Uncompressing Linux... done, booting the kernel.
[[[[ HANGT HIER ]]]]


code:
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
61
62
63
64
65
66
Marvell>> prinenv
Unknown command 'prinenv' - try 'help'
Marvell>> printenv
CASset=min
MALLOC_len=5
autoload=no
baudrate=115200
bootargs=root=/dev/sda1 rw console=ttyO0,115200n8 earlyprintk mem=512M
bootargs_end=:10.4.50.254:255.255.255.0:KW40:eth0:none
bootargs_root=root=/dev/nfs rw
bootcmd=dhcp; tftp 10.10.10.10:zImage; tftp 10.10.10.10:armada-370-wdmc-mirror-gen1.dtb; booti -
bootdelay=1
cacheShare=no
console=console=ttyS0,115200
disL2Cache=yes
disaMvPnp=no
dnsip=10.10.10.10
eeeEnable=no
enaAutoRecovery=yes
enaClockGating=no
enaFPU=no
enaWrAllo=no
eth1addr=00:50:43:02:00:00
eth1mtu=1500
ethact=egiga1
ethaddr=00:50:43:02:02:00
ethmtu=1500
ethprime=egiga0
fileaddr=2000000
filesize=42B58D
gatewayip=10.10.10.1
image_name=uImage
initrd_name=uInitrd
ipaddr=10.10.10.52
loadaddr=0x02000000
loads_echo=0
mtdids=nand0=armada-nand
mtdparts=mtdparts=armada-nand:4m(boot),-(rootfs)
mvNetConfig=mv_net_config=1,(00:50:43:11:11:11,0:1:2:3:4),mtu=1500
mv_pon_addr=00:50:43:00:00:02
nandEcc=1bit
netbsd_en=no
netmask=255.255.255.0
netretry=no
pcieTune=no
pexMode=rc
pxe_files_load=:default.arm-armada370-db:default.arm-armadaxp:default.arm
pxefile_addr_r=3100000
rcvrip=169.254.100.100
rootpath=/srv/oneiric
sata_delay_reset=0
sata_dma_mode=yes
serverip=10.10.10.10
standalone=fsload 0x2000000 $image_name;setenv bootargs $console $mtdparts root=/dev/mtdblock0 rw ip=$ipaddr:$serverip$bootargs_end; bootm 0x2000000;
stderr=serial
stdin=serial
stdout=serial
usb0Mode=host
usb1Mode=host
usb2Mode=device
usbActive=1
vxworks_en=no
yuk_ethaddr=00:00:00:EE:51:81

Environment size: 1599/524284 bytes
Marvell>>

Alle reacties


  • bucovaina89
  • Registratie: Juli 2010
  • Laatst online: 20:41
Ik moet meer posten hier, want altijd na uuuuuuuuren zoeken dan uiteindelijk maar toch posten vind ik het dan na 2 minuten.


solved ->
code:
1
2
3
4
5
dhcp
setenv serverip 10.10.10.10
tftp ${loadaddr} uImage
setenv bootargs 'root=/dev/sda1 console=ttyS0,115200 max_loop=32'
set bootcmd "dhcp; tftp ${loadaddr} ${serverip}:uImage; bootm


Nu boot het moederbord in Debian. Alleen heb ik nog geen shell, maar ik vermoed dat ik op het einde van bootargs /bin/bash of zo moet toevoegen.

  • Mijzelf
  • Registratie: September 2004
  • Niet online
Je bedoelt een shell op de seriële poort? Vroeger deed je dat in /etc/inittab met een regel
T0:23:respawn:/sbin/getty -L ttyS0 115200 vt100

maar ook hier heeft systemd het leven moeilijker gemaakt. Kijk hier eens naar.

  • Thralas
  • Registratie: December 2002
  • Laatst online: 23:53
Mijzelf schreef op maandag 27 december 2021 @ 23:05:
maar ook hier heeft systemd het leven moeilijker gemaakt.
Nietes. Makkelijker. systemd-getty-generator
For example, it is sufficient to redirect the kernel console with a kernel command line argument such as console= to get both kernel messages and a getty prompt on a serial TTY.

  • bucovaina89
  • Registratie: Juli 2010
  • Laatst online: 20:41
Weet iemand toevallig ook hoe je aan die adressen in RAM geraakt?

code:
1
    tftp 0xa00000 uImage; tftp 0xf00000 uRamdisk; bootm 0xa00000 0xf00000


Hoe weet ik nu dat ik in 0xa00000 de kernel image moet zetten en in 0xf00000 de initramdisk?

  • Mijzelf
  • Registratie: September 2004
  • Niet online
Maakt niet echt uit. In de u-boot header van de kernel staat het laad adres en het entry adres (beide 0x08000 bij (de meeste?) Marvell kernels). Bij bootm zal u-boot de payload van de uImage naar het laadadres kopiëren, en vervolgens een jump doen naar het entry adres. Voor de kernel is het dus belangrijk dat je hem tftp't naar minstens 0x08000 + kernelsize, anders krijg je overlap. (Hoewel u-boot daar ook enigsins mee kan omgaan) Afhankelijk van eventuele door u-boot afgehandelde compressie kan de kernelsize overigens groter zijn dat de uImage size. In jouw geval zit de zImage ungecomprimeerd in de uImage, maar heeft de zImage eigen compressie. Dat kun je zien in de bootlog
code:
1
2
3
4
5
6
Starting kernel ...

DTB:0x0042FB00 (0x00003A4D)
C:0x000080E0-0x004335C0->0x00D7DA00-0x011A8EE0
DTB:0x011A5420 (0x00003AA2)
Uncompressing Linux... done, booting the kernel.

'Starting kernel ...' is de laatste output van u-boot voor hij jumpt naar het entry adres. Van dat DTB adres weet ik niet wie het print, je zou zeggen de piggyback (het decompressie programma op 0x08000), alleen weet ik niet wat die met DTB te maken heeft. De piggyback print 'Uncompressing Linux... done, booting the kernel.', en jumpt dan naar de 'echte' kernel entry (wat overigens óók 0x08000 zou kunnen zijn, omdat er 'inplace decompressie' kan gebeuren, waar de gedecompremeerde kernel de piggyback+gecomprimeerde kernel overschrijft.
Voor de initramfs geldt dat je die op een vrije plaats moet neerzetten. Die wordt niet meer verplaatst, bij mijn weten. De kernel krijgt gewoon een adres mee met boot.
In jouw geval is er dus voor de rauwe kernel 0x0a00000 - 0x08000 = 0x09f8000 = 10452992 bytes vrijgehouden voor de ongecomprimeerde kernel. Voor de kernel uImage is 0x0f00000 - 0x0a00000 = 0x500000 = 5242880 bytes. Dat zou in de toekomst (of als je veel modules incompileerd krap kunnen worden. Je zImage is nu 4371853 bytes groot. Maar dan kun je je initramfs gewoon naar achteren verschuiven.
Pagina: 1


Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee