继续小Linux的话题,完善小Linux的功能

1实现单用户模式

# cd /mnt/sysroot/bin

# ln -sv bash sh

 

# vim etc/inittab

添加一行:

l1:1:wait:/sbin/init -t1 S

 

# sync     让新写入的数据同步到磁盘上

    每次在宿主机上写入新数据时,多同步几次为好

 

挂起宿主机,启动目标主机,进入单用户模式:

 

2添加主机名

# cd /mnt/sysroot

# mkdir etc/sysconfig

# vim etc/sysconfig/network

添加:

NETWORKING=yes

HOSTNAME=www.magedu.com

 

# vim etc/rc.d/rc.sysinit 

添加如下行:

echo -e "Set the hostname..."

[ -r /etc/sysconfig/network ] && source /etc/sysconfig/network

[ -z $HOSTNAME ] && /bin/hostname localhost || /bin/hostname $HOSTNAME

 

# chmod go=--- root/ -R

 

3、添加环境变量和PS1

# vim etc/profile

添加如下行:

PS1='[\u@\h \W]\$'

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin

export PS1 PATH


4、定义umask

# vim etc/bashrc

添加:

# /etc/bashrc

if [ $UID -gt 99 ] && [ `id -gn` -eq `id -un` ]; then

  umask 002

else

  umask 022

fi

 

在目标主机上新建文件a,查看权限:

    目标主机中的vim编辑器可能会依赖下面这个文件,所以复制过去还是比较好的:

# cp /etc/vimrc /mnt/sysroot/etc/

 

5使linux挂载根文件系统和激活交换分区

 

# vim /mnt/sysroot/etc/rc.d/rc.sysinit 

添加如下行:

echo -e "Remount the root filesystem..."

mount -n -o remount,rw /dev/sda3 /

 

echo -e "Activating the swap filesystem..."

swapon /dev/sda2

 

6提供/etc/fstab文件,挂载额外文件系统;

# vim etc/rc.d/rc.sysinit 

添加如下行:

echo -e "Mounting the rest filesystem..."

mount -n -a

 

7、实现开机自动挂载:

# vim etc/fstab

 

/dev/sda3       /       ext3    defaults        0 0

/dev/sda1       /boot   ext3    defaults         0 0

/dev/sda2       swap    swap    defaults       0 0

proc            /proc   proc    defaults        0 0

sysfs           /sys    sysfs   defaults         0 0

    后面两个也要挂载上

 

8提供/etc/sysctl.conf,设置内核参数;

# cd /mnt/sysroot

# vim etc/sysctl.conf

编辑如下行:

# /etc/sysctl.conf

net.ipv4.ip_forward = 1

 

# vim etc/rc.d/rc.sysinit 

编辑如下行:

echo "Set the kernel parameters..."

sysctl -p -q

 

9、提供Nginx服务

先在宿主机上安装nginx

 

添加系统用户和组:

#groupadd -r nginx

#useradd -r -g nginx -s /sbin/nologin -M nginx

 

将用户和组复制到目标主机的磁盘上:

#tail  -1 /etc/passwd >> /mnt/sysroot/etc/passwd

#tail  -1 /etc/group >> /mnt/sysroot/etc/group

#tail  -1 /etc/shadow  >> /mnt/sysroot/etc/shadow

 

# yum groupinstall "Development Libraries" "Development Tools"

 

# yum install gcc openssl-devel pcre-devel zlib-devel 

 

下载nginx,编译安装:

# tar xvf nginx-1.0.4.tar.gz 

# cd nginx-1.0.4

 

#./configure \

  --prefix=/usr \

  --sbin-path=/usr/sbin/nginx \

  --conf-path=/etc/nginx/nginx.conf \

  --error-log-path=/var/log/nginx/error.log \

  --http-log-path=/var/log/nginx/access.log \

  --pid-path=/var/run/nginx/nginx.pid  \

  --lock-path=/var/lock/nginx.lock \

  --user=nginx \

  --group=nginx \

  --with-http_ssl_module \

  --with-http_flv_module \

  --with-http_stub_status_module \

  --with-http_gzip_static_module \

  --http-client-body-temp-path=/var/tmp/nginx/client/ \

  --http-proxy-temp-path=/var/tmp/nginx/proxy/ \

  --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \

  --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \

  --http-scgi-temp-path=/var/tmp/nginx/scgi 

#make

#make install

 

创建一些nginx需要的目录:

# cd /mnt/sysroot

# mkdir -p etc/nginx/

# mkdir -pv var/{log/nginx,run/nginx,lock,tmp/nginx{client,fcgi,proxy,uwsgi,scgi}}

 

开始执行脚本,再复制一些所需的命令:

# bash bcp.sh             

A Command: nginx

A Command: netstat

A Command: ps

A Command: route

 

复制nginx的文件到目标主机上:

cp /etc/nginx/* /mnt/sysroot/etc/nginx

 

 

挂起宿主机,开启目标主机,给目标主机配置IP和网关:

 

开启nginx服务:

 

在浏览器中成功访问Webnginx移植成功:

注:在宿主机上写入新数据后,不要急着挂起宿主机,开启目标主机,这样的话,会导致数据同步不上磁盘,所以,要有耐心,多sync几次,多等待一会再挂起宿主机,可以减少很多错误。

    另外,做完一部分时,若快照,必须保证宿主机添加的磁盘与目标主机的磁盘名字保持一致,否则,会导致数据写不进磁盘。不做快照,虽然做错了不容易恢复,但我还是建议不要快照,这样便不会那么麻烦,或许还会省去不少功夫。