您的当前位置:首页 --> CentOS入门
CentOS中定制精简出属于自己的专属Linux
浏览次数:1742 关键词 ( 自己的  CentOS  Linux  )

前言:

  • linux 版本 CentOS 5.5 64位

  • 虚拟机版本 Vmware Workstation 9.0

1.  在虚拟机上添加一块新硬盘到linux,大小20G (可以自定)

1

2. 打开终端,使用fdisk格式化分区刚才挂载的新硬盘/dev/sdb,划分出一个100M大小的主分区和一个1G大小的主分区

1). 查看新增加硬盘 fdisk –l

1 2 3 4 5 6 7 8 9 10 11 12 13 14 fdisk -l Disk /dev/sda: 21.4 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes    Device Boot      Start         End      Blocks   Id  System /dev/sda1   *           1          33      265041   83  Linux /dev/sda2              34        1308    10241437+  83  Linux /dev/sda3            1309        1945     5116702+  83  Linux /dev/sda4            1946        2610     5341612+   5  Extended /dev/sda5            1946        2072     1020096   82  Linux swap / Solaris Disk /dev/sdb: 21.4 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk /dev/sdb doesn't contain a valid partition table

2). 分区

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 [root@localhost ~]# fdisk /dev/sdb Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel Building a new DOS disklabel. Changes will remain in memory only, until you decide to write them. After that, of course, the previous content won't be recoverable. The number of cylinders for this disk is set to 2610. There is nothing wrong with that, but this is larger than 1024, and could in certain setups cause problems with: 1) software that runs at boot time (e.g., old versions of LILO) 2) booting and partitioning software from other OSs    (e.g., DOS FDISK, OS/2 FDISK) Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite) Command (m for help): n Command action    e   extended    p   primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-2610, default 1): Using default value 1 Last cylinder or +size or +sizeM or +sizeK (1-2610, default 2610): +100M Command (m for help): n Command action    e   extended    p   primary partition (1-4) p Partition number (1-4): 2 First cylinder (14-2610, default 14): Using default value 14 Last cylinder or +size or +sizeM or +sizeK (14-2610, default 2610): +1G Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks. [root@localhost ~]#

3). 重读下分区表

1 2 [root@localhost ~]# partprobe /dev/sdb [root@localhost ~]#

4). 格式化为ext3文件系统

1 2 [root@localhost ~]# mke2fs -j /dev/sdb1 [root@localhost ~]# mke2fs -j /dev/sdb2

5). 将刚格式化好的分区/dev/sdb1挂载到/mnt/boot  /dev/sdb2挂载到/mnt/sysroot

1 2 3 4 [root@localhost ~]# mkdir -p /mnt/boot [root@localhost ~]# mkdir -p /mnt/sysroot [root@localhost ~]# mount /dev/sdb1 /mnt/boot/ [root@localhost ~]# mount /dev/sdb2 /mnt/sysroot/

6). 查看挂载分区

1 2 3 4 5 6 7 8 9 10 11 12 13 [root@localhost ~]# mount /dev/sda2 on / type ext3 (rw) proc on /proc type proc (rw) sysfs on /sys type sysfs (rw) devpts on /dev/pts type devpts (rw,gid=5,mode=620) /dev/sda3 on /data type ext3 (rw) /dev/sda1 on /boot type ext3 (rw) tmpfs on /dev/shm type tmpfs (rw) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw) sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw) /dev/sdb1 on /mnt/boot type ext3 (rw) /dev/sdb2 on /mnt/sysroot type ext3 (rw) [root@localhost ~]#

3. 安装grub到/dev/sdb,并增加grub.conf配置文件

1). 安装grub

1 2 3 4 5 6 7 8 [root@localhost ~]# grub-install --root-directory=/mnt/ /dev/sdb Probing devices to guess BIOS drives. This may take a long time. Installation finished. No error reported. This is the contents of the device map /mnt//boot/grub/device.map. Check if this is correct or not. If any of the lines is incorrect, fix it and re-run the script `grub-install'. (fd0)   /dev/fd0 (hd0)   /dev/sda (hd1)   /dev/sdb

2). 修改/mnt/boot/grub/device/map

1 2 3 4 [root@localhost ~]# vim /mnt/boot/grub/device.map (fd0)   /dev/fd0           #去掉这一行  fd指的是软盘 (hd0)   /dev/sda (hd1)   /dev/sdb         #去掉这一行

4. 复制kernel和initrd到小linux中

1 2 3 [root@localhost ~]# cp /boot/vmlinuz-2.6.18-194.el5 /mnt/boot/vmlinuz [root@localhost ~]# cp /boot/initrd-2.6.18-194.el5.img /mnt/boot/initrd [root@localhost ~]#

5. 解压缩initrd, 编辑里面的init文件,然后重新压缩封装

1) .解压缩initrd

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 [root@localhost boot]# cd /mnt/boot/ [root@localhost boot]# ls grub  initrd  lost+found  vmlinuz [root@localhost boot]# file initrd initrd: gzip compressed data, from Unix, last modified: Wed May 22 21:03:38 2013, max compression #压缩文件 [root@localhost boot]# mv initrd /tmp/initrd.gz [root@localhost boot]# cd /tmp/ [root@localhost tmp]# ls initrd.gz [root@localhost tmp]# gzip -d initrd.gz [root@localhost tmp]# file initrd initrd: ASCII cpio archive (SVR4 with no CRC) #cpio 打包文件 [root@localhost tmp]# cpio -id < initrd 13942 blocks [root@localhost tmp]# ls bin  dev  etc  init  initrd  lib  proc  sbin  sys  sysroot

2). 修改init文件

1 2 3 4 5 6 7 [root@localhost tmp]# vim init  87 #resume LABEL=SWAP-sda5 #将swap注释,我们这里没有swap分区  88 echo Creating root device.  89 mkrootdev -t ext3 -o defaults,ro sda2 #修改为mkrootdev -t ext3 -o defaults,ro /dev/sda2 [root@localhost tmp]# find . | cpio -H newc --quiet -o | gzip -9 >/mnt/boot/initrd.gz [root@localhost boot]# ls grub  initrd.gz  lost+found  vmlinuz

