自制 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

相关推荐

  • linux基于密钥的认证

    生成密钥对儿: [root@Ams ~]# ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa):  Enter passphrase (empty for no passph…

    Linux干货 2016-08-02
  • 一年直接在于春

    day01

    2018-03-26
  • 网络配置管理:ifcfg、iproute2和ss等相关命令介绍(不完整,需要后期完善)

    网络配置管理:ifcfg、iproute2和ss等相关命令介绍 ifcfg家族: ifconfig [interface] ifconfig interface [aftype] options | address …   -a :查看所有 接口信息 add<地址>:设置网络设备IPv6的ip地址 del<地址>…

    Linux干货 2017-01-19
  • MySQL Replication (MySQL的主从复制)

    MySQL Replication(MySQL的主从复制) 主从数据库的工作模型: 工作要点:1、主服务器要开启二进制日志 2、从服务器要有一个用户账户,这个账户要有权限到主服务器上请求二进制事件,请求完后保存到本地。 3、从服务器上要有一个线程,从中继日志中不断的读事件,在本地replay。 Master/Slave    &…

    Linux干货 2016-11-21
  • cp和ln命令简述

    cp和软ln命令简述 cp          备注: 1.       该命令可以自动判断你所复制的是文件还是目录 2.       当源是一个文件,目标(目的…

    2017-08-19
  • 脚本进阶

    1、写一脚本,用ping命令测试192.168.1.1-192.168.1.10之间的所有主机的在线状态,在线的主机使用绿色表示,不在线的主机使用红色表示   2、如何给网络配置多个地址,有哪些方式   3、写一个脚本 (1)假设某目录(/etc/rc.d/rc3.d/)下分别有K开头的文件和S开头的文件若干 (2)显示所有以K开头的文件…

    2018-01-08