Bootstrap

Linux-Lab 入门:使用开发板

列出支持的开发板

ubuntu@linux-lab:/labs/linux-lab$ make list
[ aarch64/raspi3 ]:
      ARCH     = arm64
      CPU     ?= cortex-a53
      LINUX   ?= v5.1
      ROOTDEV_LIST := /dev/mmcblk0 /dev/ram0
      ROOTDEV ?= /dev/mmcblk0
[ aarch64/virt ]:
      ARCH     = arm64
      CPU     ?= cortex-a57
      LINUX   ?= v5.1
      ROOTDEV_LIST := /dev/sda /dev/vda /dev/ram0 /dev/nfs
      ROOTDEV ?= /dev/vda
[ arm/mcimx6ul-evk ]:
      ARCH     = arm
      CPU     ?= cortex-a9
      LINUX   ?= v5.4
      ROOTDEV_LIST := /dev/mmcblk0 /dev/ram0 /dev/nfs
      ROOTDEV ?= /dev/mmcblk0
[ arm/versatilepb ]:
      ARCH     = arm
      CPU     ?= arm926t
      LINUX   ?= v5.1
      ROOTDEV_LIST := /dev/sda /dev/ram0 /dev/nfs
      ROOTDEV ?= /dev/ram0
[ arm/vexpress-a9 ]:
      ARCH     = arm
      CPU     ?= cortex-a9
      LINUX   ?= v5.1
      ROOTDEV_LIST := /dev/mmcblk0 /dev/ram0 /dev/nfs
      ROOTDEV ?= /dev/ram0
[ i386/pc ]:
      ARCH     = x86
      CPU     ?= qemu32
      LINUX   ?= v5.1
      ROOTDEV_LIST ?= /dev/hda /dev/ram0 /dev/nfs
      ROOTDEV_LIST[LINUX_v2.6.34.9] ?= /dev/sda /dev/ram0 /dev/nfs
      ROOTDEV ?= /dev/hda
[ mips64el/ls2k ]:
      ARCH     = mips
      CPU     ?= mips64r2
      LINUX   ?= loongnix-release-1903
      LINUX[LINUX_loongnix-release-1903] := 04b98684
      ROOTDEV_LIST := /dev/sda /dev/ram0 /dev/nfs
      ROOTDEV ?= /dev/ram0
[ mips64el/ls3a7a ]:
      ARCH     = mips
      CPU     ?= mips64r2
      LINUX   ?= loongnix-release-1903
      LINUX[LINUX_loongnix-release-1903] := 04b98684
      ROOTDEV_LIST ?= /dev/sda /dev/ram0 /dev/nfs
      ROOTDEV ?= /dev/ram0
[ mipsel/ls1b ]:
      ARCH     = mips
      CPU     ?= mips32r2
      LINUX   ?= v5.2
      ROOTDEV_LIST ?= /dev/ram0 /dev/nfs
      ROOTDEV ?= /dev/ram0
[ mipsel/ls232 ]:
      ARCH     = mips
      CPU     ?= mips32r2
      LINUX   ?= v2.6.32-r190726
      ROOTDEV_LIST := /dev/ram0 /dev/nfs
      ROOTDEV ?= /dev/ram0
[ mipsel/malta ]:
      ARCH     = mips
      CPU     ?= mips32r2
      LINUX   ?= v5.1
      ROOTDEV_LIST := /dev/hda /dev/ram0 /dev/nfs
      ROOTDEV ?= /dev/ram0
[ ppc/g3beige ]:
      ARCH     = powerpc
      CPU     ?= generic
      LINUX   ?= v5.1
      ROOTDEV_LIST := /dev/hda /dev/ram0 /dev/nfs
      ROOTDEV ?= /dev/ram0
[ riscv32/virt ]:
      ARCH     = riscv
      CPU     ?= any
      LINUX   ?= v5.0.13
      ROOTDEV_LIST := /dev/vda /dev/ram0 /dev/nfs
      ROOTDEV ?= /dev/vda
[ riscv64/virt ]:
      ARCH     = riscv
      CPU     ?= any
      LINUX   ?= v5.1
      ROOTDEV_LIST := /dev/vda /dev/ram0 /dev/nfs
      ROOTDEV ?= /dev/vda
