一、成功做好一个小Linux的前提准备 

1、挂载一块10G的IDE磁盘,并划分两个分区:(分别为/dev/hda1  +20M、/dev/hda2  +512M)

# fdisk /dev/hda

# partprobe /dev/hda

# mke2fs -j /dev/hda1      格式化/dev/hda1

# mke2fs -j /dev/hda2      格式化/dev/hda2

# mkdir /mnt/{boot,sysroot}    创建两个目录

# mount /dev/hda1 /mnt/boot     把/dev/hda1挂载到/mnt/boot下

# mount /dev/hda2 /mnt/sysroot  把/dev/hda2挂载到/mnt/sysroot下

# mount   查看挂载情况

2、# cp /boot/vmlinuz-2.6.18-308.el5 /mnt/boot/vmlinuz  复制内核

# mkdir test   创建test目录

# cd test/     切换到test目录下

# zcat /boot/initrd-2.6.18-308.el5.img | cpio -id

进入init并编辑、修改里面的内容(前面带#的为要注释掉的信息)

vim init  编辑脚本内容如下:

  1. #!/bin/nash

  2. mount -t proc /proc /proc

  3. setquiet

  4. echo Mounting proc filesystem

  5. echo Mounting sysfs filesystem

  6. mount -t sysfs /sys /sys

  7. echo Creating /dev

  8. mount -o mode=0755 -t tmpfs /dev /dev

  9. mkdir /dev/pts

  10. mount -t devpts -o gid=5,mode=620 /dev/pts /dev/pts

  11. mkdir /dev/shm

  12. mkdir /dev/mapper

  13. echo Creating initial device nodes

  14. ......

  15. insmod /lib/mptbase.ko

  16. echo "Loading mptscsih.ko module"

  17. insmod /lib/mptscsih.ko

  18. echo "Loading mptspi.ko module"

  19. insmod /lib/mptspi.ko

  20. echo "Loading libata.ko module"

  21. insmod /lib/libata.ko

  22. echo "Loading ata_piix.ko module"

  23. insmod /lib/ata_piix.ko

  24. #echo "Loading dm-mod.ko module"

  25. #insmod /lib/dm-mod.ko

  26. #echo "Loading dm-log.ko module"

  27. #insmod /lib/dm-log.ko

  28. #echo "Loading dm-mirror.ko module"

  29. #insmod /lib/dm-mirror.ko

  30. #echo "Loading dm-zero.ko module"

  31. #insmod /lib/dm-zero.ko

  32. #echo "Loading dm-snapshot.ko module"

  33. #insmod /lib/dm-snapshot.ko

  34. #echo "Loading dm-mem-cache.ko module"

  35. #insmod /lib/dm-mem-cache.ko

  36. #echo "Loading dm-region_hash.ko module"

  37. #insmod /lib/dm-region_hash.ko

  38. #echo "Loading dm-message.ko module"

  39. #insmod /lib/dm-message.ko

  40. #echo "Loading dm-raid45.ko module"

  41. #insmod /lib/dm-raid45.ko

  42. echo Waiting for driver initialization.

  43. stabilized --hash --interval 1000 /proc/scsi/scsi

  44. mkblkdevs

  45. echo Scanning and configuring dmraid supported devices

  46. echo Scanning logical volumes

  47. lvm vgscan --ignorelockingfailure

  48. echo Activating logical volumes

  49. lvm vgchange -ay --ignorelockingfailure  vol0

  50. resume LABEL=SWAP-sda3

  51. echo Creating root device.

  52. mkrootdev -t ext3 -o defaults,ro /dev/hda2   (此处的/dev/hda2为修改后的内容)

  53. echo Mounting root filesystem.

  54. mount /sysroot

  55. echo Setting up other filesystems.

  56. setuproot

  57. echo Switching to new root and running init.

  58. switchroot

  59. 把上述文件归档压缩到/mnt/boot/目录下

  60. find . | cpio -H newc --quiet -o | gzip -9 > /mnt/boot/initrd.gz

  61. (newc指的是新规范的方式归档,支持更多的文件数量;--quiet指静默模式;-o指创建档案文件;gzip -9 指压缩的级别)

3、安装grub并配置grub下的文件

  1. # grub-install --root-directory=/mnt /dev/hda

  1. # ls /mnt/boot/     检验boot下是否有grub

  1. 编辑grub下的配置文件

# vim /mnt/boot/grub/grub.conf  内容如下:

  1. default=0

  2. timeout=3

  3. title Mylinux

  4. root (hd0,0)

  5. kernel /vmlinuz

  6. initrd /initrd.gz

5、切换到/mnt/sysroot目录下,创建几个etc目录下的文件

  1. # cd /mnt/sysroot  切换到/mnt/sysroot目录下

  2. # mkdir etc/rc.d/init.d bin sbin proc dev lib root mnt media var/{log,run,lock/subys,tmp} usr/{bin,sbin,local} tmp home opt boot -pv  创建一些需要用到的目录

6、编辑etc/inittab文件

vim etc/inittab   内容如下:

  1. id:3:initdefault:

  2. si::sysinit:/etc/rc.d/rc.sysinit

7、编辑etc/rc.d/rc.sysinit文件

vim etc/rc.d/rc.sysinit   内容如下:

  1. #!/bin/bash

  2. #

  3. echo -e "\tWelcome to \033[34mMylinux\033[0m system"

  4. /bin/bash

# chmod +x etc/rc.d/rc.sysinit   为其添加执行权限

8、编辑bincp.sh文件

vim bincp.sh  内容如下:

  1. #!/bin/bash

  2. #

  3. DEST=/mnt/sysroot

  4. libcp() {

  5. LIBPATH=${1%/*}

  6. [ ! -d $DEST$LIBPATH ] && mkdir -p $DEST$LIBPATH

  7. [ ! -e $DEST${1} ] && cp $1 $DEST$LIBPATH && echo "copy lib $1 finished."

  8. }

  9. bincp() {

  10. CMDPATH=${1%/*}

  11. [ ! -d $DEST$CMDPATH ] && mkdir -p $DEST$CMDPATH

  12. [ ! -e $DEST${1} ] && cp $1 $DEST$CMDPATH

  13. for LIB in  `ldd $1 | egrep -o "/.*lib(64){0,1}/[^[:space:]]{1,}"`; do

  14. libcp $LIB

  15. done

  16. }

  17. read -p "Your command: " CMD

  18. until [ $CMD == 'q' ]; do

  19. ! which $CMD && echo "Wrong command" && read -p "Input againe:" CMD && continue

  20. COMMAND=` which $CMD | grep -v "^alias" | grep -o "[^[:space:]]\{1,\}"`

  21. bincp $COMMAND

  22. echo "copy $COMMAND finished."

  23. read -p "Continue: " CMD

  24. done

# ./bincp.sh  测试bincp.sh  (测试时输入 init  ls   bash   q)

# sync(同步几次)

9、关闭虚拟机,挂载一块IDE磁盘大小为10G(可以用虚拟机内以存在的)

  1. 新建一个虚拟机,即为小Linux系统

二、需要小Linux配合的一些工作 

# ./bincp.sh  执行脚本后添加 touch mkdir rm mv cp cat mount umount vi vim chmod chown ping ifconfig insmod modprobe rmmod route halt reboot shutdown hostname sleep sync q   以便以下的操作

1、实现开机关机功能

  1. help exec:切断电源能一并关闭父进程,exec是以当前bash直接替换为这个进程,以子进程替换父进程

  2. # cd /mnt/sysroot  切换到/mnt/sysroot目录下

vim etc/rc.d/init.d/halt  编辑内容如下:

  1. #!/bin/bash

  2. #

  3. case $0 in

  4. *reboot)

  5. COMMAND=' /sbin/halt -p' ;;

  6. *halt)

  7. COMMAND=' /sbin/reboot; ;;

  8. *)

  9. echo "Only call this script by *reboot OR *halt;"

  10. ;;

  11. esac

  12. case $1 in

  13. start)

  14. ;;

  15. stop)

  16. ;;

  17. *)

  18. echo "Usage:`basename $0` {start|stop}"

  19. ;;

  20. esac

  21. exec $COMMAND

# chmod +x etc/rc.d/init.d/halt 添加执行权限

# cd etc/rc.d

# mkdir rc0.d   创建rc0.d目录

# ln -sv ../init.d/halt S99halt   进入rc0.d目录创建链接

# cd rc6.d/

# ln -sv ../init.d/halt S99reboot 进入rc6.d目录创建链接

  1. 编辑vim etc/inittab文件

  2. 在配置文件内添加 :l0:0:wait:/etc/rc.d/rc 0

  3. l6:6:wait:/etc/rc.d/rc 6

  4. 创建脚本:etc/rc.d/rc

vim etc/rc.d/rc  编辑内容如下:

  1. RUNLEVEL =$1

  2. #!/bin/bash

  3. #

  4. for I in /etc/rc.d/rc$RUNLEVEL.d/K*;do

  5. $I stop

  6. done

  7. for I in /etc/rc.d/rc$RUNLEVEL.d/S*;do

  8. $I start

  9. done

2、挂载文件系统

  1. 编辑/mnt/sysroot/etc/fstab配置文件,内容如下:

  2. /dev/hda2      /       ext3    defaults    0 0

  3. /dev/hda1     /boot    ext3    defaults    0 0

  4. proc          /proc    proc    defaults    0 0

  5. sysfs         /sys     sysfs   defaults    0 0

  6. 在/mnt/sysroot/et/rc.d/rc.sysinit下添加一些内容:

  7. echo "Remount rootfs...."

  8. mount -n -o remount,rw /

  9. mount -a

3、function函数的添加

  1. vim /etc/rc.d/init.d/functions 此脚本可用于控制服务脚本的信息显示,其内容如下:

  2. SCREEN=`stty -F /dev/console size`

  3. COLUMNS=${SCREEN#* }

  4. SPA_COL=$[$COLUMNS-14]

  5. RED='\033[31m'

  6. GREEN='\033[31m'

  7. YELLOW='\033[31m'

  8. BLUE='\033[31m'

  9. success() {

  10. string=$1

  11. RT_SPA=$[$SPA_COL-${#string}]

  12. echo -n "String"

  13. for I in `seq 1 $RT_SPA`;do

  14. echo -n " "

  15. done

  16. echo -e "[   ${GERRN}OK{NORMAL}   ]"

  17. }

  18. failure() {

  19. string=$1

  20. RT_SPA=$[$SPA_COL-${#string}]

  21. echo -n "String"

  22. for I in `seq 1 $RT_SPA`;do

  23. echo -n " "

  24. done

  25. echo -e "[ ${RED}FAILED${NORMAL} ]"

  26. }

# chmod +x  /mnt/sysroot/rc.d/init.d/functios  添加执行权限

让脚本变得更漂亮一些,可以修改成如下内容:

vim etc/rc.d/init.d/tserver  修改脚本内容:

  1. # chkconfig: 35 66 33

  2. # description: test service script

  3. #!/bin/bash

  4. #

  5. ./etc/rc.d/init.d/functions

  6. prog=`basename $0`

  7. lockfile=/var/lock/subsys/$prog

  8. start() {

  9. touch $lockfile

  10. [ $? -eq 0 ] } && success "Starting $prog" ||failure "Staring $prog"

  11. stop() {

  12. echo "Stopping $prog..."

  13. [ $? -eq 0 ] } && success "Stopping $prog" ||failure "Stopping $prog"

  14. }

  15. status() {

  16. if [ -f $lockfile ];then

  17. echo"Running..."

  18. else

  19. echo"Stopped..."

  20. fi

  21. }

  22. usage() {

  23. echo "Usage:$prog {start|stop|status|restart}"

  24. case $1 in

  25. start)

  26. start ;;

  27. stop)

  28. stop ;;

  29. restart)

  30. stop

  31. start

  32. ;;

  33. status)

  34. status

  35. ;;

  36. *)

  37. usage

  38. exit 1

  39. ;;

  40. esac

  41. chmod +x inin.d/tserver  添加执行权限

  42. init.d/tserver start     测试

4、为系统添加主机名和IP

1、进行模块的移植

# cd /mnt/sysroot

# mkdir lib/moudules

# modinfo pcnet32   # modinfo mii   

# cp /lib/modules/2.6.18-308.el5/kernel/drivers/net/pcnet32.ko /mnt/sysroot/modules

# cp /lib/modules/2.6.18-308.el5/kernel/drivers/net/mii.ko /mnt/sysroot/modules

2、添加主机名,装载内核模块

vim etc/rc.d/rc.sysinit  编辑脚本内容如下:

  1. #!/bin/bash

  2. #

  3. echo -e "\tWelcome to \033[34mMylinux\033[0m system"

  4. echo "Remount rootfs..."

  5. mount -n -o remount,rw /

  6. echo "Set the hostname..."

  7. [ -f /etc/sysconfig/network ] && /etc/sysconfig/network

  8. [ -z $HOSTNAME -O "$HOSTNAME" == '(none)' ] && HOSTNAME=localhost

  9. /bin/hostname $HOSTNAME

  10. echo "Initializing network device..."

  11. /sbin/insmod /lib/modules/mii.ko

  12. /sbin/insmod /lib/modules/pcent32.ko

3、定义IP地址

# mkdir -pv /mnt/sysroot/etc/sysconfig  创建目录

# vim etc/sysconfig/network-scripts/ifcfg-etho  修改配置文件内容如下:

  1. EDVICE=eth0

  2. BOOTPROTO=static

  3. IPADDR=172.16.59.1

  4. NETMASK=255.255.0.0

  5. GATEWAY=172.16.0.1

  6. ONBOOT=yes

4、编辑脚本来实现IP的添加

vim etc/rc.d/init.d/network  内容如下:

  1. #!/bin/bash

  2. #

  3. # chkconfig: 35 09 90   启动级别是09 关闭级别是90

  4. # description: network service

  5. prog=network

  6. ./etc/rc.d/init.d/functions

  7. CONF=/etc/sysconfig/network-scripts/ifcfg-eth0

  8. . $CONF

  9. start() {

  10. ifconfig etho $IPADDR/$NETWORK

  11. [ -z $GATEWAY ] && route adddefault gw $GATEWAY

  12. }

  13. stop() {

  14. ifconfig eth0

  15. }

  16. usage() {

  17. echo "$prog: {start|stop|restart|status}"

  18. }

  19. case $1 in

  20. start)

  21. start

  22. success "Config network etho"

  23. ;;

  24. stop)

  25. stop

  26. success "Stop network card eth0"

  27. ;;

  28. restart)

  29. stop

  30. start

  31. success "Restart network card etho"

  32. ;;

  33. status)

  34. status

  35. ;;

  36. *)

  37. usage

  38. exit

# chmod +x etc/rc.d/init.d/network   为其添加执行权限

# cd etc/rc.d/rc0.d

# ln  -sv ../init.d/network K90netwrok  创建链接

# cd ../rc6.d/

# ln -sv ../init.d/network K90netwrok

# cd ../rc3.d/

# ln -sv ../init.d/network S09netwrok

注意:0和6级别不需开启网络服务

转载于:https://blog.51cto.com/6644068/1168920

RHEL5.8系统裁减(内含做小Linux前的准备工作)相关推荐

  1. linux 系统裁减指南,Linux 系统裁减指南

    Linux 系统裁减指南 第一步:裁减内核 打开终端,输入:cd /usr/src/linux2.4,然后输入make xconfig.现在编译内核正式开始了 1.1        "cod ...

  2. linux虚拟机备份树莓派,为树莓派做系统备份镜像(for Linux #038; Mac),

    为树莓派做系统备份镜像(for Linux & Mac), 准备一个SD卡让你花费了一些时间,不是么?我打赌你肯定不想再做一遍,对吧?好吧,我们来做一个备份! 论坛用户,使用MAC并且是Ada ...

  3. 虚拟机安装的Linux系统字体显示太小怎么办?

    创作本篇文章的原因是因为本人在虚拟机安装完Linux操作系统后,进入系统发现字体特别小,对于操作感有要求的IT人士这可是忍不了的

  4. 总结之:CentOS 6.4系统裁减详解及装载网卡步骤

    前言    随着接触Linux的慢慢深入.对Linux也有了一个基本认识了吧,慢慢的接触系统内核.系统配置文件.在了解Linux的系统启动流程后,现在来总结一下一个简单的Linux系统的裁减方法和步骤 ...

  5. linux的裁剪过程,让你的小linux更加完善,赶快试试吧!

    一.系统启动流程: 1.POST-->BIOS(Boot Sequence)--> BootLoader(MBR)--> Kernel(initrd,initramfs)--> ...

  6. 宿主机linux,宿主机上安装小linux

    今天自己利用vmwere软件做了一个小型的linux,下面把实验心得写出来分享给大家. 实验环境:使用vmwere软件,在已经创建的一个虚拟机中再添加一块硬盘,5G左右就已经足够(为了以后实验别太吝啬 ...

  7. 手把手教你从零构建属于自己的小linux

    从零构建属于自己的小linux 本文讲述的是利用一个宿主机一步步根据自己喜好构建属于自己的一个小型linux系统. 直接切入正题开始构建属于自己的linux系统. 准备工作: 本次制是在VMware ...

  8. 用习惯了windows系统要怎样去认识linux系统(一)

    一.前言 对于普通用户来说99%都使用的是windows操作系统,即便那些会使用linux系统的技术员来说,他们PC上安装的也是windows系统.linux系统只是用于服务器市场,可以说现在服务器市 ...

  9. 基于51单片机的智能浇花系统(可做毕设)

    基于51单片机的智能浇花系统(可做毕设) 一.系统介绍 二.仿真展示 三.实物展示 四.仿真过程 五.代码 1.ADC0832 2.LCD1602 3.按键 4.水泵 5.温湿度 6.定时器 7.ma ...

最新文章

  1. CentOS 6虚拟机安装
  2. 一文览尽基于激光雷达点云(lidar)的目标检测方法
  3. 【网站建设】Linux上安装MySQL - 12条命令搞定MySql
  4. mysql主从复制运维_Mysql主从复制配置
  5. 李宏毅机器学习课程-Structured Learning
  6. voms下的反射大师_VOMS旧版
  7. 数据智能是未来商业的核心竞争力之一
  8. U-Net中的skip connection
  9. CUDA编程之:Stream(流)
  10. SQL Server 数据库原理与应用
  11. 单片机C语言PWM程序原理,单片机C语言程序设计:用 ADC0808 控制 PWM 输出
  12. 一级标题居中,二级标题固定缩进
  13. python爬网易评论
  14. Skyscrapers Aren’t Scalable
  15. 排兵布阵问题java语言_hdu 4539 郑厂长系列故事——排兵布阵
  16. 机器学习入门 线性回归及梯度下降
  17. NVD软件漏洞数据处理及分类方法总结
  18. 【tensorflow学习】Ftrl学习
  19. android 有道笔记 装在哪个目录,有道云笔记文件保存在哪里在哪个路径下
  20. java 输出大于n的质数_Java 计算并打印第n个质数

热门文章

  1. 【转】61条面向对象设计的经验原则
  2. 厄瓜多尔最大银行遭攻击,服务被迫中断
  3. springcloud微服务系列之服务注册与发现组件Eureka
  4. python字符串前面加u,r,b的含义
  5. 技术人必读:如何让自己成长为IT项目管理者
  6. 域服务器内置用户组说明
  7. Comparable 与 Comparator
  8. AngularJS 学习笔记值post传值
  9. IBM ThinkPad错误代码列表
  10. c++中char * 和 char []的区别-转