CentOS 6.5结合busybox完成自制Linux系统及远程登录和nginx安装测试

本文介绍了如何使用CentOS 6.5和Busybox构建自定义Linux系统,并详细讲解了编译内核、配置Busybox、设置远程登录(dropbear)以及安装Nginx实现页面访问的步骤。通过这些步骤,读者可以了解一个简单的Linux系统构建过程。
摘要由CSDN通过智能技术生成
前言
   系统定制在前面的博文中我们就有谈到过了,不过那个裁减制作有简单了点,只是能让系统跑起来而,没有太多的功能,也没的用户登录入口,而这里我们将详细和深入的来谈谈Linux系统的详细定制过程和实现用户例如、远程登录和Nginx安装过程、一步一步从头开始定制属于我们自己的系统。


正文
   首先我们先来简单的介绍一下我们这里定制属于自己的Linux系统的基本元素,其中一些相关的信息也可以参考我前面写过的博文


   一个定制的linux内核+一个定制的busybox就可以定制一个小型的Linux操作系统了,安装Dropbear和Nginx,Linux的组成部分包括内核空间和用户空间、而用户空间其实就是根文件系统、用户空间中又包括有shell和init,busybox他能够模拟数百个我们系统上带用的命令、当然包括我们所需要用到的shell、init、getty、login、那定制一个Linux操作系统我们必须要了解的就是系统启动流程:    
   POST --> Boot Sequence(MBR) --> BootLoader --> kernel -->/sbin/init