6. 增加grub.conf文件

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 [root@localhost grub]# pwd /mnt/boot/grub [root@localhost grub]# ls device.map     iso9660_stage1_5   stage1           xfs_stage1_5 e2fs_stage1_5  jfs_stage1_5       stage2 fat_stage1_5   minix_stage1_5     ufs2_stage1_5 ffs_stage1_5   reiserfs_stage1_5  vstafs_stage1_5 [root@localhost grub]# vim grub.conf default=0 timeout=3 title freeloda linux         root (hd0,0)         kernel /vmlinuz         initrd /initrd.gz :wq [root@localhost grub]#

7. 建立真正的根目录/mnt/sysroot

1). 创建必须的文件目录

1 2 3 4 [root@localhost var]# mkdir -p sys etc/{rc.d,init.d} root boot bin sbin var/{log,lock,run} dev home tmp lib lib64 usr/{bin,sbin} proc [root@localhost var]# ls bin  boot  dev  etc  home  lib  lock  log  root  run  sbin  sys  tmp  usr  var [root@localhost var]#

2). 配置系统启动文件etc/inittab

1 2 3 4 [root@localhost sysroot]# vim /mnt/sysroot/etc/inittab id:3:initdefault: si::sysinit:/etc/rc.d/rc.sysinit :wq

3). 配置增加启动脚本/etc/rc.d/rc.sysinit

1 2 3 4 5 6 7 8 [root@localhost rc.d]# vim rc.sysinit #!/bin/bash # echo "Welcome freeloda little linux !" mount -n -o remount.rw / #以读写方式重新挂载根 mount -n –a #挂载所有设备,并不记录 /bin/bash #启动bash :wq

4). 对脚本增加执行权限  

1 2 3 4 [root@localhost rc.d]# chmod +x rc.sysinit [root@localhost rc.d]# ll total 4 -rwxr-xr-x 1 root root 63 Jun 12 23:58 rc.sysinit

8. 复制命令到小型linux里去

1). 如何复制?

1 2 3 4 5 6 7 8 9 10 11 [root@localhost lib64]# which bash #使用which命令查看命令所在路径 /bin/bash [root@localhost lib64]# [root@localhost lib64]# ldd /bin/bash #ldd 加命令路径可以显示出这个命令所依赖的库文件         libtermcap.so.2 => /lib64/libtermcap.so.2 (0x0000003bac600000)         libdl.so.2 => /lib64/libdl.so.2 (0x0000003bac200000)         libc.so.6 => /lib64/libc.so.6 (0x0000003babe00000)         /lib64/ld-linux-x86-64.so.2 (0x0000003baba00000) [root@localhost lib64]# cp -p /lib64/libtermcap.so.2 /lib64/libdl.so.2 /lib64/libc.so.6 /lib64/ld-linux-x86-64.so.2 /mnt/sysroot/lib64/ #将上面的库文件都复制到小linux对应的目录 [root@localhost lib64]# ls ld-linux-x86-64.so.2  libc.so.6  libdl.so.2  libtermcap.so.2

2). 继续复制 init 和bash,mount , ls 这几个个命令去小linux,注意,init和bash必须复制

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 init 命令 [root@localhost lib64]# which init /sbin/init [root@localhost lib64]# ldd /sbin/init         libsepol.so.1 => /lib64/libsepol.so.1 (0x0000003bace00000)         libselinux.so.1 => /lib64/libselinux.so.1 (0x0000003bad200000)         libc.so.6 => /lib64/libc.so.6 (0x0000003babe00000)         libdl.so.2 => /lib64/libdl.so.2 (0x0000003bac200000)         /lib64/ld-linux-x86-64.so.2 (0x0000003baba00000) [root@localhost lib64]# cp -p /lib64/libsepol.so.1 /lib64/libselinux.so.1 /lib64/libc.so.6 /lib64/libdl.so.2 /lib64/ld-linux-x86-64.so.2 ./ cp: overwrite `./libc.so.6'? y cp: overwrite `./libdl.so.2'? y cp: overwrite `./ld-linux-x86-64.so.2'? y [root@localhost lib64]# ls a.out  ld-linux-x86-64.so.2  libc.so.6  libdl.so.2  libselinux.so.1  libsepol.so.1  libtermcap.so.2 [root@localhost lib64]# 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 mount 命令 [root@localhost lib64]# which mount /bin/mount [root@localhost lib64]# ldd /bin/mount         libblkid.so.1 => /lib64/libblkid.so.1 (0x0000003bada00000)         libuuid.so.1 => /lib64/libuuid.so.1 (0x0000003bad600000)         libselinux.so.1 => /lib64/libselinux.so.1 (0x0000003bad200000)         libc.so.6 => /lib64/libc.so.6 (0x0000003babe00000)         libdevmapper.so.1.02 => /lib64/libdevmapper.so.1.02 (0x0000003baca00000)         /lib64/ld-linux-x86-64.so.2 (0x0000003baba00000)         libdl.so.2 => /lib64/libdl.so.2 (0x0000003bac200000)         libsepol.so.1 => /lib64/libsepol.so.1 (0x0000003bace00000) [root@localhost lib64]# cp -p /lib64/libblkid.so.1 /lib64/libuuid.so.1 /lib64/libselinux.so.1/lib64/libc.so.6 /lib64/libdevmapper.so.1.02 /lib64/ld-linux-x86-64.so.2 /lib64/libdl.so.2/lib64/libsepol.so.1 ./ cp: overwrite `./libselinux.so.1'? y cp: overwrite `./libc.so.6'? y cp: overwrite `./ld-linux-x86-64.so.2'? y cp: overwrite `./libdl.so.2'? y cp: overwrite `./libsepol.so.1'? y [root@localhost lib64]# ls a.out                 libblkid.so.1  libdevmapper.so.1.02  libselinux.so.1  libtermcap.so.2 ld-linux-x86-64.so.2  libc.so.6      libdl.so.2            libsepol.so.1    libuuid.so.1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 ls 命令 [root@localhost lib64]# which ls alias ls='ls --color=tty'         /bin/ls [root@localhost lib64]# ldd /bin/ls         librt.so.1 => /lib64/librt.so.1 (0x0000003bada00000)         libacl.so.1 => /lib64/libacl.so.1 (0x0000003bae600000)         libselinux.so.1 => /lib64/libselinux.so.1 (0x0000003bad200000)         libc.so.6 => /lib64/libc.so.6 (0x0000003babe00000)         libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003bac600000)         /lib64/ld-linux-x86-64.so.2 (0x0000003baba00000)         libattr.so.1 => /lib64/libattr.so.1 (0x0000003bad600000)         libdl.so.2 => /lib64/libdl.so.2 (0x0000003bac200000)         libsepol.so.1 => /lib64/libsepol.so.1 (0x0000003bace00000) [root@localhost lib64]# cp -p /lib64/librt.so.1 /lib64/libacl.so.1 /lib64/libselinux.so.1 /lib64/libc.so.6 /lib64/libpthread.so.0 /lib64/ld-linux-x86-64.so.2 /lib64/libattr.so.1 /lib64/libdl.so.2 /lib64/libsepol.so.1 ./ cp: overwrite `./libselinux.so.1'? y cp: overwrite `./libc.so.6'? y cp: overwrite `./ld-linux-x86-64.so.2'? y cp: overwrite `./libdl.so.2'? y cp: overwrite `./libsepol.so.1'? y [root@localhost lib64]# ls a.out                 libacl.so.1   libblkid.so.1  libdevmapper.so.1.02  libpthread.so.0  libselinux.so.1  libtermcap.so.2 ld-linux-x86-64.so.2  libattr.so.1  libc.so.6      libdl.so.2            librt.so.1       libsepol.so.1    libuuid.so.1 [root@localhost lib64]#

