kernel+busybox+dropbear+ngnix自制Linux系统

kernel是内核,采用自己定制,最小化编译。busybox是提供rootfs,相当于用户空间。dropbear是提供远程ssh服务的,相当于openssl,但是它是轻量级的。ngnix是在定制的系统上提供的web服务。

环境:采用VMware虚拟机

一、编译内核前提:查看自己的cpu类型,pci类型,内核只编译所需的驱动就可以。

例如:查看cpu类型,不同的机器可能不同

查看pci类型:

开始编译:

1、下载内核源代码,下载地址是 kernel.org。这里使用的内核版本是 3.13.6

2、解压内核文件并配置

tarxflinux-3.13.6.tar.xz-C/usr/srccd/usr/srcln-svlinux-3.13.6linuxcdlinuxmakeallnoconfigmakemenuconfig#需要依赖ncusres-develmake

编译完成。

在make menuconfig时选择对应的选项,常用的如下:(都是直接编译进内核)

选择上面的选项编译完成后,会在当前目录下提供生成arch/x86/boot/bzImage内核映像压缩文件,作用等同于系统中vmlinuz文件。

二、编译busybox

1、获取busybox源码包 这里使用的版本是:busybox-1.22.1

2、开始编译

tarxfbusybox-1.22.1.tar.bz2cdbusybox-1.22.1makemenuconfigmakemakeinstall

对于make menuconfig的选项说明:

注意:在执行make时,可能会出现 如下错误:

/usr/bin/ld:cannotfind-lcryptcollect2:ldreturned1exitstatusmake:***[busybox_unstripped]Error1

出现这个错误的原因是因为在配置busybox的时候,通常配置为静态编译,所以编译后在最后的链接阶段需要链接crypt的静态库文件(libcrypt.a),而非动态库文件(libcrypt.so*),该库文件由glibc提供,通常系统中只安装了glibc,而没有安装glibc-static。

解决方法:

安装glibc-static包 yum install glibc-static

安装完成后,会在当前目录下生成一个_install目录,里面文件如下,实际上就生成一个busybox二进制程序,其他都是他的链接文件,主要的目的是模拟Linux的各种命令。但是我们发现里面,没有bash,但是这里sh兼容bash。

功能相当强大啊,就一个命令。看看这个文件的大小:

三、准备系统的启动盘

大致原理如下:

模拟实现系统启动盘#1、在虚拟机中添加块新的磁盘(在VMware中模拟实现)。划分2个主分区,大小分别为50M、512M,并格式化。#2、创建模拟boot目录和根文件系统,并挂载mkdir/mnt/boot/mnt/sysroot-pmount/dev/sdb1/mnt/bootmount/dev/sdb2/mnt/sysroot#3、提供内核文件以及对应的grub#安装grubgrub-install–root-directory=/mnt/dev/sdb#复制内核编译完成的bzImage文件到/mnt/boot目录下:cp/usr/src/linux/arch/x86_64/boot/bzImage/mnt/boot/#提供grub的配置文件#vim/mnt/grub/grub.conf,文件内容如下:#这里不需要initramfs,因为这里内核可以直接挂载根文件系统timeout=3default=0titleMiniLinuxCl5root(hd0,0)kernel/bzImageroroot=/dev/sda2init=/sbin/init#4、提供rootfs################################################################################################复制命令cp-a/root/busybox-1.22.1/_install/*/mnt/sysroot/#创建必要的目录mkdir/mnt/sysroot/{root,boot,proc,sys,dev,usr,lib64}####################################################################################################################################################################################################提供配置文件,busybox在执行init程序时需要配置文件inittab#vim/mnt/sysroot/etc/inittab,,内容如下:#init程序会以inittab文件为配置文件,格式如下:#读取/etc/rc.d/rc.sysinit配置文件(在这里是/mnt/sysroot/etc/rc.d/rc.sysinit)::sysinit:/etc/rc.d/rc.sysinit#开启4个虚拟终端,执行getty命令,此命会调用login程序登陆,respawn是退出时重新执行login,#所以此时需要进行用户认证::respawn:/sbin/getty19200tty1::respawn:/sbin/getty19200tty2::respawn:/sbin/getty19200tty3::respawn:/sbin/getty19200tty4#crtl+alt+del键的作用::ctrlaltdel:/sbin/reboot#设定关机时的动作,也比较关键。如果没有这一项的话,会出现开机后,##新创建的文件的内容可能会改变::shutdown:/bin/umount-a-r##################################################################################################################################################################################################提供用户,密码,组文件#密码由opensslpasswd-1-salt`opensslrand-hex4`生成#cat/mnt/sysroot/etc/passwdroot:x:0:0:root:/root:/bin/shcentos:x:500:500::/home/centos:/bin/sh#cat/mnt/sysroot/etc/shadowroot:$1$8dadd7c5$r7vRrjpLnBzq08KXzy4mA0:16296:0:99999:7:::centos:$1$8dadd7c5$r7vRrjpLnBzq08KXzy4mA0:16307:0:99999:7:::#cat/mnt/sysroot/etc/grouproot:x:0:centos:x:500:###########################################################################################################################################################################################提供/etc/rc.d/rc.sysinit(在这里是/mnt/sysroot/etc/rc.d/rc.sysinit)文件,##文件内容如下:#!/bin/sh#echo-e”\033[31mWelcomMiniLinux\033[0m”mount-a#此选项会去读取文件/etc/fstabmdev-s#是busybox提供的会自动扫描设备的命令mount-n-oremount,rw/dev/sda2/#这一项比较重要,如果没有这一项的话,##根文件系统是只读的#提供网卡地址ifconfiglo127.0.0.1netmask255.255.255.255upifconfigeth0172.16.10.14netmask255.255.0.0up#如果编译时没有设置主机名,需要以下设置主机名#[-r/etc/sysconfig/network]&&./etc/sysconfig/network#[-z”$HOSTNAME”-o”$HOSTNAME”==”(none)”]&&hostnamelocalhost||hostname$HOSTNAME#####/etc/sysconfig/network文件内容如下:#HOSTNAME=www.clusteLinux.comecho-e”\033[31mEND\033[0m”######################################################################################################################################################################################创建fstab文件/dev/sda2/ext4defaults00/dev/sda1/bootext4defaults00sysfs/syssysfsdefaults00proc/procprocdefaults00####################################################################################################################################################################################用户登录时,会去读取profile文件,在这里可以设置提示符等;#vimetc/profile内容如下:exportPS1=[\u@\h\W]$#########################################################################################

结果:

四、安装dropbear

dropbear: 更小环境下,提供简单ssh远程连接服务。类似于openssh工具,但是它更轻量级。安装完dropbear后,会生成以下几个命令:

dropbear:是dropbear的服务端,类似于sshd

dbclient:是dropbear的客户端,类似于ssh

dropbearkey: 是秘钥生成工具,类似于ssh-keygen

ropbearconvert:实现openssh和dropbear之间的秘钥转换

例如:dropbearconvert openssh dropbear /etc/ssh/ssh_host_rsa_key /etc/dropbear_rsa_host_key

scp:远程复制工具

回首往事,日子里竟全是斑澜的光影,

kernel+busybox+dropbear+ngnix自制Linux系统

相关文章:

你感兴趣的文章:

标签云: