linux rootfs 脚本实现 U 盘自动挂载记录




author:DriverMonkey

mail:bookworepeng@hotmail.com

qq:196568501

phone:13410905075

-欢迎交流

测试硬件平台-am335x(linux 3.2)

前提条件:1.busybox 已经支持 mdev

                     2.内核已经直至U盘

1) 在etc/init.d/ 目录下船舰rcS 脚本

#! /bin/sh

/bin/mount -a
/bin/SDG800
/etc/init.d/sysfs.sh

2)在etc/init.d/ 目录下船舰 sysfs.sh 脚本

#!/bin/sh

if [ -e /proc ] && ! [ -e /proc/mounts ]; then
  mount -t proc proc /proc
fi

if [ -e /sys ] && ! [ -e /sys/kernel ] && grep -q sysfs /proc/filesystems; then
  mount sysfs /sys -t sysfs
fi

mount -t tmpfs mdev /dev
mkdir /dev/pts
mount -t devpts devpts /dev/pts

echo /sbin/mdev>/proc/sys/kernel/hotplug

mdev -s

exit 0

3) 在etc 下创建 mdev 配置文件

sd[a-z][0-9]  0:0 0660  @/etc/hotplug/usb/udisk_insert
sd[a-z]       0:0 0660  $/etc/hotplug/usb/udisk_remove
#mmcblk[0-9]p[0-9]  0:0 0660  @/etc/hotplug/sd/sd_insert
#mmcblk[0-9]        0:0 0660  $/etc/hotplug/sd/sd_remove

4) 在 /etc/hotplug/usb 下创建 udisk_insert 脚本文件

#!/bin/sh

echo "MDEV is ${MDEV}"

if [ -d /sys/block/*/$MDEV ]  ; then

  mkdir -p /media/udisk

  mount /dev/$MDEV /media/udisk -t vfat -o utf8=1
if [ -f /media/udisk ];then
echo "mount udisk usccessfully"
fi

fi


在 /etc/hotplug/usb 下创建 udisk_remove 脚本文件
 #!/bin/sh


umount -ltf /media/udisk
rm -rf /media/udisk

echo "remove you udisk safely!"




嵌入式Linux根文件系统(rootfs)的自动扩容通常涉及到对存储设备的空间监控和管理。编写这样的脚本可以包含以下几个步骤: 1. **安装必要的工具**:首先需要确保系统已经安装了`util-linux`, `e2fsck`, 和 `resize2fs` 等用于磁操作的工具。 2. **监控空间**:你可以使用`inotifywait`(内核支持)或者其他库如`fswatch`来监视指定目录(通常是挂载点),当可用空间低于某个阈值时触发脚本。 ```bash #!/bin/bash watchdir="/mnt/rootfs" threshold_percentage=90 # 监控空间低于90% while true; do inotifywait -m $watchdir -e modify | while read path action file; do if [[ "$action" == "modify" ]]; then available_space=$(df -h $path | awk 'NR==2 {print $4}' | sed 's/%//g') if (( $(echo "$available_space < ($threshold_percentage / 100) * $(df -h $path | awk 'NR==2 {print $2}')" | bc -l) )); then # 扩容逻辑 ... fi fi done sleep 60 # 每分钟检查一次 done ``` 3. **扩容逻辑**:当达到预设阈值时,你需要运行`resize2fs`命令来扩大文件系统的大小。这通常包括校验文件系统、设置新大小并实际进行扩容。记得处理可能出现的错误,并在完成后更新挂载点的元数据。 ```bash # 示例扩容部分 if [ $? -eq 0 ]; then resize2fs $path umount $path || echo "Failed to unmount filesystem." mount $path || echo "Failed to remount filesystem after resize." else echo "Error resizing filesystem. Details: $?" fi ``` 4. **异常处理**:在脚本中添加适当的错误处理和日志记录是很重要的,以便于了解何时扩容成功或失败。 5. **定时任务**:最后,可以把这个脚本配置成定期执行的计划任务(如cron job),以确保持续监控和自动化扩容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值