
简单介绍下各阶段工作流程:
POST :开机后,加载 BIOS 信息(里面包含各硬件的相关信息)
BIOS ( boot sequence ):选择(设备)启动项,然后读取 MBR 信息
Boot Loader : 初始化硬件、建立内存空间映射,读取 grub 配置文件
Initrd :加载内核(硬件检测及初始化、挂载根文件系统) 0 →启动第一个进程 init →该程序读出 /etc/inittab 、 /etc/rc.d/rc.sysinit 、 /etc/rc.d/rc.local 文件
Shell :启动 /bin/login 程序,进入登录界面
进入实验部分:
一、环境搭建
1 、虚拟机( server1 )上添加一个硬盘

2、 在系统中给该磁盘进行分区
[root@localhost ~]# fdisk /dev/sdb
3 、格式化
[root@localhost ~]# mke2fs -t ext4 /dev/sdb1 [root@localhost ~]# mke2fs -t ext4 /dev/sdb2 [root@localhost ~]# mkswap /dev/sdb34、 挂载
[root@localhost ~]# mkdir /mnt/{sysroot,boot} #创建挂载目录 [root@localhost ~]# mount /dev/sdb1 /mnt/boot/ [root@localhost ~]# mount /dev/sdb2 /mnt/sysroot/5、 安装 grub
[root@localhost ~]# grub-install --root-directory=/mnt /dev/sdb6、 创建 linux 各目录
[root@localhost ~]# cd /mnt/sysroot/ [root@localhost ~]# mkdir -pv etc/rc.d var/log root proc sys srv boot mnt tmp home dev lib lib64二、 编译内核
[root@localhost ~]# tar xf linux-3.13.6.tar.xz -C /usr/src/ #解压 [root@localhost ~]# cd /usr/src/ [root@localhost src]# ln -s linux-3.13.6 linux #创建软链接 [root@localhost src]# cd linux [root@localhost linux]# yum groupinstall "Development Tools" -y #安装开发包组 [root@localhost linux]# make allnoconfig #重置配置选项 [root@localhost linux]# make menuconfig如果 make menuconfig 时报错:

提示:缺少ncurses-devel 库文件
[root@localhost linux]# yum -y install ncurses-devel [root@localhost linux]# make menuconfig #再次进行
[*] 64 bit kernel #64位支持 [*] gerernal setup () local version - append to kernel release #版本号 [*] Enable loadable modual support #允许模块加载 -> Progressor type and features Processor Family(Core 2/newer Xeon) #自行选择处理器类型 [*] Symmetric multi-processing support #支持多核 -> Bus Options(PCI etc.) [*] PCI support #支持PCI总线 -> File system [*] The Extended 4 (ext) filesystem #支持ext4文件系统 -> Executable file formats / Emulations #可执行文件系统 [*] Kernel support for ELF binaries #支持ELF二进制程序 [*] Kernel support for scripts starting with #! #支持脚本 [*] Networking support -> Networking options [*] Unix domain sockets [*] UNIX: socket monitoring interface [*] TCP/IP networking [*] IP: multicasting #ip多播协议 [*] IP: advanced router #高级路由协议 [*] IP: kernel level autoconfiguration #内核级别配置 [*] IP: DHCP support #DHCP服务 [*] IP: BOOTP support [*] IP: RARP Support #RARP协议 [*] IP: TCP syncookie support #tcp同步状态 -> Device Drivers -> Gernal Driver Options [*] Maintain a devtmpfs filesystem to mount at /dev #使用devtmpfs机制挂载设备文件 [*] Automount devtmpfs at /dev, after the kernel mounted the rootfs #自动挂载 -> SCSI device support [*] SCSI deveice support [*] SCSI disk support [*] Fusion MPT device support #支持虚拟磁盘 [*] Fusion MPT ScsiHost drivers for SPI #虚拟磁盘 [*] Fusion MPT misc device (ioctl) driver #磁盘初始化 [*] Network device support [*] Network core driver support #网络核心驱动 [*] Ethernet driver support #以太网卡驱动 [*] Intel devices (NEW) [*] Intel(R) PRO/1000 Gigabit Ethernet support [*] Intel(R) PRO/1000 PCI-Express Gigabit Ethernet support -> Input Device support [*] Mouse interface [*] Keyboards #键盘 [*] Mice #ps/2 [*] USB support [*] Support for Host-side USB [*] xHCI HCD (USB 2.0) support [*] EHCI HCD (USB 3.0) support [*] OHCI HCD (USB 1.1) support [root@localhost linux]# make bzImage -j 3 #只编译内核,并且使用3个线程 [root@localhost linux]# cp arch/x86_64/boot/bzImage /mnt/boot/ #拷贝内核
三、 安装 busybox
安装 busybox 需要依赖 glibc-static
安装 glibc-static 包在 DVD2 中,如何没有 DVD2 比如我 .., 自己搭建网络 yum 源安装
root@localhost ~]# wget http://mirrors.163.com/.help/CentOS6-Base-163.repo 这是网易yum源的配置文件 [root@localhost ~]# yum clean all /#生效刚刚加载的yum仓库 [root@localhost ~]# yum -y install glibc-static [root@localhost ~]# tar xf busybox-1.22.1.tar.bz2 [root@localhost ~]# cd busybox-1.22.1 [root@localhost busybox-1.22.1]# make menuconfig -> Busybox Settings -> Build Options [*] Build BusyBox as a static binary (no shared libs) [root@localhost busybox-1.22.1]# make && make install [root@localhost busybox-1.22.1]# cp -a _install/* /mnt/sysroot/提供 grub.conf 文件:
[root@localhost ~]# vim /mnt/boot/grub/grub.conf default=0 timeout=5 title Linux (3.13.6) root (hd0,0) kernel /bzImage ro root=/dev/sda2 init=/sbin/init [root@localhost ~]# sync #把内存缓冲区的数据立即写入磁盘中测试:
添加新的虚拟机( server2 ) 注意选择磁盘时要选择之前创建的磁盘

添加完成后,把 server1 挂起或关机 , 然后 server2 开机


启动正常,但提示没有初始化文件
四、提供初始化文件( etc/fstab etc/inittab etc/rc.d/rc.sysinit )
[root@localhost sysroot]# vim etc/fstab /dev/sdb1 /boot ext4 defaults 0 0 /dev/sdb2 / ext4 defaults 0 0 /dev/sdb3 swap swap defaults 0 0 proc /proc proc defaults 0 0 sysfs /sys sysfs defaults 0 0 [root@localhost sysroot]# vim etc/inittab ::sysinit:/etc/rc.d/rc.sysinit ::respawn:/sbin/getty 19200 tty1 ::respawn:/sbin/getty 19200 tty2 ::respawn:/sbin/getty 19200 tty3 ::respawn:/sbin/getty 19200 tty4 ::respawn:/sbin/getty 19200 tty5 ::respawn:/sbin/getty 19200 tty6 ::ctrlaltdel:/sbin/reboot ::shutdown:/bin/umount -a -r [root@localhost sysroot]# vim etc/rc.d/rc