我再买小米的设备我是傻逼
因为学习和工作的原因,不得不将自己的开发机系统从黑苹果换成比较充满“自由”主义气息的Arch Linux
当然,因为之前一直在使用CentOS和Ubuntu这两个发行版Linux(即使是服务器也一样)早就习惯了使用GUI界面安装,arch的清新脱俗没有桌面环境只有命令行的Live CD实属让我大开眼界。然后就是折腾了一整天才装上系统+KDE Plasma
期间还发生了因为想切换双显卡装了Optimus-Manager导致X Server爆炸的小插曲,还好最后通过删除x-org配置文件的方式解决问题(幸好没重装)
然后能令我发出CSGO玩家特有的 “啊!?” 音效的大无语事情就发生了
起因
装完KDE Plasma发现系统设置中的“连接”选项一片空白,并不能设置WiFi和以太网连接。网上一查发现要将网络控制程序从iwd切换至plasma-networkmanager,然后便是常规操作:systemctl禁用iwd——pacman安装kde插件——systemctl启动插件
启用完后reboot电脑,好!连接页面显示出无线网卡和WiFi搜索了,连上自己的小米路由器,折腾了一顿显卡设置,重启!
重启后KDE就像阳痿了一样,打不开任何的应用程序,甚至自家的系统应用点按都没有任何反应。只有开机后的2-3秒时间可以打开程序,过了这段时间KDE就完全失灵了。
起初我以为是Arch什么神奇的BUG,或者KDE自己抽风了,通过开始按钮注销下用户或许能好?结果注销后plasma提示我sddm炸了。
那就只能进入tty来手动登陆用户了,Ctrl+f3切换到tty,突然发现主机hostname变成了MiWIFI-RA81-srv?
看到这个我基本就猜到是怎么回事了,利用hostnamectl修改hostname后重启,KDE恢复正常,尝试打开Google Chrome后弹窗验证了我的猜想。
不严谨的DHCP协议实现
dhcp有分配和控制修改主机hostname的功能,当用户电脑向路由器等网络设备请求分配一个IP时,会携带一个自己目前正在使用的hostname。对于hostname的处置,路由器可以选择使用这个hostname当做此机器的标识,或者返回给主机一个自己定义的hostname。
但小米路由器是个傻逼,他返回给DHCP客户端的数据包内表示“我想使用你传过来的hostname”但又返回了自己定义的hostname“MiWIFI_RXXX_srv”这样就会把一些系统的dhcp处理给彻底搞乱,我到底是用我的还是用你的?
很显然我这台arch就乱掉了,kde也没反应过来这个hostname问题也随之爆炸。
修复这个问题?
hostnamectl hostname "你的原始hostname"
至于路由器那面,最早搜索到这个问题的帖子是2018年,都已经三年了这个问题还没修复。
小米实锤懒逼了,再也不买就对了。