设为首页 收藏本站
查看: 884|回复: 0

[经验分享] 自制Linux

[复制链接]

尚未签到

发表于 2018-5-17 09:06:49 | 显示全部楼层 |阅读模式
  步 骤:
  1、在线添加一块20G的硬盘
  2、分两个分区/boot100M   / 剩下的全部分给根
  3、格式化为ext4文件系统
  4、挂载/boot 和/
  5、生成/boot 下文件
  6、用脚本复制命令和命令所使用的库文件
  7、复制网卡设备到/下
  8、创建根下目录
  9、复制完成,拔掉硬盘,放在一个新的虚拟机上用硬盘启动。
  10、配置自制linux的网络功能。
  
  具体实现如下:
  1、 添加一块20G的硬盘(自制linux很小,20G足够用了)
  (1)点击右键设置
DSC0000.png

DSC0001.png

DSC0002.png

DSC0003.png

DSC0004.png

DSC0005.png

   建议:该块磁盘单独放在一个地方,命名方式尽量自己手动写,手动命名需要在后面主动加上后缀.vmdk

     (2) 在线加硬盘,不能立即识别,需要执行下面命令,如果第一条命令,不成功再执行第二条命令
               echo '- --'>/sys/class/scsi_host/host0/scan
             echo '- - -'>/sys/class/scsi_host/host2/scan
  2、分区
      分两个主分区/boot 100M,剩下的全部分给/
        lsblk 查看自己所加的硬盘是sd#,我的是/dev/sde ,所以我对/dev/sde分区

DSC0006.png

  分区
DSC0007.png

DSC0008.png

  lsblk查看分区

DSC0009.png

  3、格式化文件系统
      mkfs.ext4 /dev/sde1
          mkfs.ext4 /dev/sde2
  4、挂载两个分区
  mkdir /mnt/boot

        mkdir /mnt/sysroot

        mount /dev/sde1 /mnt/boot/
        mount /dev/sde2 /mnt/sysroot/
         df 查看挂载情况

      DSC00010.png
  5、生成/boot下文件
     /boot的启动系统文件,所以非常重要   
      进入当前linux的/boot下 DSC00011.png
      那么新建的硬盘的/mnt/boot下也应当有相应的文件

     (1)cp /boot/initramfs-2.6.32-696.el6.x86_64.img  /mnt/boot/
      (2)cp /boot/vmlinuz-2.6.32-696.el6.x86_64  /mnt/boot/
      (3)生成grub

              grub-install --root-directory=/mnt /dev/sde   

              解释:--root-directory=/mnt   指定boot所在的目录下
                      /mnt/boot ,所以boot所在的目录为/mnt
          已生成grub文件 DSC00012.png
         (4) grub目录下的文件还少了grub.conf,需手动写
              经对比,可以看出/mnt/boot/grub 下与当前系统相比少了grub.conf文件               DSC00013.png         
  vim  /mnt/boot/grub/grub.conf      
default=0
timeout=5
title linux-mini
kernel /vmlinuz-2.6.32-696.el6.x86_64 root=UUID=8dea6d66-5374-4f21-9388-6b721be4fd80 init=/bin/bash selinux=0
initrd /initramfs-2.6.32-696.el6.x86_64.img

#第一行 0 表示默认选择第一个内核
#第二行 开机倒计时时间
#第三行 linux的名称,可以自己命名
#第四行 内核文件     root=XXX 写出自己的根所在的硬盘,UUID一般不会变
#如果写成/dev/sde2 ,当在新的系统中的时候就不一定是/dev/sde2,
#可能就是/dev/sda2,所以写UUID最可靠,第一个进程init 改为/bin/bash
#第五行 ramdisk          到此/boot 下的文件已全部生成
  6、用脚本复制命令和命令所使用的库文件  
#!/bin/bash
# ---------------------------------------------------------------
# Filename:     copycmd.sh
# Revision:     1.0
# Date:         2017-09-14
# Author:       gm
# Website:
# Description:cope file
# -------------------------------------------------------------
clear
#复制命令从操作
cp1(){
                local order=`which $1|tail -n 1`
                local dir=`dirname $order`
                mkdir -p /mnt/sysroot/$dir&>/dev/null
                cp $order /mnt/sysroot/$dir&>/dev/null
                echo -n $order
                echo  -e "\033[1;32m     ------>     \033[0m\c"
                echo -n "/mnt/sysroot"$order
                echo -e "\033[1;32m            复制成功\033[0m"
                }
#复制命令调用
cporder(){
                if  cd /mnt/sysroot&>/dev/null;then
                        cp1 $1
                else
                        mkdir /mnt/sysroot&>/dev/null
                        cp1 $1
                fi
        }
#复制库文件
cplib(){
                ldd $(which $1|tail -n1)|egrep -o "/.*/.*\.[0-9]+"|while read file;do
                local dir=`dirname $file `
                mkdir -p /mnt/sysroot/$dir&>/dev/null
                cp $file  /mnt/sysroot/$dir&>/dev/null
                echo -n $file
                echo  -e "\033[1;32m      ------>     \033[0m\c"
                echo -n "/mnt/sysroot"$file
                 echo -e "\033[1;32m            复制成功\033[0m"
        
        done   
        }
#提示信息
ec(){
        echo '***************************************************************************
***************************************************************************
****************    请输入一个可执行的指令      ***************************
****************                                ***************************
****************                                ***************************
****************                                ***************************
****************    q 或quit   退出             ***************************
***************************************************************************
***************************************************************************
'
}

while true;do
        ec
        read -p "请输入命令 : " ord
        if [ -n $ord ];then
                case $ord in
                q|quit)
                        exit
                        ;;
                *)
                        if which $ord&>/dev/null ;then
                                cporder $ord
                                cplib $ord
                        else
                                echo "没有这个命令存在或者是一个内部命令"
                        fi
                        ;;
                esac
        fi
done      执行结果如下:

           DSC00014.png
         复制命令:ls ,cp ,ping,insmod,ifconfig,ip,cat,vim,bash,hostname,reboot,lsmod ,rmmod,modprobe等
7、复制网卡设备到/下
   想要自制的linux具有网络功能,需要复制网卡相关的文件
        locate e1000
          找到 /lib/modules-XXXX.e1000.ko
        cp /lib/modules/2.6.32-696.el6.x86_64/kernel/drivers/net/e1000/e1000.ko /mnt/sysroot/lib6
8、创建根下一级目录
    cd /mnt/sysroot

    mkdir{etc,bin,sbin,tmp,var,sys,proc,opt,home,root,boot,dev,mnt,media}        
9、复制完成,拔掉硬盘,放在一个新的虚拟机上用硬盘启动。
    创建一个新的虚拟机,移除原来的硬盘,把刚刚创建的硬盘添加上,

    DSC00015.png
    DSC00016.png
        网络适配器 设置桥接模式

    开启虚拟机
10、配置自制linux的网络功能。
      insmod  /lib64/e1000.ko

      ip a  a 172.17.100.100/16 dev eth0

      ip a 查看地址

      用另一台同网络的电脑ping 该地址,由于在bash下,所以,如果用这台主机ping的话,ctrl+c不会中断
     

          

                      
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-461171-1-1.html 上篇帖子: Linux入门之Linux与Windows常见对比 下篇帖子: linux特殊设备
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表