一步一步制作yaffs/yaffs2根文件系统(六)---完善命令行提示符

紧接上一节: http://blog.csdn.net/mybelief321/article/details/10027917

根据第五节可以看出,制作的根文件系统还不完善,首先那个命令行提示符就巨难看,表面功夫都没有做好,惭愧!在这里,我不再用自己移植的bootloader引导内核、根文件系统,而是用开发板自带的supervivi和内核,反正这样子省事!先简单介绍一下利用supervivi下载的方法,,之前的dnw、minicom设置详细解说就不说了,这也不是重点,我感觉既然都开始制作根文件系统了,这些都得接触到了吧。

1、 将咱们要下载的supervivi、内核镜像、上一节制作好的yaffs2文件系统存放在dnw所在文件夹里,注意,dnw的下载地址要设成0x3000 0000。

2、打开串口终端minicom,然后nor flash启动,可以看到superviv启动

一步一步制作yaffs/yaffs2根文件系统(六)---完善命令行提示符_第1张图片

3、下载supervivi

在supervivi内输入:v ,然后另一终端执行命令:sudo ./dnw supervivi-128M.bin 下载supervivi到nand flash分区

一步一步制作yaffs/yaffs2根文件系统(六)---完善命令行提示符_第2张图片

一步一步制作yaffs/yaffs2根文件系统(六)---完善命令行提示符_第3张图片

4、下载内核

在supervivi内输入:k,然后另一终端执行命令:sudo ./dnw zImage_X35.bin

一步一步制作yaffs/yaffs2根文件系统(六)---完善命令行提示符_第4张图片

一步一步制作yaffs/yaffs2根文件系统(六)---完善命令行提示符_第5张图片

5、下载咱们制作好的镜像文件

在supervivi内输入:y,然后另一终端执行命令:

一步一步制作yaffs/yaffs2根文件系统(六)---完善命令行提示符_第6张图片


6、在supervivi中输入:b,启动开发板,或者关掉电源,从nand flash启动,可以看到咱们制作的根文件系统。

一步一步制作yaffs/yaffs2根文件系统(六)---完善命令行提示符_第7张图片

真难看啊!

7、下面咱们就接着完善,首先就是把那个命令好弄好!我突然有个想法,我来回烧什么,直接在这个开发板系统上先做实验就行了啊,实验成功后再在我的电脑中将这些文件内容拷贝过去,对,就这么办了!接下来就是怎么修改了,于是我谷歌了“Linux下命令提示符”,原来是和/etc/profile有关,好吧,先创建它。

在系统中执行命令:cd etc 进入etc目录

一步一步制作yaffs/yaffs2根文件系统(六)---完善命令行提示符_第8张图片

执行命令:vi profile,添加profile文件。

在该profile文件里加了一句:PS1='[root@wws\W]#'


编写保存后,再执行命令:source /etc/profile ,“成功”了


8、成功个啥啊,谁会用这个wws的名字啊!再说,和书上比差得远呢。我还是直接把书上的贴出来。

在/etc 下执行命令:vi profile 修改此文件,将原来的内容全部删除,然后,放入以下代码:

ulimit -S -c 0 > /dev/null 2>&1
USER="`id -un`"
LOGNAME=$USER
PS1='[\u@\h\W]# '
PATH=$PATH
HOSTNAME=`/bin/hostname`
export USER LOGNAME PS1 PATH


一步一步制作yaffs/yaffs2根文件系统(六)---完善命令行提示符_第9张图片


ulimit -S -c 0 > /dev/null 2>&1 //首先 ulimit -S -c 0 是ulimit命令,-c选项:设置core文件的最大值,单位:blocks,就是段错误时产生的core文件,后面加文件大小。后面加上0,就是设置段错误不产生core文件。然后 > /dev/null 的意思就是ulimit输出的结果保存到/dev/null文件,而这个文件是系统的一个文件,它不保存任何信息。所以如果有不想的输出数据,重定向到这个文件就可以了,这时,标准输出(文件句柄1)是指向这个文件。最后,2>&1 的意思就是标准错误(文件名柄)复制文件句柄为1的地方,也就是/dev/null。所以,这句的意思,就是设置core文件大小为0,然后输出信息以及错误信息都不输出在>显示器上。

