nicereader轻linux中文社区

请问下怎样在tinycore启动的时候自动加载所有的分区?特别是FAT32/NTFS分区?
我用的是TinyCorePure64-12.0.iso,http://www.tinycorelinux.net/12.x/x86_64/release/
54bc11152740fe4b0148521fd5f39639 CorePure64-12.0.iso
我在app中下载了getlocale.tcz,并且用sudo getlocale.sh设置了locale为zh_CN.UTF-8,grub4dos/grub2启动参数里面也添加了 lang=zh_CN.UTF-8
my grub2 menu:
menuentry “/TinyCorePure64-12.0/boot/vmlinuz64” “/TinyCorePure64-12.0/boot/vmlinuz64” {
search —no-floppy —set —file $2;probe -u ($root) -s uuid;echo $uuid
linux $2 quiet loglevel=3 tce=UUID=”$uuid”/TinyCorePure64-12.0/cde/ showapps vga=791 lang=zh_CN.UTF-8 tz=GMT-8
initrd /TinyCorePure64-12.0/boot/corepure64.gz
}

但是启动的时候FAT32/NTFS分区不会被自动挂载,如果用wbar里面的mounttool挂载,会出现乱码的现象。
我是用这样子的命令搞定NTFS/FAT32文件和文件夹乱码的问题的:
sudo mount -t ntfs-3g /dev/sda2 /mnt/sda2
sudo mount -t vfat -o iocharset=utf8 /dev/sdd2 /mnt/sdd2

想请问下,怎样让我硬盘里面所有的FAT32/NTFS分区自动挂载?我已经安装了ntfs-3g.tcz。

sudo passwd root
password:*
su
password:*

vi /etc/fstab
vi是打开文件后的命令模式状态。 可以使用i或a命令进入可编辑状态。
按【ESC】键跳到命令模式,然后再按【:】冒号键,最后再按【wq】,即可保存退出vi的编辑状态;如果是不想保持直接按下【:】冒号键加【q!】键,就能直接退出。

/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应该可以实现自动挂载。

尝试写个脚本让分区自动挂载:
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应该也可以。

但是怎样改?我不会。在此先行谢过。
最好能在iso之外的某个脚本修改后,让他能够自动加载,自动挂载分区。


liuzhaoyzz 于 2022-01-13 02:07 修改
18 回复
wjh
#1 wjh • 2022-01-13 14:27

/home/tc/.config/openbox/autostart里可以加你自己mount分区的脚本,增加后要备份一下,保存在mydata.tgz.或者你直接修改mydata.tgz.

另外我在tce下放了boot-config.sh和startup.sh,里面也可以添加启动时执行的命令

liuzhaoyzz
#2 liuzhaoyzz • 2022-01-15 02:05

有个问题想请教下阁下,我把原版tinycore放在FAT32分区,tinycore所在的分区会被系统自动挂载,这样子会导致FAT32所在的分区出现乱码现象,而这个分区无法卸载,当然也就不能自动挂载,但是你定做的版本就可以显示中文,请问下你是怎么做到的?能否写一篇详细点的定制教程?主要是分区挂载这一块。我想基于官方tinycore12学习定做下tinycore,我想用icewm。

wjh
#3 wjh • 2022-01-15 02:54

解决分区编码的问题,是修改了rebuildfstab,ntfs-3g和vfat都增加了参数iocharset=utf8,用cp936也是可以的,不过感觉近年来utf8适应性更好.用diff -u与官方脚本比较一下就一目了然了

/etc/init.d/tc-config是启动的源头,/etc/skel/.profile和xlibs.tcz里的.xsession,都是可以按自己需求修改的地方

wjh
#4 wjh • 2022-01-15 03:01

要修改系统脚本,必须把iso里的corepure64.gz解压出来:

cd /xxx/rootfs
zcat corepure64.gz | cpio -i -H newc -d

修改完成后重新打包

cd /xxx/rootfs
find | cpio -o -H newc | busybox gzip -2 > /tmp/corepure64.gz

tinycorelinux官方有wiki,可以找来看看

liuzhaoyzz
#5 liuzhaoyzz • 2022-01-15 07:40

非常感谢答疑!我之前也是想着要改这个,问题是tinycore一更新,就又要修改,我觉得有点麻烦,我觉得这个utf8国际化支持应该是官方的一个bug,他们应该改好这个,而不是让用户侧修改。

liuzhaoyzz
#6 liuzhaoyzz • 2022-01-15 07:43

另外我用fcitx,在xfe文件管理器中,给文件或者文件夹改名字,总是无法改名字,但是在geany,liboffice等其他软件中可以正常中文打字,你用的是什么输入法?fcitx还是小小输入法?

liuzhaoyzz
#7 liuzhaoyzz • 2022-01-15 11:02

fcitx或者小小输入法,怎样让他开机启动?默认英文输入怎么设置?

wjh
#8 wjh • 2022-01-15 12:52

https://forum.ubuntu.org.cn/viewtopic.php?t=350396
在 “编辑/选项/字体”中选择一个中文字体,然后重启xfe
我用的fcitx4,试了下显示修改中文名称都正常

liuzhaoyzz
#9 liuzhaoyzz • 2022-01-16 00:01

好像不是字体的问题,字体显示正常,换了也不行,感觉还是分区挂载的问题。晚点再研究下。这个问题也不是每次都出现,有时候可以,有时候不行,很奇怪。

liuzhaoyzz
#10 liuzhaoyzz • 2022-01-17 12:07

解决分区编码的问题,是修改了rebuildfstab,ntfs-3g和vfat都增加了参数iocharset=utf8,用cp936也是可以的,不过感觉近年来utf8适应性更好.用diff -u与官方脚本比较一下就一目了然了

我对比了你的rebuildfstab,和官方的一字不差啊,搞不清你这个iocharset=utf8在哪里设置的?

liuzhaoyzz
#11 liuzhaoyzz • 2022-01-17 12:15
liuzhaoyzz
#12 liuzhaoyzz • 2022-01-17 12:15
liuzhaoyzz
#13 liuzhaoyzz • 2022-01-18 00:13

想请问下,geany,firefox汉化你是自己做的,还是下载的别人的汉化包啊?我看官方没有geany和firafox的locale啊?

liuzhaoyzz
#14 liuzhaoyzz • 2022-01-18 00:17

tinycorelinux官方有wiki,可以找来看看

tinycore的wiki根本进不去啊?要翻墙吗?

wjh
#15 wjh • 2022-01-18 12:12

rebuildfstab进系统去看看。firefox是从官方下载的,geany是从源码编译的

wjh
#16 wjh • 2022-01-18 12:15

我也很久没去看wiki了,可能没维护了,可以到他们的论坛去问问,里面的的人是很热情的

liuzhaoyzz
#17 liuzhaoyzz • 2022-02-03 01:27
能否写个详尽点的制作教程啊?主要就是怎样自动挂载分区这块,看不明白你是怎么实现的。越详细越好。
wjh
#18 wjh • 2022-02-06 02:01

我修改的就是这几行:

+  if [ -n "`which ntfs-3g`" ]; then
       FSTYPE="ntfs-3g"
+      OPTIONS="$OPTIONS",rw,iocharset=utf8


+    vfat|msdos) OPTIONS="${OPTIONS},rw,iocharset=utf8,umask=000" ;;

用虚拟机进我的ISO,取原版rebuildfstab来比较一下:

diff -u 原版rebuildfstab /usr/sbin/rebuildfstab > r.diff
需要 登录 后方可回复, 如果你还没有账号你可以 注册 一个帐号。