无忧启动论坛
标题: tinycore12.0x64文件管理器乱码,可有高手知道怎么解决啊? [打印本页]
作者: liuzhaoyzz 时间: 2022-1-6 19:56
标题: tinycore12.0x64文件管理器乱码,可有高手知道怎么解决啊?
本帖最后由 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吗?改过之后感觉不通用啊?不明白。。。
作者: liuzhaoyzz 时间: 2022-1-6 19:58
本帖最后由 liuzhaoyzz 于 2022-1-9 09:15 编辑
icewm+wbar,看起来还不错哟。
中文化的界面:
作者: liuzhaoyzz 时间: 2022-1-6 20:12
本帖最后由 liuzhaoyzz 于 2022-1-6 20:22 编辑
感觉tinycore对于中文支持比较差劲,不好折腾。不报多少希望能够解决问题。
你要问我想要干啥,我就是瞎折腾~~~
作者: liuzhaoyzz 时间: 2022-1-6 20:25
本帖最后由 liuzhaoyzz 于 2022-1-6 20:26 编辑
http://forum.tinycorelinux.net/index.php
tinycore官方论坛注册之后,帐号已通过邮箱激活,可就是无法发帖,翻墙也不行,我太难了~~~
给webmaster@forum.tinycorelinux.net发个email,直接被退回了,是被墙了吗?
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator at webmaster@forum.tinycorelinux.net to inform them of the time this error occurred, and the actions you performed just before this error.
More information about this error may be available in the server error log.
可有人知道是怎么回事啊?
作者: 邪恶海盗 时间: 2022-1-6 20:38
过于小众的发行版,可能是开发进度没跟上,你用旧点的版本试试???
作者: wintoflash 时间: 2022-1-6 20:38
研究这些阉割的玩意纯属浪费时间,指不定哪些你需要的功能就被阉割了。
以前闲得蛋疼的时候弄的单文件tinycore,没有任何卵用:
作者: 邪恶海盗 时间: 2022-1-6 20:39
我要举报你翻墙,听说要罚款6000,赶紧贿赂我...
作者: liuzhaoyzz 时间: 2022-1-6 20:50
http://mirrors.163.com/tinycorelinux/12.x/x86_64/release/
Index of /tinycorelinux/12.x/x86_64/release/
../
distribution_files/ 17-Feb-2021 18:20 -
src/ 18-Jan-2021 00:46 -
CorePure64-12.0.iso 17-Feb-2021 19:14 17M
CorePure64-12.0.iso.md5.txt 17-Feb-2021 19:14 54
CorePure64-12.0.iso.zsync 17-Feb-2021 19:14 59K
CorePure64-current.iso 17-Feb-2021 19:14 17M
TinyCorePure64-12.0.iso 18-Feb-2021 17:35 29M
TinyCorePure64-12.0.iso.md5.txt 18-Feb-2021 17:35 58
TinyCorePure64-12.0.iso.zsync 18-Feb-2021 17:35 102K
TinyCorePure64-current.iso 18-Feb-2021 17:35 29M
还行哦,开发者还是在更新的。
作者: liuzhaoyzz 时间: 2022-1-6 20:51
本帖最后由 liuzhaoyzz 于 2022-1-6 21:02 编辑
我本来就是瞎折腾着玩罢了,哈哈。需要的功能被阉割了,可能是与某些库冲突了吧?
你的中文文件夹是怎么弄出来的?
用的文件管理器是什么?自己编译的吗? tcz库里面,似乎就没有什么看得上的文件管理器。
fluff文件管理器,支持中文。×
naultilus×
rox-file×
xfe√
thunar×
pcmanfm×
worker,似乎不支持中文?×
dophin×
作者: 邪恶海盗 时间: 2022-1-6 21:02
我说的是语言包等等这些东西...
作者: liuzhaoyzz 时间: 2022-1-6 21:07
本帖最后由 liuzhaoyzz 于 2022-1-6 21:12 编辑
有可能,Chinese (Simplified)中文语言包是aswjh在2019-09-08翻译的,完成率100%。
https://translations.launchpad.net/tctools/trunk/+pots/tinycore
https://translations.launchpad.net/tctools
TinyCorePure64-12.0.iso 18-Feb-2021 17:35 29M
发行于2021年。
但是按道理上来讲,语言包,不会影响文件管理器里面文件夹显示的啊,语言包只会影响操作系统的下拉菜单、按钮、标题、右击菜单这样子固定的东西的。把千百万个不同的中文文件夹名字“翻译”一遍,怎么可能?这与翻译汉化没有什么关系吧。
感觉上来说,应该还是哪里有问题。
那个帖子说ntfs-3G还需要locale=zh_CN.UTF-8,奇怪得很。
看下以后更新linux5.16的内核之后会不会好点。
作者: liuzhaoyzz 时间: 2022-1-7 07:05
Sashank999
TCL x64有rpm包管理器可用,可以从Apps安装。
Linux还没有正式统一。Linux可以定制。每个人都希望自己的风格有所改变。这就是为什么我们有这么多发行版和包管理器。
如果你想要debian软件包。deb文件,使用dCore。dCore与TCL(几乎)相同,但TCL使用。tcz和dCore使用. sce .连我一开始都不知道dCore。我现在正在尝试在dCore x64上设置wifi。
http://forum.tinycorelinux.net/index.php/topic,24959.0.html
dcore stretch与debian9 repo配合使用,buster与debian10配合使用,而bionic和focal则与ubuntu配合使用。Ubuntu是一个臃肿的软件,所以debian风格是一个不错的选择。拉伸比巴斯特轻,所以拉伸是我个人的选择。
你想要dcore还是dcoreplus是个人选择。dcoreplus附带gui和无线支持,而dcore最初要轻得多。
做个笔记。
作者: 邪恶海盗 时间: 2022-1-7 09:13
我是外行,瞎掰的,你自己研究...
作者: my9823 时间: 2022-1-7 22:18
mount 手动mount -t ntfs -o 选项 你的分区 挂载目录
作者: my9823 时间: 2022-1-7 22:19
或者mount -t ntfs-3g -o 选项 分区 挂载目录
作者: liuzhaoyzz 时间: 2022-1-7 22:59
本帖最后由 liuzhaoyzz 于 2022-1-8 08:41 编辑
高手啊,一条命令搞定了NTFS分区乱码的问题!
sudo mount -t ntfs-3g /dev/sda2 /mnt/sda2
怎么这个NTFS分区不会自动挂载呢?奇怪了,要怎样让他自动挂载呢?那么多分区,需要遍历其 名字才行啊。
感觉tinycore的wbar上面提供的mounttool有问题。
可是为啥还有个FAT32分区目录和文件名还是乱码啊?
sudo mount -t vfat /dev/sdd2 /mnt/sdd2
挂载vfat类型对吗?
作者: my9823 时间: 2022-1-8 05:57
其实所有的发行版异曲同工,就是linux内核加上一堆应用(如窗口管理器,文件管理器啊自己的包管理器啊……),用一种发行版,其他的稍微熟悉下包管理器差不多就行了。linux强大在于命令行,可以理解成dos加强版,先这么理解吧,虽然不对。可以理解在dos界面就可以运行多任务的系统,图形界面只是为了简单化操作,没有图形界面照样可以运行各种程序,只要依赖满足。/etc/fstable可以看成mount按照这个文件指定的选项挂载。至于中文应该是mount有个-o选项,如mount -t 文件类型 -o ro /dev/sda2 /tmp/123 只读挂载第二个分区。选项建议看看金步国的翻译,如果英文好可以看看系统自带的man或者info的帮助。
作者: my9823 时间: 2022-1-8 05:58
http://www.jinbuguo.com/man/mount.html
作者: my9823 时间: 2022-1-8 06:00
不加参数运行mount应该可以查看挂载的系统和目录以及参数,有些是系统必须的挂载。可以看看那些完整的大型的发行版的挂载参数。
作者: liuzhaoyzz 时间: 2022-1-8 11:22
不加参数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,结果一样。
作者: liuzhaoyzz 时间: 2022-1-8 11:39
本帖最后由 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,那么这两个参数是在哪里设置的?
作者: liuzhaoyzz 时间: 2022-1-8 13:04
本帖最后由 liuzhaoyzz 于 2022-1-8 13:14 编辑
哦,FAT32分区文件夹乱码问题,搞定了!感谢大家!
tc@box:~$ sudo mount -t vfat -o iocharset=utf8 /dev/sdd2 /mnt/sdd2
不需要codepage=uft8参数,只需要一个iocharset=utf8参数即可。
剩下的问题是写个脚本让这些分区自动挂载。
作者: liuzhaoyzz 时间: 2022-1-8 18:06
怎样修改/etc/fstab呢?总是提示没有权限。
-
linux64 位-2022-01-08-18-05-25.png
(82.48 KB, 下载次数: 37)
-
linux64 位-2022-01-08-18-05-46.png
(104.77 KB, 下载次数: 52)
作者: my9823 时间: 2022-1-8 18:41
普通用户只能读写/home/用户名目录和自己在/tmp目录产生的目录文件,root用户可以读写任意目录。sudo su
作者: my9823 时间: 2022-1-8 18:43
试试用sudo su切换到root,前提是有sudo的权限。一般发行版的livecd都是mksquashfs打包,尝试用unsquashfs解开包看看,或者用file查看文件类型,系统里得有file命令。
作者: my9823 时间: 2022-1-8 18:45
你可以在硬盘上装个流行的发行版,解开包用硬盘上的root用户修改也可以,
作者: my9823 时间: 2022-1-8 18:52
你了测试下,插着多个U盘启动,看看/etc/fstab里有没有自动生成U盘的挂载,如果有就是启动脚本自动生成,没有可以看看veket的启动脚本是怎么做到的,就当是学习期批处理了。如果会写脚本,联系sed和awk两个命令,堪比甚至超越dos里的for命令(个人认为)。学学
作者: my9823 时间: 2022-1-8 18:54
有个发行版是LFS,有英文文档如何从头到尾建立自己的linux,或许对你有帮助。
作者: liuzhaoyzz 时间: 2022-1-8 19:24
本帖最后由 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容易点。
晚点再试试。
作者: liuzhaoyzz 时间: 2022-1-8 19:26
my9823 发表于 2022-1-8 18:52
你了测试下,插着多个U盘启动,看看/etc/fstab里有没有自动生成U盘的挂载,如果有就是启动脚本自动生成,没 ...
我试过了挂载多个硬盘,rebuildfstab只是在/etc/fstab中生成了对应的sda2,sdc3,sdd2这样子的目录,很多并没有自动挂载,就是iso所在的盘符被挂载了,能看到里面的文件,其他的都是空目录,需要自己挂载上去才行。
作者: my9823 时间: 2022-1-8 21:34
我看vi也头疼,有个叫nano的命令行编辑器,不错的,推荐。
作者: liuzhaoyzz 时间: 2022-1-8 22:14
my9823 发表于 2022-1-8 21:34
我看vi也头疼,有个叫nano的命令行编辑器,不错的,推荐。
我手机上看了下,nano好像在在tinycore的库里面http://tinycorelinux.net/12.x/x86/tcz/,晚点试试看。我之前也有看过到这个nano。
作者: liuzhaoyzz 时间: 2022-1-8 22:37
本帖最后由 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有良好的组件、库基础、框架,在这个基础上、站在巨人的肩膀上,只是简单定制,折腾着玩玩。
作者: liuzhaoyzz 时间: 2022-1-9 09:07
本帖最后由 liuzhaoyzz 于 2022-1-9 12:41 编辑
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应该可以实现自动挂载。
作者: liuzhaoyzz 时间: 2022-1-9 09:09
本帖最后由 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 ;;
不知道哪里语法问题,出错了。。。
作者: my9823 时间: 2022-1-9 11:59
tinycore 的tcz看了下是mksquashfs压缩的吧?反正在windows下用7z能打开,有个tcz叫usbautomount,包里有个udev的规则文件和脚本,你可以修改下mount的-o参数拿来用就行了。
作者: my9823 时间: 2022-1-9 12:09
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}"
}
作者: my9823 时间: 2022-1-9 12:10
建议你了解下udev这个东西有帮助。
作者: liuzhaoyzz 时间: 2022-1-9 12:36
本帖最后由 liuzhaoyzz 于 2022-1-9 12:50 编辑
udev我之前看过的。wintoflash介绍过。
tinycore默认的不是用udev,用的就是前面/etc/fstab里面那样子的,/dev/sda2这样子的。
用uuid啥的,应该也行(我没有尝试过),无论是用/dev/sda2这样子的,还是udev,应该都可以,tinycore的脚本默认用的是/dev/sda2这样子的,能够遍历出所有的dev,现在问题不在这里,在于完善一个脚本,让他自启动,启动后自动加载,至于用什么方式,不是重点。
tinycore的脚本都是用的noauto模式不自动挂载(可能是为了加快启动时间?是否挂载的选择留给用户?),而且他挂载的时候,locale编码不适用于中文系统,所以要修改,调整。
晚点我去tinycore官方论坛看看。
作者: liuzhaoyzz 时间: 2022-1-9 12:46
本帖最后由 liuzhaoyzz 于 2022-1-14 21:39 编辑
我不太想从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这样子的目录了,设备没有挂载上去,改改应该能用,但我不太会,需要摸索。
作者: liuzhaoyzz 时间: 2022-1-13 22:52
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
作者: liuzhaoyzz 时间: 2022-1-13 22:55
本帖最后由 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" ;;
作者: liuzhaoyzz 时间: 2022-1-14 21:43
本帖最后由 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
作者: my9823 时间: 2022-1-15 12:25
/etc/tc-config中有一段判断启动内核参数有没有NOFSTAB,有跳过,没有就运行rebuildfstab并复制udev规则/tmp/98-tc.rules到/etc/udev/rule.d目录。
作者: my9823 时间: 2022-1-15 12:40
rebuildfstab中有一句是grep -q "^$DEVROOT/$DEVNAME"那行,我猜是如果fstab中有设备的挂载参数略过,没有最后追加一行。
作者: my9823 时间: 2022-1-15 12:43
你可以尝试用awk获取关于fat32的分区的那行的挂载参数,有没有utf8,没有用就用sed的-i直接修改替换
作者: liuzhaoyzz 时间: 2022-1-15 14:11
晚点再研究下
| 欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) |
Powered by Discuz! X3.3 |