3). 复制相应的命令脚本 bash init mount ls

1 2 3 4 5 6 7 8 9 10 11 12 13 14 [root@localhost lib64]# which bash /bin/bash [root@localhost lib64]# cp -p /bin/bash /mnt/sysroot/bin/ [root@localhost lib64]# which init /sbin/init [root@localhost lib64]# cp -p /sbin/init /mnt/sysroot/sbin/ [root@localhost lib64]# which mount /bin/mount [root@localhost lib64]# cp -p /bin/mount /mnt/sysroot/bin/ [root@localhost lib64]# which ls alias ls='ls --color=tty'         /bin/ls [root@localhost lib64]# cp -p /bin/ls /mnt//sysroot/bin/ [root@localhost lib64]#

9. 创建 /mnt/sysroot/etc/fstab文件

1 2 3 4 5 [root@localhost bin]#vim /mnt/sysroot/etc/fstab /dev/sda2       /        ext3         defaults      0    0 /dev/sda1       /boot    ext3         defaults      0    0                        sysfs           /sys     sysfs        defaults      0    0                         proc            /proc    proc         defaults      0    0

好了,大功告成,新建一个虚拟机,选择CentOS 5 64 ,挂载上这块硬盘看下效果吧!

10. 效果图如下

1). 效果图1

效果图1

2). 效果图2

效果图2

3). 效果图3

效果图3

 

这一篇博客中我们将完善它,我们将增加开关机功能,登录功能,网络功能 ……

1. 写一个脚本,实现对二进制命令及相应库文件的复制

(1). 目的:

在上一篇博客中,我们复制二进制命令及对应的库文件复制时,都是一个一个复制,先是用 which 命令查找路径,后用 ldd 命令查找相关的库文件,很是不方便!下面我们就写个脚本,实现自动复制二进制命令及相应库文件! ^_^ ……

(2). 具体要求如下:

1)、写一个函数,接受两个参数(参数1,为要复制的命令,参数2,为复制命令对应的目标位置,如/mnt/sysroot),完成以下功能:    
  a. 判断“参数1” 所对应的命令是否存在,如果存在:取得其目录路径,及命令对应的文件的名字,而后将此命令复制到“参数2” 对应的路径下,跟此命令原来的目录路径相同的子目录中;比如,如果“参数2” 为/mnt/sysroot,而命令路径为/bin/ls,则需要将ls复制到/mnt/sysroot/bin目录;如果命令路径为/usr/bin/man,则需要将man复制至/mnt/sysroot/usr/bin/中去。

  b. 复制命令的同时,判定此命令所依赖的库文件,而后对每一个库文件做如下操作,取得其目录路径,及命令对应的文件的名字,而后将此命令复制到“参数2” 对应的路径下,跟此命令原来的目录路径相同的子目录中;但如果此库文件已经复制过,则不需要再次复制。    
2)、执行此函数 。

(3). 具体脚本如下:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 vim addcom.sh #!/bin/bash # DEST=/mnt/sysroot DIRE() { if [ -d $DEST/$CMD ]; then    echo "this direstory is inxted"    else    mkdir -p $DEST/$CMD &> /dev/null    echo "$CMD is a directory,mkdir finished" fi } libcp() { LIBPATH=${1%/*}   [ ! -d $DEST$LIBPATH ] && mkdir -p $DEST$LIBPATH   [ ! -e $DEST${1} ] && cp $1 $DEST$LIBPATH && echo "copy lib64 $1 finished." } bincp() { CMDPATH=${1%/*}   [ ! -d $DEST$CMDPATH ] && mkdir -p $DEST$CMDPATH   [ ! -e $DEST${1} ] && cp $1 $DEST$CMDPATH   for LIB in  `ldd $1 | grep -o "/.*lib64/[^[:space:]]\{1,\}"`; do     libcp $LIB   done } read -p "Your command: " CMD until [ $CMD == 'q' ]; do   which $CMD &>/dev/null MM=`echo $?`   if [ $MM -eq 0 ]; then   ! which $CMD && echo "Wrong command" && read -p "Input againe: " CMD && continue COMMAND=` which $CMD | grep -v "^alias" | grep -o "[^[:space:]]\{1,\}"`   bincp $COMMAND   echo "copy $COMMAND finished."   read -p "Continue:  " CMD   else   DIRE   read -p "Continue:  " CMD fi done :wq

注意:我这边的操作系统是CentOS 5.5 64位操作系统,所有的lib文件都在/mnt/sysroot/lib64中,若你是32位系统,请修改16与22行,将lib64目录改为lib目录!

(4). 效果如下:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 [root@localhost ~]# sh addcom.sh  Your command: ifconfig   /sbin/ifconfig   copy /sbin/ifconfig finished.   Continue: [root@localhost ~]#   [root@localhost ~]#   [root@localhost ~]# /mnt/sysroot/sbin/ifconfig   eth0      Link encap:Ethernet  HWaddr 00:0C:29:16:63:C0           inet addr:192.168.1.116  Bcast:255.255.255.255  Mask:255.255.255.0             inet6 addr: fe80::20c:29ff:fe16:63c0/64 Scope:Link             UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1             RX packets:19633 errors:0 dropped:0 overruns:0 frame:0             TX packets:13649 errors:0 dropped:0 overruns:0 carrier:0             collisions:0 txqueuelen:1000             RX bytes:4932356 (4.7 MiB)  TX bytes:2409236 (2.2 MiB) lo        Link encap:Local Loopback           inet addr:127.0.0.1  Mask:255.0.0.0             inet6 addr: ::1/128 Scope:Host             UP LOOPBACK RUNNING  MTU:16436  Metric:1             RX packets:32 errors:0 dropped:0 overruns:0 frame:0             TX packets:32 errors:0 dropped:0 overruns:0 carrier:0             collisions:0 txqueuelen:0             RX bytes:6138 (5.9 KiB)  TX bytes:6138 (5.9 KiB)

2. 实现关机与重启功能

1)、修改inittab文件

1 2 3 4 5 6 7 [root@localhost ~]# vim /mnt/sysroot/etc/inittab id:3:initdefault:  si::sysinit:/etc/rc.d/rc.sysinit #新增两行 l0:0:wait:/etc/rc.d/rc 0  l6:6:wait:/etc/rc.d/rc 6 : wq

2)、复制两个命令reboot和halt

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 [root@localhost ~]# sh addcom.sh  Your command: reboot   /sbin/reboot   copy /sbin/reboot finished. Continue:  halt  /sbin/halt   copy /sbin/halt finished. Continue:  sync  /bin/sync   copy /bin/sync finished. [root@localhost ~]# cd /mnt/sysroot/sbin/  [root@localhost sbin]# ls   halt  ifconfig  init  reboot [root@localhost sbin]# cd /mnt/sysroot/bin  [root@localhost bin]# ls   bash  ls  mount  sync   [root@localhost bin]#

3)、新增开关机脚本

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 [root@localhost init.d]# pwd  /mnt/sysroot/etc/rc.d/init.d   [root@localhost init.d]# vim halt #!/bin/bash # case $0 in *reboot) COMMAND='/sbin/reboot' ;; *halt) COMMAND='/sbin/halt –p' ;; *) echo "only call thsi script *reboot *halt" ;; esac    exec $COMMAND :wq [root@localhost rc.d]#

4)、新增 rc 脚本

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 [root@localhost rc.d]# pwd  /mnt/sysroot/etc/rc.d   [root@localhost rc.d]# ls   init.d  rc  rc0.d  rc6.d  rc.sysinit   [root@localhost rc.d]# vim rc #!/bin/bash # RUNLEVEL=$1   for I in /etc/rc.d/rc$RUNLEVEL.d/K*; do   $I stop   done   for I in /etc/rc.d/rc$RUNLEVEL.d/S*; do   $I start   done :wq [root@localhost rc.d]#

5)、测试效果

init 0 关机效果:

init 6 重启效果:

重启6

3. 增加 rc3.d 级别的运行脚本

在上面的测试中,我们实现了关机与重启功能,同时大家也看到了,我们实现了 rc0.d,rc6.d 级别脚本的运行,下面我们看一下怎么实现 rc3.d 级别下实现脚本运行!

1)、修改 inittab 文件

1 2 3 4 5 6 [root@localhost ~]# vim /mnt/sysroot/etc/inittab id:3:initdefault:  si::sysinit:/etc/rc.d/rc.sysinit l0:0:wait:/etc/rc.d/rc 0  l3:3:wait:/etc/rc.d/rc 3 #新增一行   l6:6:wait:/etc/rc.d/rc 6

2)、增加一个测试脚本 tserver 来测试第三级别的运行情况

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 #!/bin/bash # # chkconfig: 35 55 44 # description: test service script # FILE=/var/lock/subsys/`basename $0` start() { echo "starting `basename $0`..." touch $FILE } stop() { echo "stopping `basename $0`..." rm -rf $FILE } status() { if [ -e $FILE ]; then     echo "Running.." else     echo "stopping..." fi } usage() { echo "please insernt like start|stop|restart|status" } case $1 in start) start ;; stop) stop ;; restart)   stop   start ;; status) status ;; *) usage exit 1 ;; esac

3)、移植相关命令

1 2 3 4 5 6 7 8 9 [root@localhost ~]# sh addcom.sh  Your command: chkconfig   /sbin/chkconfig   copy /sbin/chkconfig finished.   Continue:  basename   /bin/basename   copy /bin/basename finished.   Continue: [root@localhost ~]#

经过上面的是三个步骤,应该是可以执行的,但是还是不能执行的!我们还得进行下面的步骤!

4)、增加 rc3.d 目录和相关的软链接

1 2 3 4 5 6 7 8 9 10 [root@localhost ~]# cd /mnt/sysroot/etc/rc.d/ [root@localhost rc.d]# mkdir rc3.d [root@localhost rc.d]# ls init.d  rc  rc0.d  rc3.d  rc6.d  rc.sysinit [root@localhost rc.d]# cd rc3.d [root@localhost rc3.d]# ln -sv ../init.d/tserver S55tserver [root@localhost rc.d]#cd rc0.d [root@localhost rc0.d]# ln -sv ../init.d/tserver K44tserver [root@localhost rc.d]#cd rc6.d [root@localhost rc6.d]# ln -sv ../init.d/tserver K44tserver

5)、修改inittab文件

1 2 3 4 5 6 7 8 9 10 [root@localhost ~]# vim /mnt/sysroot/etc/inittab id:3:initdefault: si::sysinit:/etc/rc.d/rc.sysinit l0:0:wait:/etc/rc.d/rc 0 l3:3:wait:/etc/rc.d/rc 3  l6:6:wait:/etc/rc.d/rc 6 #新增下面两行 1:2345:respawn:/sbin/mingetty --loginprog=/bin/bash tty1 2:2345:respawn:/sbin/mingetty --loginprog=/bin/bash tty2 #loginprog运行依赖/bin/sh.把bin下的bash连接为sh即可实现

6)、移植 mingetty 命令

1 2 3 4 [root@localhost ~]# sh addcom.sh  Your command: mingetty  /sbin/mingetty  copy /sbin/mingetty finished.

