我正在尝试live-build
构建一个最小的 Debian 映像,其中包含适用于我的笔记本电脑的无线固件。我收到此错误:
[2019-02-04 18:56:40] lb chroot_install-packages install
P: Begin installing packages (install pass)...
Reading package lists...
Building dependency tree...
Reading state information...
E: Unable to locate package linux-image-686-pae
我的构建过程是这样的:
使用 Vagrant box 创建全新的虚拟机generic/debian9
。创建后,通过 SSH 登录并运行
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install live-build
mkdir -p my_build/auto && cd my_build
cp /usr/share/doc/live-build/examples/auto/* auto/
编辑auto/config
如下。我正在专门为 Dell XPS15 9560 构建一个映像,并且想要一个amd64
架构/linux 内核1。
#!/bin/sh
set -e
lb config noauto \
--architectures amd64 \
--linux-flavours 686-pae \
--binary-images iso-hybrid \
--archive-areas "main contrib non-free" \
--bootappend-live "boot=live persistence components hostname=bakerst username=holmes sudo" \
"${@}"
使用刚刚创建的配置树生成auto/config
:
lb config
创造config/package-lists/my.list.chroot
:
firmware-atheros
sudo
现在,构建:
sudo lb build
这会产生错误。
这个问题似乎与linux-image-686-pae
包裹。我的理解是live-build
通过 chroot 到 build 并运行来工作apt-get
。在非 chroot 环境中执行相同操作会返回错误:
vagrant@debian9:~/my_build$ sudo apt-get install linux-image-686-pae
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package linux-image-686-pae
一种可能的错误可能是使用了错误的来源。然而,我是从主要的 Debian 存储库中提取的。检查后/etc/apt/sources.list
,我已main contrib non-free
附加到每个条目。我不确定还需要检查什么。
1我提到这一点是因为大多数教程都使用i386
.我相信686-pae
是有效的。
答案1
正如@AB 所指出的,686-pae 适用于 32 位内核。删除该选项可以解决该问题:
#!/bin/sh
set -e
lb config noauto \
--architectures amd64 \
--binary-images iso-hybrid \
--archive-areas "main contrib non-free" \
--bootappend-live "boot=live persistence components hostname=bakerst username=holmes sudo" \
"${@}"