自制 mini linux


思路


先装载一块硬盘,按照上面两个实验的部分结果,创建各个目录

在/boot 里面添加内核 ,添加initramfs.img文件添加grub组件  ,创建grub.conf  
然后复制bash  ,ls  ,cp  等,命令和响应的库文件,并在启动的时候指定第一个进程为/bin/bash
顺便加载一个网卡驱动,复制ping命令和ifconfig命令,测试能否ping通

步骤

(1)添加一个硬盘20G,分区 格式化  挂载
     echo ‘- – -‘ >  /sys/class/scsi_host/host2/scan
     分两个区,一个/boot     一个/root  大小分别为 100M 和 10G
      格式化为ext4
      在/mnt下面创建两个目录,一个叫/mnt/boot  另外一个叫 /mnt/root
     将两个分区挂载
(2)分别复制内核文件和initramfs.img文件到/mnt/boot目录下面安装grub文件 ,配置grub.conf 
     配置的时候需要注意的是写root路径的时候不要写
     成了当前磁盘在本机上的分区标号,应该写成/dev/sda,因为启动的时候只有一块硬盘
     grub-install  –root-directory=/mnt/   /dev/sdb
(3)创建需要的目录(FHS),拷贝必要的文件至/mnt/root下面
     mkdir  /mnt/root/{bin,sbin,root,boot,lib,lib64,home,etc,dev,mnt,var,usr,proc,sys,tmp}
     利用脚本来复制各种需要的命令和库文件  ls   cp  mount  vim  insmod  mkdir  ping  ifconfig
     umount  ip  reboot   mv  rm  bash  tree  kill  cat  df  
     复制所需要的网卡驱动,
     dmesg  | grep eth  找到网卡驱动的名字 
     locate   网卡驱动的名字          找到网卡驱动的路径
     cp /path/to/file    /mnt/root/lib/  
(4)确定第一个进程
     在grub.conf配置文件中内核参数那一栏确定第一启动的进程为/bin/bash
(5)切换硬盘,进行测试,配置IP,测试ping命令

操作流程

(1)添加硬盘,分区,格式化,挂载

     要求/boot为  +100M  /root为  +1G

自制 mini  linux


2)分别复制内核文件和initramfs.img文件到/mnt/boot目录下面安装grub文件 ,配置grub.conf

     cp /boot/initramfs.img    /mnt/boot
     cp /boot/vmlinuz   /mnt/boot
     cd  /boot    
     grub-install  –root-directory=/mnt/  dev/sdb(本次测试的为/dev/sdb)
     vim  /mnt/boot/grub/grub.conf
     编写配置文件:
 
defaults=0
timeout=3
title  yang linux
     kernel    /vmlinuz   ro  root=/dev/sda2  init=/bin/bash
     initrd  /initrdramfs.img  

 查看里面的目录结构 

自制 mini  linux


(3)创建需要的目录(FHS),拷贝必要的文件至/mnt/root下面
     由于这里复制的条目很多,编写一个脚本来完成相应的功能

#!/bin/bash
#
#Author:Double.f
#Date:2017-5-9
cpcmd()
 {
    path_root=/mnt/root/
    DIR=$(echo $1 | egrep -o '^/.*/')
    [ -z $DIR ] || mkdir -p ${path_root}${DIR}   &> /dev/null
    [ -z $1 ] && echo "$1 is existed" || cp $1 ${path_root}$1   

}

read -p "please input a command: "  CMD
if which $CMD &> /dev/null;then
    until [ $CMD == 'quit'  ];do
        path_command=`which $CMD | grep -oE '/[[:alnum:]].*/?[[:alnum:]]'`
        REV=`ldd $path_command | egrep -o '/.*/?.*[[:space:]]'`
        cpcmd $path_command   
        for I in `echo $REV`;do
            cpcmd $I
        done
        read -p "please input command or quit :" CMD
    done
else
    echo "Command  not  found"
    exit 1 fi

复制网卡驱动模块
cd /lib/mop /lib/modules/2.6.32-642.el6.x86_64/kernel/drivers/net/e1000/e1000.ko   /mnt/root/lib
(4)进入调试
进入之后首先装载网卡驱动模块
insmod  /lib/eth1000.ko
然后给网卡配一个ip   172.16.0.5,将虚拟机的网络调为桥接,用ping命令来测试

自制 mini  linux

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

(1)
Double fDouble f
上一篇 2017-05-14 14:53
下一篇 2017-05-14 19:59

相关推荐

  • 第4周作业

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。     ~]# cp -r /etc/skel/ /home/tuser1     ~]# chmod 700 /home/tuser1/ 2、…

    Linux干货 2016-12-25
  • 磁盘分区命令与文件系统简介

    磁盘分区命令与文件系统简介   这一次的博客是整理一下这周所学的磁盘分区fdisk与mount命令,内容不难但是比较琐碎,需要记忆的命令比较多,刚好借着博客来复习一下命令,加强一下记忆。废话不多说,开始! 首先做一下准备工作:在虚拟机上增加一个或多个磁盘,这个比较简单,在VMware虚拟机上方点虚拟机右键—>设置&#82…

    2017-08-19
  • shell脚本编写-1

    1、脚本调试-脚本运行前要进行脚本调试    bash -n /path/to/some_script 检测脚本中的语法错误    bash -x /path/to/some_script 调试执行 2、shell是弱类型编程语言 1)、无须指定变量类型,默认为字符型;变量参与运算会自动进行隐式类型转换;变量无须事先定…

    Linux干货 2016-08-15
  • linux 文件管理类命令及功能用法

    第一题:Linux上的文件管理类命令都有哪些,其常用的使用方法及相关示例演示。 文件管理类的命令有: cd,ls,touch,mldir,cp,mv,rm,rmdir,pwd,tree 使用方法 (1),cd命令用来切换工作目录至dirname。其中dirName表示法可为绝对路径或相对路径。 常用格式: cd #进入用户家目录 cd~ #进入用户家目录 c…

    Linux干货 2017-07-09
  • Vim编辑工具用法的总结

    描述:    Vim是一款强大的命令行界面的文本编辑器,是vi的高级版本,先说下学习它的原因:  1,所有的UNIX Like 系统都会内置vi文本编辑器,其他的文本编辑器则不一定会存在;  2,很多软件的编辑接口都会主动调用vi  3,vim具有程序编辑的能力,可以主动以字体颜色辨别语法的正确性,方便程序设…

    Linux干货 2016-08-11
  • 第四周作业

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 [root@unclez ~]# cp -r /etc/skel /home/tuser1 [root@unclez ~]# chmod -R&…

    Linux干货 2016-12-24