debian-installer 在安装过程中如何配置 WiFi?

Oxw*_*ivi 6 wifi debian-installer

我正在使用raspi3-image-spec项目构建 Raspberry Pi 图像。由于它不是传统d-i安装的结果,它显然既不会询问也不会使用 WiFi 信息配置 root 以在启动时连接。

因此,我想知道如何准确d-i存储 WiFi 详细信息并使其在首次启动时自动连接。我想在我的 RPi 图像上做同样的事情,这样我就不必连接到以太网或键盘和显示器来配置它的 WiFi 连接。

我不是在问如何使用命令连接到 WiFi,我已经知道如何做到这一点。我所要问的是预配置是如何通过 d-i.

根据@kemotep 的解决方案,我不仅必须运行命令才能连接到 WiFi,还必须手动激活dhcpd或分配静态 IP 地址。我也知道如何使用/etc/network/interfaces文件自动执行这些步骤,但这不是重点。

我想知道的是d-i它是怎么做的,所以它符合常规的 Debian 安装,并且我的 WiFi 配置文件不会在更新等过程中被意外删除。

kem*_*tep 6

手头问题

您想知道如何设置debian-installer以预先配置您的 WiFi 设置。您提到使用此版本为 Raspberry Pi 3 创建 Debian 映像。

他们正在使用debootstrap而不是debian-installer在 Raspberry Pi 上安装 Debian的标准。我将提供有关如何使用这两个过程预配置 WiFi 的信息。

使用 debian-installer

如果您想了解各个组件的debian-installer工作原理,请通读本手册。第 6.3.1.5 节介绍了网络配置。第 3.3.4 节帮助提供有关您需要提供什么debian-installer来设置网络的信息。

然而,所有这些都是一个手动过程,可以通过“预置”或提供debian-installer预配置文件来自动化。

这是关于如何编辑预置文件的Debian Wiki 页面。我还包括另一个手册页,以帮助提供有关预置的其他信息。

这是一个 preseed.cfg 示例供您查看。编辑它以包括添加无线固件的步骤(d-i hw-detect/load_firmware boolean true是这里的关键行)。

添加这些线路以preseed.cfg在您添加用于加载固件的线路后,将无线 WPA2 网络预置到您的网络中。在此处查看有关如何加载固件的信息debian-installer

d-i netcfg/wireless_essid [string] // Name of wireless network
d-i netcfg/wireless_security_type [select] // Options are wep/open or wpa
d-i netcfg/wireless_wpa [string] // Password
Run Code Online (Sandbox Code Playgroud)

这是一个相当全面的列表,向您展示可能的netcfg选项。preseed.cfg如果我列出的那些没有削减它,根据需要添加更多。创建后,请preseed.cfg使用以下步骤将其添加。

要添加 preseed 文件,您需要挂载debian.iso并提取内容以复制到preseed.cfg. [arch] 是指您的.iso. 在您的情况下,最有可能是armhfarm64

udevil mount debian.iso
cp -rT /media/debian.iso/ isofiles/
chmod +w -R isofiles/install.[arch]/
gunzip isofiles/install.[arch]/initrd.gz
echo preseed.cfg | cpio -H newc -o -A -F isofiles/install.[arch]/initrd
gzip isofiles/install.386/initrd
chmod -w -R isofiles/install.[arch]/
Run Code Online (Sandbox Code Playgroud)

以下是修复 md5sum.txt 的方法:

# cd isofiles
# md5sum `find -follow -type f` > md5sum.txt
# cd ..
Run Code Online (Sandbox Code Playgroud)

以下是创建新的可引导 ISO 映像的方法:

genisoimage -r -J -b isolinux/isolinux.bin -c isolinux/boot.cat \                                                    
            -no-emul-boot -boot-load-size 4 -boot-info-table \                                                           
            -o preseed-debian.iso isofiles
Run Code Online (Sandbox Code Playgroud)