7)、loginprog运行依赖/bin/sh,把bin下的bash连接为sh即可实现  

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 [root@localhost ~]# cd /mnt/sysroot/bin/ [root@localhost bin]# ls  basename  bash  df  ls  mkdir  mount  sync  tar  touch  umount  [root@localhost bin]# ln -sv bash sh  create symbolic link `sh' to `bash' [root@localhost bin]# ll total 1384  -rwxr-xr-x 1 root root  20984 Jun 13 04:02 basename  -rwxr-xr-x 1 root root 801512 Jan 22  2009 bash  -rwxr-xr-x 1 root root  43192 Jun 13 03:11 df  -rwxr-xr-x 1 root root  91240 Mar  1  2010 ls  -rwxr-xr-x 1 root root  31664 Jun 13 03:10 mkdir  -rwsr-xr-x 1 root root  60432 Jan 20  2010 mount  lrwxrwxrwx 1 root root      4 Jun 13 04:32 sh -> bash  -rwxr-xr-x 1 root root  20216 Jun 13 01:18 sync  -rwxr-xr-x 1 root root 230464 Jun 13 03:11 tar  -rwxr-xr-x 1 root root  42696 Jun 13 03:10 touch  -rwsr-xr-x 1 root root  40208 Jun 13 03:11 umount  [root@localhost bin]#

8)、修改 rc.sysinit 文件

1 2 3 4 5 6 7 8 [root@localhost ~]# vim /mnt/sysroot/etc/rc.d/rc.sysinit  #!/bin/bash # echo -e "\t\tWelcome to \033[31mLittle\033[0m Linux" mount -n -o remount.rw / mount -n –a /bin/bash # 删除这一行 :wq

9)、测试

tty1

最后大家会发现 mingetty 只能启动两个终端,但还是不能启动 3 级别的脚本!而且还没有主机名只显示 (none),大家别急,下面我们再来完善它!

4. 增加主机名

从上图中我们可以看出没有主机名,下面我们不先添加主机名!

1)、修改 rc.sysinit 文件

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 [root@localhost sysconfig]# vim /mnt/sysroot/etc/rc.d/rc.sysinit #!/bin/bash  # #显示开机提示符  echo -e "\t\tWelcome to \033[31mLittle\033[0m Linux" #重新挂载垠文件系统  echo "mount /"   mount -n -o remount,rw / #挂载所有文件系统  echo "mount all partitions"   mount -n -a #增加主机名  echo "set the hsotname" [ -f /etc/sysconfig/network ] && . /etc/sysconfig/network   [ -z $HOSTNAME -o "$HSOTNAME" == '(none)' ] && HOSTNAME=localhost   /bin/hostname $HOSTNAME

2)、移植 hostname 命令

1 2 3 4 [root@localhost ~]# sh addcom.sh   Your command: hostname   /bin/hostname   copy /bin/hostname finished.

3)、测试

主机

主机名增加完成 !

5. 开启虚拟终端

由于mingetty需要用户登陆,且无法启动三级别的脚本,下面利用agetty来进行登陆验证

1)、移植 agetty 命令

1 2 3 4 [root@localhost ~]# sh addcom.sh   Your command: agetty   /sbin/agetty   copy /sbin/agetty finished.

2)、修改 inittab 文件

1 2 3 4 5 6 7 8 9 10 11 12 [root@localhost ~]# vim /mnt/sysroot/etc/inittab id:3:initdefault: si::sysinit:/etc/rc.d/rc.sysinit l0:0:wait:/etc/rc.d/rc 0 l3:3:wait:/etc/rc.d/rc 3 l6:6:wait:/etc/rc.d/rc 6 #下面两行删除 1:2345:respawn:/sbin/mingetty --loginprog=/bin/bash tty1 2:2345:respawn:/sbin/mingetty --loginprog=/bin/bash tty2 #新增下面两行 1:2345:respawn:/sbin/agetty -n -l /bin/bash 38400 tty1 2:2345:respawn:/sbin/agetty -n -l /bin/bash 38400 tty2

3)、测试

tserver

大家看到了吧, Tserver 启动了,而且还进入了终端!但是touch时不能新建文件是因为我们这里没有subsys目录!修改如下

4)、修正

新建subsys目录

1 2 3 4 5 6 [root@localhost ~]# cd /mnt/sysroot/var/lock/  [root@localhost lock]# ls   [root@localhost lock]# mkdir subsys   [root@localhost lock]# ls   subsys   [root@localhost lock]#

再测试一下

tty2

测试成功!现在我们的小Linux 已经有了, 开关机功能,也能在 3 级别下运行脚本(服务)!下一篇博客中我们将增加网络功能 ^_^ ……

 

 

 

下面我们来说一下,主机增加网络功能  ^_^ ……

1. 定义系统启动过程中,显示服务启动信息的颜色脚本

显示

从上图中我们看到,我们重新启动网卡时,右边会显示 [   ok   ] 的绿色提示符,在上一博客中我们只简单的显示 tserver start …… 提示符现在不雅,下面我们就来修饰一下!

1)、编写 functions 脚本

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 [root@localhost ~]# vim functions #!/bin/bash # SCREEN=`stty -F /dev/console size 2>/dev/null` COLUN=${SCREEN#* } [ -z $COLUN ] && COLUN=80 SPA_COL=$[$COLUN-14] RED='\033[31m' GREEN='\033[32m' YELLOW='\033[33m' BLUE='\033[34m' RONMAL='\033[0m' success() { string=$1 RT_SPA=$[$SPA_COL-${#string}] echo -n "$string" for I in `seq 1 $RT_SPA`; do   echo -n " " done echo -e "[   ${GREEN}OK${RONMAL}   ]" } failure() { string=$1 RT_SPA=$[$SPA_COL-${#string}] echo -n "$string" for I in `seq 1 $RT_SPA`; do   echo -n " " done echo -e "[ ${RED}FAILED${RONMAL} ]" }

2)、给脚本增加执行权限

1 [root@localhost ~]# chmod +x functions

3)、移植 seq 命令

1 2 3 4 [root@localhost ~]# sh addcom.sh Your command: seq /usr/bin/seq copy /usr/bin/seq finished.

