玩转开发板--最简单的根文件系统树的制作-6

创建/etc路径下文件

    6.1创建/etc/initab文件

    Linux内核自举启动完成之后,最后将创建init进程并执行根文件系统中的/init或/initrc程序,该程序解析并执行/etc/inttab配置文件,在此文件中配置了init进程在系统启动要启动哪些应用程序。

    [guozhihao@localhost rootfs]$ cd ~/gitee/fl2440/linux/rootfs/

    [guozhihao@localhost rootfs]$ vim etc/inittab

    

 

     6.2创建/etc/fstab文件

    Linux下的mount -a命令将自动挂载/etc/fstab文件中指定的所有需要系统自动挂载的文件。在/etc/inittab中使用该命令在上电时自动挂载相应的文件系统,这里面主要是挂在一些伪文件系统,这些伪文件系统主要是导出Linux内核运行的相关信息,如比较重要的tmpfs、sysfs、proc文件系统等。

    [guozhihao@localhost rootfs]$ cd ~/gitee/fl2440/linux/rootfs

    [guozhihao@localhost rootfs]$ vim etc/fstab

    

    

     6.3创建hostname文件

    /etc/hostname文件指定主机名,/etc/initab文件中通过hostaname -F /etc/hostname 命令设置主机名

    [guozhihao@localhost etc]$ cd ~/gitee/fl2440/linux/rootfs/

    [guozhihao@localhost rootfs]$ vim etc/hostname

    

    

    6.4创建系统启动脚本

    系统所有的启动脚本我们都将放在/etc/init.d路径下,接下来我们将创建这些系统启动脚本:

    [guozhihao@localhost rootfs]$ cd ~/gitee/fl2440/linux/rootfs/

    [guozhihao@localhost rootfs]$ ls etc/

    fstab  hostname  init.d  inittab

    [guozhihao@localhost rootfs]$ cd etc/init

    init.d/  inittab  

    [guozhihao@localhost rootfs]$ cd etc/init.d/

    [guozhihao@localhost init.d]$ ls

    

    启动脚本一、/etc/init.d/rcS

    /etc/inittab脚本会使用命令/etc/init.d/rcS启动所有其他的应用程序,下面创建etc/rcS脚本,该脚本执行/etc/init.d/所有文件名以S开头且后面紧跟至少包括2个字符的文件

    [guozhihao@localhost init.d]$ vim rcS

    

 

    [guozhihao@localhost init.d]$ ls

    rcS

    [guozhihao@localhost init.d]$ chmod a+x rcS

    [guozhihao@localhost init.d]$ ls

    rcS

    

    启动脚本二、/etc/init.d/S10_network

    假设我们希望系统自动设置网卡的IP地址,则可以创建一个文件名以S开头且后面紧跟至少包括2个字符的启动脚本,并给执行权限。

    [guozhihao@localhost init.d]$ vim S10_network

     

    [guozhihao@localhost init.d]$ chmod a+x S10_network

    

    启动脚本三、/etc/init.d/S99_rcsApp

    今后我们很多应用程序将会存放在/apps分区下,有时我们希望这些应用程序的启动脚本也存放在该分区下以便管理。这时我们可以参考rcS脚本的实现机制,让它也执行在/app/etc下的所有启动脚本

    [guozhihao@localhost init.d]$ vim S99_rcsApp

    

    [guozhihao@localhost init.d]$ chmod a+x S99_rcsApp

    [guozhihao@localhost init.d]$ ls

    rcS  S10_network  S99_rcsApp

 

    6.5创建shell的配置

    在Linux服务器上,我们可以通过修改~/.bash_profile~/.bashrc文件修改Shell的配置文件,如修改PATH、LD_LIBRARY_PATH环境变量等,也可以在里面定义命令别名。在嵌入式环境下,我们这些Shell的配置保存在/etc/profile文件中。这时我们可以创建该文件配置嵌入式环境busybox里的shell(ash)。

    切换到根文件系统树/etc路径下:cd ~/gitee/fl2440/linux/rootfs/etc/

    [guozhihao@localhost etc]$ vim profile

    

    

    6.6创建Linux登陆账号文件

    Linux系统中的登陆账号信息保存在/etc/group、/etc/passwd和/etc/shadow文件中。

    (1)/etc/group文件保存了用户组信息;

    (2)/etc/passwd文件保存了用户信息;

    (3)/etc/shadow文件保存来相应用户的密码;

    下面我们需要在根文件系统中创建这些系统账号文件,在这里我们创建root账号,其他账号的过程类似。当然也可以在系统启动后以root账号权限来添加。

    [guozhihao@localhost etc]$ cd ~/gitee/fl2440/linux/rootfs/etc/

    [guozhihao@localhost etc]$ ls

    fstab  hostname  init.d  inittab  profile

 

   一./etc/group文件

    [guozhihao@localhost etc]$ vim group

    

    该文件的格式为:

        groupname:password:gid:members

        第一个字段为用户组名称;

        第二个字段为用户组密码,当为x时密码是映射到/etc/gshadow中的,是非逆的;

        第三个字段为GID,及组号,为正整数或0,0被付于了root用户组;系统通常会预留一些较靠前的GID给系统虚拟用户之用,每个系统预留的GID都不同,一般普通用户的GID从500开始;

        第四个字段为用户列表,每个用户间用逗号分隔;

    

    二./etc/passwd文件  

    [guozhihao@localhost etc]$ vim passwd

    

    该文件的格式为:

    username:password:uid:gid:fullname:homedir:shell

        (1)第一个字段为用户组名称;

        (2)第二个字段为用户组密码,当为x时密码是映射到/etc/shadow中;

        (3)第三个字段为ID(UID);

        (4)第四个字段为用户所属组ID(GID);

        (5)第五个字段为用户全称

        (6)第六个字段为用户根目录

        (7)第七个字段为用户所用shell的类型

    例如自己虚拟机的/etc/passwd里的信息

    

 

    注:

    Unix系统最初是用明文保存密码的,后来由于安全的考虑,采用crypt()算法加密密码并存放在/etc/passwd文件。现在,由于计算机处理能力的提高,使密码破解变得越来越容易。/etc/passwd文件是所有合法用户都可访问的,大家都可互相看到密码的加密字符串,这给系统带来很大的安全威胁。现代的Unix系统使用影子密码系统,它把密码从/etc/passwd文件中分离出来,真正的密码保存在/etc/shadow文件中,shadow文件只能由超级用户访问。这样

