无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 2725|回复: 46
打印 上一主题 下一主题

tinycore12.0x64文件管理器乱码,可有高手知道怎么解决啊?

    [复制链接]
跳转到指定楼层
1#
发表于 2022-1-6 19:56:33 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 liuzhaoyzz 于 2022-1-6 20:11 编辑

xfe文件管理器中文件名是乱码:



我是在镜像站下载的tinycore12x64,官方镜像:http://mirrors.163.com/tinycorelinux/参考了下,Tiny Core Linux 安装配置
https://blog.csdn.net/stevenldj/article/details/112852507

已经安装了中文字库notocjk-regular-fonts-ttc,这个中文字库比较大,37MB,包括sans、serif、Mono,字体显示效果感觉比较好。
已经尝试过安装getlocale.tcz和base-locale.tcz,运行sudo getlocale.sh选择zh_CN.UTF8,重启之后仍然不行,文件夹乱码,而且base-locale.tcz可能会带来Aterm终端输入问题。




不建议安装base-locale.tcz,会带来Aterm终端输入问题。
在tinycore论坛找到了这个帖子:
http://forum.tinycorelinux.net/index.php/topic,4222.msg22843.html#msg22843
tinycorelinux对NTFS分区的中文目录不支持,不能显示出来中文目录,FAT分区的中文目录显示为乱码
tinycorelinux对NTFS分区的中文目录支持 --- Using pcmanfm (and Kangkang's tips) 能显示出来中文目录, but you need to insert "ntfs-3g YOUR_M$PARTITION" in .xsession (after all, pcmanfm is developed by Chinese/Taiwanese, it got to display chinese characters :D).
如果用ntfs-3g挂载中文文件不设置好参数将没办法在linux下显示,解决方法如下:
修改/etc/fstab
/dev/hda9 /mnt/G ntfs-3g umask=000,locale=zh_CN.utf8, 0 0
也就是添加了locale=zh_CN.utf8这个参数,改分区格式参数为ntfs-3g
修改后,XFE可以正常显示中文目录和文件,但PCMANFM显示为乱码。


问题是/etc/fstab是只读的修改不了啊?要corepure64.gz吗?改过之后感觉不通用啊?不明白。。。



        


47#
 楼主| 发表于 2022-1-15 14:11:33 来自手机 | 只看该作者
晚点再研究下
回复

使用道具 举报

46#
发表于 2022-1-15 12:43:01 来自手机 | 只看该作者
你可以尝试用awk获取关于fat32的分区的那行的挂载参数,有没有utf8,没有用就用sed的-i直接修改替换
回复

使用道具 举报

45#
发表于 2022-1-15 12:40:29 来自手机 | 只看该作者
rebuildfstab中有一句是grep -q "^$DEVROOT/$DEVNAME"那行,我猜是如果fstab中有设备的挂载参数略过,没有最后追加一行。
回复

使用道具 举报

44#
发表于 2022-1-15 12:25:58 来自手机 | 只看该作者
/etc/tc-config中有一段判断启动内核参数有没有NOFSTAB,有跳过,没有就运行rebuildfstab并复制udev规则/tmp/98-tc.rules到/etc/udev/rule.d目录。
回复

使用道具 举报

43#
 楼主| 发表于 2022-1-14 21:43:02 | 只看该作者
本帖最后由 liuzhaoyzz 于 2022-1-14 22:33 编辑

可以自己包個rebuilderfstab.tcz阿,把改寫過的放/usr/local/bin就好了。
記得要加進onboot.lst

想问下怎么把这个rebuildfstab.sh打包进rebuildfstab.tcz?用什么工具?打包进去之后,onboot.lst调用,会不会比系统的/usr/sbin/rebuildfstab调用的晚呢?如果调用的晚,可能不会起作用,因为rebuildfstab提前已经建立了/etc/fstab了啊?

tce-load -i squashfs-tools
mkdir -p packing/usr/local/bin
mv rebuildfstab.sh packing/usr/local/bin/rebuildfstab
chmod +x packing/usr/local/bin/rebuildfstab
mksquashfs packing rebuildfstab.tcz
mv rebuildfstab.tcz /etc/sysconfig/tcedir/optional
echo rebuildfstab.tcz >> /etc/sysconfig/tcedir/onboot.lst
echo rebuildfstab >> /opt/bootlocal.sh
filetool.sh -b

我发现 /opt/bootlocal.sh需要超级管理员权限才能修改。
sudo vi /opt/bootlocal.sh
添加我的
rebuildfstab.sh
mount -a


或者直接在onboot.lst里面添加mountallpartition.tcz,然后在/opt/bootlocal.sh中添加:
mountallpartition.sh
重启试了下,FAT32/NTFS分区自动挂载了,没有乱码。

但是tinycore所在的FAT32分区还是乱码,因为这个分区被挂载晚了,是/etc/fstab里面vfat类型的分区没有iocharset=utf8参数导致。


mountallpartition.rar

2.35 KB, 下载次数: 0, 下载积分: 无忧币 -2

回复

使用道具 举报

42#
 楼主| 发表于 2022-1-13 22:55:16 | 只看该作者
本帖最后由 liuzhaoyzz 于 2022-1-13 22:59 编辑

感觉上来说,还是要折腾/usr/sbin/rebuilderfstab,从底层修改,改完了之后,cpio+gz打包回去,到corepure64.gz里面。
比较麻烦的问题是,tinycore每更新一次就要修改一次,来来回回修改比较麻烦。

OPTIONS="auto,users,exec"
  case "$FSTYPE" in
    ntfs) checkntfs ;;
    vfat|msdos) OPTIONS="${OPTIONS},umask=000,iocharset=utf8" ;;

        
