自制Linux系统

                      自制Linux系统

1、环境准备:

        centos6上添加一块新硬盘,并分区格式化。

        虚拟机不关机情况下添加新硬盘,需执行以下命令,让系统识别新硬盘。

        [root@centos6 Desktop]# echo "- – -" > /sys/class/scsi_host/host2/scan

        使用fdisk分区工具,创建两个必要的分区

        使用mkfs格式化工具,格式化成ext4格式的文件系统。

 

 2、开始对/dev/sdc硬盘分区并格式化:

      1)使用fdisk分区工具,创建两个必要的分区:

          /dev/sdc1 :对应/boot分区;

          /dev/sdc2 :对应根(rootfs)分区;

      2)使用mkfs格式化工具,格式化成ext4格式的文件系统。

          [root@centos6 Desktop]# fdisk /dev/sdc

             Device Boot      Start         End      Blocks   Id  System

          /dev/sdc1               1          65      522081   83  Linux

          /dev/sdc2              66        2610    20442712+  83  Linux

 

      3)使用lsbik命令查看/dev/sdc磁盘分区

          [root@centos6 Desktop]# lsblk  /dev/sdc

          NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT

          sdc      8:32   0    20G  0 disk

         ├─sdc1   8:33   0 509.9M  0 part

         └─sdc2   8:34   0  19.5G  0 part

          [root@centos6 Desktop]#

 

      4)格式化/dev/sdc1分区和/dev/sdc2分区:

          [root@centos6 Desktop]# mkfs.ext4 /dev/sdc1

          [root@centos6 Desktop]# mkfs.ext4 /dev/sdc2

 

 3、创建/boot/sysroot系统根目录挂载点:

        [root@centos6 Desktop]# mkdir /mnt/boot

        [root@centos6 Desktop]# mkdir /mnt/sysroot

        [root@centos6 Desktop]#

 

 4、挂载/dev/sdc1/分区和/dev/sdc2分区到指定的目录上:

       [root@centos6 Desktop]# mount /dev/sdc1 /mnt/boot/

       [root@centos6 Desktop]# mount /dev/sdc2 /mnt/sysroot/

 

 5、复制内核(kernel)文件和initramfs文件到/mnt/boot目录(也可以从光盘拷贝):

       [root@centos6 Desktop]# cp -rf /boot/vmlinuz-2.6.32-642.el6.x86_64 /mnt/boot

       [root@centos6 Desktop]# cp -rf /boot/initramfs-2.6.32-642.el6.x86_64.img /mnt/boot

       [root@centos6 Desktop]#

 

 6、安装/mnt/boot目录下的grub目录及grub目录下的文件:

       注意:执行此操作时必须指定/boot目录的父目录作为根目录。

             因为此项操作实际上是写数据到/dev/sdc1分区中的,相当于就是/boot目录。

       [root@centos6 Desktop]# grub-install –root-directory=/mnt  /dev/sdc

       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

       (hd2) /dev/sdc

       [root@centos6 Desktop]#

 

 7、建立/mnt/boot/grub/grub.conf配置文件:

       1 default=0

       2 timeout=5

       3 title=centos6.8 small Linux

       4 kernel  /vmlinuz-2.6.32-642.el6.x86_64  ro root=/dev/sda2 selinux=0 init=/bin/bash

       5 initrd     /initramfs-2.6.32-642.el6.x86_64.img

 

 8、创建/mnt/sysroot目录下small Linux 根目录下的目录:

       [root@centos6 Desktop]# mkdir -pv /mnt/sysroot/

       {etc,lib,lib64,bin,sbin,tmp,var,usr,sys,proc,opt,home,root,boot,dev,mnt,media}

 

    查看/mnt/sysroot目录下创建的目录:

       [root@centos6 Desktop]# tree /mnt/sysroot/

       /mnt/sysroot/

      ├── bin

      ├── boot

      ├── dev

      ├── etc

      ├── home

      ├── lib

      ├── lib64

      ├── lost+found

      ├── media

      ├── mnt

      ├── opt

      ├── proc

      ├── root

      ├── sbin

      ├── sys

      ├── tmp

      ├── usr

      └── var

      18 directories, 0 files

      [root@centos6 Desktop]#

 

 9、创建/mnt/sysroot/etc/fstab文件:

      [root@centos6 Desktop]# vim /mnt/sysroot/etc/fstab

      1 /dev/sda1   /boot   ext4  defaults 1 1

      2 /dev/sda2   /       ext4  defaults 1 2

     x  (保存退出)

 

 10、复制bash和相关库文件;复制相关命令及相关库文件:

      由于复制相关命令和库文件比较繁琐,所以我们使用脚本进行复制;

      查看脚本文件:

       [root@centos6 Desktop]# vim /testdir/copycmd.sh

       1 #!/bin/bash

       2

       3 ch_root="/mnt/sysroot"

       4 [ ! -d $ch_root ] && mkdir $ch_root

       5

       6 bincopy() {

       7     if which $1 &>/dev/null; then

       8     

       9         local cmd_path=`which –skip-alias $1`

      10         local bin_dir=`dirname $cmd_path`

      11         [ -d ${ch_root}${bin_dir} ] || mkdir -p ${ch_root}${bin_dir}

      12         [ -f ${ch_root}${cmd_path} ] || cp $cmd_path ${ch_root}${bin_dir}

      13         return 0

      14     else

      15         echo "Command not found."

      16         return 1

      17     fi  

      18 }

      19  

      20 libcopy() {

      21     local lib_list=$(ldd `which –skip-alias $1` | grep -Eo '/[^[:space:]]+')

      22     for loop in $lib_list;do

      23         local lib_dir=`dirname $loop`

      24         [ -d ${ch_root}${lib_dir} ] || mkdir -p  ${ch_root}${lib_dir}

      25         [ -f ${ch_root}${loop} ] || cp $loop ${ch_root}${lib_dir}

      26     done

      27 }

      28  

      29 read -p "Please input a command: " command

      30

      31 while [ "$command" != "quit" ];do

      32     if bincopy $command ;then

      33         libcopy $command

      34     fi

      35     read -p "Please input a command or quit: " command

      36 done

 

  拷贝命令及相关库文件:

     [root@centos6 Desktop]# source /testdir/copycmd.sh

     Please input a command: bash

     Please input a command or quit: vim

     Please input a command or quit: reboot

     Please input a command or quit: poweroff

     Please input a command or quit: cd

     Please input a command or quit: ifconfig

     Please input a command or quit: cat

     Please input a command or quit: ls

     Please input a command or quit: hostname

     Please input a command or quit: init

     Please input a command or quit: passwd

     Please input a command or quit: tree

     Please input a command or quit: lsblk

     Please input a command or quit: blkid

     Please input a command or quit: shutdown

     Please input a command or quit: quit

     [root@centos6 Desktop]#

 

 至此精简版的smalllinux已经制作完成,可以将/dev/sdc磁盘移至其它虚拟机中进行测试。

 

 

 

 

 

 

        

 

   