4)、然后在tserver等服务脚本内调用 functions 脚本,即可实现显示服务启动的信息!

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 #!/bin/bash # # chkconfig: 35 55 44 # description: chris service # #调用脚本 . /etc/init.d/functions FILE=/var/lock/subsys/`basename $0` prog=`basename $0` start() { echo "starting `basename $0`..." touch $FILE [ $? -eq 0 ] && success "Starting $prog" || failure "Starting $prog" } stop() { echo "stopping `basename $0`..." rm -rf $FILE [ $? -eq 0 ] && success "Stopping $prog" || failure "Stopping $prog" } status() { if [ -e $FILE ]; then    echo "Running.." else    echo "stopping..." fi } usage() { echo "please insernt like start|stop|restart|status" } case $1 in start) start ;; stop) stop ;; restart) stop start ;; status) status ;; *) usage exit 1 ;; esac

5)、测试效果

开机效果:

效果1

关机效果:

效果2

有效果了吧,嘿嘿!下面我们来增加网络功能!


2. 增加网络功能


下面是重点,很多朋友没做成功都是这个原因!查看网卡信息,你自己的虚拟机支持的网卡与驱动。

具休查处方法如下:

1). 查看物理网卡的驱动信息

1 2 3 4 5 [root@localhost ~] # ethtool -i eth0 driver: e1000 version: 7.3.21-k8-NAPI firmware-version: bus-info: 0000:02:00.0


2). 查看网卡的物理硬件型号

1 2 [root@localhost ~] # lspci | grep -i ethernet 02:00.0 Ethernet controller: Intel Corporation 82545EM Gigabit Ethernet Controller (Copper) (rev 01)


3).  查看该设备的模块信息

1 2 3 4 5 6 7 [root@localhost ~] # modinfo e1000 filename:       /lib/modules/2.6.32-279.14.1.el6.i686/kernel/drivers/net/e1000/e1000.ko version:        7.3.21-k8-NAPI license:        GPL description:    Intel(R) PRO/1000 Network Driver author:         Intel Corporation, <linux.nics@intel.com> srcversion:     1B96AEAA963BB7C0044BA00


案例如下:(我这里说两个例子,一个是RedHat 5.8 一个是CentOS 5.5)

ReadHat 5.8 环境

1)、 虚拟机的网卡

查找 pcnet32 模块

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 [root@localhost ~]# modinfo pcnet32 filename:       /lib/modules/2.6.18-194.el5/kernel/drivers/net/pcnet32.ko license:        GPL description:    Driver for PCnet32 and PCnetPCI based ethercards author:         Thomas Bogendoerfer srcversion:     F81443556AAE169CBF80F55 alias:          pci:v00001023d00002000sv*sd*bc02sc00i* alias:          pci:v00001022d00002000sv*sd*bc*sc*i* alias:          pci:v00001022d00002001sv*sd*bc*sc*i* depends:        mii vermagic:       2.6.18-194.el5 SMP mod_unload gcc-4.1 parm:           debug:pcnet32 debug level (int) parm:           max_interrupt_work:pcnet32 maximum events handled per interrupt (int) parm:           rx_copybreak:pcnet32 copy breakpoint for copy-only-tiny-frames (int) parm:           tx_start_pt:pcnet32 transmit start point (0-3) (int) parm:           pcnet32vlb:pcnet32 Vesa local bus (VLB) support (0/1) (int) parm:           options:pcnet32 initial option setting(s) (0-15) (array of int) parm:           full_duplex:pcnet32 full duplex setting(s) (1) (array of int) parm:           homepna:pcnet32 mode for 79C978 cards (1 for HomePNA, 0 for Ethernet, default Ethernet (array of int) module_sig:     883f3504bb6456c596239a507de7fd112a65a09f5faef1f984967c867e1149c0d1cfb295a3d944f009f528a8f96e85f55b72b3eb94966d22deef2fa7ea2 [root@localhost ~]#

查找 mii 模块

1 2 3 4 5 6 7 8 9 10 [root@localhost ~]# modinfo mii filename:       /lib/modules/2.6.18-194.el5/kernel/drivers/net/mii.ko license:        GPL description:    MII hardware support library author:         Jeff Garzik <jgarzik@pobox.com> srcversion:     16DCEDEE4B5629C222C352D depends:    vermagic:       2.6.18-194.el5 SMP mod_unload gcc-4.1 module_sig:     883f3504bb6456c596239a507de7fd112e5b09f55847ebc59e54b97cff863c8097bf32f8f320e90a0a5a1b8a45b5f58a468d592bde47be53a7ca7f8 [root@localhost ~]#

2)、创建相应目录

1 2 3 4 [root@localhost ~]# cd /mnt/sysroot/ [root@localhost sysroot]# ls ./ lib/        lib64/    [root@localhost sysroot]# mkdir ./lib/modules

3)、复制相应的模块

1 2 3 4 5 [root@localhost sysroot]# cp -p /lib/modules/2.6.18-194.el5/kernel/drivers/net/pcnet32.ko ./lib/modules/ [root@localhost sysroot]# cp -p /lib/modules/2.6.18-194.el5/kernel/drivers/net/mii.ko ./lib/modules/ [root@localhost sysroot]# ls ./lib/modules/ mii.ko  pcnet32.ko [root@localhost sysroot]#

4)、修改 rc.sysinit 文件

1 [root@localhost sysroot]# vim ./etc/rc.d/rc.sysinit

#增加网络功能模块    

1 2 3 echo "insmod pcnet32 mode" /sbin/insmod /lib/modules/mii.ko /sbin/insmod /lib/modules/pcnet32.ko

5)、移植相关命令

1 2 3 4 [root@localhost ~]# sh addcom.sh Your command: insmod /sbin/insmod copy /sbin/insmod finished.

6)、增加网卡配置文件

1 2 3 4 5 6 7 8 9 [root@localhost ~]# mkdir -p /mnt/sysroot/etc/sysconfig/network-scripts [root@localhost ~]# vim /mnt/sysroot/etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 BOOTPROTO=static IPADDR=192.168.18.10 NETMASK=255.255.255.0 GATEWAY=192.168.18.254 ONBOOT=yes :wq

7)、创建相对应脚本

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 [root@localhost ~]#  vim /mnt/sysroot/etc/init.d/network #!/bin/bash # # chkconfig: 35 09 90 # description:network servce . /etc/rc.d/init.d/functions CONF=/etc/sysconfig/network-scripts/ifcfg-eth0 . $CONF start () { NETMASK=16  ifconfig eth0 $IPADDR/$NETMASK up  [ -z $GATEWAY ] && route add default gw $GATEWAY } stop() { ifconfig eth0 down } status () {  ifconfig eth0 } usage() { ehco "like start,stop,restart" } case $1 in start) start success "config network eth0 " ;; stop) stop success "stop network eth0" ;; restart)  stop  Start  success "restart network eth0"  ;; status)  status  ;; *) usage ;; esac