入侵者就不能获得加密密码串,用于破解。使用shadow密码文件后,/etc/passwd文件中所有帐户的password域的内容为"x",如果password域的内容为"*",则该帐号被停用。

    

    三./etc/shadow文件

    /etc/shadow文件保存了相应帐号的密文,这个文件内容不能直接创建。如果我们想在嵌入式Linux系统中设置root的登录密码为123456,则我们先在自己的Linux服务器或虚拟机上修改root密码为123456,然后再将Linux服务器或虚拟机上的/etc/shadow文件里root帐号的密码密文部分拷贝出来,创建根文件系统树里的etc/shadow时将密文部分用这个密文替换。这个过程做完后记得将自己的Linux服务器或虚拟机的root密码还原回去。

    [guozhihao@localhost etc]$ sudo passwd root

    Changing password for user root.

    New password:

    Retype new password:

    Sorry, passwords do not match.

    New password:

    BAD PASSWORD: it is too simplistic/systematic

    BAD PASSWORD: is too simple

    Retype new password:

    passwd: all authentication tokens updated successfully.

    [guozhihao@localhost etc]$ sudo cat /etc/shadow | grep root

    root:$1$ZV3zNSrr$lLwtFPKck44VdQsEyjBLe/:17621:0:99999:7:::

    现在我们创建根文件系统树下的/etc/shadow文件,参考下文内容将上面root账号的加密密文部分($1$ZV3zNSrr$lLwtFPKck44VdQsEyjBLe/)拷贝过来,其他部分保持不变:

    [guozhihao@localhost etc]$ sudo vim shadow

    

    该文件的格式为: 

    usrname:password:lastchange:min_change:max_change:warm:failed_expire:expiration:reserved

    (1)第一字段:用户(也被称为登录名),在/etc/shadow中,用户名和/etc/passwd是相同的,这样就把passwd和shadow中用的用户记录联系在一起;这个字段是非空的;

    (2)第二字段:密码加密后的密文,这个字段是非空的;

    (3)第三字段:上次修改密码的时间;这个时间是从1970年01月01日算起到最近一次修改口令的时间间隔(天数);

    (4)第四字段:两次修改密码间隔最少的天数;如果这个字段的值为空,账号永久可用;

    (5)第五字段:两次修改密码间隔最多的天数;如果这个字段的值为空,账号永久可用;

    (6)第六字段:两次修改密码间隔最多的天数;如果这个字段的值为空,账号永久可用;

    (7)第七字段:在密码过期之后多少禁用此用户;如果这个字段的值为空,账号永久有效;

    (8)第八字段:用户过期日期;此字段指定了用户作废的天数,如果这个字段的值为空,账号永久有效;

    (9)第九字段:保留字段,目前为空,以备将来发展之用;

   

    6.7创建Linux其他文件

    切换到根文件系统树etc路径下:

    [guozhihao@localhost rootfs]$ cd ~/gitee/fl2440/linux/rootfs/etc/

    [guozhihao@localhost etc]$ ls

    fstab  group  hostname  init.d  inittab  passwd  profile  shadow

    

    一./etc/resolv.conf文件

    该文件用来设置Linux系统DNS服务器,DNS服务器用来将域名转换成IP地址。

    [guozhihao@localhost etc]$ vim resolv.conf

    

 

    二./etc/hosts文件

    /etc/hosts文件存放本机静态绑定的域名,如下面在本机上域名localhost就会被解析成127.0.0.1,不需要DNS来做解析。

    

    

 

     三./etc/TZ文件

    /etc/TZ文件配置了系统的时区

    [guozhihao@localhost etc]$ vim TZ

 

    四./etc/issue文件

    /etc/issue文件里存放在console上登陆系统时提示警告信息

    [guozhihao@localhost etc]$ vim issue

    

    至此Linux根文件系统树所需要的基本文件都已经有了,接下来我们可以使用Linux内核启动这个根文件系统。
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值