busybox关机执行指定命令

本文介绍了如何通过修改inittab文件来自定义Linux系统的启动和关闭过程。文章详细解释了inittab文件的结构和各个字段的意义,并给出了具体的配置实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里主要是修改inittab

讲这个文件前呢,就要先知道,内核启动后会执行第一个init进程,这是所有进程的父进程,它会执行inittab,也就是说这是初始化的一个配置。

 

讲之前先抄下别人的文章解析一下

自定义Linux的启动与关闭过程(内置inittab详解)
Linux系统的启动和关闭过程进行管理是系统管理员的必备技能之一。管理员必须要清楚系统中运行着哪些服务,如何增加新的服务,如何删除不必要的服务。本节向Linux管理员介绍自定义启动和关闭系统时涉及的文件。
一、 引导过程概览
当一个Linux系统引导后,Linux启动管理器(LILO)加载核心,核心首先被解压缩,显示设备被初始化,然后核心开始对系统中的硬件进行检查。当
发现硬件设备后,调入相应的模块以支持对硬件的访问。硬件检测完毕后,核心将以只读方式挂接根文件系统。假如根文件系统是完整的,根文件系统将以读写方式
重新挂接。
之后,核心将执行一个叫init的程序。Init执行后,系统就启动并开始运行。可以对Init进程进行配置,这可以通过/etc/inittab文件来完成。
/etc/inittab
文件的语法格式如下:
id:run-level:acion:process [argument]
第一项是一个惟一的标志,用以区分inittab文件中不同条目。
第二项指定了该条目在哪种运行等级中应用。
第三项指定了采取的动作。
第四项是要运行的进程和其参数,可以在这里指定命令行参数Linux系统的运行等级是通过run-level指定的。在Linux系统中有7个运行等级:
● 0——
挂起(不要将initdefault设置为此项)。
● 1——
单用户模式。
● 2——
多用户,没有连网的支持。
● 3——
完全的多用户模式,具有连网的支持。
● 4——
没有使用。
● 5——X11
,多用户模式与网络支持。
● 6——
重新启动(不要将initdefault的值设置为此项)。
init配置这一行中,你可以指定多个运行状态。指定运行状态13下应用某操作的配置如下:
id:12:action:rocess [argument]
下面列出了系统运行状态可以使用的动作:
● respawn——
当该进程终止时自动启动。
● wait——
该进程只运行1次,init等待该进程,直到该进程结束。
● once——
该进程只运行1次。
● boot——
该进程在系统启动时运行,不考虑系统的运行等级。
● bootwait——
该进程在系统启动时运行,init等待该进程,直到该进程结束。
● off——
不采取任何动作。用来使一条配置失效,而不用删除该条配置。可以代替表示注释的#

● ondemand——通常没有使通常不使用。
● initdefault——
指定系统的默认运行等级。运行的进程一列被忽略。
sysinit——
该进程在系统启动时运行一次。Sysinit的动作要比bootbootwait的优先级高。
● powerwait——init
进程收到SIGPWR信号下运行的进程。UPS电源在电源发生问题时会向该进程发送SIGPWR信号。Init进程会等待该进程,直到该进程终止。
● powerfail——
powerwait相同。但是init不会等待进程的终止。
● powerokwait——
init进程收到SIGPWR信号,并且/etc/powerstatus文件包括有OK的文本内容。/etc/powerstatus文件通常由UPS监视软件创建,用来显示电源问题已经解决。
ctrlaltdel——
init进程收到SIGINT信号时做的动作。
● kbrequest——
init进程收到键盘信号时做的动作。


 


 -------------------------------------------------------

看回inittab

# /etc/inittab
::sysinit:/etc/init.d/rcS
::askfirst:-/bin/sh
::once:/usr/sbin/telnetd -l /bin/login
::ctrlaltdel:/sbin/reboot
::shutdown:/usr/bin/preshutdown

 

其中最后一行是加上去的,也就是当执行关机或者重启会调用preshutdown,这是自己写的脚本,这样就可以实现在关机前执行自定义脚本

 

 