回复

使用道具 举报

41#
 楼主| 发表于 2022-1-13 22:52:13 | 只看该作者
tinycore论坛的polikuo和Rich,提供了个挂载分区的代码。调用办法:
chmod 777 MountAll-refactored.sh
MountAll-refactored.sh

但是tinycore所在的分区可能不能被挂载,即使sudo umount -l /dev/xxx,也不行。
        


#!/bin/sh

for F in `ls -1 /mnt/`
do
  case $F in
    sr[0-9]*) # Skip CD/DVD drives.
    #echo "Skipping /mnt/$F"
    continue
    ;;

    fd[0-9]*) # Skip floppy drives
    #echo "Skipping /mnt/$F"
    continue
    ;;

    *)
    # Skip if not listed in fstab
    grep -q "/mnt/$F" /etc/fstab || continue
    # Skip if already mounted.
    grep -q "/mnt/$F" /etc/mtab && continue
    FS=`awk "/\/mnt\/$F/"'{print $3}' /etc/fstab`
    case $FS in
      vfat ) sudo mount -t vfat -o iocharset=utf8 "/dev/$F" "/mnt/$F"
      ;;
      ntfs ) sudo mount -t ntfs-3g "/dev/$F" "/mnt/$F"
      ;;
      * ) sudo mount "/mnt/$F"
      ;;
    esac
    # Change ownership of mount to current user.
    sudo chown "`cat /etc/sysconfig/tcuser`":staff "/mnt/$F"
    ;;
  esac
done



MountAll-refactored.rar

464 Bytes, 下载次数: 0, 下载积分: 无忧币 -2

回复

使用道具 举报

40#
 楼主| 发表于 2022-1-9 12:46:18 | 只看该作者
本帖最后由 liuzhaoyzz 于 2022-1-14 21:39 编辑
my9823 发表于 2022-1-9 11:59
tinycore 的tcz看了下是mksquashfs压缩的吧?反正在windows下用7z能打开,有个tcz叫usbautomount,包里有个 ...


我不太想从corepure64.gz着手,因为每次tinycore一更新,这个会跟着变,所以我的想法是,添加一个挂载命令行到/opt/bootlocal.sh,以便在引导时挂载文件系统。这个/opt/bootlocal.sh是在tinycore里面,但是可以备份到mydata.tcz里面,随系统启动自动运行。

而这个挂载文件系统的脚本,可以从/usr/sbin/rebuildfstab修改而来。

