分类 操作系统 下的文章

BusyBox inittab 文件介绍

除了基本的命令之外,BusyBox 还支持 init 功能,如同其它的 init 一样,BusyBox 的 init 也是完成系统的初始化工作,关机前的工作等等,我们知道在 Linux 的内核被载入之后,机器就把控制权转交给内核,内核启之后做了一些工作,然后找到根文件系统里面的 init 程序,并执行它。init 进程会依次进行以下工作: 为 init 设置信号处理过程; 初始化控制台; 剖析 /etc/inittab 文件; 执行系统初始化命令行,缺省情况下会使用 /etc/init.d/rcS; 执行所有导致 init 暂停的 inittab 命令(动作类型:wait); 执行所有仅执行一次的 inittab命令(动作类型:once); 一旦完成以上工作,init 进程便会循环执行以下进程: 执行所有终止时必须重新启动的 inittab 命令(动作类型:respawn) 执行所有终止时必须重新启动但启动前必须询问用户的 inittab 命令(动作类型:askfirst) 初始化控制台之后,BusyBox 会检查 /etc/inittab 文件是否存在,如果此文件不存在,BusyBox 会使用缺省的 inittab 配置,它主要为系统重引导,系统挂起以及 init 重启动设置缺省的动作,此外它还会为四个虚拟控制台(tty1 到 tty4)设置启动 shell 的动作。如果未建立这些设备文件,BusyBox 会报错。 Busybox 的 init 进程在初始化的时候会查看是否有 /etc/inittab 文件,如果有则解析它。 inittab 文件中每一行的格式如下所示: id:runlevel_ignored:action:command id:对 BusyBox 而言,id 用来指定启动进程的控制终端。如果省略,则使用与 init 进程一样的控制终端。 runlevel_ignored:对于 Busybox init 程序,这个字段没有意义,可以省略。 action:表示 init 程序如何控制这个子进程: action 说明 sysinit 为 init 提供初始化命令脚本的路径 wait 告诉 init 必须等到相应的进程完成之后才能继续执行 once 仅执行相应的进程一次,而且不会等待它执行完成 respawn 每当 init 进程监测到该进程终止时,重新启动该它 askfirst 与 respawn 类似,不过 init 进程先输出 “Please press Enter to actvie this console”,等用户输入回车键之后才启动子进程 shutdown 当系统关机(halt/reboot)时,执行相应的进程 restart 当 init 重新启动时(restart init when a QUIT is received),执行相应的进程,通常此处所执行的进程就是 init 本身 ctrlaltdel 当按下 Ctrl + Alt + Delete 组合键时,执行相应的进程 process:要执行的程序,它可以是可执行程序,也可以是脚本 实例: # Note: BusyBox init works just fine without an inittab. If no inittab is # found, it has the following default behavior: # ::sysinit:/etc/init.d/rcS # ::askfirst:/bin/sh # ::ctrlaltdel:/sbin/reboot # ::shutdown:/sbin/swapoff -a # ::shutdown:/bin/umount -a -r # ::restart:/sbin/init # tty2::askfirst:/bin/sh # tty3::askfirst:/bin/sh # tty4::askfirst:/bin/sh # # Boot-time system configuration/initialization script. # This is run first except when booting in single-user mode. # ::sysinit:/etc/init.d/rcS # /bin/sh invocations on selected ttys # # Note below that we prefix the shell commands with a "-" to indicate to the # shell that it is supposed to be a login shell. Normally this is handled by # login, but since we are bypassing login in this case, BusyBox lets you do # this yourself... # # Start an "askfirst" shell on the console (whatever that may be) ::askfirst:-/bin/sh # Start an "askfirst" shell on /dev/tty2-4 tty2::askfirst:-/bin/sh tty3::askfirst:-/bin/sh tty4::askfirst:-/bin/sh # /sbin/getty invocations for selected ttys tty4::respawn:/sbin/getty 38400 tty5 tty5::respawn:/sbin/getty 38400 tty6 # Example of how to put a getty on a serial line (for a terminal) #::respawn:/sbin/getty -L ttyS0 9600 vt100 #::respawn:/sbin/getty -L ttyS1 9600 vt100 # # Example how to put a getty on a modem line. #::respawn:/sbin/getty 57600 ttyS2 # Stuff to do when restarting the init process ::restart:/sbin/init # Stuff to do before rebooting ::ctrlaltdel:/sbin/reboot ::shutdown:/bin/umount -a -r ::shutdown:/sbin/swapoff -...

macOS 安装双系统后系统盘在启动时不见了怎么办

MacBook 安装双系统后,系统盘在启动时(按 Option 键)不见了怎么办? 这是因为 Mac 系统盘的分区类型 GUID 错误所致,改成正确的(48465300-0000-11AA-AA11-00306543ECAC)即可: 在 Windows 系统里打开 CMD,执行 diskpart,子命令如下: list disk select disk 0 list partition select partition 2 set id=48465300-0000-11AA-AA11-00306543ECA...