debian12因sysv-rc-conf导致的systemd崩溃问题

Keith Lv2

1.起因

近日因自己手动安装了sysv-rc-conf之后发现在gnome桌面环境的情况下wifi图标消失无法联网,于是当时想要通过简单的卸载sysv-rc-conf以解决问题,并且顺手autoremove了一些已经**不需要(?)**的依赖,于是重启之后就出现了无法启动systemd服务并且无法进入gnome图形界面(这里的原因其实就是在autoremove的时候给gnome给全部干掉了,当时删的时候没有仔细看),所以只能够进入root用户开始修复,下面记录了一下修复的过程:

2.过程

首先,在我开始重启之后就进入系统的命令行终端界面,无图形化界面,在这里应该先简单的介绍一下导致这次事件的sysv-rc-conf,sysv-rc-conf本身是终端Sysv init的运行级配置工具,这里又会牵扯到systemd和sysvinit之间的区别,在这就不讨论到底哪个好了,现在个人感觉还是systemd目前用的比较舒服一点,想了解一下的可以参考此链接 ,因为linux系统本身在任何时候都会运行在一个指定的运行级上,不同的运行级的程序和服务不同,系统则是可以在这些运行级中进行切换从而完成自己的工作,至于为什么会接触到这个东西,则是因为我的debian在开机之后时间总是莫名其妙的不同步,虽然可以通过ntpdate解决:

1
sudo ntpdate ntp.ubuntu.com

但是每次开机都要输一次命令感觉十分麻烦,并且同时也会导致flatpak在更新的时候的证书认证错误,所以考虑到ntpd来同步设备的开机启动时间,因此当时在一份帖子上看到有人说可以利用sysv-rc-conf来安装管理开机启动项,所以没有多想就直接开始安装,准备搞一下,没想到会直接导致网络无法连接和无线wifi网卡被禁用的问题。下面这张图则是使用sysv-rc-conf管理相关服务的示意图,service后面对应的数字则是系统的运行级别。

Sysv-rc-conf

情况一:无法使用systemd管理服务

systemd-error

因为我的frpc.service文件是在/etc/systemd/system中存在的,所以本不应出现如上的error,对于这个情况可以暂时性对先修改grub,在/etc/default/grub文件里的GRUB_CMDLINE_LINUX_DEFAULT行中添加如下内容:

1
GRUB_CMDLINE_LINUX_DEFAULT="init=/lib/systemd/systemd"

此行中原先的配置或者参数可以不用删去,保留即可,最后保存文件运行一下如下的命令,推荐使用root用户,省的输入sudo:

1
update-grub && grub-install

同时重启之后如果看到如下的图则证明systemd服务可以正常使用了,同时还得感慨一下前几天刚使用过systemd管理过ntpd服务,应该是忘记设置开机自启动了,为什么要去改用sysv-init,脑子很迷,当然,这很有意思):

systemd-success

情况二:ifconfig只出现lo,没有无线网卡,无法通过网线连接网络

这里的情况为我在ifconfig之后只是出现了主机的lo回环地址,lo这个设备总是存在,基本上就是代表本机,然而我这台电脑中的eno1网卡和wlp4s0无线网卡无法显示,当然如果你要查看的话也不是不行,直接ip address就会出现这两张网卡的名字,但是呈现如下这种情况无法使用:

ip-address-error

子网掩码也没有,ip地址也没有,网关信息也没有,这个时候如果存在网线的情况下,那么就可以修改/etc/network/interfaces文件进行静态网络配置看看能不能连接网络,大致的模版配置文件差不多如下所示:

1
2
3
4
5
6
7
8
9
10
source /etc/network/interfaces.d/*

auto lo
iface lo inet loopback

auto eno1 #这里的eno1可以修改成你自己网卡的名字,ifconfig -a可查
iface eno1 inet static #可以是dhcp,也可以是static自己配置静态网络
address xxx.xxx.xx.xxx
netmask x.x.x.x
gateway xx.xx.xx.xx

这里我也看了interfaces.d文件下我并没有别人所说的setup诸如的配置文件,所以就算这个文件夹内是空的也不影响后续的操作,所以可以忽略这个问题,上述的这一些信息如果你有另外一台linux或者别的系统的电脑,都是可以查到的,配置完成之后看看能否连接到网络,如果可以那就皆大欢喜开始安装gnome桌面环境。如果说你并不是通过网线联网的,那么你就需要通过你的无线网卡进行wifi连接,最常见的方法应该是通过nmcli进行wifi检测进行联网,但是很巧我没有安装,所以这边就介绍一下另外一种通过终端进行wifi联网的方法。

首先我们可以在debian对wiki上面看到启动网卡可以通过ifconfig进行,或者是ifup/down来管理网卡的status,也就是如下的命令:

1
ifconfig wlp4s0 up / ifup wlp4s0

但是却会出现无线网卡被rfkill禁用的问题:

1
RTNETLINK answers: Operation not possible due to RF-kill

所以一般情况下是通过rfkill就可以解决禁用问题,但是没装,因此我们可以通过下面的操作来解除对于无线网卡的禁用:

1
2
3
4
find /sys/ -name "wlp4s0"
# 回车之后可以看到/sys/class/net/wlp4s0路径
# 进入此文件中通过ls查看phy80211下的查看rfkill(N)
sudo echo 0 > /sys/class/rfkill/rfkill(N)/soft

如果装了rfkill就可以一条命令解除禁用:

1
sudo rfkill unblock wifi

之后当你再次运行ifconfig的时候就会出现wlp4s0的信息。

情况3.在terminal中实现网络连接

1
sudo iwlist wlp4s0 scan | grep ESSID

wifi

这里的ESSID也就是附近可以检测到的网络名称,接下来就是安装wpa_supplicant,不过好在debian12应该是预装的,所以这一块问题不大。接下来的话我们需要使用wpa_passphrase程序创建一个名为wpa_supplicant.conf的文件。wpa_supplicant.conf是描述用户想要计算机连接到的所有网络的配置文件。运行以下命令来创建这个文件。用自己的ESSID(网络名称)和Wi-Fi密码替换它。

1
wpa_passphrase your-ESSID your-wifi-passphrase | sudo tee -a /etc/wpa_supplicant/wpa_supplicant.conf

这里的话wpa_supplicant.conf文件存在哪里都是可以的。接下来我们需要在后台连接wifi并进行gnome环境的安装:

1
2
sudo wpa_supplicant -B -c /etc/wpa_supplicant.conf -i wlp4s0
ip addr show wlp4s0

这个时候如果连接成功你就可以看到你当前的ip地址,接下来正常安装gnome桌面环境重启即可。

wifi-success

上述经历也同样为个人的日常备份,如果有更好的建议欢迎大家提出交流)

  • Title: debian12因sysv-rc-conf导致的systemd崩溃问题
  • Author: Keith
  • Created at : 2024-05-01 07:00:38
  • Updated at : 2024-05-01 07:02:16
  • Link: https://redefine.ohevan.com/2024/05/01/debian12因sysv-rc-conf导致的systemd崩溃问题/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments
On this page
debian12因sysv-rc-conf导致的systemd崩溃问题