自制Linux

自制Linux

步 骤:

1、在线添加一块20G的硬盘

2、分两个分区/boot100M   / 剩下的全部分给根

3、格式化为ext4文件系统

4、挂载/boot 和/

5、生成/boot 下文件

6、用脚本复制命令和命令所使用的库文件

7、复制网卡设备到/下

8、创建根下目录

9、复制完成,拔掉硬盘,放在一个新的虚拟机上用硬盘启动。

10、配置自制linux的网络功能。



具体实现如下:

1、 添加一块20G的硬盘(自制linux很小,20G足够用了)

(1)点击右键设置

建议:该块磁盘单独放在一个地方,命名方式尽量自己手动写,手动命名需要在后面主动加上后缀.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分区

分区

lsblk查看分区

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 查看挂载情况

5、生成/boot下文件

   /boot的启动系统文件,所以非常重要

    进入当前linux的/boot下 

    那么新建的硬盘的/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文件

(4) grub目录下的文件还少了grub.conf,需手动写

经对比,可以看出/mnt/boot/grub 下与当前系统相比少了grub.conf文件              

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

    执行结果如下:

复制命令: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、复制完成,拔掉硬盘,放在一个新的虚拟机上用硬盘启动。

创建一个新的虚拟机,移除原来的硬盘,把刚刚创建的硬盘添加上,

网络适配器 设置桥接模式

开启虚拟机

10、配置自制linux的网络功能。

insmod  /lib64/e1000.ko

ip a  a 172.17.100.100/16 dev eth0

ip a 查看地址

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

时间: 2024-08-12 13:06:45

自制Linux的相关文章

自制linux小系统

自制linux 今天说一说怎么自制一个linux,也就是用一块新硬盘来自己搞一个linux.硬盘拆掉撞到其他机器上可以照常使用,需要什么东西都是自己添加的哦. 那我就在虚拟机里进行了嘿嘿嘿... 1.在我的centos里加了一块新的硬盘并顺便分了个区,并且格式化了一下. [[email protected] ~]# fdisk /dev/sdb WARNING: DOS-compatible mode is deprecated. It's strongly recom mended to   

自制linux临时保存草稿

内核编译 单内核体系设计.但充分借鉴了微内核设计体系的优点,为内核引入模块化机制. 内核组成部分: kernel: 内核核心,一般为bzImage,通常在/boot目录下,名称为vmlinuz-VERSION-RELEASE: kernel object: 内核对象,一般放置于 /lib/modules/VERSION-RELEASE/ [ ]: N [M]: M [*]: Y 辅助文件:ramdisk initrd initramfs 运行中的内核: uname命令: uname-print

关于 开机启动加密破坏修复 自制linux系统

开机破坏并且修复之      自制linux系统            CentOS 6启动流程:POST --> Boot Sequence(BIOS) --> Boot Loader -->Kernel(ramdisk) --> rootfs --> switchroot --> /sbin/init -->(/etc/inittab, /etc/init/*.conf) --> 设定默认运行级别--> 系统初始化脚本rc.sysinit --&g

Linux还是亲生的好,实战自制Linux操作系统

实战自制Linux操作系统 本文主要通过裁剪现有Linux系统,打造一个属于自己的Linux小系统,让其能够装载网卡驱动,并配置IP地址,实现网络功能. 自制linux系统 步骤概述: 1.新建一个硬盘2.在该新硬盘上新建两个分区,一个当boot分区,一个当/分区3.格式化并且挂载两个分区4.安装grub至目标磁盘5.为grub提供配置文件6.复制内核文件和initrd文件7.创建目标主机根文件系统8.移植bash命令和其库文件到根文件系统9.装载模块,实现网络功能10.启动测试 特别提醒 如果

手把手带你自制Linux系统之二 简易Linux制作

手把手带你自制Linux系统之二 简易Linux制作 本文利用CentOS5.5自带内核制作一个Mini Linux. 打开准备工作中创建的CentOS,为另一个虚拟机MiniLinux添加一个最小Linux所需要的文件. 1. 创建分区 为准备好的磁盘创建两个主分区,大小分别为20M和512M. 使用fdisk命令创建分区详细过程: fdisk /dev/hda 创建第一个20M分区依次输入: n --> p --> 1 --> <Enter> --> +20M 这几

模拟自制linux系统

(1) 新建硬盘对其分区 硬盘文件名CentOS 6.9-0.vmk (2)识别新加硬盘,记录设备名sdb (3)对其新建硬盘sdb分区(fdisk /dev/sdb),至少有根以及boot分区 (4)对分区创建文件系统 设备sdb分区如下sdb1作为boot分区 sdb2作为根所在分区 [[email protected] ~]# mkfs.ext4 /dev/sdb1 [[email protected] ~]# mkfs.ext4 /dev/sdb2 (5)创建一级目录,并挂载 注:新建s

自制linux和内核编译

自制linux和内核编译 1.分区并创建文件系统 fdisk /dev/sdb分两个必要的分区/dev/sdb1对应/boot /dev/sdb2对应根/mkfs.ext4 /dev/sdb1mkfs.ext4 /dev/sdb2 2.挂载boot mkdir/mnt/bootmount /dev/sdb1 /mnt/boot 3.安装grub grub-install --root-directory=/mnt  /dev/sdb 4.建立grub.conf: vim /mnt/boot/gr

实战自制Linux操作系统

          实战自制Linux操作系统 自制linux系统 步骤概述: 1.新建一个硬盘2.在该新硬盘上新建两个分区,一个当boot分区,一个当/分区3.格式化并且挂载两个分区4.安装grub至目标磁盘5.为grub提供配置文件6.复制内核文件和initrd文件7.创建目标主机根文件系统8.移植bash命令和其库文件到根文件系统9.装载模块,实现网络功能10.启动测试 具体操作步骤如下: 1)为CentOS 6系统添加一块新的硬盘,然后启动,演示如下: 2)查看新添加的硬盘,并为添加好的

自制linux系统——打造属于自己的linux系统

很多时候我们直接使用别人帮我们打包好的一个linux系统,总感觉某些工具或者命令多余或者效果不好,那我们是否可以自制一个比较符合自己需求的linux系统出来了,答案是肯定的,而且实现这个目标也并困难,需要的时间也不会太长.接下来就给大家分享如何自制的过程. 环境需求: 1.Vmware虚拟机 2.Centos6.8光盘镜像IS0文件 3.Vmware上安装一份Centos6.8的操作系统 第一步:装载一块新硬盘到虚拟机的Centos6.8系统上,并保证系统正常读取 [[email protect

自制Linux和编译内核

自制linux:(1)  分区并创建文件系统  fdisk /dev/sdb分两个必要的分区  /dev/sdb1 对应/boot /dev/sdb2 对应根  /mkfs.ext4 /dev/sdb1mkfs.ext4 /dev/sdb2  挂载bootmkdir /mnt/boot 子目录必须为bootmount /dev/sdb1 /mnt/boot  安装grubgrub-install –root-directory=/mnt /dev/sdb    #boot目录的上一级目录