8)、增加执行权限

1 [root@localhost ~]# chmod +x /mnt/sysroot/etc/init.d/network

9)、移植 ifconfig 命令

1 2 3 4 [root@localhost ~]# sh addcom.sh Your command: ifconfig /sbin/ifconfig copy /sbin/ifconfig finished.

10)、创建软链接

1 2 3 4 5 6 7 8 9 10 11 12 [root@localhost rc0.d]# ln -sv ../init.d/network K90network create symbolic link `K90network' to `../init.d/network' [root@localhost rc0.d]# ls K44tserver  K90network  S99halt [root@localhost rc6.d]# ln -sv ../init.d/network K90network create symbolic link `K90network' to `../init.d/network' [root@localhost rc6.d]# ls K44tserver  K90network  S99reboot [root@localhost rc3.d]# ln -sv ../init.d/network S09network create symbolic link `S09network' to `../init.d/network' [root@localhost rc3.d]# ls S09network  S55tserver

11)、测试效果如下

123

CentOS 5.5 环境,这个是我自己测试的环境,照着做的朋友请注意!与上面不同的是,我这里的网卡和驱动如下图,

1)、查看网卡与驱动类型

2)、复制相关驱动到 /lib/modules 下如下图,

3)、修改 rc.sysinit 文件,如下图

4)、移植相关命令

1 2 3 4 [root@localhost ~]# sh addcom.sh Your command: insmod /sbin/insmod copy /sbin/insmodfinished.

5)、增加网卡配置文件

1 2 3 4 5 6 7 8 9 [root@localhost ~]# mkdir -p /mnt/sysroot/etc/sysconfig/network-scripts [root@localhost ~]# vim /mnt/sysroot/etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 BOOTPROTO=static IPADDR=192.168.18.10 NETMASK=255.255.255.0 GATEWAY=192.168.18.254 ONBOOT=yes :wq

6)、创建相对应脚本

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 [root@localhost ~]#  vim /mnt/sysroot/etc/init.d/network #!/bin/bash # # chkconfig: 35 09 90 # description:network servce . /etc/rc.d/init.d/functions CONF=/etc/sysconfig/network-scripts/ifcfg-eth0 . $CONF start () { NETMASK=16 ifconfigeth0 $IPADDR/$NETMASK up [ -z $GATEWAY ] && route add default gw $GATEWAY } stop() { ifconfigeth0 down } status () { ifconfigeth0 } usage() { ehco "like start,stop,restart" } case$1 in start) start success "config network eth0 " ;; stop) stop success "stop network eth0" ;; restart) stop Start success "restart network eth0" ;; status) status ;; *) usage ;; esac

7)、增加执行权限

1 [root@localhost ~]# chmod +x /mnt/sysroot/etc/init.d/network

8)、移植 ifconfig 命令

1 2 3 4 [root@localhost ~]# sh addcom.sh Your command: ifconfig /sbin/ifconfig copy /sbin/ifconfigfinished.

9)、创建软链接

1 2 3 4 5 6 7 8 9 10 11 12 [root@localhost rc0.d]# ln -sv ../init.d/network K90network create symbolic link `K90network' to `../init.d/network' [root@localhost rc0.d]# ls K44tserver  K90network  S99halt [root@localhost rc6.d]# ln -sv ../init.d/network K90network create symbolic link `K90network' to `../init.d/network' [root@localhost rc6.d]# ls K44tserver  K90network  S99reboot [root@localhost rc3.d]# ln -sv ../init.d/network S09network create symbolic link `S09network' to `../init.d/network' [root@localhost rc3.d]# ls S09network  S55tserver

10)、测试效果如下

IP地址顺利的配置上去了,嘿嘿!

11)、相关操作演示如下

为lo配置IP地址,

ping 测试,

由于我的网卡是桥接的,下面我们测试一下,ping网关

所有测试结束,嘿嘿!有兴趣的朋友可以尝试的做一下!

 

上一篇博客中,我们的小linux又增加了网络功能,下面我们继续增加终端登录信息显示、用户登录界面、用户登录、用户认证 …… ^_^ !

1. 用户认证

使用不依赖与PAM的login程序 (已经编译好的),系统上的login的编译是依赖于PAM的,这里的login程序,去掉了对PAM的依赖,可以单独利用!(login 文件见附件!!!)

1)、复制 nsswitch 相关文件

nsswitch:Network Service Switch网络服务转换是一个协议框架,定义了login读取相关配置文件的位置:/etc/psaawd /etc/shadow /etc/group,nsswitch的配置文件在/etc/nsswitch.conf,而nsswitch的运行则依赖一些库文件:/lib/libnss*、/usr/lib/libnss*!

注意:复制库的时候必须保留库的连接:cp –d

1 2 3 4 5 6 7 8 [root@localhost ~]# cp -d /lib/libnss_files*  /mnt/sysroot/lib [root@localhost ~]# cp -d /usr/lib/libnss_files.so/mnt/sysroot/usr/lib/ [root@localhost ~]# mkdir /mnt/sysroot/usr/lib  [root@localhost ~]# cp -p /usr/lib/libnss3.so /usr/lib/libnssckbi.so /usr/lib/libnssutil3.so /mnt/sysroot/usr/lib/ [root@localhost ~]# cp -d /lib64/libnss_files*  /mnt/sysroot/lib64 [root@localhost ~]# cp -d /usr/lib64/libnss_files.so/mnt/sysroot/usr/lib64/ [root@localhost ~]# mkdir /mnt/sysroot/usr/lib64  [root@localhost ~]# cp -p /usr/lib64/libnss3.so /usr/lib64/libnssckbi.so /usr/lib64/libnssutil3.so /mnt/sysroot/usr/lib64/

2)、复制并修改 nsswitch 配置文件

1 2 3 4 5 6 7 8 [root@localhost ~]# cp -p /etc/nsswitch.conf /mnt/sysroot/etc/  [root@localhost ~]# [root@localhost ~]# vim /mnt/sysroot/etc/nsswitch.conf #只保留以下内容 passwd:     files  shadow:     files   group:       files   hosts:       files dns

