入门家庭助理操作系统开发必威是什么
准备开发环境
结帐源代码
主要存储库位于github.com/home-assistant/operating-system/包含通过BR2外部机制以及辅助脚本和GitHub Action CI脚本。主要存储库使用GIT subsodule机制指向BuildRoot本身。虽然大多数自定义可以通过BR2机制来完成,但对建筑本身进行了一些修改。因此,我们还在下面保持一定的构建根github.com/home-assistant/buildroot/。目的是将上游BuildRoot最小的贴片保持在上面。
确保你有git
可用并克隆主HAOS存储库,如下所示:
git克隆https://github.com/home-assistant/operating-system/
光盘操作系统/
gitsubpoule Update-init
更新本地GIT存储库时,请确保还要更新Buildroot
子模块。这样可以确保您将获得匹配的buildroot,以防其更新。
git拉
git子模块更新
要回到原始状态,请使用以下两个命令(这将删除所有局部修改!)
git重置 - 硬
gitsubsodule Update -Init-force
安装先决条件
Haos使用构建容器来运行BuildRoot。安装Docker容器引擎,并确保您有工作Docker
允许运行特权容器的命令。构建脚本本来是作为用户运行的,但是有些命令使用特权,因此有效Sudo
也需要命令。
尽管BuildRoot可以在大多数Linux分布上运行,但强烈建议使用基于Debian的构建容器。这允许在预安装的所有依赖项中建立稳定且已知的构建环境。
信息
构建容器需要从特权开始,因为在构建过程中的某个时候,新的环回设备支持的文件系统图像将安装在Docker容器内。因此,无根容器无法构建Haos。
使用构建容器构建图像
剧本脚本/enter.sh
构建构建容器图像,并使用该图像启动容器。传递给脚本的参数在容器内被执行。
Haos为每个受支持的目标使用配置文件。要为特定目标(板)构建,需要将配置文件传递给制作
。配置文件存储在buildroot-external/configs/
。请注意结局_defconfig
将自动附加一定不被传给制作
。例如。构建覆盆子PI 4 64位配置buildroot-external/configs/rpi4_64_defconfig
使用以下命令:
$ sudo脚本/enter.sh make rpi4_64
向Docker守护程序发送构建上下文159.7KB
步骤1/8:来自Debian:Bullseye
---> A178460BAE57
[...]
成功构建了11D679AC51BE
成功标记的哈索斯:本地
[...]
/usr/bin/make -c/build/buildroot o =/build/upput br2_external =/build/build root -external“ rpi4_64_defconfig”
[...]
这可以使用makefile
在容器内部的源存储库的根中。此Makefile依次调用Buildroot的Makefile。
根据机器的速度,构建过程需要0.5至1H。构建文件(对象文件,中间二进制文件等)存储在文件夹中输出/
(曾经在buildroot/output/
在Rel-6及较旧的分支中)。最终图像文件存储在发布/
目录。
重建软件包
BuildRoot使用的包装像常规发行一样。但是,BuildRoot软件包不仅下载了预制的软件包,还下载了源文件并直接编译了二进制文件。Buildroot记得已经构建了哪些软件包。这使得第二个构建速度更快,因为只有最终图像才能再生。如果您想强制Buildroot重建特定的软件包,只需将其删除输出/构建/
目录:
R M-RF输出/build/linux-custom/
小费
您可以检查输出/构建/packages-file-list.txt
了解最终图像中的哪个文件属于哪个软件包。这使您更容易找到您想更改的包装。
建立多个目标
要在单个源目录中为多个目标构建,必须使用单独的输出目录。输出目录可以用o =
争论。建议的模式是仅使用以目标配置文件命名的输出目录:
Sudo脚本/enter.sh制作o=output_rpi4_64 rpi4_64
交互式使用构建容器
如果没有争论脚本/enter.sh
通过,将出现一个外壳。
$Sudo脚本/enter.sh
向Docker守护程序发送构建上下文159.7kb
步1/8:来自Debian:Bullseye
--->A178460BAE57
[[..。这是给予的
[电子邮件保护]:/build $
从这个外壳中,可以开始使用上面的相同构建make o = output_rpi4_64 rpi4_64
。
这允许调用其他构建根目标,例如至包装之间的图形依赖性。要使用其他构建根目标,请确保更改为Buildroot/
目录和执行命令
使用QEMU测试图像
目标OVA(开放虚拟设备)包含各种虚拟机的图像。图像格式之一是QCOW2,是QEMU的天然图像格式。它可用于使用QEMU测试新的HAOS构建。
由于Haos需要UEFI支持,因此与“经典”(/遗产)基于MBR的图像相比,这要稍有棘手。在Debian主机安装OVMF软件包它提供了“ 64位X86虚拟机的UEFI固件”。该软件包将安装天山- 衍生的Qemu UEFI图像/USR/share/ovmf/ovmf_code.fd
,可以与QEMU一起启动生成的QCOW2图像。
$Sudo脚本/enter.sh制作o=output_ova ova
[[..。这是给予的
$ unxz版本/haos_ova-7.0.dev20211003.qcow2.xz
$ QEMU -SYSTEM -X86_64 -ENABLE -KVM -NAME HAOS -SMP2-m 1G -drive文件=版本/haos_ova-7.0.0.dev20211003.qcow2,索引=0,媒体=磁盘,如果=virtio,格式=QCOW2-驱动文件=/USR/share/ovmf/x64/ovmf_code.fd,if=pflash,格式=原始,可读=上
这将显示QEMU的SDL接口,并应引导家庭助理操作系统。必威是什么靴子完成后,家庭助理CLI提示必威是什么哈>
显示,您可以使用登录
访问根外壳。
创建拉动审查请求
一旦您对更改感到满意,就会创建一个单独的git分支并提交它们。尝试描述为什么您认为这种变化很重要,应该应用于Haos。例如,“更新内核”也可以从更改本身中明显看出。维护者更感兴趣,为什么您认为应该更新内核。这为什么可能很琐碎(更新内核,以确保我们跟上最新更改),或者它可以具有一些有趣的细节(自此最新版本以XY上的以太网修复以太网以来,更新内核)。
创建上游的叉子github.com/home-assistant/operating-system存储库(如果还没有),然后将分支推到分叉的GitHub存储库中。然后打开新的拉请请求。所有更改都应针对开发分支开发
。如果您喜欢下一个稳定版本中的更改,请添加rel-x
标签,因此标记为返回竞争。