执行系统更新后,我突然发现 Raspberry Pi 4 上的 Wi-Fi 停止工作。没有 IP 地址。因此,我尝试使用 获取新的租约(简单的 DHCP 配置)dhclient wlan0
,但会受到错误消息的惩罚RTNETLINK answers: Operation not possible due to RF-kill
。
经过简短的谷歌搜索后,我发现简单地清除包的建议apt purge rfkill
,我当然立即毫不犹豫地跑了。现在我没有用户空间rfkill
命令或工具,rfkill
内核模块继续重新加载,阻止我激活我的 Wi-Fi(因此无法简单地rfkill
通过重新安装apt
),而且我不知道如何阻止它启动。
我做了什么:
sudo systemctl disable rfkill
sudo systemctl stop rfkill
echo "rfkill" | sudo tee -a /etc/modprobe.d/raspi-blacklist.conf
sudo mv /lib/systemd/{systemd-rfkill,system/systemd-rfkill.{service,socket}} ~
echo "0" | sudo tee /var/lib/systemd/rfkill/*
在里面/lib/systemd/system/raspberrypi-net-mods.service
,我注释掉了:
#After=systemd-rfkill.service
最后附加systemd.restore_state=0
到/boot/cmdline.txt
:
console=serial0,115200 console=tty1 root=PARTUUID=738a4d67-02 rootfstype=ext4 rootfsflags=commit=120,data=writeback elevator=deadline noatime nodiratime data=writeback fsck.repair=yes rootwait systemd.restore_state=0
lsmod
重新启动后,我可以看到rfkill
模块是仍然正在加载,并且任何运行尝试dhclient wlan0
都会导致相同的原始错误消息!
那么如何禁用或删除rfkill
并重新启用我的 Wi-Fi 适配器呢?
$ lsb_release -a
No LSB modules are available.
Distributor ID: Raspbian
Description: Raspbian GNU/Linux bullseye/sid
Release: testing
Codename: bullseye
$ uname -a
Linux jam 4.19.118-v7l+ #1311 SMP Mon Apr 27 14:26:42 BST 2020 armv7l GNU/Linux
答案1
根据Linux内核参数文档您还需要将rfkill.default_state=1
参数(除了systemd.restore_state=0
)添加到内核中/boot/cmdline.txt
,以便将其默认设置为解锁:
rfkill.default_state=1