自制linux

一、准备

1.一个硬盘

2.拷贝命令的脚本

#!/bin/bash
# ------------------------------------------
# Filename: copycmd16.sh   
# Date:    2017-09-14    
# Revision:   
# Author: 木子甘
# ID:16    
# Description: cp命令及其lib文件到/mnt/sysroot,保持目录的架构 
# ------------------------------------------
f_line (){
        for n in {1..50} ; do
                if [ $[RANDOM%2] -eq 1 ]; then
                        b="\e[5;40;$[RANDOM%7+31];1m*\e[0m"
                        echo -en "$b"
                else
                        a="\e[40;$[RANDOM%7+31];1m*\e[0m"
                        echo -en "$a"
                fi
        done
        echo
        unset n
}
f_check (){
        local A=/mnt/sysroot$( which $1 |tail -1|sed -rn "s/[[:space:]]*//gp")
        if [ -e $A ] ; then
                echo "The $1 command has been copied"
                return 1
        else
                return 0 
        fi

}
f_canshu (){
        if  which $1 &>/dev/null ; then
                return 0
        else
                echo "The $1 not a command or $1 is a shell builtin "
                return 2
        fi
}

f_cp_cmd (){
        local A=$( which $1 |tail -1|sed -rn "s/^[[:space:]]*//p") 
        cp -n  --parents $A  /mnt/sysroot/
        echo "$A" |sed -r "s@.*@& ==============> /mnt/sysroot&@"
        f_line
}

f_cp_lib (){
                local A=$( ldd `which $1` 2>/dev/null |sed -rn "/^[[:space:]]+[^[:space:]]+/s/.*=> (.*)\(.*/\1/p" |grep -v "^[[:space:]]*$" )
                cp -n  --parents $A  /mnt/sysroot/
                echo "$A" |sed -r "s@.*@& ==============> /mnt/sysroot&@"
                f_line
                echo -e "\n"
}
#主程序 
[ -e  /mnt/sysroot/ ] ||{ mkdir -p  /mnt/sysroot; }
A=0
while : ;do
        f_line 
        echo "quit or input command"
        read -p ">"  A
        [ -z $A  ] && { echo "missing operand";continue; }
        [ $A == quit ] && exit 0
        f_canshu $A ; [ $? -ne 0 ] &&continue
        f_check  $A ; [ $? -ne 0 ] &&continue
        f_cp_cmd $A
        f_cp_lib $A

done
#删除变量
unset A

二、硬盘分区、格式化、挂载

1.分区

fdisk /dev/sdb

这里写图片描述

lsblk /dev/sdb

这里写图片描述

2.格式化分区

 mkfs.ext4 /dev/sdb1
 mkfs.ext4 /dev/sdb2

这里写图片描述

3.挂载

#创建目录, /mnt/sysroot/作为小linux的/
#/mnt/sysroot/boot/作为小linux的/boot
mkdir -p /mnt/sysroot/boot/

#挂载
mount /dev/sdb2 /mnt/sysroot/
mount /dev/sdb1 /mnt/sysroot/boot/
df

这里写图片描述

三、启动盘制作

1.安装grub/dev/sdb

grub-install --root-directory=/mnt/sysroot/  /dev/sdb

这里写图片描述

2.拷贝内核文件到/mnt/sysroot/boot

 cp /media/CDROM/isolinux/vmlinuz /mnt/sysroot/boot/

3.制作initrd文件到/mnt/sysroot/boot

 mkinitrd /mnt/sysroot/boot/initramfs-`uname -r`img `uname -r`

4.自己写一个grub.conf

vim /mnt/sysroot/boot/grub/grub.conf

default=0
timeout=5
title small_linux
kernel /vmlinuz-2.6.32-696.el6.x86_64 root=UUID=9a9bf39a-1d0e-4fe8-9346-030f13620d8a
initrd /initramfs-2.6.32-696.el6.x86_64.img                                               

四、拷贝需要的工具和模块

./copycmd16.sh

这里写图片描述

    #检查
    ls -R /mnt/sysroot/ 

这里写图片描述

五、新建一个linux,把这块磁盘挂上,原来的拔出来

成功

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值