Ayant changé ma carte TS7200 par une TS7800, je n’utilise pas redboot sur MyBot, mais je laisse cet article au cas ou quelqu’un en aurait besoin.
Redboot
Les cartes TS7200 de chez Technology System sont livrées avec Redboot déjà installé en flash.
La configuration par défaut de Redboot sur la carte TS7200 est la suivante, et on peut l’obtenir avec la commande fconfig -l :
RedBoot> fconfig -l Run script at boot: true Boot script: .. fis load vmlinux .. exec -c "console=ttyAM0,115200 root=/dev/mtdblock1 Boot script timeout (100ms resolution): 1 Use BOOTP for network configuration: false Gateway IP address: 192.168.0.11 Local IP address: 192.168.0.50 Local IP address mask: 255.255.255.0 Default server IP address: 192.168.0.11 dns_ip: 192.168.0.11 Network hardware address [MAC]: 0x00:0xD0:0x69:0x41:0xFC:0xA7 GDB connection port: 9000 Force console for special debug messages: false Network debug at boot time: false
Avec cette configuration, le kernel Linux vmlinux est chargé depuis la flash interne depuis le système de fichier de redboot. La liste de partition Redboot peut être obtenue avec la commande fis list, et le résultat est :
RedBoot> fis list Name FLASH addr Mem addr Length Entry point (reserved) 0x60000000 0x60000000 0x00620000 0x00000000 RedBoot 0x60620000 0x60620000 0x00040000 0x00000000 vmlinux 0x60660000 0x00218000 0x000C0000 0x00218000 RedBoot config 0x607C0000 0x607C0000 0x00001000 0x00000000 FIS directory 0x607E0000 0x607E0000 0x00020000 0x00000000
La section (reserved) contient 3 blocs qui seront accessible par Linux à travers mtdblock0, mtdblock1 ou mtdblock2
Le mapping de ces 3 blocs est le suivant :
0x000000000000-0x000000020000 : "TS-BOOTROM" 0x000000020000-0x000000620000 : "RootFS" 0x000000620000-0x000000800000 : "Redboot"
Le File System fourni est donc bien en /dev/mtdblock1
Différentes solutions pour démarrer
Le Kernel et le File Sytem peut être localisé à plusieurs endroits. Pour choisir, il faut modifier la configuration de redboot avec la commande fconfig.
La première commande concerne le kernel.
Le Kernel en flash interne
fis load vmlinux
Pour cela, il faut que le kernel soit dans la flash au bon endroit. La procédure est la suivante:
- On regarde ou est localisé zImage
RedBoot> fis list Name FLASH addr Mem addr Length Entry point (reserved) 0x60000000 0x60000000 0x00620000 0x00000000 RedBoot 0x60620000 0x60620000 0x00040000 0x00000000 zImage 0x60660000 0x00218000 0x00140000 0x00218000 RedBoot config 0x607C0000 0x607C0000 0x00001000 0x00000000 FIS directory 0x607E0000 0x607E0000 0x00020000 0x00000000
- On efface l’ancienne image
RedBoot> fis delete zImage Delete image 'zImage' - continue (y/n)? y ... Erase from 0x60660000-0x607a0000: .......... ... Erase from 0x607e0000-0x60800000: . ... Program from 0x01fe0000-0x02000000 at 0x607e0000: .
- On charge zImage en RAM
RedBoot> load -v -r -b 0x00218000 -h 192.168.2.1 -m tftp zImage - Raw file loaded 0x00218000-0x003477d3, assumed entry at 0x00218000
Il faudra noté la taille du code transféré pour la commande suivante.
0x003477D3 - 0x00218000 = 0x0012F7D3
- Enfin, on tranfère la zone de RAM en Flash
On peut le faire avec la commande suivante
fis create -b <mem_base> -l <image_length> [-s <data_length>] [-f <flash_addr>] [-e <entry_point>] [-r <ram_addr>] [-n] <name>
pour créer une section dans le File System de redboot.
RedBoot> fis create -b 0x00218000 -f 0x60660000 -l 0x0012f7d3 -r 0x00218000 -e 0x00218000 zImage ... Erase from 0x60660000-0x607a0000: .......... ... Program from 0x00218000-0x003477d3 at 0x60660000: .......... ... Erase from 0x607e0000-0x60800000: . ... Program from 0x01fe0000-0x02000000 at 0x607e0000: .
Le Kernel en Compact Flash
load -r -b 0×00218000 -m disk hda1:zImage
- Le Kernel par tftp sur un PC
load -v -r -b 0x00218000 -h 192.168.2.1 -m tftp zImage
La seconde commande concerne le File System
- File System en flash interne
exec -c "console=ttyAM0,115200 root=/dev/mtdblock1 init=/sbin/init rootdelay=2"
- File System en Compact Flash
exec -c "console=ttyAM0,115200 root=/dev/sda1 init=/sbin/init rootdelay=2"
- File System par NFS sur un PC
exec –c "console=ttyAM0,115200 root=/dev/nfs ip=192.168.2.2 nfsroot=192.168.2.1:/home/gil/Projets/ts7200/rootfs-debian init=/sbin/init rootdelay=2"