debian-installer 在安裝過程中如何配置 WiFi?
我正在使用raspi3-image-spec項目建構 Raspberry Pi 圖像。由於它不是傳統
d-i
安裝的結果,因此它顯然既不會詢問也不會使用 WiFi 資訊配置根以在啟動時進行連接。因此,我想知道如何準確
d-i
儲存 WiFi 詳細資訊並使其在第一次啟動時自動連接。我想在我的 RPi 映像上做同樣的事情,這樣我就不必連接到乙太網或鍵盤和顯示器來配置其 WiFi 連接。我不是在問如何使用命令連接到 WiFi,我已經知道如何做到這一點。我要問的是預配置是如何完成的
d-i
。根據@kemotep 的解決方案,我不僅必須執行命令連接到 WiFi,還必須手動啟動
dhcpd
或分配靜態 IP 地址。我也知道如何使用/etc/network/interfaces
文件自動執行這些步驟,但這不是重點。我想知道它是怎麼
d-i
做的,所以它符合正常的 Debian 安裝,並且我的 WiFi 配置文件在更新等過程中不會被意外刪除。
手頭的問題
您想知道如何設置
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
這是一個相當全面的列表,向您展示可能的
netcfg
選項。preseed.cfg
如果我列出的那些沒有削減它,請根據需要添加更多。使用以下步驟創建preseed.cfg
添加後。要添加預置文件,您需要掛載
debian.iso
並提取內容以復製到preseed.cfg
. 這$$ arch $$指的是你的架構
.iso
。在您的情況下,它很可能是armhf
orarm64
。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]/
以下是修復 md5sum.txt 的方法:
# cd isofiles # md5sum `find -follow -type f` > md5sum.txt # cd ..
以下是創建新的可引導 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
現在您已經創建了一個可引導的 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
請注意,這
python3-cliapp
在 Stretch 中不可用,但由於它不攜帶任何依賴項,因此可以通過獲取其 .deb 包並手動安裝來手動安裝。接下來下載圖像的副本:
git clone --recursive https://github.com/Debian/raspi3-image-spec cd raspi3-image-spec
現在編輯
raspi3.yaml
以包括以下內容:在
- apt: install
第 68 行之後添加以下行:- iw
現在,在第 90 行 (
- shell: |
) 之後,您可以在自己的行中添加此程式碼:wpa_passphrase [WiFi SSID] [WiFI Password] > /etc/wpa_supplicant.conf
只要
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
編輯
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
或者,如果您在此儲存庫中的子模組中使用它
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
之後,您應該能夠將新映像安裝到 SD 卡上,它將遵循您在腳本中添加的額外步驟。您可以在文件中添加您希望的任何其他步驟。
此堆棧交換文章的OP指出,使用者 GAD3R 建議的第二種方法也可以通過命令行添加無線配置。
結論
如果您正在使用
debian-installer
,您將需要預先debian.iso
設置您想要的配置。如果您正在使用,則必須在安裝過程中或之後
debootstrap
包含您希望採取的任何其他步驟。chroot
我將包括 WiFi 上的Debian Wiki 頁面以及How To 頁面以及有關添加缺失韌體的資訊。可以在此處找到 Raspberry Pi的無線韌體
如果您對此答案有任何疑問或問題,請發表評論。我強烈建議您在嘗試命令之前通讀我提供的每個連結。我感謝回饋以糾正任何誤解並改進我的文章。我可以根據需要更新我的答案。
祝你好運!