自制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
下一篇 2016-09-21

相关推荐

  • Liunx权限的管理

    一、权限 获取某种资源的能力。对于Liunx而言,一切皆文件。所以,对于Liunx的权限定义,也就是定义文件被不同用户访问能力的过程。 权限分为三种:r、w、x 文件 r:查看文件内容 w:修改文件内容 x:可以将文件启动运行 目录 r:可以使用ls命令查看目录中的文件名 w:可以在目录中创建或删除文件(能否删除文件,取决于用户对目录的写权限 x:可以cd到…

    Linux干货 2015-04-03
  • shell编程中的三种流程控制

    流程控制 v 一 、过程式编程语言: 1.顺序执行 2.选择执行 3.循环执行  条件选择if 语句   选择执行:   注意: :if 语句可 嵌套    单分支 if 判断条件;then 条件为真的分支代码 fi    双分支 if 判断条件; then …

    Linux干货 2016-08-21
  • 程序包编译安装

    一、几个概念     1、开放源码         程序代码,人类可能读懂的程序语言,但是计算机不能识别和执行;     2、编译程序      &n…

    Linux干货 2015-05-11
  • 系统日志和loganalyzer

    作为运维人员,熟悉系统日志是一项基本功。本文将介绍centos6的系统日志rsyslog及loganalyzer工具。 简介 系统日志:记录历史事件,通常都是按时间顺序将发生的事件予以记录,linux上的日志分为syslogd(系统进程相关日志)和klogd(内核事件日志) centos5:syslog    缺点:不能进行并行数据存储,…

    Linux干货 2016-03-20
  • EXT4文件系统的初步使用

    文件系统的类型多种多样,我们接触得比较多的当属Windows系统上的FAT32和NTFS。 而EXT文件系统(Extended filesystem)则是linux上常见的文件系统类型。 目前最新的版本是ext4,常见于CentOS6之中。 1.查看当前系统中有没有挂载使用中的EXT4文件系统,可以使用mount命令: 2.如何创建一个EXT4的文件系统(f…

    系统运维 2016-02-14
  • Linux文件查找工具之find “大宝剑”

    一、文件查找工具常用软件 locate:     locate命令其实是find -name的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库/var/lib/locatedb,这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令…

    Linux干货 2016-03-12