自制linux系统

自制linux系统
  需要为虚拟机新增一个硬盘,作为自制linux系统的载体。也可以用U盘、移动硬盘或其他设备作为载体
实验步骤:

(1)为虚拟机新增一个大小为20G的硬盘
(2)给新增的磁盘分区,划分/boot、swap、/三个分区
比如,将第一个分区当作boot,大小为500M;第二个分区当作swap分区,大小为2G;第三个分区用作/,大小为10G。其余空间保留

fdisk /dev/sdd

blob.png

partx -a /dev/sdd

(3)为创建的三个分区创建对应的文件系统。

mkfs.ext4 /dev/sdd1
mkswap /dev/sdd2
mkfs.ext4 /dev/sdd3

blob.png

(4)在/mnt/下创建boot目录,将要使用为boot分区的磁盘分区挂载至该目录。

mkdir -p /mnt/grub/boot
mkdir -p /mnt/grub/sysroot

blob.png

boot挂载至/mnt/grub/boot
/挂载至/mnt/grub/sysroot

mount /dev/sdd1 /mnt/grub/boot/mount /dev/sdd3 /mnt/grub/sysroot

blob.png

(5)安装grub

grub-install --root-directory=/mnt/mount /dev/sdd

(6)拷贝vmlinuz、initramfs文件至/mnt/mount/boot
blob.png(7)创建grub配置文件

default=0
timeout=5title 
Zmingbo (Test)
    root (hd0,0)    
    kernel /vmlinuz ro root=/dev/sda3 selinux=0 init=/bin/bash    
    initrd /initramfs.img

blob.png

(8)创建根文件系统(rootfs)
为/mnt/sysroot (新增硬盘被当作根分区的分区)创建root、home、dev、sys、proc、mnt、etc、tmp、lib、lib64、src、media、boot、bin、sbin、usr目录
blob.png

(9)通过脚本,拷贝bash,cp,vim,cat,less等命令至/mnt/mount/sysroot/目录下对应的目录中
脚本如下:

#!/bin/bash
#写一个脚本,完成如下功能(使用函数)
#1、提示用户输入一个可执行命令
#2、获取这个命令所依赖的所有库文件
#3、复制命令至/mnt/mount/sysroot对应的目录中
#        解释:假设,如果复制的程序路径是/bin/cat,那么要将/bin/cat复制到/mnt/mount/sysroot/bin目录下
#        如果复制的是/usr/bin/useradd,那么就要将其复制到/mnt/mount/sysroot/usr/bin目录中
#4、复制各库文件至/mnt/mount/sysroot对应的目录中。要求同复制命令。
#

f_dir=/mnt/mount/sysroot
input_cmd() {
  
     while true;do
     read -p "Please enter an excutable command (quit to exit) :" cmd
         if [[ -z $cmd ]];then
             echo "None option,try again..."
             continue
         elif [[ $cmd == "quit" ]];then
             exit 0
         elif ! which --skip-alias $cmd &>/dev/null;then
             echo "No such command,please enter a correct command"
             continue
         else
             break
         fi
     done
  
}
  
cmd_lib_name() {
  
     cmd_path=`which --skip-alias $cmd`
     for path in $cmd_path;do
         cmd_lib_name=`ldd $path | grep -o -E '/[^[:space:]]+\>'`
     done
  
}
  
cp_cmd() {
  
     cmd_dir=`dirname $cmd_path`
     mkdir -p $f_dir$cmd_dir &>/dev/null
     cp $cmd_path $f_dir$cmd_path
  
}
  
cp_lib() {
  
     cmd_lib_name
     for i in $cmd_lib_name;do
         lib_dir=`dirname $i`
         mkdir -p $f_dir$lib_dir &>/dev/null
         cp $i $f_dir$i
     done
  
}
   
main () {
  
     while true;do
         input_cmd
         cmd_lib_name
         cp_cmd
         cp_lib
     done
  
}
 main

blob.png

查看对应目录下是否有相应的命令和库文件
blob.png

也可以拷贝其他需要用的命令及其依赖的库文件分别至对应的目录
blob.png

(10)创建/etc/fstab文件
blob.png

(11)chroot至该目录,查看是否可用
blob.png

测试,系统可以正常使用。
(12)查看自定义linux系统的磁盘存放路径,并关闭制作系统的虚拟机
blob.png

(13)创建一个新的虚拟系统,在选择磁盘时选择现有的虚拟磁盘,将自定义系统的磁盘存放路径加载至虚拟机的配置中
blob.png

blob.png

(14)启动虚拟机做测试。
blob.png

blob.png

原创文章,作者:M20-1钟明波,如若转载,请注明出处:http://www.178linux.com/46127

(0)
M20-1钟明波M20-1钟明波
上一篇 2016-09-13
下一篇 2016-09-13

相关推荐

  • vim编辑器整理(无演示)

    vim编辑器 vim编辑器是linux中最强大的全屏幕纯文本编辑器,他是vi编辑器的增强版。 文本编辑器: 文本:纯文本,在ASCII角度讲是纯粹的不加任何修饰的文本信息     支持Unicode编码方式 文本编辑器种类: 行编辑器:sed 全屏编辑器:nano,vi vi : (VIsual&n…

    Linux干货 2016-08-10
  • Hadoop伪分布式模型

    # java -version # vim /etc/profile.d/java.sh export JAVA_HOME=/usr # yum install java-1.8.0-openjdk-devel # mkdir /bdapps # tar xf hadoop-2.7.4.tar.gz -C /bdapps/ # cd /bdapps # ln…

    2017-12-08
  • 磁盘管理

    磁盘管理 本文将按顺序以实例演示磁盘管理的所有操作,让我们开始吧! 一,磁盘的添加 ① 先来查看linux系统总共有几个磁盘,由图可知是两个,分别是sda,sdb。我们再加一个,按照磁盘命名顺序,应是sdc,他们都在/dev目录下。 补充: 1,磁盘命名规则: 不同磁盘,按照a-z依次标识,如sda,sdb,sdc 同一磁盘的不同分区,按照1,2,&#823…

    2017-08-19
  • N25-第4周作业(用户权限,grep用法)

    复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有访问权限.      [root@bogon ~]# chmod -R o=—,g=— /home/tuser1/ [root@bogon ~]# chmod -R o=,g= /home/tuser1/ 编辑/etc/…

    Linux干货 2016-12-26
  • sed 文本处理工具介绍

    sed简介: 文本处理三剑客之一的sed sed是一种行编辑器,它一次处理一行内容,本身是一个管道命令,对行的数据进行 替换 增加 删除 选取的工作 sed的命令为:sed[opition] ‘script’ inputfile…             &nbs…

    2017-06-24
  • CentOS6+ LAMP+ wordpress 搭建个人博客站

        每个IT工程师都期待拥有一个自己的博客站,本文讲述在CentOS 6系统LAMP环境下使用WordPress框架构建个人博客站的详细过程。     —-构建LAMP环境—- 1,安装apache,mysql php yum install -y httpd mysql…

    2017-07-11