[ x86_64/pc ]:
      ARCH     = x86
      CPU     ?= qemu64
      LINUX   ?= v5.1
      ROOTDEV_LIST := /dev/hda /dev/ram0 /dev/nfs
      ROOTDEV_LIST[LINUX_v3.2] := /dev/sda /dev/ram0 /dev/nfs
      ROOTDEV ?= /dev/ram0
[ arm/ebf-imx6ull ]:
      ARCH     = arm
      CPU     ?= cortex-a9
      LINUX   ?= v4.19.35
      ROOTDEV_LIST := /dev/mmcblk0 /dev/ram0 /dev/nfs
      ROOTDEV ?= /dev/mmcblk0

如果只想查看特定的架构,插件或者模糊匹配,可以使用 ,:

make list ARCH=arm
# next 分支还可以查看真板
make list FILTER=imx6ull

更多用法:

make list-board         # 仅显示 ARCH
make list-short         # ARCH 和 LINUX
make list-base          # 不包含插件
make list-plugin        # 仅包含插件
make list-full          # 所有板子信息
make list-real          # 仅真实硬件
make list-virt          # 仅虚拟开发板

真实开发板

从 v0.6 版以后,为了方便进一步开展外围设备驱动等实验,Linux Lab 开始支持真实的硬件开发板,选择这类开发板时请务必确保有购买开发板并正确连接到开发主机。

这类开发板可以用  单独列出来:

$ make list-real
[ arm/ebf-imx6ull ]:
  ARCH     = arm
  CPU     ?= cortex-a9
  LINUX   ?= v4.19.35
  ROOTDEV_LIST := /dev/mmcblk0 /dev/ram0 /dev/nfs
  ROOTDEV ?= /dev/mmcblk0

由于不同的真实硬件开发板差异较大,所以在板级目录有提供专门的开发文档,例如:。

所有适配过的开发板会统一放置在如下网店供大家选购,选购完毕后可以加微信号  申请进入相应的 Linux Lab 开发板群组。

虚拟开发板

系统缺省使用的虚拟开发板型号为 ,我们也可以自己配置,制作和使用其他的虚拟开发板,具体使用  选项,举例如下:

make make BOARD=arm/vexpress-a9
make boot

检查开发板特定的配置:

cat boards/arm/vexpress-a9/Makefile

配置开发板

每块开发板都有特定的配置,部分配置是可以根据需要进行修改的,比如说内存大小、内核版本、文件系统版本、QEMU 版本,以及其他外设配置,比如串口、网络等。

配置方法很简单,参考现有的板级配置()修改即可,以下命令会通过 vim 调出当前开发板的本地配置文件():

make local-edit

建议不要一次性做太大的调整,通常只建议修改内核版本,这样可直接用如下命令达到:

make list-linux
# v4.12 v4.5.5 v5.0.10 [v5.1]
make local-config LINUX=v5.0.10
make list-linux
# v4.12 v4.5.5 [v5.0.10] v5.1

如果想把相关改动提交进上游代码仓库,请使用  和 ,否则,建议使用  和 ,这样可以方便同步上游的改动而不产生任何冲突。

一键自动编译

v0.3 以及之后的版本默认增加了目标依赖支持,所以,如果想编译内核,直接:

make kernel-build
# 或者
make build kernel

它将自动完成所有需要的工作,当然,依然可以跟以前一样手动指定某个目标运行。

更进一步地,通过给每个目标完成情况打上时间戳,完成的目标就不会再运行,从而可以节省时间。如果还想再次执行某个历史目标,可以删掉时间戳文件再运行:

make cleanstamp kernel-build
make kernel-build
# 或者
make force-kernel-build

下面的命令则删掉所有内核目标的时间戳:

$ make cleanstamp kernel

该功能同样适用于 root, uboot 和 qemu。

总结

通过一条命令即可启动默认 虚拟开发板,

这里提供运行的效果演示,感兴趣的小伙伴们快去看看吧。

明天为大家带来 《Linux-Lab 入门:详细步骤分解》。