自制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)
上一篇 2016-09-16 01:10
下一篇 2016-09-16 09:21

相关推荐

  • 让自定义脚本成为服务脚本

    1.脚本注释格式:此格式能让chkconfig命令识别 #!/bin/bash#chkconfig:runlevel [S]##  [K]##    定义默认runlevel) (S开头,定义启动优先级) (K开头,定义关闭优先级) #description:脚本说明:太长的话需要\换行 2.case语句实现start,stop…

    Linux干货 2017-05-15
  • php-fpm实验

    #yum install marisdb-server #vim /etc/my.cnf.d/server.cnf [mysqld]         skip_name_resolve=ON         innodb_file_per_…

    Linux干货 2017-06-08
  • 常用linux命令小计(1)

    关于linux那些事儿—常用命令小结(1) 系统相关信息 Uname –m显示处理器的架构 Uname –r显示正在使用的内核版本 cat /proc/cpuinfo显示cpu的具体信息 cat /proc/version显示内核的版本 cat /proc/swaps显示哪些分区被使用 data显示系统日期 cal –y显示当年的日历 date 021920…

    Linux干货 2017-02-19
  • 第九周作业

    1、写一个脚本,判断当前系统上所有用户的shell是否为可登录shell(即用户的shell不是/sbin/nologin);分别这两类用户的个数;通过字符串比较来实现; #!/bin/bash declare -i sum_login=0 declare -i sum_nologin=0 while read line;do shell=$(echo $l…

    Linux干货 2017-03-05
  • Shell脚本编程基础中() (()) [ ] [[ ]] 的使用

    Shell脚本编程基础中() (()) [ ] [[ ]] 的使用 () 生成子进程,括号内的命令将会在子进程中运行,父进程不能够读取在子进程中创建的变量 例: 新建个脚本文件,写入 则执行结果为 $()相当于 ` `  ,返回括号内命令执行结果 (( )) 用作四则运算和逻辑运算,并且支持多个表达式 例: 当 (( )) 加$,则是将获得表达式值,赋值给左…

    2017-11-26
  • 8.12作业

    作业: 1、查找/var目录下属主为root,且属组为mail的所有文件   find /var  -user root  -group  mail -ls 2、查找/var目录下不属于root、lp、gdm的所有文件   find /var -not \( -user root  -o -user…

    Linux干货 2016-08-15

评论列表(1条)

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

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