本文转载自: 硬码农二毛哥
文件系统类型
在Petalinux配置工程时,会遇到如下类型文件系统。常用的有INITRAMFS、INITRD和EXT4。
INITRAMFS、INITRD
INITRAMFS是INITRD的升级版,这两种根文件系统类型都不能保存文件。当文件系统配置成这两种类型时,使用SD卡启动单板时,将SD卡格式化为FAT32类型。只需要将三个文件拷贝到SD卡,bootloader (BOOT.BIN), bootscript (boot.scr) and kernel image(image.ub) 。
$ cp images/linux/BOOT.BIN /media/BOOT/ $ cp images/linux/image.ub /media/BOOT/ $ cp images/linux/boot.scr /media/BOOT/
其中image.ub包含三个文件:
内核镜像: Image 设备树: system.dtb 根文件系统: ramdisk.cpio.gz.u-boot
ramdisk.cpio.gz.u-boot
ramdisk.cpio.gz.u-boot 是一个临时根文件系统,用来实现早期系统启动,为后续挂载真正文件系统提供便利。
EXT4
当文件系统配置成EXT4时,SD要分成两个区,一个FAT32,另一个EXT4。
FAT分区:将BOOT.BIN, boot.scr 拷贝到该分区。
$ cp images/linux/BOOT.BIN /media/BOOT/ $ cp images/linux/image.ub /media/BOOT/ $ cp images/linux/boot.scr /media/BOOT/
EXT分区:将rootfs.tar.gz解压到该区域。
$ sudo tar xvf rootfs.tar.gz -C /media/rootfs $ sync
sync
解压命令后,加上sync,保证文件系统全部解压到EXT4分区。
petalinux-initramfs-image
在Petalinux工程配置中,进入Image Packaging Configuration。
当文件系统类型为INITRD/INITRAMFS 时,使用petalinux-initramfs-image 时,启动文件系统为最小的。
switch_root
使用switch_root命令可以切换到另一个作为挂载树的根的文件系统
switch_root [新根目录] [init] [参数] switch_root /mnt /sbin/init
当文件系统类型为INITRD/INITRAMFS 时,使用petalinux-initramfs-image 时,生成的镜像文件。可以使用switch_root命令将文件系统挂载到ext4分区。
不使能switch_rootj
将petalinux-initramfs-image名字改为petalinux-image-minimal ,将不再使能switch_root命令。
specify the SD device which has the ext roots
指定SD卡设备的ext文件系统,添加ext4=/dev/mmcblk0p2:/rootfs 。
petalinux-config ---> DTG Settings ---> Kernel Bootargs ---> (earlycon console=ttyPS0,115200 clk_ignore_unused init_fatal_sh=1 ext4=/dev/ mmcblk0p2:/rootfs) user set kernel bootargs