Busybox1.21.1 挂载U盘显示文件名是中文乱码

本文介绍如何通过修改Busybox源码使Busybox1.21.1版本支持中文,并详细说明了从编译配置到内核设置的具体步骤。

Busybox高版本默认取消了对中文的支持

到官网上下载busybox1.21.1

 

步骤1:添加编译器和勾选上Build shared build

make menuconfig ARCH=arm

 

步骤2:取消Support Unicode

 

步骤3:退出保存生成.config

步骤4:修改libbb/printable_string.c

先找到这样一段:
  if (c < ' ')
      break;
  if (c >= 0x7f)
      break;
  s++;

注释掉某两行(34,35行):
/* if (c >= 0x7f) */
/*     break; */
 

然后找这样一段(48行):

    unsigned char c = *d;

    if (c == '\0')
        break;
    if (c < ' ' || c >= 0x7f)
         *d = '?';
    d++;

 

 

把 if (c < ' ' || c >= 0x7f)  改成   if (c < ' ')  

 

 

步骤5:make;make install

步骤6:在_install目录下,将bin、sbin、usr拷贝到rootfs中覆盖

步骤7:拷贝编译器中的库到rootfs/lib

步骤8:内核配置

设置 FAT 的默认 codepage 为 936,默认iocharset 为utf8

---- DOS/FAT/NT Filesystems ----

   <*> VFAT (Windows-95) fs support                                                              

  (936) Default codepage for FAT                                                                            

  (utf8) Default iocharset for FAT

 

 

--- Base native language support ---                                                                         

 

  (cp936) Default NLS Option

<*>   Codepage 437 (United States, Canada) 

<*>   Simplified Chinese charset (CP936, GB2312)  

<*>   ASCII (United States) 

 

<*>   NLS UTF-8 
 

 

设置默认语言支持为 cp936(即中文),添加支持的字符集,GB2312,UTF-8

步骤9:挂载U盘

mount -t vfat -o iocharset=cp936 /dev/sda1 /tmp/

 

参考:

http://blog.chinaunix.net/uid-20648944-id-2937499.html

https://www.cnblogs.com/masky/archive/2013/01/27/2878996.html

<think>好的,我现在需要帮助用户找到关于BusyBox自动挂载U的配置方法。首先,我应该回忆一下BusyBox的相关知识。BusyBox是一个集成了许多常用Unix工具的精简版工具集,常用于嵌入式系统。自动挂载U通常涉及几个步骤,包括内核支持、udev或mdev机制,以及配置文件的设置。 根据用户提供的引用内容,引用[3]提到了uevnet机制和U自动挂载,其中涉及/etc/init.d/rcS脚本中的一些命令,比如使用mdev来处理热插拔事件。这可能与BusyBox的自动挂载有关,因为BusyBox通常使用mdev作为设备管理工具。 接下来,我需要确认BusyBox的自动挂载流程。首先,确保内核支持USB存储设备和文件系统(如VFAT、NTFS等)。然后,配置mdev来监测设备插入事件,并触发挂载动作。可能需要修改/etc/mdev.conf文件,添加规则,当检测到U插入时执行挂载命令。 另外,引用[3]中的代码片段展示了如何设置mdev作为hotplug处理程序,并挂载必要的文件系统如sysfs和devpts。这些步骤是基础,确保设备节点正确创建。 可能还需要在/etc/fstab中添加U的自动挂载项,但动态挂载通常由mdev处理。用户可能需要编写一个脚本,当U插入时由mdev调用,执行mount命令。例如,在mdev.conf中添加规则,当USB设备出现时运行挂载脚本。 还要注意挂载点的创建,比如在/mnt/usb目录下挂载。权限问题也需要考虑,确保用户有权限访问挂载点。 总结步骤可能包括:配置内核支持、设置mdev规则、编写挂载脚本、测试自动挂载功能。需要检查这些步骤是否在用户提供的引用中有更详细的指导,尤其是引用[3]中的初始化脚本部分。</think>### BusyBox自动挂载U配置教程 BusyBox通过集成`mdev`(简化版设备管理器)实现动态设备管理,结合内核热插拔机制完成U自动挂载。以下是具体步骤: --- #### **1. 确保内核支持USB与文件系统** - 编译内核时需启用以下选项: - `CONFIG_USB_SUPPORT` - `CONFIG_USB_STORAGE` - 文件系统支持(如`CONFIG_VFAT_FS`、`CONFIG_NTFS_FS`) - 验证设备节点:插入U后检查`/dev/sda`或`/dev/sdb`是否生成。 --- #### **2. 配置mdev实现热插拔监测** 修改`/etc/mdev.conf`文件,添加U插入/移除时的动作规则: ```bash # 当检测到块设备(如U)插入时,执行挂载脚本 sd[a-z][0-9]* 0:0 0660 *( /etc/hotplug/usb/mount.sh ) ``` [^3] --- #### **3. 编写挂载脚本** 创建挂载脚本`/etc/hotplug/usb/mount.sh`,内容如下: ```bash #!/bin/sh MOUNT_DIR="/mnt/usb" if [ "$ACTION" = "add" ]; then mkdir -p $MOUNT_DIR/$MDEV mount -t auto /dev/$MDEV $MOUNT_DIR/$MDEV elif [ "$ACTION" = "remove" ]; then umount $MOUNT_DIR/$MDEV rm -rf $MOUNT_DIR/$MDEV fi ``` - 说明: - `$MDEV`为设备名(如`sda1`) - `-t auto`自动检测文件系统类型 - 挂载目录设为`/mnt/usb/sda1`以区分多个设备 --- #### **4. 初始化脚本配置** 在BusyBox启动脚本(如`/etc/init.d/rcS`)中添加以下命令: ```bash # 挂载必要的虚拟文件系统 mount -t sysfs sysfs /sys mount -t tmpfs mdev /dev mkdir /dev/pts mount -t devpts devpts /dev/pts # 启用mdev热插拔支持 echo /sbin/mdev > /proc/sys/kernel/hotplug mdev -s ``` [^3] --- #### **5. 测试自动挂载** 插入U后检查: ```bash ls /mnt/usb/sda1 # 确认挂载成功 df -h # 查看挂载的U容量 ``` --- #### **常见问题** 1. **无法挂载**: - 检查内核是否支持U的文件系统(如VFAT)。 - 确保`mount.sh`脚本有执行权限:`chmod +x /etc/hotplug/usb/mount.sh`。 2. **权限不足**: - 在`mdev.conf`中设置设备权限,例如:`sd[a-z][0-9]* 0:0 0666`。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值