CentOS 系统启动流程(四)

来源:互联网 发布:职业经理人 知乎 编辑:程序博客网 时间:2024/05/16 11:20

自制linux系统

一个完整系统所需要所需要的文件:

内核文件 vmlinuzinitrd文件  initramfs根目录下所需要的目录:etc usr lib lib64 opt tmp media mnt 等grub目录以及grub.conf配置文件

(1)在宿主机上添加一块硬盘并分区格式化

[root@localhost~]#echo "- - -" >/sys/class/scsi_host/host2/scan[root@localhost~]#lsblkNAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTsr0     11:0    1  3.7G  0 rom  /media/cdromsda      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]#lsinitramfs-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]#lsgrub                                 lost+foundinitramfs-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=0timeout=5title 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)新建一台虚拟机,并选择宿主机上那块硬盘,重启,测试是否能成功。