Linux系统裁剪笔记

1.什么裁剪?

本篇文章的主要目的是让笔者和读者更深的认识Linux系统的运作方式,大致内容就是把Linux拆开自己一个个组件来组装,然后完成一个微型的Linux系统.下面,让我们来实现吧..写的不好的地方请指教.

2.原理

大家都知道,操作系统的启动流程是(主要是Linux):POST—>BIOS—>MBR—kernel-->initrd-->sbin/init,

POST,BIOS都不是我们管的,所以这里我们从MBR开始,Linux的系统引导先主要是用的grub这个软件,grub引导系统了,然后启动内核,内核调用initrd来实现最基本的操作系统,

3.实验 (所有操作均在虚拟机上实现,且定义硬盘时选IDE)

  环境:1).在宿主机上安装一台红帽子Linux5.4,/dev/sda上安装操作系统;

    2).在宿主机上新建一个新硬盘:/dev/hda,且分区为20M的sdb1,512M的sdb2

    3).另建立一台测试虚拟机,将原有的硬盘删除,再将硬盘/dev/hda的新增到该测试虚拟机;

    4).系统服务启动时显示开启状态;

    5).新增启动网络模块;

    6).新增内核控制模块;

    7).用户登录


login: 用户登录验证

 

   nsswitch: Network Service Switch

   框架:  /etc/passwd, /etc/shadow, /etc/group

   库:   libnss_file.so,libnss_nis.so, libnsss_ldap.so

   配置文件:  /etc/nsswitch.conf


[root@test sysroot]# cat /etc/nsswitch.conf   #查看配置文件 
passwd:     files
shadow:     files
group:      files
hosts:      files dns

...

[root@test sysroot.5]# cp -d /lib/libnss_files* /mnt/sysroot/lib/  #复制库文件 

[root@test sysroot]# ll lib/libnss_files*  #验证 
-rwxr-xr-x 1 root root 46680 Nov 27 13:55 lib/libnss_files-2.5.so
lrwxrwxrwx 1 root root    19 Nov 27 13:55 lib/libnss_files.so.2 -> libnss_files-2.5.so

[root@test sysroot.5]# cp -d /usr/lib/libnss3.so /usr/lib/libnssckbi.so /usr/lib/libnssutil3.so /mnt/sysroot/usr/lib

[root@test lib]# ln -sv ../../lib/libnss_files.so.2 libnss_files.so

[root@test sysroot]# ll /mnt/sysroot/usr/lib/  #验证 

-rwxr-xr-x 1 root root 1188804 Nov 27 14:41 libnss3.so
-rwxr-xr-x 1 root root  373992 Nov 27 14:41 libnssckbi.so
lrwxrwxrwx 1 root root      27 Nov 27 14:42 libnss_files.so -> ../../lib/libnss_files.so.2
-rwxr-xr-x 1 root root   98532 Nov 27 14:41 libnssutil3.so
...

[root@test sysroot]# vim /mnt/sysroot/etc/nsswitch.conf  #新建库文件 
passwd:     files
shadow:     files
group:      files
hosts:      files dns

[root@test sysroot]# grep -E "root|hadoop" /etc/passwd    #新建用户相关文件 
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
hadoop:x:500:500::/home/hadoop:/bin/bash
[root@test sysroot]# grep -E "root|hadoop" /etc/passwd >/mnt/sysroot/etc/passwd

[root@test sysroot]# grep -E "root|hadoop" /etc/shadow
root:$1$u2o9sj7Z$xz8STP0grPk5Pg3vQ0l0d.:17130:0:99999:7:::
hadoop:$1$nwkmJG/4$aeC.I.TpUnrFG5Q8zb/4i.:17132:0:99999:7:::
[root@test sysroot]# grep -E "root|hadoop" /etc/shadow > /mnt/sysroot/etc/shadow

[root@test sysroot]# grep -E "^(root|hadoop)" /etc/group
root:x:0:root
hadoop:x:500:
[root@test sysroot]# grep -E "^(root|hadoop)" /etc/group >/mnt/sysroot/etc/group


[root@test sysroot]# vim etc/inittab  #修改登录命令mingetty

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
3:2345:respawn:/sbin/mingetty tty3


[root@test bin]# cp login  /mnt/sysroot/bin/
[root@test bin]# ldd login  #关联的库文件 
    linux-gate.so.1 =>  (0x00eac000)
    libcrypt.so.1 => /lib/libcrypt.so.1 (0x024cd000)
    libm.so.6 => /lib/libm.so.6 (0x00d63000)
    libc.so.6 => /lib/libc.so.6 (0x00c1b000)
    /lib/ld-linux.so.2 (0x00bfd000)


[root@test rc.d]# mkdir rc1.d
[root@test rc.d]# cd rc1.d/
[root@test rc1.d]# ln -sv ../init.d/network K
K33tserver  K90network  
[root@test rc1.d]# ln -sv ../init.d/network K90network 
[root@test rc1.d]# ln -sv ../init.d/tserver K33tserver 
[root@test etc]# vim rc.d/init.d/single 
#!/bin/bash
#
#chkconfig:
# description:
#
case $1 in
start)
  ;;
*)
  echo "Usage: single start."
  ;;
esac

exec /sbin/init S

[root@test etc]# chmod +x rc.d/init.d/single

[root@test etc]# cd rc.d/rc1.d

[root@test rc1.d]# ln -sv ../init.d/single S99single

[root@test etc]# ll rc.d/rc1.d/
total 0
lrwxrwxrwx 1 root root 17 Nov 27 20:06 K33tserver -> ../init.d/tserver
lrwxrwxrwx 1 root root 17 Nov 27 20:05 K90network -> ../init.d/network
lrwxrwxrwx 1 root root 16 Nov 27 20:13 S99single -> ../init.d/single


linux命令:系统裁剪之三login: 用户登录验证_login


linux命令:系统裁剪之三login: 用户登录验证_exec_02