switch_root は、マウント ツリーのルートとしてファイル システム間の切り替えを行うために使用されるユーティリティです。主に、initramfs/initrd で使用されます。
PetaLinux Zynq UltraScale+ MPSoC および Versal BSP を使用する場合、デフォルトの menuconfig オプション ( ) は、petalinux-initramfs-image
に設定されており、switch_root が有効になっています。対応するコンフィギュレーション イメージは、image.ub ファイルにパッケージ化され、また、イメージに initramfs が含まれる場合は、ramdisk がファイル名の先頭に付いた形式 (例: ramdisk.cpio.gz.u-boot) で、images/linux フォルダーにもコピーされます。
デフォルトで生成される ramdisk.cpio.gz.u-boot は、tiny ベースのルート ファイル システムで、ブートモードに関係なくリアルタイム rootfs ファイル システムとして使用される SD/eMMC の EXT パーティションを検索します。tiny rootfs システムの init スクリプトで rootfs がリアルタイムで見つからない場合、最終的に tiny ベースの rootfs がブートし、プロンプト「 '/#'
」を表示します。
たとえば、QSPI ブート モードで BOOT.BIN、boot.scr、および image.ub ファイルをフラッシュ メモリに書き込んだ場合、tiny rootfs がブートし、マウントされる ext2/3/4 を検索して実際の rootfs として使用します。
PetaLinux でより大きな rootfs をサポートできるように、デフォルトの Zynq UltraScale+ MPSoC および Versal BSP のビルド済み/ビルド イメージは上記のように設定されます。TEMPLATE プロジェクトでは、PetaLinux 2022.1 リリース以降、デフォルトで switch_root が無効になっています。