<think>我们正在处理用户的问题:Ubuntu开机进入BusyBox v1.36.1 initramfs shell界面无法正常启动。根据引用内容,这通常是由于文件系统损坏或磁盘问题导致的。我们将按照以下步骤来解决: 步骤1:在initramfs提示符下,尝试检查文件系统错误。 使用`fsck`命令检查并修复文件系统。注意:需要指定正确的分区(如/dev/sda1,具体根据系统而定)。 步骤2:如果知道根分区(通常是`/dev/sda1`或类似),运行: fsck /dev/sda1 -y # 假设根分区是sda1,如果不是请替换 步骤3:如果不知道分区,可以尝试使用`blkid`命令查看分区信息,然后根据分区类型(如ext4)运行fsck。 步骤4:修复完成后,输入`exit`或`reboot`命令尝试重启。 如果上述步骤不能解决,可能还有其他问题,比如GRUB配置错误或内核问题。我们可以尝试以下步骤: 步骤5:如果重启后仍然进入initramfs,可以尝试在启动时进入GRUB菜单(开机时按住Shift或Esc),选择恢复模式(recovery mode),然后选择“fsck”选项。 步骤6:如果恢复模式无效,可能需要重新安装GRUB或修复引导。 步骤7:如果文件系统损坏严重,可能需要从Live CD/USB启动,然后挂载原系统分区进行修复。 根据引用[4]的内容,我们还可以考虑BusyBox的静态编译和最小系统构建,但用户的问题可能是由于文件系统损坏导致的,所以我们先以修复文件系统为主。 注意:在运行fsck时,确保分区未被挂载(在initramfs环境下通常已经卸载)。 下面我们给出详细步骤:</think>### Ubuntu 开机进入 BusyBox initramfs 界面的解决方法 当 Ubuntu 启动时进入 BusyBox initramfs shell(显示类似 `BusyBox v1.36.1 built-in shell (ash)` 的提示),通常是由文件系统错误或磁盘问题引起的。以下是分步解决方案: #### **步骤 1:检查文件系统错误** 在 `(initramfs)` 提示符下执行: ```bash fsck /dev/sda1 -y # 检查并修复根分区(sda1 需替换为实际分区) ``` - 📌 **关键操作**: - 用 `lsblk` 或 `blkid` 查看分区(如根分区可能是 `/dev/sda2` 或 `/dev/nvme0n1p2`) - 若提示 `/dev/sda1 is mounted`,先运行 `umount /dev/sda1` - `-y` 参数自动修复错误 - 完成后输入 `reboot` 重启 #### **步骤 2:修复特定错误类型** - **若提示 `Cannot open /dev/sda1`**: 可能硬件故障,尝试: ```bash e2fsck -b 32768 /dev/sda1 # 修复超级块备份 ``` - **若提示 `UNEXPECTED INCONSISTENCY`**: 重复运行 `fsck` 直到无错误。 #### **步骤 3:通过 GRUB 恢复模式修复** 1. 开机时按住 `Shift` 进入 GRUB 菜单 2. 选择 `Advanced options for Ubuntu` → `Recovery Mode` 3. 选择 `fsck` → `Enable networking` → `root shell` 4. 手动运行修复: ```bash mount -o remount,rw / # 挂载为可写 fsck /dev/sda1 -y update-initramfs -u # 重建 initramfs update-grub # 更新 GRUB reboot ``` #### **步骤 4:终极方案(Live USB 修复)** 若上述无效: 1. 用 Ubuntu Live USB 启动 2. 挂载原系统分区: ```bash sudo mount /dev/sda1 /mnt # 根分区 sudo mount /dev/sda2 /mnt/boot # 引导分区(若独立) sudo mount --bind /dev /mnt/dev # 挂载设备 sudo chroot /mnt ``` 3. 在 chroot 环境中修复: ```bash fsck /dev/sda1 -y update-initramfs -u update-grub grub-install /dev/sda # 重装 GRUB exit sudo reboot ``` #### **常见原因** 1. **文件系统损坏**:异常关机/磁盘坏道(占 70% 案例)[^1] 2. **GRUB/内核更新失败**:尤其是 `/boot` 分区空间不足时[^2] 3. **硬件故障**:硬盘老化或 SSD 故障(需 `smartctl` 检测) 4. **文件系统配置错误**:如 `/etc/fstab` 中 UUID 错误[^3] > ⚠️ **注意**:若磁盘频繁报错,建议备份数据并更换硬盘。修复后首次启动可能较慢(需重建文件系统索引)[^4]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值