bgey 发表于 2018-5-12 06:08:24

linux系统组成之小型RedHat little linux制作四

  本文中接“linux系统组成之小型RedHat little linux制作三”
  进一步完善此系统,让其实现终端登录信息显示、用户登录、用户命令提示信息等。
  1、终端登陆信息:(用户登陆的时候才会显示)
  

[*]  /etc/issue内的内容。是通过终端来进行打印的,里面各式使用转移字符,具体解释间man mingetty。
[*]  cp /etc/issue /mnt/sysroot/etc/
[*]  编辑isscue
[*]  ChrisLinux   5.8
[*]  Kernel \r on an \m
[*]  http://www.chris.com
  

  
  




  挂载额外的系统文件/etc/fstab
  




[*]  sysfs                   /sys                  sysfs   defaults      0 0
[*]  proc                  /proc                   proc    defaults      0 0
[*]  /dev/hda1               /boot                   ext3    defaults      0 0
[*]  /dev/hda2               /                     ext3    defaults      1 1
[*]  在rc.sysinit内进行挂载配置
[*]  #!/bin/bash
[*]  #
[*]  echo "welecome chris little linux"
[*]  mount -n -o remount,rw /
[*]  mount -a---增加一行。
[*]  echo "set the hsotname"
[*][ -f /etc/sysconfig/network ] && . /etc/sysconfig/network
[*][ -z $HOSTNAME -o "$HSOTNAME" == '(none)' ] && HOSTNAME=localhost
[*]  /bin/hostname $HOSTNAME
[*]  echo "insmod pcnet32 mode"
[*]  /sbin/insmod /lib/modules/mii.ko
[*]  /sbin/insmod /lib/modules/pcnet32.ko
内核参数配置/etc/sysctl.conf(sysctl -p立即生效)例如开启网卡转换功能(移植sysctl命令)net.ipv4.ip_forward = 1
然后在rc.sysinit内增加一行如下
systcl -p &> /dev/null
[ $? -eq 0 ] && success "set ketnel parater" || failure "fail set kernel"
  



  

2、用户认证:
  

   绕过PAM的用户登陆DIY:(系统上的login的编译是依赖于PAM的,在ftp的根目录下的login shell,去掉了对PAM的依赖,可以单独利用)
nsswitch:Network Service Switch网络服务转换
是一个协议框架,定义了longin读取相关配置文件的位置:/etc/psaawd /etc/shadow /etc/group

nsswitch的配置文件在/etc/nsswitch.conf,而nsswitch的运行则依赖一些库文件:/lib/libnss**、usr/lib/libnss**
复制库的时候必须保留库的连接:cp -d
  



[*]  cp -d /lib/libnss_files*/mnt/sysroot/lib
[*]  cp /usr/lib/libnss3.so /usr/lib/libnssckbi.so /usr/lib/libnssutil3.so /mnt/sysroot/usr/lib/)
  

然后复制etc/nsswtich.conf /mnt/sysroot/etc/
  

  



[*]  vim /mnt/sysroot/etc/nsswtich.conf,保留一些内容
[*]  passwd:   files
[*]  shadow:   files
[*]  group:      files
[*]  hosts:      files dns
  

然后复制认证文件:etc/passwd etc/shadow /etc/group
cp /etc/passwd /mnt/sysroot/passwd
cp /etc/shadow /mnt/sysroot/shadow
cp /etc/group /mnt/sysroot/group
移植相关程序:mingetty usermod passwd
修改etc下的inittab()
...
...
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2

下载一个编译好、不依赖PAM认证的login到bin下,并给其执行权限。利用小系统登录测试即可
2、 PS1环境变量定义用户命令提示信息:cd/root下创建一个.bash_profile文件并在内增加:
             PS1='[\u@\h \w]\$'
             export PS1
(u:用户名 h主机名W工作目录的基名w工作目录的全名)


3、进入维护的1级别的设置:
      编辑inittab文件
  

  




编辑rc.d内的目录,新建rc1.d目录
设置必须的连接文件





ln -sv ../init.d/network K90network
进入单用户模式必须向init传递一个S参数,参照原系统上的/etc/init.d/singel
Vim /mnt/sysroot/etc/init.d/singel
#!/bin/bash
#
if [ "$1" != "start" ]; then
   exit 0
fi
  

  










exec init -t1 S
增加执行权限chmod +x singel
添加必需的连接
cd rc.d
cd rc1.d
ln -sv ../init.d/singe ./S98singel







  

# this looks nicer
  

# Now go to the single user level.
  
至此DIY小系统完毕,实现了基本的功能和网络。





  

  

  

  


cd /mnt/sysroot/etc/rc.d/rc1.d
  

# this looks nicer
[ -x /usr/bin/clear ] && /usr/bin/clear

# Now go to the single user level.
echo $"Telling INIT to go to single user mode."


  


[*]  id:3:initdefault:
[*]  si::sysinit:/etc/rc.d/rc.sysinit    l0:0:wait:/etc/rc.d/rc 0
[*]  l1:1:wait:/etc/rc.d/rc 1
[*]  l3:3:wait:/etc/rc.d/rc 3
[*]  l6:6:wait:/etc/rc.d/rc 6
[*]  1:2345:respawn:/sbin/mingetty tty1
[*]  2:2345:respawn:/sbin/mingetty tty2
页: [1]
查看完整版本: linux系统组成之小型RedHat little linux制作四