Wifi

debian-installer 在安裝過程中如何配置 WiFi?

  • March 30, 2020

我正在使用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。在您的情況下,它很可能是armhfor arm64

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的無線韌體

如果您對此答案有任何疑問或問題,請發表評論。我強烈建議您在嘗試命令之前通讀我提供的每個連結。我感謝回饋以糾正任何誤解並改進我的文章。我可以根據需要更新我的答案。

祝你好運!

引用自:https://unix.stackexchange.com/questions/469308