自制linux系统
一个完整系统所需要所需要的文件:
内核文件 vmlinuz
initrd文件 initramfs
根目录下所需要的目录:etc usr lib lib64 opt tmp media mnt 等
grub目录以及grub.conf配置文件
(1)在宿主机上添加一块硬盘并分区格式化
[root@localhost~]#echo "- - -" >/sys/class/scsi_host/host2/scan
[root@localhost~]#lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 3.7G 0 rom /media/cdrom
sda 8:0 0 200G 0 disk
├─sda1 8:1 0 1000M 0 part /boot
├─sda2 8:2 0 48.8G 0 part /
├─sda3 8:3 0 48.8G 0 part
├─sda4 8:4 0 1K 0 part
├─sda5 8:5 0 2G 0 part [SWAP]
└─sda6 8:6 0 200M 0 part
sdb 8:16 0 20G 0 disk
[root@localhost~]#fdisk -l /dev/sdb #查看分区
[root@localhost~]#mke2fs -t ext4 /dev/sdb1 #对第一块分区格式化
[root@localhost~]#mke2fs -t ext4 /dev/sdb2 #对第二块分区格式化
[root@localhost~]#mke2fs -t ext4 /dev/sdb3 #对第三块分区格式化
[root@localhost~]#lsblk #查看分区结果
sdb 8:16 0 20G 0 disk
├─sdb1 8:17 0 1G 0 part
├─sdb2 8:18 0 2G 0 part
└─sdb3 8:19 0 17G 0 part
(2)创建挂载点并挂载
[root@localhost~]#mkdir /mnt/boot
[root@localhost~]#mkdir /mnt/root
[root@localhost~]#mount /dev/sdb1 /mnt/boot/
[root@localhost~]#mount /dev/sdb2 /mnt/root/
[root@localhost~]#mount
/dev/sda2 on / type ext4 (rw)
/dev/sda1 on /boot type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/dev/sr0 on /media/cdrom type iso9660 (ro)
/dev/sdb1 on /mnt/boot type ext4 (rw)
/dev/sdb2 on /mnt/root type ext4 (rw)
(3)复制现有内核中的文件和initrd文件在/mnt/boot目录下
[root@localhost/mnt/boot]#cp /boot/vmlinuz-2.6.32-696.el6.x86_64 /boot/initramfs-2.6.32-696.el6.x86_64.img .
[root@localhost/mnt/boot]#ls
initramfs-2.6.32-696.el6.x86_64.img lost+found vmlinuz-2.6.32-696.el6.x86_64
(4)生成grub/目录
[root@localhost/mnt/boot]#grub-install --root-directory=/mnt /dev/sdb
[root@localhost/mnt/boot]#ls
grub lost+found
initramfs-2.6.32-696.el6.x86_64.img vmlinuz-2.6.32-696.el6.x86_64
注意:–root-directory指定root必须是要安装boot的父目录。
(4)编辑grub.conf文件
[root@localhost/mnt/boot/grub]#vim grub.conf
default=0
timeout=5
title custom linux
root(hd0,0)
kernel /initramfs-2.6.32-696.el6.x86_64.img root=/dev/sda2 selinux=0 init=/bin/bash
initrd /vmlinuz-2.6.32-696.el6.x86_64
注意:自制linux系统,由于没有init文件所有我们这里设置bash为init。
(5)创建根下所需要的目录
[root@localhost/mnt/root]#mkdir etc lib lib64 sbin bin tmp var usr sys proc opt home root dev mnt media
[root@localhost/mnt/root]#tree
.
├── bin
├── dev
├── etc
├── home
├── lib
├── lib64
├── media
├── mnt
├── opt
├── proc
├── root
├── sbin
├── sys
├── tmp
├── usr
└── var
(6)复制所需要的命令
创建脚本文件,复制命令
(7)新建一台虚拟机,并选择宿主机上那块硬盘,重启,测试是否能成功。