Notes d'étude Xunwei 4412 - compilez et installez le plus petit système de fichiers Linux

Environnement expérimental : machine physique Ubuntu20.04/Windows 10 21H2

1. Créer et installer un système de fichiers Linux minimal

1.1 compiler uboot

Copiez les trois dossiers suivants dans le répertoire de même niveau d'Ubuntu :

 

Une fois la copie terminée, comme indiqué sur la figure :

 

Utilisez la commande suivante pour décompresser le code source uboot :

tar -vxf iTop4412_uboot_20180320.tar.gz

Une fois la décompression terminée, cela ressemblera à ceci :

 

Vous pouvez compiler le code source uboot en utilisant le script "build_uboot.sh" dans le dossier du code source iTop4412_uboot. Lors de la compilation, les paramètres suivants doivent être définis en fonction du modèle de carte :

classification du matériel

Paramètres d'exécution du script

Carte mère SCP, mémoire 1G

SCP_1GDDR

Carte mère SCP, mémoire 2G

SCP_2GDDR

Carte mère POP, mémoire 1G

POP_1GDDR

Carte mère POP, mémoire 2G

POP_2GDDR

La carte de développement utilisée par l'auteur est la carte centrale SCP avec 1G de mémoire, donc le paramètre utilisé lors de la compilation est "SCP_1GDDR", entrez le répertoire iToop4412_uboot, et utilisez la commande suivante pour terminer la compilation de uboot :

./build_uboot.sh SCP_1GDDR

Une fois la compilation terminée, comme indiqué sur la figure

 

Le fichier compilé u-boot-iTop-4412.bin se trouve dans le répertoire iTop4412_uboot, comme illustré dans la figure :

 

 

1.2 Compiler le noyau Linux

Copiez d'abord le code source du noyau iTop4412_Kernel_3.0_20191007.tar.gz vers Ubuntu, comme indiqué sur la figure

 

Utilisez ensuite la commande suivante pour décompresser :

tar -vxf iTop4412_Kernel_3.0_20191007.tar.gz

Une fois la décompression terminée, cela ressemblera à ceci :

 

Entrez ensuite dans le répertoire "iTop4412_Kernel_3.0" pour configurer le noyau compilé.

 

Si vous devez compiler le noyau pour le plus petit système Linux, vous devez sélectionner le fichier de configuration config_for_linux*. Si vous compilez le noyau pour Android, sélectionnez config_for_android*. Il en va de même pour les autres systèmes, où élite signifie l'élite version et super signifie la version complète.

Prenons l'exemple du noyau requis pour compiler le système Linux minimal. Puisque l'auteur utilise la version élite de SCG1G, la commande suivante doit être utilisée pour configurer le fichier .config :

cp config_for_linux_scp_elite .config

Une fois terminé, utilisez la commande suivante pour compiler le noyau :

faire zImage

Il est mesuré que le système Ubuntu20.04 LTS rencontrera des erreurs causées par des problèmes de version lors de la compilation, comme le montre la figure

 

Solution : selon le répertoire d'erreur, recherchez le fichier timeconst.pl, entrez et recherchez la phrase defined(@array), ignore defined selon l'invite entre parenthèses et définissez :

