自制linux系统
需要为虚拟机新增一个硬盘,作为自制linux系统的载体。也可以用U盘、移动硬盘或其他设备作为载体
实验步骤:
(1)为虚拟机新增一个大小为20G的硬盘
(2)给新增的磁盘分区,划分/boot、swap、/三个分区
比如,将第一个分区当作boot,大小为500M;第二个分区当作swap分区,大小为2G;第三个分区用作/,大小为10G。其余空间保留
fdisk /dev/sdd
partx -a /dev/sdd
(3)为创建的三个分区创建对应的文件系统。
mkfs.ext4 /dev/sdd1 mkswap /dev/sdd2 mkfs.ext4 /dev/sdd3
(4)在/mnt/下创建boot目录,将要使用为boot分区的磁盘分区挂载至该目录。
mkdir -p /mnt/grub/boot mkdir -p /mnt/grub/sysroot
boot挂载至/mnt/grub/boot
/挂载至/mnt/grub/sysroot
mount /dev/sdd1 /mnt/grub/boot/mount /dev/sdd3 /mnt/grub/sysroot
(5)安装grub
grub-install --root-directory=/mnt/mount /dev/sdd
(6)拷贝vmlinuz、initramfs文件至/mnt/mount/boot
(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
(8)创建根文件系统(rootfs)
为/mnt/sysroot (新增硬盘被当作根分区的分区)创建root、home、dev、sys、proc、mnt、etc、tmp、lib、lib64、src、media、boot、bin、sbin、usr目录
(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
查看对应目录下是否有相应的命令和库文件
也可以拷贝其他需要用的命令及其依赖的库文件分别至对应的目录
(10)创建/etc/fstab文件
(11)chroot至该目录,查看是否可用
测试,系统可以正常使用。
(12)查看自定义linux系统的磁盘存放路径,并关闭制作系统的虚拟机
(13)创建一个新的虚拟系统,在选择磁盘时选择现有的虚拟磁盘,将自定义系统的磁盘存放路径加载至虚拟机的配置中
(14)启动虚拟机做测试。
原创文章,作者:M20-1钟明波,如若转载,请注明出处:http://www.178linux.com/46127