你说的usbautomount.tcz,我之前也有关注到,似乎用的基于label的方式挂载,感觉没必要,因为/usr/sbin/rebuildfstab里面已经有了现成的代码了,他已经在系统启动的时候建立好了所有的/dev/sda2,/dev/sdc3这样子的目录了,设备没有挂载上去,改改应该能用,但我不太会,需要摸索。

回复

使用道具 举报

39#
 楼主| 发表于 2022-1-9 12:36:42 | 只看该作者
本帖最后由 liuzhaoyzz 于 2022-1-9 12:50 编辑
my9823 发表于 2022-1-9 12:10
建议你了解下udev这个东西有帮助。

udev我之前看过的。wintoflash介绍过。
tinycore默认的不是用udev,用的就是前面/etc/fstab里面那样子的,/dev/sda2这样子的。
用uuid啥的,应该也行(我没有尝试过),无论是用/dev/sda2这样子的,还是udev,应该都可以,tinycore的脚本默认用的是/dev/sda2这样子的,能够遍历出所有的dev,现在问题不在这里,在于完善一个脚本,让他自启动,启动后自动加载,至于用什么方式,不是重点。
tinycore的脚本都是用的noauto模式不自动挂载(可能是为了加快启动时间?是否挂载的选择留给用户?),而且他挂载的时候,locale编码不适用于中文系统,所以要修改,调整。
晚点我去tinycore官方论坛看看。



回复

使用道具 举报

38#
发表于 2022-1-9 12:10:38 | 只看该作者
建议你了解下udev这个东西有帮助。

点评

udev我之前看过的。wintoflash介绍过。 tinycore默认的不是用udev,用的就是前面/etc/fstab里面那样子的,/dev/sda2这样子的。 用uuid啥的,应该也行(我没有尝试过),无论是用/dev/sda2这样子的,还是udev,应该  详情 回复 发表于 2022-1-9 12:36
回复

使用道具 举报

37#
发表于 2022-1-9 12:09:34 | 只看该作者
create_mountpoint()
{
        mkdir -p "${mount_dir}/${label}"

        # note: setting mountpoint ownership/permissions is not strictly necessary with busybox mount
        chown "$nonroot_user":staff "${mount_dir}/${label}"
        chmod 777 "${mount_dir}/${label}"
}

英文不太好,估计上边是创建挂载目录,更改属主,更改读写执行属性。
下边是挂载。
mount_it()
{
        # uid for vfat filesystem, first fallback is most general (e.g., for ext), second fallback is for ntfs
        # the "busybox.suid" prefix is to ensure the busybox version of mount is used:
        busybox.suid mount -o uid=1000 "$partition" "${mount_dir}/${label}" 2>/dev/null ||
        busybox.suid mount "$partition" "${mount_dir}/${label}" 2>/dev/null ||
        busybox.suid mount -t ntfs-3g "$partition" "${mount_dir}/${label}"
}
回复

使用道具 举报

36#
发表于 2022-1-9 11:59:58 | 只看该作者
tinycore 的tcz看了下是mksquashfs压缩的吧?反正在windows下用7z能打开,有个tcz叫usbautomount,包里有个udev的规则文件和脚本,你可以修改下mount的-o参数拿来用就行了。

点评

我不太想从corepure64.gz着手,因为每次tinycore一更新,这个会跟着变,所以我的想法是,添加一个挂载命令行到/opt/bootlocal.sh,以便在引导时挂载文件系统。这个/opt/bootlocal.sh是在tinycore.iso外面,可以自动  详情 回复 发表于 2022-1-9 12:46
回复

使用道具 举报

35#
 楼主| 发表于 2022-1-9 09:09:34 | 只看该作者
本帖最后由 liuzhaoyzz 于 2022-1-9 10:03 编辑

尝试写个脚本让分区自动挂载:
mountpartition2.sh
#!/bin/busybox ash
. /etc/init.d/tc-functions
useBusybox
sudo mount  -t vfat -o iocharset=utf8 /dev/sdd2 /mnt/sdd2
sudo mount  -t ntfs-3g /dev/sda2 /mnt/sda2

sudo ./mountpartition2.sh
分区挂载正常了,没有乱码。
问题是这样子写,不通用啊。应该可以基于/usr/sbin/rebuildfstab改改。在/usr/sbin/rebuildfstab后面添加mount -a应该也可以。