现在您已经创建了一个可引导的 ISO 映像,该映像将写入您的安装程序 USB 或包含您的预配置的磁盘。请务必仔细阅读Wiki 页面手册,以帮助解决任何问题。

使用 debootstrap

安装 Debian 的另一种方法是使用debootstrap. 这是 Debian Wiki 的链接和手册页的另一个链接Debootstrap可用于从现有的 Unix 或 Linux 机器创建 Debian 安装。

使用debootstrap只需要一个chroot或其他磁盘/分区和网络连接即可从存储库下载包。然后,您可以chroot进入新的 Debianrootfs并根据需要对其进行配置,然后将其传播到您希望安装的任何设备上。这与 Arch Linux 安装过程非常相似。

但是,如果您使用来自 GitHub 的此脚本,并且您希望预先安排您的无线配置,那么您将需要编辑raspi3.yaml和使用vmdb2.

安装vmdb2:( 这假设您使用的是 Debian Stretch!)

 apt install kpartx parted qemu-utils qemu-user-static python3-cliapp \
 python3-jinja2 python3-yaml
Run Code Online (Sandbox Code Playgroud)

请注意,python3-cliapp在 Stretch 中不可用,但由于它不携带任何依赖项,可以通过获取其 .deb 包并手动安装来手动安装。

接下来下载图像的副本:

 git clone --recursive https://github.com/Debian/raspi3-image-spec
 cd raspi3-image-spec
Run Code Online (Sandbox Code Playgroud)

现在编辑raspi3.yaml以包括以下内容:

- apt: install第 68 行之后添加这些行:

- iw
Run Code Online (Sandbox Code Playgroud)

现在,在第 90 ( - shell: |)行之后,您可以在自己的行中添加以下代码:

wpa_passphrase [WiFi SSID] [WiFI Password] > /etc/wpa_supplicant.conf
Run Code Online (Sandbox Code Playgroud)

只要wpa_supplicant在您的映像过程中正确安装,此行应添加您的 WiFi 配置以允许您自动连接。您可能仍然需要在启动后运行这些命令,但它们也可能被添加到脚本中。

ip link set wlan0 down
ip link set wlan0 up
wpa_supplicant -B -iwlan0 -c /etc/wpa_supplicant.conf -Dwext
dhclient wlan0
Run Code Online (Sandbox Code Playgroud)

编辑完成后raspi3.yaml,您可以通过发出以下命令来生成图像。如果您在系统范围内使用vmdb2

umask 022
sudo env -i LC_CTYPE=C.UTF-8 PATH="/usr/sbin:/sbin:$PATH" \
vmdb2 --output raspi3.img raspi3.yaml --log raspi3.log
Run Code Online (Sandbox Code Playgroud)

或者,如果您从这个存储库中的子模块使用它

umask 022
sudo env -i LC_CTYPE=C.UTF-8 PATH="/usr/sbin:/sbin:$PATH" \
./vmdb2/vmdb2 --output raspi3.img raspi3.yaml --log raspi3.log
Run Code Online (Sandbox Code Playgroud)

之后,您应该能够将新映像安装到 SD 卡上,它将遵循您在脚本中添加的额外步骤。您可以向文件中添加任何其他步骤。

此堆栈交换帖子OP指出,用户 GAD3R 建议的第二种方法也适用于通过命令行添加无线配置。

结论

如果您正在使用debian-installer,则需要预先设置您debian.iso想要的配置。

如果您正在使用debootstrap,则必须包括您希望在安装过程中或chroot之后采取的任何其他步骤。

我将包括WiFi 上的Debian Wiki 页面以及操作方法页面和有关添加缺失固件的信息。可以在此处找到Raspberry Pi的无线固件

如果您对此答案有任何疑问或问题,请发表评论。我强烈建议您在尝试命令之前通读我提供的每个链接。我感谢反馈以纠正任何误解并改进我的帖子。我可以根据需要更新我的答案。

祝你好运!