USER="`id -un`" //id-un与whoami命令有相同的功能,获取当前的用户名。
LOGNAME=$USER //LOGNAME表示当前的用户名,也就是命令提示符中[root@wws]#、[guest@wws]#中的root和guest字样。
PS1='[\u@\h\W]# ' //Linux系统提示符是用系统变量PS1来定义的。一般系统默认的形式是:[username@hostname 工作目录]$。其中,\u 表示当前用户名,\h表示运行shell的计算机名,\W表示当前的工作目录名,更多PS1的信息请百谷。
PATH=$PATH //获得当前的环境变量。
HOSTNAME=`/bin/hostname` //获得当前的主机名,这里/bin/hostname是一个命令
export USER LOGNAME PS1 PATH //导出变量符号。注意:/etc/profile定义的变量是全局的,即对所有登录的Linux用户都有效。而在普通脚本里eport只在当前脚本以及子进程里有 效。


好了,现在保存退出!

9、执行命令:source /etc/profile ,使咱们的profile生效。


我去,怎么比开始还难看!奥,对了,还没有添加一个文件hostname。

10、同样在 /etc目录下执行命令:vi hostname,添加hostname文件


在里边任意填写自己喜欢的名,我这里填的是 wws ,填写完保存退出。

11、再执行:source /etc/profile 结果如下


额.......怎么没有变,对了,刚才在编写profile的时候,添加了/bin/hostname的命令,它怎么能执行呢?

12、修改 /etc/init.d/ 目录下的 rcS 文件,因为它定义了系统启动时执行的命令。


13、在rcS中最后一行添加:/bin/hostname -F /etc/hostname 表示从/etc/hostname中读取设置用户名

一步一步制作yaffs/yaffs2根文件系统(六)---完善命令行提示符_第10张图片

14、重新启动系统,这会出现下面的结果

一步一步制作yaffs/yaffs2根文件系统(六)---完善命令行提示符_第11张图片

还好,出来一个了,只剩下@前边显示root了。

15、至于怎么显示root,我看了看,这和 /etc/group点此了解 和 /etc/passwd点此了解 有关,我把刚才查的关于这两个文件的介绍转过来,建议去了解一下,毕竟不能光看教程走。

现在,在 /etc 中添加 group 文件,该文件内容如下,其中部分内容我也是不懂,是从例程中码上去的。


内容如下

root:*:0:
daemon:*:1:
bin:*:2:
sys:*:3:
adm:*:4:
tty:*:5:
disk:*:6:
lp:*:7:lp
mail:*:8:
news:*:9:
uucp:*:10:
proxy:*:13:
kmem:*:15:
dialout:*:20:
fax:*:21:
voice:*:22:
cdrom:*:24:
floppy:*:25:
tape:*:26:
sudo:*:27:
audio:*:29:
ppp:x:99:


16、在 /etc 中添加passwd 文件,只需要在其中添加一句root::0:0:root:/root:/bin/sh



17、还需要在 /etc 下建立 shadow文件 ,内容可以为空,直接保存就可以了。

18、现在 /etc 下所有的文件如下图


19、重新启动系统,出来效果了。

一步一步制作yaffs/yaffs2根文件系统(六)---完善命令行提示符_第12张图片

20、好了,做实验成功了,现在可以将咱们修改过的内容或者添加的文件,添加到上一节制作完的根文件系统了。

21、上一节制作好的文件系统,点此下载这一节修改后的文件系统,点此下载

今天天气真好,抓紧整理完,晚上散散步!

下一节http://blog.csdn.net/mybelief321/article/details/10068293


你可能感兴趣的:(文件系统)