sudo mount  -t $FSTYPE -o ${OPTIONS} /dev/$DEVNAME /mnt/$DEVNAME ;;

不知道哪里语法问题,出错了。。。


回复

使用道具 举报

34#
 楼主| 发表于 2022-1-9 09:07:04 | 只看该作者
本帖最后由 liuzhaoyzz 于 2022-1-9 12:41 编辑
my9823 发表于 2022-1-8 18:41
普通用户只能读写/home/用户名目录和自己在/tmp目录产生的目录文件,root用户可以读写任意目录。sudo su

sudo passwd root
password:*******
su
password:*******

vi /etc/fstab
vi是打开文件后的命令模式状态。 可以使用i或a命令进入可编辑状态。
按【ESC】键跳到命令模式,然后再按【:】冒号键,最后再按【wq】,即可保存退出vi的编辑状态;如果是不想保持直接按下【:】冒号键加【q!】键,就能直接退出。
其实vi也没有想象中的那么难,只是我用的少,不熟悉罢了,相当于黑色背景下的一个记事本软件。
# /etc/fstab
proc            /proc        proc    defaults          0       0
sysfs           /sys         sysfs   defaults          0       0
devpts          /dev/pts     devpts  defaults          0       0
tmpfs           /dev/shm     tmpfs   defaults          0       0
/dev/zram0  swap         swap    defaults,noauto   0       0
/dev/sda2       /mnt/sda2       ntfs     noauto,users,exec,ro,umask=000 0 0 # Added by TC
/dev/sdc3       /mnt/sdc3       vfat     noauto,users,exec,umask=000 0 0 # Added by TC
/dev/sdd2       /mnt/sdd2       vfat     noauto,users,exec,umask=000 0 0 # Added by TC
/dev/sr0        /mnt/sr0        auto     noauto,users,exec    0 0 # Added by TC


改成这样子:
# /etc/fstab
proc            /proc        proc    defaults          0       0
sysfs           /sys         sysfs   defaults          0       0
devpts          /dev/pts     devpts  defaults          0       0
tmpfs           /dev/shm     tmpfs   defaults          0       0
/dev/zram0  swap         swap    defaults,noauto   0       0
/dev/sda2       /mnt/sda2       ntfs     auto,users,exec,ro,umask=000,locale=zh_CN.UTF-8 0 0 # Added by TC
/dev/sdc3       /mnt/sdc3       vfat     auto,users,exec,umask=000,locale=zh_CN.UTF-8 0 0 # Added by TC
/dev/sdd2       /mnt/sdd2       vfat    auto,users,exec,umask=000,locale=zh_CN.UTF-8 0 0 # Added by TC
/dev/sr0        /mnt/sr0        auto     noauto,users,exec    0 0 # Added by TC


我修改之后,保存了/etc/fstab,用xfw看了下,确实修改过了。
然后重启,再看看,还是没有自动挂载,用xfw看了下/etc/fstab,又还原了。


那么就从/usr/sbin/rebuildfstab着手吧。
vi /usr/sbin/rebuildfstab

改成下面的:
#!/bin/busybox ash
. /etc/init.d/tc-functions
useBusybox


PATH="/bin:/sbin:/usr/bin:/usr/sbin"
export PATH
umask 022


# Exit if script is already running
[ -e /proc/partitions ] || exit
if [ -e /var/run/rebuildfstab.pid ]; then
if [ -e "/proc/$(cat /var/run/rebuildfstab.pid)" ]; then
  touch /var/run/rebuildfstab.rescan 2>/dev/null
  exit
fi
rm -f /var/run/rebuildfstab.pid
fi
echo "$$" >/var/run/rebuildfstab.pid


TMP="/tmp/fstab.$$.tmp"
ADDEDBY="# Added by TC"
DEVROOT="/dev"


# Create a list of fdisk -l
FDISKL=`fdisk -l | awk '$1 ~ /dev/{printf " %s ",$1}'`


# Read a list of CDROM/DVD Drives
CDROMS=""
CDROMSF=/etc/sysconfig/cdroms
[ -s "$CDROMSF" ] &&  CDROMS=`cat "$CDROMSF"`


