
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
u-root是一个综合性工具集,包含四个核心项目:
通过Git安装
shellgit clone https://github.com/u-root/u-root cd u-root go build
直接通过Go安装
shellgo install github.com/u-root/u-root
注意:
u-root命令将安装在$GOPATH/bin/u-root,需确保$GOPATH/bin已添加到$PATH。
模板
可使用templates.go中定义的模板快速指定命令集,如core(核心工具集)、boot(引导工具集)等。
构建示例
shell# 构建包含./cmds/core/...下所有Go命令的initramfs(默认) u-root # 在仓库根目录外执行构建 (cd /tmp && GBB_PATH=$UROOT_PATH u-root) # 生成包含引导加载器的归档 u-root core boot # 仅包含指定命令 u-root ./cmds/core/{init,ls,ip,dhclient,wget,cat,elvish} # 包含核心工具集,排除部分命令 u-root core -cmds/core/{ls,losetup} # 包含外部工具 git clone https://github.com/u-root/cpu u-root ./cmds/core/{init,ls,elvish} ./cpu/cmds/cpud
GBB_PATH配置
GBB_PATH用于指定命令搜索路径,冒号分隔的路径元素将与命令行模式拼接:
shellGBB_PATH=$HOME/u-root:$HOME/u-bmc u-root \ cmds/core/init \ cmds/core/elvish \ cmd/socreset
上述命令将匹配:
使用-files标志在initramfs中包含额外文件,自动包含ldd依赖:
shell# 添加内核模块(将放在initramfs的$HOME目录) u-root -files $HOME/hello.ko -files $HOME/hello2.ko # 指定目标路径 u-root -files "root-fs/usr/bin/runc:usr/bin/run"
u-root提供可配置的init系统,通过以下标志控制:
-initcmd:指定/init符号链接目标(命令名或路径)-uinitcmd:在基础文件系统设置后运行的初始化命令(可带参数)-defaultsh:指定默认shell示例
bash# 设置uinitcmd执行echo命令 u-root -uinitcmd="echo Go Gopher" ./cmds/core/{init,echo,elvish} # 通过内核参数传递uinit参数 qemu-system-x86_64 -kernel $KERNEL -initrd /tmp/initramfs.linux_amd64.cpio -nographic -append "console=ttyS0 uroot.uinitargs=Go" # 直接启动shell(绕过默认init) u-root -initcmd=elvish ./cmds/core/{elvish,ls}
利用Go的交叉编译能力:
shell# 为ARM架构编译 GOARCH=arm u-root # 在OSX上为Linux/amd64编译 GOOS=linux GOARCH=amd64 u-root
shell# 基本测试 qemu-system-x86_64 -nographic -kernel /boot/vmlinuz-$(uname -r) -initrd /tmp/initramfs.linux_amd64.cpio # 帧缓冲支持 qemu-system-x86_64 -kernel path/to/kernel -initrd /tmp/initramfs.linux_amd64.cpio -append "vga=786" # 随机数生成器支持 qemu-system-x86_64 -device virtio-rng-pci -kernel vmlinuz -initrd /tmp/initramfs.linux_amd64.cpio
SystemBoot是一组Go编写的引导加载器,使用kexec引导系统,命令位于cmds/boot:
pxeboot:网络引导客户端,支持DHCP/HTTP/TFTPboot:本地磁盘引导,支持GRUB/syslinux配置fbnetboot:基于HTTP的网络引导客户端localboot:本地磁盘引导工具systemboot:模拟BIOS/UEFI BDS行为的引导包装器构建SystemBoot
shellu-root -uinitcmd=systemboot core ./cmds/boot/{systemboot,localboot,fbnetboot}
建议使用xz压缩并对齐512字节边界:
shellxz --check=crc32 -9 --lzma2=dict=1MiB \ --stdout /tmp/initramfs.linux_amd64.cpio \ | dd conv=sync bs=512 \ of=/tmp/initramfs.linux_amd64.cpio.xz
u-root支持两种构建模式(通过-build指定):
gbb模式:所有工具编译为单一busybox-like二进制binary模式:每个工具单独编译并添加到initramfsshell# 设置GOPATH export GOPATH=$(mktemp -d) # 获取代码 mkdir -p ${GOPATH}/src/github.com/u-root/ cd ${GOPATH}/src/github.com/u-root/ git clone https://github.com/u-root/u-root.git cd u-root # 无网络构建 GO111MODULE=off GOPROXY=off go build GO111MODULE=off GOPROXY=off ./u-root
推荐使用PC Engines APU2开发板进行硬件测试。
贡献指南详见CONTRIBUTING.md,欢迎改进现有命令或实现路线图中的功能(参见roadmap.md)。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务