请教在U盘剪裁的Linux中,文件"File is read only"的问题

dos5gw 2010-10-21 04:20:15
CF卡上剪裁了一个2.6内核, busybox构建的根文件系统, CF卡插在工控机上, 开机正常进入系统控制台,
但是用vi 修改某文件时(比如/etc/profile),不能以:wq退出时,提示"file is read only",

在此剪裁的系统中, ls-l 查看文件属性, 是775, 并且whoami查看是自己是root,
为什么所有的文本还会read-only ?

附上我建根文件系统时的配置文件:


(1)/etc/inittab
init进程根据/etc/inittab文件来创建其他子进程,比如调用脚本文件配置ip地址、挂接其他文件系统,最后启动shell等,busybox源码下面

的“examples/inittab”文件,内容如下:

# /etc/inittab
# example
# id:runlevel:action:process
::sysinit:/etc/init.d/rcS
console::askfirst:-/bin/sh
#::respawn:/sbin/getty 38400 tty1
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r


::sysinit:/etc/init.d/rcS
::respawn:-/bin/sh
tty2::askfirst:-/bin/sh
::ctrlaltdel:/bin/umount -a -r

改变权限 chmod 644 etc/inittab, 注意, 第二个例子中, 要确认dev/tty2节点存在.

(2)etc/init.d/rcS
这有点类似于Windows系统中的Autobat自动批处理文件,内容如下:
#! /bin/sh
/bin/mount -a

改变权限 chmod 755 etc/init.d/rcS

(3)/etc/fstab,对应mount -a,内容如下:
#device mount-point type options dump fsck order
proc /proc proc defaults 0 0

或者:
#device mount-point type options dump fsck order
proc /proc proc defaults 0 0
none /tmp ramfs defaults 0 0
sysfs /sys sysfs defaults 0 0
mdev /dev ramfs defaults 0 0

(4)/etc/passwd和etc/group,内容如下:
#/etc/passwd
root::0:0:root:/root:/bin/sh
daemon::1:1:daemon:/usr/sbin:/bin/sh
bin::2:2:bin:/bin:/bin/sh
sys::3:3:sys:/dev:/bin/sh

#etc/group
root::0:root
daemon::1:
bin::2:
sys::3:
tty::5:

(5)/etc/profile,内容如下:
echo "Processing /etc/profile... "
USER="id -un"
LOGNAME=$USER
PS1='[\u@\h=W]#'
PATH=$PATH
HOSTNAME='/bin/hostname'
export USER LOGNAME PS1 PATH



本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/dos5gw/archive/2010/10/20/5955090.aspx


...全文
500 点赞 收藏 11
写回复
11 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
ren1834 2011-02-18
::sysinit:/etc/init.d/rcS

bash: ::sysinit:/etc/init.d/rcS: No such file or directory

回复
Linux-Torvalds 2010-10-22
/etc/fstab载入/是否为ro的格式?
回复
dos5gw 2010-10-22
http://blog.csdn.net/dos5gw/archive/2010/10/20/5955090.aspx
里面总结了一下
回复
dos5gw 2010-10-22
[Quote=引用 8 楼 deep_pro 的回复:]

那个默认为空
是给很久之前那些不能给内核传递参数的bootloader用的,直接把启动参数塞进内核镜像
[/Quote]
额! 3ks, 结贴
回复
deep_pro 2010-10-22
那个默认为空
是给很久之前那些不能给内核传递参数的bootloader用的,直接把启动参数塞进内核镜像
回复
dos5gw 2010-10-22
[Quote=引用 6 楼 deep_pro 的回复:]

当然是bootloader
你的似乎是append noinitrd root=/dev/sda1 init=/linuxrc ide=nodma rw
[/Quote]
那么还想请教一下deep_pro,
执行make menuconfig进入Linux Kernel Configuration菜单,
Boot options -> Default kernel command string的值是"noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0,115200 "
请问内核编译选项内的"Default kernel command string"有什么用途? 是不是一定要与bootloader中的参数一致 ?
回复
deep_pro 2010-10-22
当然是bootloader
你的似乎是append noinitrd root=/dev/sda1 init=/linuxrc ide=nodma rw
回复
dos5gw 2010-10-22
[Quote=引用 4 楼 deep_pro 的回复:]

内核启动选项里加入 rw
[/Quote]

请问是在编译内核的make menuconfig中设置启动参数?
还是在bootloader中设置启动参数?
回复
deep_pro 2010-10-22
内核启动选项里加入 rw
回复
cr4315 2010-10-22
这个问题我也经常碰到,经常对u盘进行读写,或者多次直接拔插就出现这种情况,可能是系统对u盘写保护了
回复
dos5gw 2010-10-22
[Quote=引用 1 楼 linwhwylb 的回复:]

/etc/fstab载入/是否为ro的格式?
[/Quote]

fstab只有一行:

#device mount-point type options dump fsck order
proc /proc proc defaults 0 0

回复
相关推荐
发帖
Linux_Kernel
创建于2007-08-27

4156

社区成员

Linux/Unix社区 内核源代码研究区
申请成为版主
帖子事件
创建了帖子
2010-10-21 04:20
社区公告
暂无公告