grep -v "$ADDEDBY" /etc/fstab > "$TMP"


# Loop through block devices
for i in `find /sys/block/*/ -name dev`; do
  case "$i" in
    *loop*|*ram*)
      continue
      ;;
  esac


  DEVNAME=`echo "$i"| tr [!] [/] | awk 'BEGIN{FS="/"}{print $(NF-1)}'`
  DEVMAJOR="$(cat $i|cut -f1 -d:)"
  
  FSTYPE=""
  case "$CDROMS" in *"$DEVROOT/$DEVNAME"*) FSTYPE="auto" ;; esac


# First try blkid approach for FSTYPE for non floppy drives.
  [ "$DEVMAJOR" != 2 -a -z "$FSTYPE" ] && FSTYPE="$(fstype "/dev/$DEVNAME")"
  [ "$FSTYPE" == "linux_raid_member" ] && continue
  [ "$FSTYPE" == "LVM2_member" ] && continue
  if [ -z "$FSTYPE" ]; then


    case "$DEVMAJOR" in
      2|98)
        FSTYPE="auto"
        ;;
      3|8|11|22|33|34)
        case "$FDISKL" in *"$DEVROOT/$DEVNAME "*) FSTYPE="$(fstype $DEVROOT/$DEVNAME)" ;; esac
        case "$CDROMS" in *"$DEVROOT/$DEVNAME"*) FSTYPE="auto" ;; esac
        ;;
      179|9|259) # MMC or MD (software raid)
        FSTYPE="$(fstype $DEVROOT/$DEVNAME)"
        ;;
    esac
  fi


checkntfs() {
  if [ -f /usr/local/bin/ntfs-3g ]; then
      FSTYPE="ntfs-3g"
      OPTIONS="$OPTIONS"
  else
      FSTYPE="ntfs"
      OPTIONS="$OPTIONS,ro,umask=000"
  fi        
}
  [ -z "$FSTYPE" ] && continue
  MOUNTPOINT="/mnt/$DEVNAME"
  OPTIONS="auto,users,exec"
  case "$FSTYPE" in
    ntfs) checkntfs ;;
    vfat|msdos) OPTIONS="${OPTIONS},umask=000,iocharset=utf8" ;;
    ext2|ext3) OPTIONS="${OPTIONS},relatime" ;;
    swap) OPTIONS="defaults"; MOUNTPOINT="none" ;;
  esac
  if [ "$MOUNTPOINT" != "none" ]; then
    mkdir -p "/mnt/$DEVNAME" 2>/dev/null >/dev/null
  fi        
  grep -q "^$DEVROOT/$DEVNAME " $TMP ||
    printf "%-15s %-15s %-8s %-20s %-s\n" "$DEVROOT/$DEVNAME" "$MOUNTPOINT" "$FSTYPE" "$OPTIONS" "0 0 $ADDEDBY" >>"$TMP"
done




# Clean up
mv "$TMP" /etc/fstab
rm -f /var/run/rebuildfstab.pid
sync


# If another copy tried to run while we were running, rescan.
if [ -e /var/run/rebuildfstab.rescan ]; then
  rm -f /var/run/rebuildfstab.rescan
  exec $0 "$@"
fi

重启之后,看了下/usr/sbin/rebuildfstab和/etc/fstab,都回去了,看样子在线修改这两个文件不行,还是要折腾corepure64.gz,解包,修改,打包,太麻烦了。

option修改为auto之后,在/usr/sbin/rebuildfstab后面添加mount -a应该可以实现自动挂载。





回复

使用道具 举报

33#
 楼主| 发表于 2022-1-8 22:37:19 来自手机 | 只看该作者
本帖最后由 liuzhaoyzz 于 2022-1-8 22:41 编辑
my9823 发表于 2022-1-8 18:54
有个发行版是LFS,有英文文档如何从头到尾建立自己的linux,或许对你有帮助。


说到LFS,我玩过veket/puppy,他们似乎就是基于LFS弄的。
你说的是这个吗?

LFS──Linux from Scratch,就是一种从网上直接下载源码,从头编译Linux的安装方式。它不是发行版,只是一个菜谱,告诉你到哪里去买菜(下载源码),怎么把这些生东西( raw code) 作成符合自己口味的菜肴──个性化的Linux,不单单是个性的桌面。