si (!défini(@val)) {

Remplacez par :

si (!(@val)) {

Le processus détaillé est le suivant : dans le répertoire du noyau iTop4412_Kernel_3.0, utilisez la commande suivante pour modifier le fichier timeconst.pl :

vim /kernel/timeconst.pl

Sautez ensuite au nombre de lignes erronées, ici 373, utilisez la commande suivante dans vim pour sauter :

373gg

Une fois le saut terminé, comme indiqué sur la figure :

 

Après modification, comme indiqué sur la figure :

 

Ensuite, enregistrez et quittez, recompilez, comme indiqué sur la figure une fois la compilation terminée :

 

Le fichier zImage généré se trouve dans le répertoire ./arch/arm/boot, comme illustré dans la figure

 

1.3 Télécharger et configurer Busybox

La production du plus petit système de fichiers Linux peut être complétée en utilisant la boîte à outils open source Busybox. Busybox est un logiciel qui intègre plus d'une centaine des commandes et outils Linux les plus couramment utilisés, y compris les commandes shell couramment utilisées. Son site officiel est :

https://busybox.net/

Ouvrez le site officiel, comme indiqué sur la figure, la dernière version est 1.35.0

 

Après le téléchargement, copiez sur Ubuntu, comme indiqué sur la figure :

 

Utilisez la commande suivante pour décompresser :

tar -vxf busybox-1.35.0.tar.bz2

Une fois la décompression terminée, comme indiqué sur la figure

 

Allez dans le répertoire busybox-1.35.0 généré par décompression, puis utilisez la commande suivante

faire menuconfig

Vous pouvez configurer le système de fichiers Linux. La mesure réelle d'Ubuntu 20.04 LTS affichera l'erreur suivante :

 

C'est parce que le système Ubuntu n'a pas de paquet ncurses devel, utilisez la commande suivante pour l'installer :

apt installer libncurses5-dev

Une fois terminé, utilisez à nouveau make menuconfig pour accéder à l'interface de configuration du menu de buybox, comme indiqué sur la figure

 

Ensuite, entrez dans le répertoire Paramètres, faites défiler vers le bas et recherchez le "Préfixe du compilateur croisé" sous "---Options de construction" pour configurer le compilateur croisé pour celui-ci.

 

Ici, prenez le compilateur croisé "arm-none-linux-gnueabi-" installé précédemment comme exemple, appuyez sur Entrée pour entrer "Préfixe du compilateur croisé", entrez "arm-none-linux-gnueabi-" dans la zone d'édition, puis sélectionnez "OK" OK, comme indiqué sur la figure :

 

Ensuite, configurez le répertoire d'installation du système de fichiers pour Busybox, qui est par défaut le répertoire "_install" du dossier actuel, comme indiqué dans la figure :

 

Ici, créez un répertoire de système de fichiers en dehors du répertoire busybox-1.35.0 pour que busybox installe le système de fichiers, vous devez donc changer "./_install" en "../filesystem", comme indiqué dans la figure :

 

Sélectionnez ensuite "Ok" et enregistrez pour quitter, comme indiqué sur la figure, sélectionnez "Oui".

 

1.4 Améliorer le système de fichiers Linux minimal

Comme indiqué dans la figure, créez un répertoire de système de fichiers dans le même répertoire que busybox-1.35.0.

 

Complétez ensuite les fichiers requis par le système linux minimum dans le système de fichiers, comme suit :

Utilisez la commande suivante pour créer une série de dossiers dans le système de fichiers :

mkdir dev etc lib mnt proc sys tmp var

Après l'achèvement, comme indiqué sur la figure

 

Ensuite, entrez dans le répertoire etc nouvellement créé et utilisez les commandes suivantes pour créer les dossiers init.d et rc.d

mkdir init.d rc.d

Après l'achèvement, comme indiqué sur la figure :

 

Entrez ensuite le dossier rc.d nouvellement créé et utilisez la commande suivante pour créer le dossier init.d

mkdir init.d

Après l'achèvement, comme indiqué sur la figure :

 

Revenez ensuite au répertoire du système de fichiers, entrez le répertoire var et utilisez la commande suivante pour créer les dossiers requis par d'autres systèmes :

journal de verrouillage mkdir lib exécuter tmp

Après l'achèvement, comme indiqué sur la figure :

 

Les opérations suivantes nécessitent d'utiliser certains fichiers d'initialisation fournis par Xunwei, comme indiqué sur la figure, évitez de les ouvrir dans Windows après la décompression.

 

Entrez dans le répertoire etc créé, copiez-y les trois fichiers du profil eth0-setting passwd et utilisez la commande suivante pour modifier les autorisations de ces fichiers en 755 :

chmod 755 eth0-setting profil passwd

Après l'achèvement, comme indiqué sur la figure :

 

Entrez dans le répertoire init.d sous le répertoire etc, copiez-y les deux fichiers ifconfig-eth0 et rcS et utilisez la commande suivante pour changer les permissions de ces fichiers en 755 :

chmod 755 ifconfig-eth0 RCS

Après l'achèvement, comme indiqué sur la figure :

 

Accédez au répertoire etc/rc.d/init.d, copiez le fichier netd et utilisez la commande suivante pour modifier l'autorisation du fichier en 755 :

chmod 755 netd

Après l'achèvement, comme indiqué sur la figure :

 

Revenez au répertoire système, entrez dans le dossier lib et utilisez la commande suivante pour y copier les fichiers de bibliothèque du compilateur :

cp /usr/local/arm/arm-2009q3/arm-none-linux-guneabi/libc/lib/* ./

Après l'achèvement, comme indiqué sur la figure :

 

De cette façon, le système de fichiers du plus petit système Linux a été perfectionné.

1.5 Compiler le système de fichiers Linux minimal

Entrez dans le répertoire busybox-1.35.0 et utilisez les commandes suivantes afin de terminer la compilation et l'installation du système Linux minimal :

faire

faire installer

Après avoir utilisé la commande make, le système Ubuntu20.04 LTS aura l'erreur suivante :

 

Modifiez le fichier ipaddress.c avec la commande suivante :

réseau vim/libiproute/ipaddress.c

Passez ensuite à la ligne 345, comme indiqué sur la figure :

 

Ajoutez la compilation conditionnelle pour IFA_F_DADFAILED, le programme est modifié pour :

 

Après avoir enregistré et quitté, recompilez et constatez qu'il y a de nouvelles erreurs. Ces erreurs sont principalement causées par l'inadéquation entre la chaîne d'outils croisés et la version du code source. Supprimez simplement ces modules indéfinis dans la configuration de la busybox.

 

Il y en a deux ici, à savoir nsenter et sync. Entrez "/" dans le make menuconfig de busybox pour rechercher le module afin d'obtenir son emplacement, puis supprimez l'état sélectionné.

Voici les résultats de la recherche de nsenter, et son emplacement peut être obtenu sous Linux System Utilities

 

Après avoir trouvé et sélectionné, entrez "n" pour supprimer l'état sélectionné et entrez "y" pour entrer dans l'état sélectionné.

 

Continuer à trouver la synchronisation

 

Sous le menu Coreutils, il effectue également l'opération de désélection :

 

Enfin, enregistrez et quittez, et utilisez make pour compiler à nouveau.

 

La compilation est passée, et enfin utilisez la commande suivante pour terminer l'installation de busybox :

faire installer

Après le succès, le résultat est comme indiqué sur la figure :

 

1.6 Emballez le plus petit système de fichiers Linux

Après avoir exécuté les commandes ci-dessus pour compiler et installer busybox, utilisez l'outil de conditionnement make_ext4fs pour copier le fichier compressé linux_tools.tgz dans le répertoire "/".

  Utilisez ensuite la commande suivante pour décompresser :

tar -vxf outils_linux

Après l'achèvement, comme indiqué sur la figure :

 

Après cela, entrez le même répertoire de niveau que le système de fichiers précédent et utilisez la commande suivante pour empaqueter le système de fichiers Linux minimum :

make_ext4fs -s -l 314572800 -a root -L système linux.img système de fichiers

Le dernier paramètre filesystem indique le répertoire où se trouve le modèle de système de fichiers, c'est-à-dire le système de fichiers Linux parfait mentionné ci-dessus, et l'avant-dernier paramètre system.img indique que le nom de fichier généré après l'empaquetage est system.img.

Il est en fait mesuré que cette commande signalera une erreur sous le système Ubuntu 20.04 LTS, provoquant une erreur lors du chargement de la bibliothèque partagée libc++.so.6

 

Utilisez simplement les commandes suivantes pour installer les deux bibliothèques lib32c-dev et lib32stdc++6 :

apt installer lib32c-dev

apt installer lib32stdc++6

Une fois l'installation terminée, utilisez à nouveau la commande package pour empaqueter et générer le fichier image système system.img, comme illustré dans la figure :

 

1.7 Graver le plus petit système de fichiers Linux

Utilisez-le en mode u-boot dans HyperTerminal (ou minicom) (si vous avez seulement besoin de mettre à jour le noyau, vous n'avez pas besoin d'effacer la partition), effacez la partition et passez en mode fastboot

(Exécuter une par une commande)

fdisk -c 0

fatformat mmc 0:1

format ext3 mmc 0:2

format ext3 mmc 0:3

format ext3 mmc 0:4

démarrage rapide

Utilisez-le sous cmd.exe et gravez l'image requise dans la carte de développement via la ligne otg

En général, ne reprogrammez pas uboot (minimum linux, android et QT partagent un uboot, le premier élément est de reprogrammer uboot)

chargeur de démarrage flash fastboot.exe u-boot-iTOP-4412.bin

fastboot.exe noyau flash zImage

fastboot.exe flash ramdisk ramdisk-uboot.img

système flash fastboot.exe system.img

démarrage rapide -w

redémarrage rapide

Une fois la programmation terminée, une fois que la carte de développement a chargé le noyau, utilisez la commande suivante pour vérifier la version de busybox :

ls -j

Comme le montre la figure, cela signifie que le système fourni par busybox peut fonctionner normalement :

 

Je suppose que tu aimes

Origine blog.csdn.net/qq_41595148/article/details/128722117
conseillé
Classement