自制Linux系统

自制Linux系统

1.首选准备一台Linux虚拟机并添加一块新硬盘

[TU]T5__6KRAT[6RAR6S2RR.png

2.分区并创建文件系统,创建两个必要的分区根分区和boot分区

fdisk /dev/sdb  分区
mke2fs -t ext4 /dev/sdb1    创建boot文件系统
mke2fs -t ext4 /dev/sdb2    创建根分区

WZQD[H`A4772AKE45QJO)CX.png

Z`7%]@N)]DQ}Z8AMCMLHNQG.png

3.挂载boot分区

VEHV30QA@%0%)6KXYIG}N0X.png

4.在boot分区上安装grub

S(G~@0W3)O4V8RL2QH)6{~5.png

]0DZW5Q6C0S{7{PLEBYY`_X.png

5.恢复内核和initramfs文件

G8RB@}$H_PH4UJ]Y]NI1~YP.png

6.在grub目录下手动定义grub.conf配置文件

P%RHQRS~T]M85A3G8S{U)SS.png

7.创建根目录下的一级目录

)R~%LRXUU{JL3TEV$AK9IAQ.png

P}`KRWIF5BGUXVZ8S)FM(KM.png

8.复制bash程序相关库文件以及其他命令程序(ls,pwd,cat,df,free…),脚本如下

[root@CentOS6 ~]# cat copycmd.sh 
#!/bin/bash



 
ch_root="/mnt/sysroot"
[ ! -d $ch_root ] && mkdir $ch_root
 
bincopy() {
    if which $1 &>/dev/null; then

        local cmd_path=`which --skip-alias $1`
        local bin_dir=`dirname $cmd_path`
        [ -d ${ch_root}${bin_dir} ] || mkdir -p ${ch_root}${bin_dir}
        [ -f ${ch_root}${cmd_path} ] || cp $cmd_path ${ch_root}${bin_dir}
        return 0
    else
        echo "Command not found."
        return 1
    fi
}
 
libcopy() {
    local lib_list=$(ldd `which --skip-alias $1` | grep -Eo '/[^[:space:]]+')
    for loop in $lib_list;do
        local lib_dir=`dirname $loop`
        [ -d ${ch_root}${lib_dir} ] || mkdir -p  ${ch_root}${lib_dir}
        [ -f ${ch_root}${loop} ] || cp $loop ${ch_root}${lib_dir}
    done
}
 
 
read -p "Please input a command: " command
 
while [ "$command" != "quit" ];do
    if bincopy $command ;then
        libcopy $command
    fi
    read -p "Please input a command or quit: " command
done
[root@CentOS6 ~]#

9.定义/mnt/sysroot/etc/fstab文件

Y~}ZKXMNITY)J64KZ60YT]B.png

至此,我们的Linux系统就已经制作完成了,接下来创建一个虚拟机测试是否能启动


1.新建一个虚拟机,将磁盘指向我们自建的Linux系统磁盘

_]Y8[@6{YR%Y5VLS%B_KVAS.png

YP{MRX4O@O[O15I_2]FT}1R.png

2.启动

[{0(V}MJ)}HGW1M~8)0[L)T.png

V[}V3@`$CPU5VK90NT3@FTS.png

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

(0)
zhai796898zhai796898
上一篇 2016-09-16
下一篇 2016-09-16

相关推荐

  • RAID+LVM详解

                                        一.RAID篇 一.什么是RAID   磁盘阵列全名是『Redundant Arrays…

    Linux干货 2016-09-07
  • 第五周作业

    1、简述rpm与yum命令的常见选项,并举例 rpm 命令 linux的的包管理器,用于对rpm软件包,进行安装、升级、卸载、查询、校验等操作。 使用语法: rpm [OPTIONS] [PACKAGE_FILE] 常用选项: 安装: -i,–install 升级: -U,–update,-F,–freshen 卸载: -…

    Linux干货 2017-12-14
  • 通过fast-cgi方式在三台主机部署phpwind并设置为https站点

    通常来说httpd用来处理静态的网页请求,动态的资源请求以前是通过CGI的方式进行处理的,但是CGI的方式的处理过程是这样:有动态资源请求,服务器会fork一个CGI进程进行资源处理,处理完成后这个进程会退出,当再有新的动态资源请求,又会fork一个进程,这样的效率是很低的。后来就有了通过加载php模块的方式,即:httpd服务器启动之后会自动加载php动态…

    2017-06-04
  • 硬链接与软链接

    1、关于硬链接和软链接是什么   硬链接与软链接是 Linux 文件系统中的一个重要概念,其涉及文件系统中的索引节点 (index node 又称 inode),而索引节点对象是 Linux 虚拟文件系统 (VFS) 的四个基本概念之一。通过剖析硬链接与软链接的联系与区别,我们可更好的了解 Linux 中 VFS 这一通用文件模型。 (1…

    Linux干货 2016-10-20
  • LVM原理、创建、扩容、缩减、快照详解

    LVM是什么?为什么要使用LVM?     LVM(Logical Volume Manager):逻辑卷管理, 在日常使用或生产环境中, 我们可能会因为在规划存储时未考虑到未来数据增长的速度超乎我们的预计而措手不及,因为增加一块硬盘再将源数据移到新硬盘上很麻烦并且提高了成本还浪费硬盘空间。   &…

    Linux干货 2016-03-09
  • 使用iptables缓解DDOS及CC攻击

    缓解DDOS攻击 防止SYN攻击,轻量级预防 iptables -N syn-flood iptables -A INPUT -p tcp –syn -j syn-flood iptables -I syn-flood -p tcp -m limit –limit 3/s –limit-burst 6 -j RETURN iptables -A syn-fl…

    Linux干货 2015-02-09

评论列表(1条)

  • 马哥教育
    马哥教育 2016-09-20 12:39

    从图可以看出作者很用心,赞一个