Linux now runs on the board
This commit is contained in:
125
tp4.md
125
tp4.md
@@ -37,12 +37,133 @@ Il y a deja un serveur NFS intègré et il suffit donc de le configurer.
|
||||
/Users/rohmermaxime/nfsroot 192.168.144.100 -alldirs -mapall=nobody`
|
||||
```
|
||||
|
||||
`sudo nfsd checkexports` pour verifier que notre fichier export est conforme
|
||||
|
||||
`sudo nfsd restart`
|
||||
|
||||
Et normalement ca devrait suffire "Inshallah" comme disent certains
|
||||
|
||||
|
||||
|
||||
On peut essayer depuis une VM linux de monter le fs pour voir si ca marche
|
||||
|
||||
`sudo mount -t nfs 192.168.144.12:/Users/rohmermaxime/nfsroot ./test/`
|
||||
|
||||
Et ca marche ! On peut le faire sur la board maintenant
|
||||
|
||||
### [Q1] Donnez le contenu de la variable d’environnement U-Boot permettant à votre noyau linux de monter le rootfs depuis votre répertoire nfsroot.
|
||||
|
||||
`root =/dev/nfs ip = targetip:::::targetif nfsroot = serverip : rootfs , v3 rw` Ca c'est la commande que l'on peut voir dans notre cours de base
|
||||
|
||||
Il faut le mettre dans `setenv bootargs` comme ca notre kernel peut l'executer au démarrage.
|
||||
|
||||
On peut donc créér notre commande de la sorte
|
||||
|
||||
`setenv bootargs root=/dev/nfs ip=192.168.144.100:::::eth0 nfsroot=192.168.144.12:/Users/rohmermaxime/nfsroot, v3 rw`
|
||||
|
||||
bootargs est la variable qui contient les arguments qui sont ajoutés au démarrage du kernel.
|
||||
root est l'endroit ou est monté notre nouveau fs
|
||||
ip et eth0 sont les informations reseau de notre board tandis que nfsroot contient les infos du serveur nfs
|
||||
|
||||
V3 force d'utiliser le protocole nfs v3 ce qui est demandé dans le cours car une version plus récente pourrait ne pas fonctionner.
|
||||
|
||||
Avec cette commande on peut faire un `saveenv` et relancer le boot et on a toujours un kernel panic mais pas le même !
|
||||
|
||||
### [Q2] : Pourquoi le noyau crash-t-il (lisez les messages du noyau) et comment résoudre ce problème ?
|
||||
|
||||
Le panic d'avant c'était :
|
||||
|
||||
```
|
||||
---[ end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,253) ]---
|
||||
```
|
||||
|
||||
Et maintenant c'est
|
||||
|
||||
```
|
||||
---[ end Kernel panic - not syncing: No working init found. Try passing init= option to kernel. See Linux Documentation/admin-guide/init.rst for guidance. ]---
|
||||
```
|
||||
|
||||
J'en déduis donc qu'il a réussi à monter le rootfs mais qu'il essaie de trouver un fichier init dedans pour lancer l'os. La comme ca je dirais qu'il faut ajouter un fichier init et on pourra continuer.
|
||||
|
||||
## Système de fichiers racine avec Busybox
|
||||
|
||||
`git clone https://github.com/mirror/busybox.git`
|
||||
|
||||
`git checkout 1_36_1` res : `HEAD is now at 1a64f6a20 Bump version to 1.36.1`
|
||||
|
||||
On a maintenant la bonne version de busybox sur notre machine de cross compilation
|
||||
|
||||
on va loader la configuration defconfig donc
|
||||
|
||||
`make mrproper`
|
||||
`make defconfig`
|
||||
|
||||
Ca va nous charger la configuration par défaut pour gagner du temps.
|
||||
|
||||
Ensuite on veut désactiver plusieurs options donc
|
||||
|
||||
`make menuconfig`
|
||||
|
||||
J'ai trouvé comment enlever les deux options History saving et enable compatibility for full blown desktops mais je n'ai pas trouvé "Support infiniband HW"
|
||||
|
||||
J'ai fait un search avec `/` sous "infiniband" mais aucun match et sous "HW" mais aucun résultat qui ressemble. J'éspère que ca ne posera pas de problème.
|
||||
|
||||
J'ai retiré le "hush" dans shells
|
||||
|
||||
J'ai tout viré dans
|
||||
|
||||
- Print utilities
|
||||
- Mail utilities
|
||||
- Runit utilities
|
||||
|
||||
"Choose which shell is aliased to ‘sh’ name" est bien set à ash
|
||||
|
||||
mais
|
||||
|
||||
"Choose which shell is aliased to ‘bash’ name" pointait sur none alors je l'ai changé pour pointer sur ash aussi
|
||||
|
||||
dans Settings → Installation Options on peut mettre le chemin d'installation. J'ai mis le chemin vers le repertoire tftp qui me permettras de recuperer sur ma machine principale et pour l'envoyer sur la board. Un poil plus haut on voit une option Build static binary que on doit mettre à oui dans un premier temps.
|
||||
|
||||
ensuite `make install -j`
|
||||
|
||||
A la fin de la compilation on a ce message
|
||||
|
||||
```
|
||||
--------------------------------------------------
|
||||
You will probably need to make your busybox binary
|
||||
setuid root to ensure all configured applets will
|
||||
work properly.
|
||||
--------------------------------------------------
|
||||
```
|
||||
|
||||
Je le garde de côté au cas ou
|
||||
|
||||
Après avoir transfèré tous les fichiers dans le repertoire nfs on peut voir ce que ca donne :
|
||||
|
||||
```
|
||||
ls -a
|
||||
. .. bin linuxrc sbin usr
|
||||
```
|
||||
|
||||
Ca commence à ressembler un petit peu à un système de fichiers linux.
|
||||
|
||||
Maintenant quand j'essaie de lancer la board il boot le kernel, je ne vois pas de kernel panic mais à la place j'ai ce message à l'infini
|
||||
|
||||
```
|
||||
can't open /dev/tty2: No such file or directory
|
||||
can't open /dev/tty3: No such file or directory
|
||||
can't open /dev/tty4: No such file or directory
|
||||
can't open /dev/tty3: No such file or directory
|
||||
can't open /dev/tty4: No such file or directory
|
||||
can't open /dev/tty4: No such file or directory
|
||||
can't open /dev/tty2: No such file or directory
|
||||
can't open /dev/tty3: No such file or directory
|
||||
can't open /dev/tty2: No such file or directory
|
||||
can't open /dev/tty4: No such file or directory
|
||||
can't open /dev/tty3: No such file or directory
|
||||
```
|
||||
|
||||
Et la led bleue de la board fait du morse avec deux pulsations puis pause le tout en boucle aussi
|
||||
|
||||
Et j'avoue je sais pas pourquoi. Je vois dans le cours que il peut y avoir un problème quand le repertoire /dev n'existe pas alors je vais le créer dans nfsroot et on va voir si ca change quelque chose.
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user