原创文章,作者:zhengyibo,如若转载,请注明出处:http://www.178linux.com/48369

(0)
zhengyibozhengyibo
上一篇 2016-09-21 21:18
下一篇 2016-09-21 21:24

相关推荐

  • 优云实践:巧用Salt,实现CMDB配置自动发现

    随着互联网+新形势的发展,越来越多的企业步入双态(稳敏双态)IT时代,信息化环境越来越复杂,既有IOE三层架构,也有VCE、Openstack等云虚拟化架构和互联网化的分布式大数据架构。所以,企业急需建立一套合适的配置管理库(CMDB),像人类“大脑”一样统一存储从基础架构到业务应用各层面的配置信息,以便协调“身体”(运维系统)各部分完成复杂的运维工作。 C…

    系统运维 2016-07-26
  • PHP5.4最新特性

    原文Oracle:LAMP 体系有了新的竞争,但此版本中的特性使 PHP 再次挑战极限。 稍微做了修改。: 概述总结:1. 内存和性能改进:大型 PHP 应用程序中可节省 20-50% 的内存。通过各种优化使性能提高 10-30%2. 支持特性Trait3. 精简数组语法,可以定义短数组4. 函数数组解除引用,支持Array dereferenci…

    Linux干货 2015-11-18
  • mysql备份还原

    一、前言 数据对于一个公司来说有多重要这点不说大家也知道,数据还在,服务崩溃还可重建。为什么要备份?很简单,天灾人祸。比如硬件故障,软件故障,自然灾害,黑客攻击或自身误操作等因素。这时候备份,恢复数据就显得至关重要了。 二、基础概念 由于备份与恢复需要用到一些必要的知识,故在此先讲解下 2.1二进制日志 myql日志有多种,其中二进制日志文件对数据恢复有很大…

    Linux干货 2015-11-30
  • Leetcode 编程训练

    Leetcode这个网站上的题都是一些经典的公司用来面试应聘者的面试题,很多人通过刷这些题来应聘一些喜欢面试算法的公司,比如:Google、微软、Facebook、Amazon之类的这些公司,基本上是应试教育的功利主义。 我做这些题目的不是为了要去应聘这些公司,而是为了锻炼一下自己的算法和编程能力。因为我开始工作的时候基本没有这样的训练算法和编程的网站,除了…

    Linux干货 2016-08-15
  • DNS基础知识

    一、DNS介绍:   1、DNS: Domain  Name Service,域名解析服务;      部署方式为分布式部署,如图所示:        2、查询类型:     递归查询:仅发出一次请求,要求对方回复最终结果&nbs…

    Linux干货 2015-05-18
  • linux系统监控 sar命令详解

    sar(System Activity Reporter系统活动情况报告)是目前 Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告, 包括:文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC有关的活动等。 本文主要以CentOS 6.3 x64系统为例,介绍s…

    Linux干货 2015-06-17