我不想玩那么深入,我只是想基于tinycore基础上学习下定制linux玩玩罢了,tinycore有良好的组件、库基础、框架,在这个基础上、站在巨人的肩膀上,只是简单定制,折腾着玩玩。
回复

使用道具 举报

32#
 楼主| 发表于 2022-1-8 22:14:44 来自手机 | 只看该作者
my9823 发表于 2022-1-8 21:34
我看vi也头疼,有个叫nano的命令行编辑器,不错的,推荐。

我手机上看了下,nano好像在在tinycore的库里面http://tinycorelinux.net/12.x/x86/tcz/,晚点试试看。我之前也有看过到这个nano。
回复

使用道具 举报

31#
发表于 2022-1-8 21:34:11 来自手机 | 只看该作者
我看vi也头疼,有个叫nano的命令行编辑器,不错的,推荐。

点评

我手机上看了下,nano好像在在tinycore的库里面http://tinycorelinux.net/12.x/x86/tcz/,晚点试试看。我之前也有看过到这个nano。  详情 回复 发表于 2022-1-8 22:14
回复

使用道具 举报

30#
 楼主| 发表于 2022-1-8 19:26:57 来自手机 | 只看该作者
my9823 发表于 2022-1-8 18:52
你了测试下,插着多个U盘启动,看看/etc/fstab里有没有自动生成U盘的挂载,如果有就是启动脚本自动生成,没 ...

我试过了挂载多个硬盘,rebuildfstab只是在/etc/fstab中生成了对应的sda2,sdc3,sdd2这样子的目录,很多并没有自动挂载,就是iso所在的盘符被挂载了,能看到里面的文件,其他的都是空目录,需要自己挂载上去才行。
回复

使用道具 举报

29#
 楼主| 发表于 2022-1-8 19:24:11 来自手机 | 只看该作者
本帖最后由 liuzhaoyzz 于 2022-1-8 22:15 编辑
my9823 发表于 2022-1-8 18:41
普通用户只能读写/home/用户名目录和自己在/tmp目录产生的目录文件,root用户可以读写任意目录。sudo su


sudo passwd root
password:*******
su
password:*******

我试过了切换到root,问题是我不会用vi/vim之类的。
sed命令我会的,你说是要在terminal里面用sed去修改/etc/fstab?
不能在GUI里面修改/etc/fstab吗?我看了tinycore里面没有gksu/pkexec之类的。

我感觉还是在线修改/etc/fstab容易点。

晚点再试试。
回复

使用道具 举报

28#
发表于 2022-1-8 18:54:56 来自手机 | 只看该作者
有个发行版是LFS,有英文文档如何从头到尾建立自己的linux,或许对你有帮助。

点评

说到LFS,我玩过veket/puppy,他们似乎就是基于LFS弄的。  详情 回复 发表于 2022-1-8 22:37
回复

使用道具 举报

27#
发表于 2022-1-8 18:52:05 来自手机 | 只看该作者
你了测试下,插着多个U盘启动,看看/etc/fstab里有没有自动生成U盘的挂载,如果有就是启动脚本自动生成,没有可以看看veket的启动脚本是怎么做到的,就当是学习期批处理了。如果会写脚本,联系sed和awk两个命令,堪比甚至超越dos里的for命令(个人认为)。学学

点评

我试过了挂载多个硬盘,rebuildfstab只是在/etc/fstab中生成了对应的sda2,sdc3,sdd2这样子的目录,很多并没有自动挂载,就是iso所在的盘符被挂载了,能看到里面的文件,其他的都是空目录,需要自己挂载上去才行。  详情 回复 发表于 2022-1-8 19:26
回复

使用道具 举报

26#
发表于 2022-1-8 18:45:18 来自手机 | 只看该作者
你可以在硬盘上装个流行的发行版,解开包用硬盘上的root用户修改也可以,
回复

使用道具 举报

