制作最小Linux系统并且让其在新的虚拟机上运行
以当前虚拟机里的系统为宿主机,为其增加一块新的虚拟硬盘(后缀为vmdk的)创建为单个文件
用fdisk命令查看新的硬盘信息
Disk /dev/sda: 21.4 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 cylinders Units = cylinders of 16065 * 512 = 8225280 bytesDevice Boot Start End Blocks Id System /dev/sda1 * 1 25 200781 83 Linux /dev/sda2 26 89 514080 82 Linux swap / Solaris /dev/sda3 90 2610 20249932+ 83 LinuxDisk /dev/sdb: 1073 MB, 1073741824 bytes 255 heads, 63 sectors/track, 130 cylinders Units = cylinders of 16065 * 512 = 8225280 bytesDevice Boot Start End Blocks Id System
3.为新硬盘进行分区,格式化
[root@RedHat mnt]# fdisk /dev/sdbCommand (m for help): n Command actione extendedp primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-130, default 1): Using default value 1 Last cylinder or +size or +sizeM or +sizeK (1-130, default 130): +200MCommand (m for help): n Command actione extendedp primary partition (1-4) p Partition number (1-4): 2 First cylinder (26-130, default 26): Using default value 26 Last cylinder or +size or +sizeM or +sizeK (26-130, default 130): +700MCommand (m for help): pDisk /dev/sdb: 1073 MB, 1073741824 bytes 255 heads, 63 sectors/track, 130 cylinders Units = cylinders of 16065 * 512 = 8225280 bytesDevice Boot Start End Blocks Id System /dev/sdb1 1 25 200781 83 Linux /dev/sdb2 26 111 690795 83 LinuxCommand (m for help): w The partition table has been altered!Calling ioctl() to re-read partition table. Syncing disks. [root@RedHat mnt]# partprobe /dev/sdb [root@RedHat mnt]# sync [root@RedHat mnt]# sync [root@RedHat mnt]# sync
[root@RedHat mnt]# mke2fs -j /dev/sdb1 mke2fs 1.39 (29-May-2006) Filesystem label= OS type: Linux Block size=1024 (log=0) Fragment size=1024 (log=0) 50200 inodes, 200780 blocks 10039 blocks (5.00%) reserved for the super user First data block=1 Maximum filesystem blocks=67371008 25 block groups 8192 blocks per group, 8192 fragments per group 2008 inodes per group Superblock backups stored on blocks: 8193, 24577, 40961, 57345, 73729Writing inode tables: done Creating journal (4096 blocks): done Writing superblocks and filesystem accounting information: doneThis filesystem will be automatically checked every 35 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. [root@RedHat mnt]# mke2fs -j /dev/sdb2 mke2fs 1.39 (29-May-2006) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) 86400 inodes, 172698 blocks 8634 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=180355072 6 block groups 32768 blocks per group, 32768 fragments per group 14400 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840Writing inode tables: done Creating journal (4096 blocks): done Writing superblocks and filesystem accounting information: doneThis filesystem will be automatically checked every 30 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override.
4.在/mnt目录下新建挂载目录
[root@RedHat /]# mkdir /mnt/{boot,sysroot} -pv mkdir: created directory `/mnt/boot' mkdir: created directory `/mnt/sysroot' [root@RedHat /]# cd /mnt/ [root@RedHat mnt]# ls -a . .. boot sysroot [root@RedHat mnt]#
5.挂载
[root@RedHat mnt]# mount /dev/sdb1 /mnt/boot/ [root@RedHat mnt]# mount /dev/sdb2 /mnt/sysroot/
/dev/sdb1 on /mnt/boot type ext3 (rw) /dev/sdb2 on /mnt/sysroot type ext3 (rw)
6.手动安装grub
[root@RedHat mnt]# grub-install --root-directory=/mnt /dev/sdb Probing devices to guess BIOS drives. This may take a long time. Installation finished. No error reported. This is the contents of the device map /mnt/boot/grub/device.map. Check if this is correct or not. If any of the lines is incorrect, fix it and re-run the script `grub-install'.(fd0) /dev/fd0 (hd0) /dev/sda (hd1) /dev/sdb
7.复制宿主下的内核到/mnt/boot/下
[root@RedHat boot]# cp /boot/vmlinuz-2.6.18-308.el5 /mnt/boot/vmlinuz [root@RedHat boot]# ls -a . .. grub lost+found vmlinuz
8.制作initrd.gz文件
第一方法 在/mnt/boot/下新建临时目录tmp
[root@RedHat boot]# cd tmp [root@RedHat tmp]# ls -a . .. [root@RedHat tmp]# zcat /boot/initrd-2.6.18-308.el5.img | cpio -id 11812 blocks [root@RedHat tmp]# ls -a . .. bin dev etc init lib proc sbin sys sysroot [root@RedHat tmp]#
9.编辑init文件
修改第一行和第三行
#resume LABEL=SWAP-sda2 echo Creating root device. mkrootdev -t ext3 -o defaults,ro /dev/sdb2
10.重新打包制作成initrd.gz文件
一定要在当前展开的目录下 /mnt/boot/tmp/这里
[root@RedHat tmp]# find . | cpio -H newc --quiet -o | gzip -9 > /mnt/boot/initrd.gz [root@RedHat tmp]# cd /mnt/boot/ [root@RedHat boot]# ls -a . .. grub initrd.gz lost+found tmp vmlinuz [root@RedHat boot]#
11.手动提供grub.conf文件
[root@RedHat boot]# vim /mnt/boot/grub/grub.conf
default=0 timeout=5 title This is luochen Linux(Test version)root (hd0,0)kernel /vmlinuzinitrd /initrd.gz
12.在根文件系统下创建目录
[root@RedHat sysroot]# mkdir proc sys etc/rc.d dev home root usr/{local,sbin,bin} bin sbin var/log tmp lib boot -pv mkdir: created directory `proc' mkdir: created directory `sys' mkdir: created directory `etc' mkdir: created directory `etc/rc.d' mkdir: created directory `dev' mkdir: created directory `home' mkdir: created directory `root' mkdir: created directory `usr' mkdir: created directory `usr/local' mkdir: created directory `usr/sbin' mkdir: created directory `usr/bin' mkdir: created directory `bin' mkdir: created directory `sbin' mkdir: created directory `var' mkdir: created directory `var/log' mkdir: created directory `tmp' mkdir: created directory `lib' mkdir: created directory `boot' [root@RedHat sysroot]# ls -a . bin dev home lost+found root sys usr .. boot etc lib proc sbin tmp var
13.复制init和bash文件
[root@RedHat sysroot]# cp /bin/bash /mnt/sysroot/bin/ [root@RedHat sysroot]# cp /sbin/init /mnt/sysroot/sbin/
复制其依赖的库文件
用ldd /sbin/init 和 ldd /bin/bash 可以查看依赖那些库文件
[root@RedHat sysroot]# ldd /sbin/initlinux-gate.so.1 => (0x0026e000)libsepol.so.1 => /lib/libsepol.so.1 (0x0042d000)libselinux.so.1 => /lib/libselinux.so.1 (0x00475000)libc.so.6 => /lib/libc.so.6 (0x0026f000)libdl.so.2 => /lib/libdl.so.2 (0x003ea000)/lib/ld-linux.so.2 (0x00244000) [root@RedHat sysroot]# ldd /bin/bashlinux-gate.so.1 => (0x00e6b000)libtermcap.so.2 => /lib/libtermcap.so.2 (0x003f1000)libdl.so.2 => /lib/libdl.so.2 (0x003ea000)libc.so.6 => /lib/libc.so.6 (0x00263000)/lib/ld-linux.so.2 (0x00244000)
复制相应的文件到相应的目录下即可 宿主机的根对应/mnt/sysroot/目录
这里写了脚本用来完成库文件的复制
[root@RedHat sysroot]# ./libcopy.sh Your command: bash copy lib /lib/libtermcap.so.2 finished. copy lib /lib/libdl.so.2 finished. copy lib /lib/libc.so.6 finished. copy lib /lib/ld-linux.so.2 finished. copy /bin/bash finished. Continue: init copy lib /lib/libsepol.so.1 finished. copy lib /lib/libselinux.so.1 finished. copy /sbin/init finished.
复制库文件脚本内容
[root@RedHat sysroot]# cat libcopy.sh #!/bin/bash # DEST=/mnt/sysroot libcp() {LIBPATH=${1%/*}[ ! -d $DEST$LIBPATH ] && mkdir -p $DEST$LIBPATH[ ! -e $DEST${1} ] && cp $1 $DEST$LIBPATH && echo "copy lib $1 finished." }bincp() {CMDPATH=${1%/*}[ ! -d $DEST$CMDPATH ] && mkdir -p $DEST$CMDPATH[ ! -e $DEST${1} ] && cp $1 $DEST$CMDPATHfor LIB in `ldd $1 | grep -o "/.*lib\(64\)\{0,1\}/[^[:space:]]\{1,\}"`; dolibcp $LIBdone }read -p "Your command: " CMD until [ $CMD == 'q' ]; do! which $CMD &> /dev/null && echo "Wrong command" && read -p "Input again:" CMD && continueCOMMAND=` which $CMD | grep -v "^alias" | grep -o "[^[:space:]]\{1,\}"`bincp $COMMANDecho "copy $COMMAND finished."read -p "Continue: " CMD done
14.用chroot命令切换根检测
[root@RedHat sysroot]# chroot /mnt/sysroot/ bash-3.2#
用exit退出 回到宿主机系统
15.手动提供inittab文件
[root@RedHat etc]# vim ./inittab [root@RedHat etc]# cat ./inittab id:3:initdefault: si::sysinit:/etc/rc.d/rc.sysinit [root@RedHat etc]#
16.手动提供/mnt/sysroot/etc/rc.d/sysinit文件
[root@RedHat rc.d]# vim rc.sysinit [root@RedHat rc.d]# cat rc.sysinit #!/bin/bash # # echo -e "\t Welcome to \033[32m珞辰\033[0m Linux " /bin/bash [root@RedHat rc.d]#
[root@RedHat rc.d]# chmod +x rc.sysinit [root@RedHat rc.d]# sync [root@RedHat rc.d]# sync [root@RedHat rc.d]# sync
17.创建内核模块存放目录
[root@RedHat sysroot]# mkdir /mnt/sysroot/lib/modules/
查看两个模块信息
[root@RedHat lib]# modinfo mii filename: /lib/modules/2.6.18-308.el5/kernel/drivers/net/mii.ko license: GPL description: MII hardware support library author: Jeff Garzik <jgarzik@pobox.com> srcversion: 16DCEDEE4B5629C222C352D depends: vermagic: 2.6.18-308.el5 SMP mod_unload 686 REGPARM 4KSTACKS gcc-4.1 module_sig: 883f3504f23273dc995cc0b59af12111211c809f6f79961e4a84bc133b97d3d32bb217be64af3d1c09d11dbf04e53225fd698ce3def9448666b2a5a31 [root@RedHat lib]# modinfo pcnet32 filename: /lib/modules/2.6.18-308.el5/kernel/drivers/net/pcnet32.ko license: GPL description: Driver for PCnet32 and PCnetPCI based ethercards author: Thomas Bogendoerfer srcversion: F81443556AAE169CBF80F55 alias: pci:v00001023d00002000sv*sd*bc02sc00i* alias: pci:v00001022d00002000sv*sd*bc*sc*i* alias: pci:v00001022d00002001sv*sd*bc*sc*i* depends: mii vermagic: 2.6.18-308.el5 SMP mod_unload 686 REGPARM 4KSTACKS gcc-4.1 parm: debug:pcnet32 debug level (int) parm: max_interrupt_work:pcnet32 maximum events handled per interrupt (int) parm: rx_copybreak:pcnet32 copy breakpoint for copy-only-tiny-frames (int) parm: tx_start_pt:pcnet32 transmit start point (0-3) (int) parm: pcnet32vlb:pcnet32 Vesa local bus (VLB) support (0/1) (int) parm: options:pcnet32 initial option setting(s) (0-15) (array of int) parm: full_duplex:pcnet32 full duplex setting(s) (1) (array of int) parm: homepna:pcnet32 mode for 79C978 cards (1 for HomePNA, 0 for Ethernet, default Ethernet (array of int) module_sig: 883f3504f2326fedc995cc0b59af121112c9240a0888050bfd72bf9d5ba34fa2b2d35ad9c599dc2b509f6fc0ce174c811a747cc9292d8a4d837983e5b14
复制内核模块文件到/mnt/sysroot/lib/modules/目录下
[root@RedHat lib]# cp /lib/modules/2.6.18-308.el5/kernel/drivers/net/mii.ko /mnt/sysroot/lib/modules/ [root@RedHat lib]# cp /lib/modules/2.6.18-308.el5/kernel/drivers/net/pcnet32.ko /mnt/sysroot/lib/modules/
18.在编辑/mnt/sysroot/etc/rc.d/rc.sysinit文件 在系统初始化时自动装载网卡
[root@RedHat sysroot]# cat /mnt/sysroot/etc/rc.d/rc.sysinit #!/bin/bash # # echo -e "\t Welcome to \033[32m珞辰\033[0m Linux "insmod /lib/modules/mii.ko insmod /lib/modules/pcnet32.ko ifconfig eth0 192.168.3.45/24 ifconfig lo 127.0.0.1/8 /bin/bash
大功告成 贴图
转载于:https://blog.51cto.com/luochen2015/1652613
制作最小Linux系统并且让其在新的虚拟机上运行相关推荐
- 二、制作最小linux系统
一.Busybox简介 制作文件系统我们需要使用到Busybox 工具 – 版本为busybox-1.21.1.tar.bz2 – 开源网址是http: ...
- 在PC机上运行的linux系统是,Docker Desktop如何在Windows计算机上运行linux容...
1)我的Windows 10计算机具有Windows内核.对? 答:可以. 2)当我选择运行Linux容器的选项时,我认为Linux VM在Windows 10计算机的顶部运行,并且在Linux容器的 ...
- UT4418最小Linux系统搭建指南
这里说的最小Linux系统,就是没有移植QT等图形界面的系统,可以通过SecureCRT等软件登录Linux系统的文件系统,并进行一些ARM开发板上的Linux下的应用开发或测试,当然注意的是你做的更 ...
- 一、烧写最小linux系统
一.概述 开发板不仅可以运行Android和Qt,还可以运行最简单的Linux最小文件系统,最小系统有一下特点: "麻雀虽小五脏俱全",便于学习 不能够实现图形界面 二.搭建准备 ...
- Linux系统下给.sh添加可执行权限并运行
Linux系统下给.sh添加可执行权限并运行 1.添加可执行权限 chmod u+x xxx.sh 解释: chmod(change the permissions mode of a file)是权 ...
- 迅为4418/6818开发板实现最小Linux系统自动挂载SD/TF卡/U盘等存储设备
本文转自迅为论坛:http://www.topeetboard.com 在论坛里找到的,先做个笔记以后用到随时看 通过 mdev 工具实现 U 盘和 SD/TF 卡的自动挂载步骤如下: 一.配置内核 ...
- 制作最小linux镜像,Docker镜像的无中生有:使用scratch制作自定义最小镜像
针对如何制作尽量小的镜像问题,笔者在这里介绍一种用"空镜像"制作自定义最小镜像的方案. 1. 从石头缝里蹦出来的基础镜像? 这里请大家思考一个问题:docker hub上的那些基础 ...
- openstack的qcow2镜像制作、linux系统中安装kvm虚拟机并导出为qcow2虚拟机、virt-manager制作qocw2镜像和转为raw格式——2.6w字超详细说明所有流程。
文章目录 说明 环境准备 虚拟机中安装kvm虚拟机 1.确保支持cpu虚拟化 2.安装qemu-kvm.libvirt.virt-install包和权限调整 3.开启libvirtd服务病开机自启 4 ...
- u盘制作大师 linux系统教程,制作用U盘启动的Linux系统的简单步骤详解
制作用U盘启动的Linux系统的简单步骤详解 最近听朋友说误删除了Linux系统里的文件,于是系统进不了,里面保存着很多重要的数据,这该怎么办?虽然可以把硬盘取出挂载其他Linux系统运行,也可跳过控 ...
最新文章
- [转载]一个Spectral Clustering方法的小结
- 37.拷贝控制和资源管理
- Python3报错:TypeError: unsupported operand type(s) for +: ‘int‘ and ‘str‘
- js 创建file对象_JS 之创建对象
- AutoCAD ObjectARX(VC)开发基础与实例教程2014版光盘镜像
- java浮点类型数据练习_《Java语言程序设计(基础篇)》第二章复习题和编程练习题...
- 决策树ID3算法的不足
- matlab下载ar人脸库,AR ar人脸数据库,经典的 用于 检测与识别。 Graph Recognize 图形/文字 274万源代码下载- www.pudn.com...
- 颜色六位码和八位码表示
- 计算机 矩阵乘法,计算机算法:Strassen矩阵相乘算法
- csgo如何旋转跳?如何连跳
- 使用ipv6-test.com测试服务器域名是否支持IPV6
- plc虚拟服务器,VMware软件虚拟机和PLC通讯的连接方法
- Spring Cloud Eureka 配置文件说明
- error LNK2001: 无法解析的外部符号 __imp____iob_func
- solr mysql 增量索引_solr中实现MySQL数据全量索引和增量索引
- 视频教程-SQL语句从入门到精通迅速提升篇视频课程(Oracle零基础版)-Oracle
- listview简单应用之BaseAdapter(二)
- excel自动排班表_造价拒绝熬夜!全套Excel工程计算表格+必备小工具,无偿领
- C语言如何 计算程序运行时间?