buildroot官方教材6(笔记)

buildroot官方教材
buildroot官方的教程training

初始化机制:

  • Buildroot支持多种的初始化的方式,包括如下几种:

    • 默认的初始化的方式为Busybox init,这也是最简单的一种方式;
    • sysvinit,这是一种旧的风格的初始化的方式;
    • systemd,这是一种新的风格的初始化的方式。
  • 初始化方式的选择:

    • 通过System configuration菜单来选择初始化的方式。

/dev 设备文件夹的管理方式:

  • Buildroot通过如下的四种方法来管理设备文件夹:
    • 通过内核的devtmpfs来管理/dev,可以自动地创建设备文件,这也是Buildroot默认的一种方法;
    • 使用静态的/dev,这是一种非常老土的方法,现在并不实用;
    • 使用mdev,mdev是Busybox的一部分,在设备的添加和删除时可以运行一些自定义的操作。
    • 使用eudev,该方法从systemd开始允许运行一些自定义的操作。

BusyBox:
这里对BusyBox进行一个简单的介绍,BusyBox可以理解为一个常用的Linux命令和工具集,包括:ls,echo,grep等等,并以单一的可执行的文件形式,提供完善的环境以适用于任何小的嵌入式系统。

其它的配置根文件系统的选项:

  • getty,配置在串口或显示器运行登陆命令窗口;
  • hostname、banner,显示主机名、起始标语;
  • DHCP network,配置网络接口为DHCP;
  • root password,设置root密码;
  • timezone,时区;
  • NLS,支持本地语言和消息信息的翻译;
  • locale,只安装本地语言的翻译,或者不安装翻译。

部署映像文件:

  • Buildroot默认将所有的映像文件保存在$(O)/images中。

针对以下的几种目标硬件不同的情况,有几种不同的部署映像文件的方法:

  1. 目标硬件使用的是SD卡或USB盘之类的移动存储,并且已经进行过格式化和分区,则可以直接将根文件系统的压缩包解压到合适的分区即可。当然也可以通过genimage来创建可移动存储器的整个映像,并建立好分区。
  2. 目标硬件使用的是NAND Flash,则可以将映像文件转化为相应格式的文件,并烧录。
  3. 目标硬件使用的是NFS,则可配置NFS服务器,并在NFS上启动。
  4. initramfs,是一种基于RAM内存的一种方式,在RAM的缓存建立文件系统。

genimage:

对于SD卡和USB等可移动存储来说,使用genimage工具可以很方便地建立好一个多分区的文件系统。
比如说,我们可以使用genimage工具来创建一个给bootloader和内核的FAT分区,并创建一个ext4的分区给根文件系统。
如下的示例中,通过指定生成映像文件后处理脚本为support/scripts/genimage.sh脚本,调用genimage。

  • 在defconfig中添加如下的选项:

    • BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh"
    • BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/raspberrypi/genimage-raspberrypi.cfg"
  • 该示例用来生成了一个用于Raspberrypi的映像,其中需要配置genimage的参数来定义文件和分区。

  • genimage参数配置文件为board/raspberrypi/genimage-raspberrypi.cfg,内容如下:

      image boot.vfat {
      	vfat {
      		files = {
      			"bcm2708-rpi-b.dtb",
      			"rpi-firmware/bootcode.bin",
      			"rpi-firmware/cmdline.txt",
      			"kernel-marked/zImage"
      			[...]
      		}
      	}
      	size = 32M
      }
     
     image sdcard.img {
     	hdimage{
     	}
     	partition boot {
     		partition-type = 0xC
     		bootable = "true"
     		image = "boot.vfat"
     	}
     	partition rootfs {
     		partition-type = 0x83
     		image = "rootfs.ext4"
     	}
     }
    

可以将genimage生成的整个映像,烧录到Flash中:

dd if=output/images/sdcard.img of=/dev/sdb

使用NFS来部署映像
当然还有很多用户喜欢/习惯通过NFS来启动系统。
但是不能直接在$(O)/target中,使用NFS来启动,这是因为文件的权限和所有者并不适合进行NFS启动,我们首先需要为根文件系统生成一个压缩包,以便随后使用NFS启动。(参考THIS_IS_NOT_YOUR_ROOT_FILESYSTEM文件)
使用如下的命令生成根文件系统的压缩包:

sudo tar -C /nfs -xf output/images/rootfs.tar

使用initramfs来部署映像
这种方式非常适用于效得文件系统,它全部加载到RAM内存中,启动速度非常快。
BR2_TARGET_ROOTFS_CPIO=y,生成cpio存档文件,您可以从内核映像旁边的bootloader加载该文件。(cpio为一个能建立和还原备份文档的工具)
BR2_TARGET_ROOTFS_INITRAMFS=y,直接在内核映像中包含了initramfs。该方式只适用于Buildroot构建的内核。

转载请标注出处。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_43354598

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值