25#
发表于 2022-1-8 18:43:41 来自手机 | 只看该作者
试试用sudo su切换到root,前提是有sudo的权限。一般发行版的livecd都是mksquashfs打包,尝试用unsquashfs解开包看看,或者用file查看文件类型,系统里得有file命令。
回复

使用道具 举报

24#
发表于 2022-1-8 18:41:30 来自手机 | 只看该作者
普通用户只能读写/home/用户名目录和自己在/tmp目录产生的目录文件,root用户可以读写任意目录。sudo su

点评

sudo passwd root password:******* su password:******* vi /etc/fstab vi是打开文件后的命令模式状态。 您可以使用i或a命令进入可编辑状态。 按【ESC】键跳到命令模式,然后再按【:】冒号键,最后再按  详情 回复 发表于 2022-1-9 09:07
sudo passwd root password:******* su password:******* 我试过了切换到root,问题是我不会用vi/vim之类的。 sed命令我会的,你说是要在terminal里面用sed去修改/etc/fstab? 不能在GUI里面修改/etc/fstab  详情 回复 发表于 2022-1-8 19:24
回复

使用道具 举报

23#
 楼主| 发表于 2022-1-8 18:06:21 | 只看该作者
怎样修改/etc/fstab呢?总是提示没有权限。

linux64 位-2022-01-08-18-05-25.png (82.48 KB, 下载次数: 39)

linux64 位-2022-01-08-18-05-25.png

linux64 位-2022-01-08-18-05-46.png (104.77 KB, 下载次数: 54)

linux64 位-2022-01-08-18-05-46.png
回复

使用道具 举报

22#
 楼主| 发表于 2022-1-8 13:04:49 | 只看该作者
本帖最后由 liuzhaoyzz 于 2022-1-8 13:14 编辑

哦,FAT32分区文件夹乱码问题,搞定了!感谢大家!
tc@box:~$ sudo mount -t vfat -o iocharset=utf8 /dev/sdd2 /mnt/sdd2
不需要codepage=uft8参数,只需要一个iocharset=utf8参数即可。

剩下的问题是写个脚本让这些分区自动挂载。
回复

使用道具 举报

21#
 楼主| 发表于 2022-1-8 11:39:17 | 只看该作者
本帖最后由 liuzhaoyzz 于 2022-1-8 11:48 编辑

http://www.jinbuguo.com/man/mount.html
看了金步国的帖子,

vfat部分参数:

       codepage=value
              在FAT系列文件系统上,"8.3"格式的短文件名以特定的代码页进行存储(可以通过chcp命令查看),
              但长文件名却以Unicode进行存储。此选项的作用就是指定将长文件名转换为短文件名时使用的代码页。
              默认使用内核的FAT_DEFAULT_CODEPAGE值。简体中文一般使用936代码页(codepage=936)。

       iocharset=value
              指定默认以什么字符集显示文件名,必须与系统的locale设置保持一致。默认使用内核的FAT_DEFAULT_IOCHARSET值。
              例如在"en_US.UTF-8"的情况下应该使用"utf8"。
              [注意]应谨慎使用"iocharset=utf8",它会导致FAT文件系统上的文件名变得大小写敏感。


看了下$FAT_DEFAULT_CODEPAGE和$FAT_DEFAULT_IOCHARSET都是空值!
tc@box:~$ echo $FAT_DEFAULT_CODEPAGE

tc@box:~$ echo $FAT_DEFAULT_IOCHARSET


赋值:
tc@box:~$ FAT_DEFAULT_CODEPAGE=936
tc@box:~$ echo $FAT_DEFAULT_CODEPAGE
936


tc@box:~$ FAT_DEFAULT_IOCHARSET=cp936
tc@box:~$ echo $FAT_DEFAULT_IOCHARSET
cp936


挂载fat32分区试试看:

sudo mount -t vfat /dev/sdd2 /mnt/sdd2
挂载之后FAT32分区中文文件名和文件夹还是乱码。

sudo umount -l /mnt/sdd2
卸载之后改变量,重新挂载

export FAT_DEFAULT_CODEPAGE=utf8
export FAT_DEFAULT_IOCHARSET=utf8
tc@box:~$ sudo mount -t vfat /dev/sdd2 /mnt/sdd2

fat32分区还是乱码。


