busybox v1.22.1(debian 1:1.22.0-19) built-in shell(ash)解决方案

本文提供了一种解决硬盘启动错误的方法,通过使用blkid命令来查看硬盘分区情况,并利用fsck命令进行修复。完成修复后,重启计算机即可解决问题。

这个网上找到的解决方法挺多的,但试过都不能用,有说进入其他系统修改的,也有说在启动项中修改的,但都不行。其实问题的根源是硬盘处错误了,再开机logo时按esc就会看到检查错误。下面记录下解决方法

#这个是查看硬盘的命令里面会列出所有分区
blkid
#运行fsck命令,注意sdaX,X代表的就是你的分区号,可以在列表中找到
fsck -y /dev/sdaX
#完成后执行exit退出重启电脑就可以了
exit
Busybox创建nfs文件系统 1、解压busybox-1.19.4.tar.bz2 修改Makefilez中的ARCH和CROSS_COMPILE与本机的路径一致: CROSS_COMPILE ?= /opt/crosstool/bin/arm-s3c2410-linux-gnu- ... ARCH ?= arm 2、编译busybox。先make menuconfig,修改以下: Busybox Settings ---> Build Options ---> Build BusyBox as a static binary (no shared libs) //直接编译成静态库,省事点 (/opt/crosstool/bin/arm-s3c2410-linux-gnu-) Cross Compiler prefix //这里和Makefile里保持一致,应该写一处就行了 Installation Options ---> Don't use /usr //不用本机的目录 Shells ---> Choose your default shell (ash) ---> //这里选择shellash,应该是默认选中的 --- ash //把ash这档的选项全部选上 保存退出,直接make,make install。 3、用shell脚本创建根文件系统的目录结构,并在想要建立根文件系统的地方运行此脚本。我是用root用户登陆的,直接创建了设备节点。 [root@Sure root-s3c2410]# vim makedir.sh #!/bin/sh echo "makeing rootdir" mkdir rootfs cd rootfs echo "makeing dir: bin dev etc lib proc sbin sys usr" mkdir bin dev etc lib proc sbin sys usr #8 dirs mkdir usr/bin usr/lib usr/sbin lib/modules #Don't use mknod, unless you run this Script as mknod -m 600 dev/console c 5 1 mknod -m 666 dev/null c 1 3 echo "making dir: mnt tmp var" mkdir mnt tmp var chmod 1777 tmp mkdir mnt/etc mnt/jiffs2 mnt/yaffs mnt/data mnt/temp mkdir var/lib var/lock var/log var/run var/tmp chmod 1777 var/tmp echo "making dir: home root boot" mkdir home root boot echo "done" 执行这个sh: [root@Sure root-s3c2410]# sh makedir.sh 创建出一个主文件夹rootfs,里面有一批文件: [root@Sure rootfs]# ls bin boot dev etc home lib mnt proc root sbin sys tmp usr var 4、把busybox源码目录下的etc的内容拷贝到这里的etc下 [root@Sure rootfs]# cd etc/ [root@Sure etc]# cp -a /home/jacky/busybox-1.11.1/examples/bootfloppy/etc/* ./ 5、修改拷贝过来的profile文件 [root@Sure etc]# vim profile # /etc/profile: system-wide .profile file for the Bourne shells echo "Processing /etc/profile" # no-op # Set search library path echo " Set search library path" export LD_LIBRARY_PATH=/lib:/usr/lib # Set user path echo " Set user path" PATH=/bin:/sbin:/usr/bin:/usr/sbin export PATH # Set PS1 echo " Set PS1" HOSTNAME=`/bin/hostname` # 此处让shell提示符显示host名称的。是`,不是’,要注意 # 会在进入根系统后显示Jacky export PS1="\\e[32m[$USER@$HOSTNAME \\w\\a]\\$\\e[00;37m " # 此处\\e[32m是让后面的“[$USER@$HOSTNAME \\w\\a]”显示为绿色 # \\e[00是关闭效果 # \\e[05是闪烁 # 37m是让后面的显示为白色 # 多个命令可以;号隔开 echo "All done!" echo 6、修改初始化文件inittab和fstab [root@Sure etc]# vim inittab ::sysinit:/etc/init.d/rcS ::respawn:-/bin/sh ::restart:/sbin/init tty2::askfirst:-/bin/sh ::ctrlaltdel:/bin/umount -a -r ::shutdown:/bin/umount -a -r ::shutdown:/sbin/swapoff –a [root@Sure etc]# vim fstab proc /proc proc defaults 0 0 none /tmp ramfs defaults 0 0 mdev /dev ramfs defaults 0 0 sysfs /sys sysfs defaults 0 0 7、修改初始化的脚本文件init.d/rcS [root@Sure etc]# vim init.d/rcS #! /bin/sh echo "Processing etc/init.d/rc.S" #hostname ${HOSTNAME} echo " Mount all" /bin/mount -a echo " Start mdev...." /bin/echo /sbin/mdev > proc/sys/kernel/hotplug mdev -s echo "****************************************************" echo " RootFS by NFS, s3c2410" echo " Created by Jacky Xu @ 2008.7.13" echo " Enjoy it!!!" echo "****************************************************" echo 8、创建一个空的mdev.conf文件,在挂载根文件系统时会用到的 [root@Sure etc]# touch mdev.conf 9、从本机拷贝passwd、shadow、group文件。 [root@Sure etc]# cp /etc/passwd . [root@Sure etc]# cp /etc/shadow . [root@Sure etc]# cp /etc/group . 修改passwd文件,把第一行和最后一行的bash修改成ash10、把busybox默认安装目录中的文件全部复制到这里的rootfs中。会发现多了linuxrc -> bin/busybox文件,这是挂载文件系统需要执行的。 [root@Sure etc]# cd .. [root@Sure rootfs]# cp -Rfv /home/jacky/busybox-1.11.1/_install/ ./ OK,以上用busybox创建了一个基本的文件系统。
<think>嗯,用户需要的是BusyBox v1.35.0内置ash shell的使用指南。从用户提供的引用来看,ta可能遇到了开机进入BusyBox ash环境的问题,但这次明确要求的是使用指南而非故障排除。 用户引用的两个故障案例都是Ubuntu相关的(v1.22.1和v1.30.1),而当前询问的是v1.35.0,说明用户可能在使用较新版本。考虑到BusyBoxash实现保持向后兼容,指南内容可以覆盖更早版本。 需要重点突出ash的特性:作为轻量级shell,它支持基本的交互操作和脚本功能,但缺少bash等完整shell的高级特性。用户可能是嵌入式开发者或系统维护人员,在资源受限环境中使用BusyBox。 指南结构应该包含: - 基本交互命令(比bash少很多) - 内置命令的特殊性(如test/[ ]命令的简化实现) - 环境变量配置方式 - 常见限制说明(比如不支持数组) 特别注意要提醒用户:在initramfs环境下看到的BusyBox ash是临时系统,与完整系统的shell有区别。用户如果遇到开机卡在这里的情况,可能需要另外的故障排除方法,但这不属于本次查询范围。 最后生成的问题要引导用户补充使用场景,因为嵌入式环境和救援环境下的使用需求差异很大。</think>以下是针对 **BusyBox v1.35.0 内置 Shell (ash)** 的使用指南,涵盖基础操作、命令特性和配置技巧: --- ### **一、ash 基础操作** 1. **启动与退出** - 开机若进入 `(initramfs)` 提示符,表明系统处于初始化内存文件系统环境,此时可执行 ash 命令。 - 退出:输入 `exit` 或 `Ctrl+D`。 2. **基础命令格式** ```bash command [选项] [参数] ``` - 例:查看文件 ```bash cat /etc/fstab ``` --- ### **二、核心内置命令** BusyBox ash 集成常用工具(需通过符号链接调用): | **命令类别** | **示例** | **功能** | |---------------------|------------------------------|------------------------------| | **文件操作** | `ls -l /dev` | 列出设备目录 | | | `cp /mnt/config.txt /backup` | 复制文件 | | **系统信息** | `df -h` | 查看磁盘空间 | | | `uname -a` | 显示内核版本 | | **网络工具** | `ping 8.8.8.8` | 测试网络连通性 | | | `wget http://example.com/file` | 下载文件 | | **进程管理** | `ps aux` | 查看进程 | | | `kill -9 [PID]` | 终止进程 | > 💡 输入 `busybox --list` 查看所有可用命令[^1]。 --- ### **三、脚本编程特性** 1. **变量定义** ```bash name="BusyBox" && echo $name # 输出:BusyBox ``` 2. **条件判断** ```bash if [ -f "/etc/passwd" ]; then echo "文件存在" else echo "文件缺失" fi ``` 3. **循环控制** ```bash for i in $(seq 1 3); do echo "计数: $i" done ``` > ⚠️ 注意:ash 不支持数组等高级特性,脚本需保持简洁。 --- ### **四、环境配置技巧** 1. **修改提示符** 编辑 `~/.profile` 添加: ```bash PS1='\u@\h:\w\$ ' # 显示用户@主机:路径$ ``` 2. **别名设置** ```bash alias ll='ls -lF --color=auto' ``` 3. **路径管理** ```bash export PATH=$PATH:/sbin:/usr/sbin # 添加系统工具路径 ``` --- ### **五、故障场景处理** 若开机卡在 `(initramfs)`: 1. **检查文件系统** ```bash fsck /dev/sda1 # sda1 替换为实际分区 ``` 2. **手动挂载根目录** ```bash mount /dev/sda2 /root # 挂载根分区 exit # 尝试退出至系统 ``` > 若失败需检查 `/etc/fstab` 配置[^2]。 ---
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值