用普通用户 ssh 登录没问题,所以我都是先用普通用户登录然后再切换到 root 用户使用,但是有的时候通过 dnf 安装软件包的过程中也会重启。
这个问题在我的树莓派上可以百分之百复现,在 amd 平台上通过 qemu 运行的虚拟机也可以百分之百复现。
1
wniming OP 楼主从 fedora 28 用到现在,从来没遇到过这么奇怪的问题。
|
2
barathrum 2023-03-20 14:15:31 +08:00
我有一个 f36 和两个 f37 ,都是 amd64 的,一个 f37 是三月初装的还没更新,一个是上周五装的,目前还没遇到过你说的这种问题。
不知道有没有安装步骤我用 qemu 尝试复现一下。 |
3
40EaE5uJO3Xt1VVa 2023-03-20 14:24:08 +08:00
楼主用的哪个镜像,发一下我们复现试试
|
4
ETiV 2023-03-20 14:26:27 +08:00 via iPhone
是不是授信公钥里埋了个 reboot 命令😂
|
5
wniming OP 刚刚在 intel 平台下测试了一下,有同样的问题,而且也不仅限于 ssh ,qemu 的串口 root 登录也是会重启。
|
6
wniming OP @barathrum @yanzhiling2001
我把镜像上传到 google driver 了,2 位可以下载下来试一下: https://drive.google.com/file/d/1xTmHuTG9hBGppaf7PqLB-u61cwKFapoO/view?usp=sharing 还有 initramfs: https://drive.google.com/file/d/12c3m1l8b-UE6tpwvgjH6_JMkd1VvODN6/view?usp=sharing /usr/bin/qemu-system-x86_64 -enable-kvm -name fedora -smp 2 -m 2G -drive file=/a/disk/fedora-server.raw,if=virtio,format=raw -nic none -kernel /boot/vmlinuz-6.0.7-301.fc37.x86_64 -initrd ~/initramfs-6.0.7-301.fc37.x86_64.img -append "root=/dev/vda2 rw console=ttyS0" -nographic |
7
yanqiyu 2023-03-20 16:44:36 +08:00 2
大致检查了下,登陆的时候会主动关机( S5 )
目前怀疑是修改的 /usr/bin/systemctl 干的? 但是没做 strace (因为没装&懒得装)没能实锤,但是我怀疑是这个主动 call 了关机 问一下你对 systemctl 这个文件做了什么修改?(我看到大小比我机器上的 fedora 安装笑了很多) |
8
wniming OP @yanqiyu 感谢回复,我通过 rpm -V systemd 检查了一下,/usr/bin/systemctl 确实是被修改了,是我不小心修改的。
我之前写了一个 reboot 命令替换了 /sbin/reboot ,我当时是直接 cp reboot /sbin/reboot 这么操作的,因为 /sbin/reboot 是 /usr/bin/systemctl 的软连接,这才导致 /usr/bin/systemctl 被替换了,真是不好意思,自己坑了自己又浪费了 V 友们的时间。。 |
9
wniming OP @yanqiyu 大佬你是怎么这么快就定位问题的?我之前只知道把 /sbin/reboot 重命名以防止被使用,怎么都没想到 /usr/bin/systemctl 早就被修改了
|
10
wniming OP @yanqiyu 我感觉 cp 这个命令直接去写软链接链接的那个文件根本就不合理,rsync 和 mv 就是只修改软链接本身。
|
11
yanqiyu 2023-03-20 17:46:02 +08:00 2
@wniming 这个链接老坑新手设计了...
确认问题之后大概看了下情况判断是某个程序主动关机而不是出错关机 然后检查了下 root 的登陆脚本是不是干了坏事,发现不是,然后就是凭直觉去找登陆过程中涉及的程序,逐个手动调用发现运行 systemctl 直接就关机了 |
12
40EaE5uJO3Xt1VVa 2023-03-20 17:49:00 +08:00
刚看到就有人给解决问题了
|
13
wniming OP @yanqiyu systemctl 怎么会在登录过程中被调用呢?是谁调用了这个程序?为什么普通用户登录就不会调用这个?
|
14
yanqiyu 2023-03-20 17:57:46 +08:00 2
@wniming 普通用户就算调用了也没权限关机 /重启,结果是没效果
登录的环境准备基本就是 systemd 的一堆操作(包括 session bus 之类的)和各类脚本,既然在非 systemd 环境下尝试了 bash --login 排除了登陆脚本就只有顺着 systemd 的相关文件(没有特定逻辑,就猜)检查了 |
15
wniming OP @yanqiyu 刚才试了把 /usr/bin/systemctl 重命名,没有这个完全不影响登录的,真是搞不明白 systemd 这一套的设计。
|
16
MoeMoesakura 2023-03-20 19:14:45 +08:00
@wniming systemctl 是控制服务的状态的,就跟你 windows 下面缺个 services.msc 也不影响开机一样吧(不过这启动的时候拉一个 systemctl 确实比较迷,大概是开机有服务连带启动
|