您尚未登录。

#1 2015-09-01 21:32:55

xtricman
エクス·トリクマン
注册时间: 2012-12-26
帖子: 1,267

几个关于Archlinux的systemd的问题

我隐约记得很早的sysvinit好象是可以通过传递内核参数改变默认的runlevel让系统启动到一个root权限的shell不需要任何密码的。
现在systemd怎么办啊?我刚才实验了传入systemd.unit=emergency.target内核参数但是没用啊还是要输root密码否则进不去shell。

另外,按照默认的配置,如果向/etc/mkinitcpio.conf添加了base HOOK,在Archlinux启动的时候,在早期用户空间,如果不能挂载根文件系统或者挂载了找不到init,会把我抛到一个shell中(我查了/usr/lib/initcpio/init_function,好象就是sh?)。但是如果把HOOK换掉,换成systemd HOOK,那好像就不提供这种shell了,怎么办才能搞到这个shell(我不想添加base HOOK了)。


反社会,精神极其不稳定,随时可能炸碎身边所有人

离线

#2 2015-09-01 23:27:13

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,470
个人网站

Re: 几个关于Archlinux的systemd的问题

你改 runlevel 进去之后还是一样要 root 密码的。要直接进 shell 加 init=/bin/bash 就可以。

那个是 ash,加个 break=(pre|post)mount 也可以进去的。如果删除 base hook 的话,按 systemd 的说法是进不到 ash 了的。

离线

#3 2015-09-02 01:30:09

xtricman
エクス·トリクマン
注册时间: 2012-12-26
帖子: 1,267

Re: 几个关于Archlinux的systemd的问题

百合仙子 说:

你改 runlevel 进去之后还是一样要 root 密码的。要直接进 shell 加 init=/bin/bash 就可以。

这个我很久之前试过,但是记得并没有成功。明日我再实验一次吧。(也没有十分久,当时已经是systemd时代了)

那个是 ash,加个 break=(pre|post)mount 也可以进去的。

我打开init_function看到的写的是sh我也觉得有点奇怪,按理说了早期用户空间里面只有base hook添加的busybox应该只有ash才对,也没有看见哪里做过符号链接。


反社会,精神极其不稳定,随时可能炸碎身边所有人

离线

#4 2015-09-02 01:34:36

xtricman
エクス·トリクマン
注册时间: 2012-12-26
帖子: 1,267

Re: 几个关于Archlinux的systemd的问题

另外还有一个想法就是修改emergency.service让它调用ash,把它加进去的话,initcpio中运行的systemd会不会就能进入ash了。估计就算行也很麻烦……


反社会,精神极其不稳定,随时可能炸碎身边所有人

离线

#5 2015-09-02 11:02:11

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,470
个人网站

Re: 几个关于Archlinux的systemd的问题

那个软链接是 base hook 做的。你不用 base 的话估计连 busybox 都没有的。

离线

页脚