/home/tc/.ashrc
在这里里面添加:
#export FAT_DEFAULT_CODEPAGE=936
#export FAT_DEFAULT_IOCHARSET=cp936

export FAT_DEFAULT_CODEPAGE=utf8
export FAT_DEFAULT_IOCHARSET=utf8
重启,看了下参数是utf8
tc@box:~$ echo $FAT_DEFAULT_CODEPAGE
utf8
tc@box:~$ echo $FAT_DEFAULT_IOCHARSET
utf8
重新挂载FAT32分区还是乱码。

不带参数运行mout,看了下,codepage=437,iocharset=iso8859-1还是不对。
tc@box:~$ mount

/dev/sdc3 on /mnt/sdc3 type vfat (rw,relatime,fmask=0000,dmask=0000,allow_utime=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro)

打开# /etc/fstab
proc            /proc        proc    defaults          0       0
sysfs           /sys         sysfs   defaults          0       0
devpts          /dev/pts     devpts  defaults          0       0
tmpfs           /dev/shm     tmpfs   defaults          0       0
/dev/zram0  swap         swap    defaults,noauto   0       0
/dev/sda2       /mnt/sda2       ntfs     noauto,users,exec,ro,umask=000 0 0 # Added by TC
/dev/sdc3       /mnt/sdc3       vfat     noauto,users,exec,umask=000 0 0 # Added by TC
/dev/sdd2       /mnt/sdd2       vfat     noauto,users,exec,umask=000 0 0 # Added by TC
/dev/sr0        /mnt/sr0        auto     noauto,users,exec    0 0 # Added by TC
这里面没有codepage=437,iocharset=iso8859-1,那么这两个参数是在哪里设置的?
回复

使用道具 举报

20#
 楼主| 发表于 2022-1-8 11:22:41 | 只看该作者
my9823 发表于 2022-1-8 06:00
不加参数运行mount应该可以查看挂载的系统和目录以及参数,有些是系统必须的挂载。可以看看那些完整的大型 ...

不加参数mount运行,我看了下,sdc3,fat32分区挂载的编码codepage=437,iocharset=iso8859-1似乎不对。
/dev/sdc3 on /mnt/sdc3 type vfat (rw,relatime,fmask=0000,dmask=0000,allow_utime=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro)

https://blog.csdn.net/linyangspring/article/details/50245077
看了下网上的帖子,
注意:有时候挂载时,中文的文件名和目录名会出现乱码,为了避免这种情况可以指定字符集,命令如下
[root@wgods ~]# mount -t vfat -o iocharset=utf8,codepage=uft8 /dev/sdb1 /mnt/usb
[root@wgods ~]# mount -t vfat -o iocharset=cp936,codepage=936 /dev/sdb1 /mnt/usb
注意:cp936是指简体中文,cp950是指繁体中文。

我试了下,xfe-sakura终端似乎不支持iocharset=cp936,codepage=936这样子的参数,
BusyBox v1.33.0 (2021-01-17 14:53:59 UTC) multi-call binary.tc@box:~$ sudo mount -t vfat -o iocharset=cp936,codepage=936 /dev/sdd2 /mnt/sdd2
mount: mounting /dev/sdd2 on /mnt/sdd2 failed: Invalid argument
tc@box:~$ sudo mount -t vfat -o iocharset=utf8,codepage=utf8 /dev/sdd2 /mnt/sdd2
mount: mounting /dev/sdd2 on /mnt/sdd2 failed: Invalid argument

安装了个lxterminal,结果一样。


回复

使用道具 举报

19#
发表于 2022-1-8 06:00:38 来自手机 | 只看该作者
不加参数运行mount应该可以查看挂载的系统和目录以及参数,有些是系统必须的挂载。可以看看那些完整的大型的发行版的挂载参数。

点评

不加参数mount运行,我看了下,sdc3,fat32分区挂载的编码codepage=437,iocharset=iso8859-1似乎不对。 /dev/sdc3 on /mnt/sdc3 type vfat (rw,relatime,fmask=0000,dmask=0000,allow_utime=0022,codepage=437,ioch  详情 回复 发表于 2022-1-8 11:22
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2025-12-12 04:38

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表