POST:加电自检
Boot Sequence:读到磁盘中的第一个扇区(446)的MBR。
BootLoader:找到MBR中的BootLoader引导加载器、bootloader会找到我们选定的操作系统或内核去加载对应的内核、而这个Bootloader通常是grub。
kernel:加载内核、内核要完成初始化、bootloader负责把内核读到内存中、内核又通常中压缩的、所以通常内核在内存中展开、而bootloader引导内核启动起来、让内核从他的程序入口处开始执行、所以接下来内核要完成自身的初始化操作、或硬件探测、包括自身执行环境的准备等等都在这里完成。
   内核完成初始化的第一步就要去装载用户空间了、有时候为了让内核做得足够小、很有可能内核中并不具备真正的根文件系统所在设备的驱动、因此我们要借助于initramfs(CentOS5上被称为initrd)来完成去装载真正根文件系统所在的根文件系统真正的程序、但是这个initramfs可initrf(initramfs:这是一个文件系统、CentOS6上就这么称呼了,initrd:ram disk 这是一个磁盘设备)是个虚拟的根文件系统、是个虚根、他不是我们系统真正工作起来所使用的根、所以称这个为虚根、内核借助于这个虚根装载驱动之后就要去挂载真正的根设备了、kernel会自动挂载到这个跟文件下、内核会挂载真正的根到这个initramfs虚根的某个目录下、比如说挂载到/mnt/sysroot的目录下、而后再完成根切换、而后我们的真正的根就可以加载了、那我们的内核怎么知道挂载的根文件系统是什么呢、那我们的grub向内核传递参数root等于什么那就是告诉系统根文件系统所在的设备。


   /sbin/init:他通常加载四个设备、/sbin/init、/bin/bash、如果内核找不到就去找根下的init、再找不着就去找/bin/sh、/bin/bash、按照这个顺序去找、找到一个就可以启动系统、所以系统启动的第一个进程就启动了、init负责去启动用户空间中真正工作的进程、init本身本身只是负责去生成这些正正工作的进程和回收这些进程的、是内核的第一个、最顶级的管理进程、但不负责具体的工作、虽然init不负责具体工作、但他需要把一个用户空间启动为一个真正完整意义上的用户空间、所以init要结合他的配置文件inittab完成所谓系统初始化的。    
   在CentOS6上这个文件inittab之所以保留下来是为了跟CentOS5兼容的、其实我们用不着的、因为init大多数配置文件都位于/etc/init/*.conf目录下所有以.conf结尾的文件、是用于各子系统之间协调的。


   /sbin/init作用包含以下几步:
       1、设定默认运行级别:runlevel -v:查看运行级别
       2、系统空间中的进一行初始化、这个要依赖于一个系统初始化脚本来完成的、这个脚本叫rc.sysinit、在有些系统上可能叫rcS、其实都是一个概念、这个初始化包含键盘键映射、初始化没被挂载的文件系统等等。那/etc/rc.sysinit要进行哪些工作、seLinux、udev、键映射、交换分区的激活、挂载额外文件系统、重新以读写方式挂载根文件系统等等。
       3、启动指定级别下的服务、后台的守护进程、每个级别都有一个在/etcg下rcN.d的文件、启动这个文件中所有以S开头的脚本服务、关闭所有以K开头的服务脚本、/etc/rc.local其中以S开头的最后一个服务S99包含rc.local、有些我们不便于自己写脚本定义的服务可以写到这里来、但是启动之后不会关闭、所以只是执行一些命令我们可以在这里执行、服务还是建议使用服务脚本。
       4、设定键映射
       5、启动虚拟终端、启动这个终端会调用一个叫login的程序、在虚拟终端上打印一个登录提示符让我们输入
       6、如果设备默认级别为5的话还可以启动图形终端
       init在早期是个串型的init、或者说传统意义是的init、sysV风格的、这种程序启动任何服务、运行任何程序完成系统初始化时统统以串型模式进行的、所以速度非常慢、以至于后来有了并型运行的init、启动速度也比较快。


准备工作:

   系统裁减我们说过、为了可以让定制好的系统可以放到别的机器上动行、我们要把他做到一个独立的硬盘上去、所以首先我们在宿主机上添加一块SCSI的硬盘

添加硬盘,重启


# fdisk /dev/sdb
分3个主分区
第一个主分区(做boot分区):50M 
第二个主分区(做/根分区):512M
第三个主分区(做swap分区):256M


    n p 1  +50M n p 2  +512M n p 3  +256M t 3 82 w


# mke2fs -t etx4 /dev/sdb1
# mke2fs -t etx4 /dev/sdb2
# mkswap /dev/sdb3
# mkdir -pv /mnt/{boot,sysroot}
# mount /dev/sdb1 /mnt/boot
# mount /dev/sdb2 /mnt/sysroot


第一步:编译内核或定制内核

   1、获取内核程序包,可以到官网下载:http://ftp.redhat.com/pub/redhat/linux/enterprise/6Server/en/os/SRPMS/

   这里我们使用的内核版本是3.13.6的版本
   解压内核文件,这里我们以make allnoconfig来编译安装,自己选择要编译的功能(确保系统上的编译环境)    


# tar xf linux-3.13.6.tar.xz -C /usr/src/
# cd /usr/src
# ln -sv linux-3.13.6 linux
# cd linux
# make allnoconfig


安装依赖包

# yum install -y ncurses-devel
# make menuconfig 把我们所需要的内容整合进来


我们把这些内容全部编译进内核、不编译成模块、*号表示编译进内核(M表示以模块的方式装载)

注意:以下*号标识的选项一定要选择*号,否则系统无法正常启动



[*]64-bit kernel :64位操作系统的内核
General setup --> Local version --> -MyLinux: 给内核定一个自己的版本
Processor type and features --> Processor family --> (X)Generic-x86-64:这里是CPU类型、这个是通用x86-64
[*]Symmetric multi-processing support:选择CPU支持多核心处理
[*]Enable loadable module support:选择内核动态模块加载
Bus options (PCI etc.) --> [*]PCI suppor:支持PCI总线
Device Drivers --> <*>SCSI device support -->[*]SCSI disk support要支持SCSI硬盘
Device Drivers -->Fusion MPT device support (NEW) --> <*>Fusion MPT ScsiHost drivers for SPI、<*>Fusion MPT misc device (ioctl) driver、[*]Fusion MPT logging facility:支持对硬盘的驱动
File systems --> <*>The Extended 4 (ext4) filesystem:支持文件系统
Executable file formats / Emulations --> [*]Kernel support for ELF binaries、[*]Write ELF core dumps with partial segments (NEW)、 <*>Kernel support for scripts starting with #!:可执行文件的格式
Device Drivers -->Input device support --> [*]Keyboards -> <*>AT keyboard (NEW) [*]Mice:支持输入输出设备、比如健盘
Device Drivers > USB support  > <*>   Support for Host-side USB > <*>UHCI HCD (most Intel and VIA) support、<*>OHCI HCD (USB 1.1) support、<*>EHCI HCD (USB 2.0) support:USB设备驱动
Device Drivers > Generic Driver Options > [*] Maintain a devtmpfs filesystem to mount at /dev [*]Automount devtmpfs at /dev, after the kernel mounted the rootfs
[*] Networking support  ---> > Networking options[*] TCP/IP networking [*]IP:multicasting [*]IP: advanced router[*]IP: policy routing [*]IP: verbose route monitoring[*]   IP: kernel level autoconfiguration[*]IP: DHCP support[*]IP: BOOTP support[*]     IP: RARP support<*>IP: tunneling <*>Unix domain sockets<*>   UNIX: socket monitoring interface:支持协议
Device Drivers > Network device support > Ethernet driver support[*]Intel devices (NEW)<*>Intel(R) PRO/1000 Gigabit Ethernet support<*>Intel(R) PRO/1000 PCI-Express Gigabit Ethernet support:只要Intel的、其他的他都去掉、这是选择网卡设备的驱动程序
[ ]Wireless:这个无线网、我们去掉去、用不着




OK、到这里保存退出、把配置文件复制一份出来、前面磁盘格式化而且都挂载好了、这里我们就把grub安装到boot下::    


# cp .config /root/config-3.13.6-x86_64
# make -j 4 bzImage
# cp arch/x86/boot/bzImage /mnt/bo
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值