3)、创建用户、密码、组

1 2 3 4 [root@localhost etc]# grep -E "^root\>" /etc/passwd > /mnt/sysroot/etc/passwd [root@localhost etc]# grep -E "^root\>" /etc/shadow > /mnt/sysroot/etc/shadow  [root@localhost etc]# grep -E "^root\>" /etc/group> /mnt/sysroot/etc/group [root@localhost ~]# grep -E "^root\>" /etc/gshadow >/mnt/sysroot/etc/gshadow

4)、移植相关命令

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 [root@localhost ~]# sh addcom.sh  Your command: mingetty   /sbin/mingetty   copy /sbin/mingetty finished.   Continue:  useradd    /usr/sbin/useradd   copy lib64 /lib64/libaudit.so.0 finished.   copy /usr/sbin/useradd finished.   Continue:  usermod /usr/sbin/usermod   copy /usr/sbin/usermod finished.   Continue:  passwd   /usr/bin/passwd   copy lib64 /usr/lib64/libuser.so.1 finished.   copy lib64 /lib64/libgobject-2.0.so.0 finished.   copy lib64 /lib64/libgmodule-2.0.so.0 finished.   copy lib64 /lib64/libglib-2.0.so.0 finished.   copy lib64 /usr/lib64/libpopt.so.0 finished.   copy lib64 /lib64/libpam_misc.so.0 finished.   copy lib64 /lib64/libpam.so.0 finished.   copy /usr/bin/passwd finished.   Continue:  groupadd   /usr/sbin/groupadd   copy /usr/sbin/groupadd finished.

5)、修改 inittab 文件

1 2 3 4 5 6 7 8 9 10 11 12 13 [root@localhost ~]# vim /mnt/sysroot/etc/inittab 1:2345:respawn:/sbin/agetty -n -l /bin/bash 38400 tty1  id:3:initdefault:   si::sysinit:/etc/rc.d/rc.sysinit l0:0:wait:/etc/rc.d/rc 0  l3:3:wait:/etc/rc.d/rc 3   l6:6:wait:/etc/rc.d/rc 6 #删除下面两行 1:2345:respawn:/sbin/agetty -n -l /bin/bash 38400 tty1  2:2345:respawn:/sbin/agetty -n -l /bin/bash 38400 tty2 #增加下面两行 1:2345:respawn:/sbin/mingetty tty1  2:2345:respawn:/sbin/mingetty tty2

6)、下载一个编译好、不依赖PAM认证的login到bin下,并给其执行权限

1 2 3 4 5 6 7 8 9 10 [root@localhost ~]# cd /mnt/sysroot/  bin/        dev/        half/       lib/        lost+found/ remkdir/    sbin/       sys/        usr/      boot/       etc/        home/       lib64/      proc/       root/       source/     tmp/        var/      [root@localhost ~]# cd /mnt/sysroot/bin/   [root@localhost bin]# ls   basename  bash  df  hostname  login  ls  mkdir  mount  ping  rm  sh  sleep  sync  tar  touch umount   [root@localhost bin]# chmod +x login   [root@localhost bin]# ls   basename  bash  df  hostname  login  ls  mkdir  mount  ping  rm  sh  sleep  sync  tar  touch umount   [root@localhost bin]#

7)、终端登陆信息:(用户登陆的时候才会显示) /etc/issue内的内容,是通过终端来进行打印的,里面各式使用转移字符

1 2 3 4 5 [root@localhost ~]# cp /etc/issue /mnt/sysroot/etc/  [root@localhost ~]# vim /mnt/sysroot/etc/issue freeloda little linux !  Kernel \r on an \m   http://freeloda.blog.51cto.com/

8)、设定内核参数

1 2 3 4 5 6 7 8 9 10 11 12 13 [root@localhost etc]# vim /mnt/sysroot/etc/sysctl.conf #直接编辑文件添加一行代码即可  net.ipv4.ip_forward = 1 [root@localhost etc]# vim /mnt/sysroot/etc/rc.d/rc.sysinit #添加以下内容  sysctl -p &> /dev/null [root@localhost ~]# sh addcom.sh #移植相关命令  Your command: sysctl   /sbin/sysctl   copy lib64 /lib64/libproc-3.2.7.so finished.   copy /sbin/sysctl finished.   Continue:  id   /usr/bin/id   copy /usr/bin/id finished.   Continue:  q

9)、移植 login 相关库文件

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 [root@localhost ~]# ldd /bin/login          libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00002b461e61c000)          libpam.so.0 => /lib64/libpam.so.0 (0x00002b461e854000)          libpam_misc.so.0 => /lib64/libpam_misc.so.0 (0x00002b461ea5f000)          libaudit.so.0 => /lib64/libaudit.so.0 (0x00002b461ec63000)          libc.so.6 => /lib64/libc.so.6 (0x00002b461ee7b000)          libdl.so.2 => /lib64/libdl.so.2 (0x00002b461f1d2000)          /lib64/ld-linux-x86-64.so.2 (0x00002b461e3ff000)  [root@localhost ~]# [root@localhost ~]# cp  /lib64/libcrypt.so.1 /mnt/sysroot/lib64/ [root@localhost ~]# cp  /lib64/libpam.so.0 /mnt/sysroot/lib64/ [root@localhost ~]# cp  /lib64/libpam_misc.so.0 /mnt/sysroot/lib64/ [root@localhost ~]# cp /lib64/libaudit.so.0 /mnt/sysroot/lib64/ [root@localhost ~]# cp  /lib64/libc.so.6 /mnt/sysroot/lib64/ [root@localhost ~]# cp  /lib64/libdl.so.2 /mnt/sysroot/lib64/ [root@localhost ~]# cp /lib64/ld-linux-x86-64.so.2 /mnt/sysroot/lib64/

)、测试效果

登录效果

本文出自 “Share your knowledge …” 博客,请务必保留此出处http://freeloda.blog.51cto.com/2033581/1222552

 

下载次数:15
下载地址:点击下载
本资源为程序自动采集,如有侵权请联系我们移除 admin#80vps.com 来信请将#替换为@
下一条 centos系统中网络配置相关
上一条 CentOS 用户管理常用命令

拥有超过10年的业务管理经验。我们是IDC服务和解决方案方面的专家

有任何疑问请不要犹豫,立即点击联系我们