祥细说说systemd的sysinit.target和basic.target做了哪些事
时间: 2023-02-09 20:04:45 浏览: 91
systemd是一个系统和服务管理器,它在Linux系统中起着重要的作用。
sysinit.target 是一个特殊的目标,它表示系统初始化的阶段。在这个阶段,systemd会启动系统所需的基本服务和硬件驱动,并准备好进入更高级别的目标。
basic.target 是另一个特殊的目标,它表示系统基本功能已经启动完毕。在这个阶段,系统已经准备好提供基本的服务,例如网络连接和远程登录。
sysinit.target 和 basic.target 在系统启动过程中起着重要的作用,它们负责启动和准备系统,使其能够正常运行。
相关问题
sysinit.target做了哪些事
### 回答1:
sysinit.target 是一个 systemd 的目标(target)。当系统启动时,会自动运行 sysinit.target。sysinit.target 会执行系统初始化的一些任务,例如:
- 初始化基础服务,例如 mount 分区,挂载文件系统,启动网络服务等
- 加载内核模块
- 初始化系统配置,例如时区,语言等
- 启动其他的服务
sysinit.target 运行完成后,系统会进入下一个状态,例如 multi-user.target,表示多用户模式。
### 回答2:
sysinit.target是一个systemd的目标(target),用于系统初始化阶段。它负责在系统引导过程中进行一些重要的初始化工作。sysinit.target做了以下几件事情:
1. 挂载文件系统:sysinit.target在系统引导时负责挂载根文件系统和其他必要的文件系统。根文件系统是操作系统的基础,不能正常启动系统的其他部分都依赖于它。
2. 启动基础服务:sysinit.target会启动一些基础的系统服务,例如udev服务用于设备管理和动态设备监测,用于设备和驱动程序的自动加载、配置和卸载。
3. 设备初始化:sysinit.target会进行设备初始化,包括硬件设备、网络设备、输入设备等的初始化。它会识别和配置系统中的各种硬件设备,使它们能够被系统正常使用。
4. 系统环境设置:sysinit.target会进行一些系统环境的设置,例如初始化系统的网络配置、时钟和时区设置、语言和输入法配置等。这些设置对于系统的正常运行和用户使用非常重要。
5. 启动其他targets:最后,sysinit.target会启动其他依赖于它的目标,这些目标负责进行更多的系统初始化工作。例如,sysinit.target会启动basic.target,它负责进行系统初始化的其他相关任务。
总之,sysinit.target是系统引导阶段中负责进行一些重要初始化工作的目标。它负责挂载文件系统、启动基础服务、设备初始化以及系统环境设置等,为系统的正常运行奠定了基础。
System has not been booted with systemd as init system (PID 1). Can't operate. Failed to connect to bus: 主机关闭
这个错误通常是由于Docker容器中的init系统不是systemd导致的。在Docker容器中,init系统通常是第一个进程,其进程ID为1。systemd是一种常见的init系统,但并不是所有的Docker镜像都默认使用systemd作为init系统。因此,当你尝试在容器中运行systemd命令时,就会出现“System has not been booted with systemd as init system (PID 1). Can't operate. Failed to connect to bus: Host is down”这个错误。
解决这个问题的方法是在Dockerfile中使用systemd作为init系统。具体步骤如下:
1.在Dockerfile中添加以下内容:
```dockerfile
# Use systemd as init system
ENV container docker
RUN (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == \
systemd-tmpfiles-setup.service ] || rm -f $i; done); \
rm -f /lib/systemd/system/multi-user.target.wants/*;\
rm -f /etc/systemd/system/*.wants/*;\
rm -f /lib/systemd/system/local-fs.target.wants/*; \
rm -f /lib/systemd/system/sockets.target.wants/*udev*; \
rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \
rm -f /lib/systemd/system/basic.target.wants/*;\
rm -f /lib/systemd/system/anaconda.target.wants/*;
VOLUME [ "/sys/fs/cgroup" ]
CMD ["/usr/sbin/init"]
```
2.构建Docker镜像:
```shell
docker build -t myimage .
```
3.运行Docker容器:
```shell
docker run -it --privileged --name mycontainer myimage
```
在容器中运行systemd命令时,你应该不再会看到“System has not been booted with systemd as init system (PID 1). Can't operate. Failed to connect to bus: Host is down”这个错误了。