Maison  >  Article  >  Opération et maintenance  >  Qu'est-ce que Linux Rootfs

Qu'est-ce que Linux Rootfs

藏色散人
藏色散人original
2023-04-19 10:11:253118parcourir

linux rootfs fait référence au système de fichiers racine sous Linux ; le système de fichiers racine est le premier système de fichiers monté au démarrage du noyau. Le fichier image du code du noyau est stocké dans le système de fichiers racine et le programme de démarrage du système sera dans le système de fichiers racine. fichier racine Une fois le système monté, certains scripts et services d'initialisation de base sont chargés dans la mémoire pour être exécutés.

Qu'est-ce que Linux Rootfs

L'environnement d'exploitation de ce tutoriel : système linux5.9.8, ordinateur Dell G3.

Qu'est-ce que Linux Rootfs ?

Le système de fichiers racine sous Linux (le principe et l'introduction de rootfs)

1. Qu'est-ce que le le système de fichiers

Le système de fichiers est utilisé par le système d'exploitation pour stocker explicitement les périphériques (généralement disques, mais aussi La méthode et la structure des données des fichiers sur un disque SSD NAND Flash) ou une partition, c'est-à-dire la méthode d'organisation des fichiers sur un périphérique de stockage ; L'organisation logicielle chargée de gérer et de stocker les informations sur les fichiers dans le système d'exploitation est appelée système de gestion de fichiers, ou système de fichiers en abrégé. Le système de fichiers se compose de trois parties : l'interface du système de fichiers, l'ensemble de logiciels pour le fonctionnement et la gestion des objets, ainsi que les objets et attributs. Du point de vue du système, un système de fichiers est un système qui organise et alloue l'espace des périphériques de stockage de fichiers, est responsable du stockage des fichiers, et protège et récupère les fichiers stockés. Plus précisément, il est responsable de la création de fichiers pour les utilisateurs, du stockage, de la lecture, de la modification et du vidage des fichiers, du contrôle de l'accès aux fichiers et de la révocation des fichiers lorsque les utilisateurs ne les utilisent plus.

Bien que le noyau soit le cœur de Linux, les fichiers sont le principal outil utilisé par les utilisateurs pour interagir avec le système d'exploitation. Cela est particulièrement vrai pour Linux qui, dans la tradition UNIX, utilise des mécanismes d'E/S de fichiers pour gérer les périphériques matériels et les fichiers de données.

2. Qu'est-ce que le système de fichiers racine

Le système de fichiers racine est le premier système de fichiers monté au démarrage du noyau Le fichier image du code du noyau est enregistré dans le système de fichiers racine et le programme de démarrage du système. will Une fois le système de fichiers racine monté, certains scripts et services d'initialisation de base sont chargés dans la mémoire et exécutés.

3. Pourquoi le système de fichiers racine est-il si important ?

La raison pour laquelle le système de fichiers racine ajoute une « racine » devant lui montre qu'il s'agit de la « racine » pour charger d'autres systèmes de fichiers. root, d'autres systèmes de fichiers le feront également. Il n'y a aucun moyen de le charger.

Le système de fichiers racine contient les répertoires et les fichiers clés nécessaires au démarrage du système, ainsi que les fichiers nécessaires pour permettre le montage d'autres systèmes de fichiers. Par exemple :

L'application du processus init doit s'exécuter sur le système de fichiers racine ;
Le système de fichiers racine fournit le répertoire racine "/"
Les informations sur lesquelles Linux s'appuie lors du montage d'une partition sont stockées dans le système de fichiers racine ; /etc/fstab fichier Medium;
Le programme de commande shell doit s'exécuter sur le système de fichiers racine, comme ls, cd et autres commandes ;
En bref : pour un système Linux, seul le noyau lui-même ne peut pas fonctionner, et le rootfs (configuration fichier dans le répertoire etc, les commandes Shell dans /bin /sbin et d'autres répertoires, ainsi que les fichiers de bibliothèque dans le répertoire /lib, etc.) peuvent fonctionner ensemble.

Lorsque Linux démarre, la première chose qui doit être montée est le système de fichiers racine ; si le système ne peut pas monter le système de fichiers racine à partir du périphérique spécifié, le système fera une erreur et quittera le démarrage. Après succès, d'autres systèmes de fichiers peuvent être montés automatiquement ou manuellement. Par conséquent, différents systèmes de fichiers peuvent exister simultanément dans un même système. Le processus d'association d'un système de fichiers à un périphérique de stockage sous Linux est appelé montage. Utilisez la commande mount pour attacher un système de fichiers à la hiérarchie actuelle du système de fichiers (racine). Lorsque vous effectuez un montage, fournissez le type de système de fichiers, le système de fichiers et un point de montage. Une fois le système de fichiers racine monté sur "/" sous le répertoire racine, il existe différents répertoires du système de fichiers racine sous le répertoire racine, fichiers : /bin /sbin /mnt, etc., puis montez d'autres partitions dans / mnt , il existe différents répertoires et fichiers de cette partition dans le répertoire /mnt.

4. Comment monter le système de fichiers racine dans le noyau

init/main.c->

start_kernel()->vfs_caches_init(totalram_pages)–>

mnt_init()–>

/* sysfs用来记录和展示linux驱动模型,sysfs先于rootfs挂载是为全面展示linux驱动模型做好准备 /
     / mnt_init()调用sysfs_init()注册并挂载sysfs文件系统,然后调用kobject_create_and_add()创建fs目录 */
     sysfs_init();

/* init_rootfs()注册rootfs,然后调用init_mount_tree()挂载rootfs */
     init_rootfs();

init_mount_tree();

1、sysfs文件系统目前还没有挂载到rootfs的某个挂载点上,后续init程序会把sysfs挂载到rootfs的sys挂载点上;

2、rootfs是基于内存的文件系统,所有操作都在内存中完成;也没有实际的存储设备,所以不需要设备驱动程序的参与。基于以上原因,linux在启动阶段使用rootfs文件系统,当磁盘驱动程序和磁盘文件系统成功加载后,linux系统会将系统根目录从rootfs切换到磁盘文件系统。

start_kernel
  vfs_caches_init
    mnt_init
      init_rootfs注册rootfs文件系统
      init_mount_tree 挂载rootfs文件系统
        vfs_kern_mount
          mount_fs
            type->mount其实是rootfs_mount
              mount_nodev
                fill_super 其实是ramfs_fill_super
                  inode = ramfs_get_inode(sb, NULL, S_IFDIR | fsi->mount_opts.mode, 0);
                  sb->s_root = d_make_root(inode);
                    static const struct qstr name = QSTR_INIT("/", 1);[1*]
                    __d_alloc(root_inode->i_sb, &name);
          …
          mnt->mnt.mnt_root = root;[2*]
          mnt->mnt.mnt_sb = root->d_sb;[3*]
          mnt->mnt_mountpoint = mnt->mnt.mnt_root;[4*]
          mnt->mnt_parent = mnt;[5*]
root.mnt = mnt;
        root.dentry = mnt->mnt_root;
        mnt->mnt_flags |= MNT_LOCKED;
        set_fs_pwd(current->fs, &root);
        set_fs_root(current->fs, &root);
  …
  rest_init
  kernel_thread(kernel_init, NULL, CLONE_FS);

Avant d'exécuter kernel_init, le système de fichiers Roofs sera établi.

1. Le nom du répertoire racine est défini sur "/"
2. Le répertoire racine dans vfsmount est défini
3. Le super bloc dans vfsmount est défini ; set Le point de montage du fichier pointe vers lui-même
5. Définissez le vfsmount du système de fichiers parent dans vfsmount sur lui-même

5. Introduction aux différents répertoires communs du système de fichiers racine

Normalement, le système de fichiers racine comprend au moins le répertoire suivant :

/etc/:存储重要的配置文件。
/bin/:存储常用且开机时必须用到的执行文件。
/sbin/:存储着开机过程中所需的系统执行文件。
/lib/:存储/bin/及/sbin/的执行文件所需的链接库,以及Linux的内核模块。
/dev/:存储设备文件。

6. Répertoires couramment utilisés

Les systèmes de fichiers Linux ont généralement les répertoires suivants :

Répertoire/bin
Ce répertoire stocke les commandes de base qui peuvent être utilisées par tous les utilisateurs. Ces commandes peuvent être utilisées avant de monter d'autres systèmes de fichiers, le répertoire /bin doit donc être dans la même partition que le système de fichiers racine.
Les commandes couramment utilisées dans le répertoire /bin incluent : cat, chgrp, chmod, cp, ls, sh, kill, mount, umount, mkdir, mknod, test, etc. Lorsque nous utilisons Busybox pour créer le système de fichiers racine, nous créons un répertoire bin dans le système de fichiers racine généré. Ci-dessous, vous pouvez voir quelques fichiers exécutables, qui sont quelques-unes des commandes disponibles.

/sbin directory
Ce répertoire stocke les commandes système, c'est-à-dire que les commandes que seuls les administrateurs peuvent utiliser. Les commandes système peuvent également être stockées dans le répertoire /usr/sbin, /usr/local/sbin et /sbin. sont des commandes système de base. Elles sont utilisées pour démarrer le système, réparer le système, etc. Semblable au répertoire /bin, /sbin peut être utilisé avant de monter d'autres systèmes de fichiers, le répertoire /sbin doit donc se trouver dans la même partition que le répertoire /sbin. système de fichiers racine.
Les commandes couramment utilisées dans le répertoire /sbin incluent : shutdown, reboot, fdisk, fsck, etc. Les commandes système installées par les utilisateurs locaux sont placées dans le répertoire /usr/local/sbin.

/dev directory
Ce répertoire stocke les fichiers de périphérique. Les fichiers de périphérique sont un type de fichier unique sous Linux. Sous le système Linux, divers périphériques sont accessibles sous forme de fichiers, c'est-à-dire en lisant et en écrivant un fichier de périphérique. un élément matériel spécifique. Par exemple, le port série 0 peut être exploité via le fichier « dev/ttySAC0 », et la deuxième partition du périphérique MTD est accessible via « /dev/mtdblock1 ».

Répertoire/etc
Divers fichiers de configuration sont stockés dans ce répertoire. Pour les systèmes Linux sur PC, il existe de nombreux fichiers et répertoires dans le répertoire /etc. Ces fichiers de répertoire sont facultatifs et dépendent de tout ce qui se trouve dans le système. applications, selon que ces programmes nécessitent ou non des fichiers de configuration. Dans les systèmes embarqués, ceux-ci peuvent être considérablement réduits.

/lib directory
Les bibliothèques partagées et chargeables (pilotes) sont stockées dans ce répertoire. Les bibliothèques partagées sont utilisées pour démarrer le système. Exécutez des programmes exécutables dans le système de fichiers racine, tels que les programmes du répertoire /bin /sbin.

/home directory
Répertoire utilisateur, il est facultatif. Pour chaque utilisateur ordinaire, il existe un sous-répertoire nommé d'après le nom de l'utilisateur dans le répertoire /home, qui stocke les fichiers de configuration liés à l'utilisateur.

/root directory
Le répertoire de l'utilisateur root En conséquence, le répertoire des utilisateurs ordinaires est un sous-répertoire sous /home.

/usr directory
Le contenu du répertoire /usr peut être stocké dans une autre partition, puis monté dans le répertoire /usr du système de fichiers racine après le démarrage du système. Il stocke des programmes et des données partagés en lecture seule, ce qui montre que le contenu du répertoire /usr peut être partagé entre plusieurs hôtes, et ceux-ci sont principalement conformes aux normes FHS. Les fichiers dans /usr doivent être en lecture seule, liés à d'autres hôtes, et les fichiers variables doivent être enregistrés dans d'autres répertoires, tels que /var. Le répertoire /usr peut être réduit dans les systèmes embarqués.

Répertoire/var
Contrairement au répertoire /usr, le répertoire /var stocke des données variables, telles que les répertoires spool (mail, news), les fichiers journaux et les fichiers temporaires.

/proc directory
Il s'agit d'un répertoire vide, souvent utilisé comme point de montage du système de fichiers proc. Le système de fichiers proc est un système de fichiers virtuel. Il ne contient aucun périphérique de stockage réel. généré par le noyau est utilisé pour indiquer l’état de fonctionnement du système et peut également faire fonctionner le système de contrôle de fichiers.

/mnt directory
est un point de montage utilisé pour monter temporairement un système de fichiers. Il s'agit généralement d'un répertoire vide. Vous pouvez également y créer un sous-répertoire vide, tel que /mnt/cdram /mnt/hda1. Utilisé pour monter temporairement des CD et des disques durs.

/tmp directory
est utilisé pour stocker les fichiers temporaires, généralement un répertoire vide. Certains programmes qui doivent générer des fichiers temporaires utilisent le répertoire /tmp, le répertoire /tmp doit donc exister et être accessible.

Recommandations associées : "Tutoriel vidéo Linux"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:que sont les binaires LinuxArticle suivant:que sont les binaires Linux