構建自己的MiniLinux

1) 環境準備

在關機狀態下新添加一塊磁盤

wKiom1P7IrXSPti2AAC8tLiDtV0411.jpg 

對新加入的磁盤進行分區,並掛載至指定目錄

[root@host1 ~]# fdisk -l /dev/sdb
 
Disk /dev/sdb: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xc65c5fd3
 
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1          14      112423+  83  Linux
/dev/sdb2              15          79      522112+  83  Linux
[root@host1 ~]# mke2fs -t ext4 /dev/sdb1
[root@host1 ~]# mke2fs -t ext4 /dev/sdb2
[root@host1 ~]# mount /dev/sdb1 /mnt/boot/
[root@host1 ~]# mount /dev/sdb2 /mnt/sysroot/
#安裝grub到/dev/sdb
[root@host1 ~]# grub-install --root-directory=/mnt/ /dev/sdb
下載內核的源碼並解壓到/usr/src
[root@host1 src]# tar xf ~/linux-3.13.6.tar.xz -C /usr/src/
[root@host1 src]# ln -s linux-3.13.6/ linux


2) 編譯源碼:

#去掉除必須外所有編譯選項
[root@host1 linux]# make allnoconfig
[root@host1 linux]# make menuconfig
#=============================================================
#選擇編譯64位的內核
[*] 64-bit kernel
#選擇次版本號以便於區分
General setup  ---> 
(mini-v1) Local version - append to kernel release #次版本號
[*]System V IPC #支持進程間通信                                                
 
#選擇CPU類型
Processor type and features
Processor family (Core 2/newer Xeon)  --->
#選擇支持多核心和多處理器
Processor type and features  --->
[*] Symmetric multi-processing support
[*] Multi-core scheduler support (NEW)
 
#支持PCI總線
Bus options (PCI etc.)  --->
[*] PCI support
#支持模塊的動態裝卸載
[*] Enable loadable module support  ---> 
[*]   Forced module loading 
[*]   Module unloading
[*]   Forced module unloading 
#支持ELF可執行文件和#!開頭的文件
Executable file formats / Emulations  --->
[*] Kernel support for ELF binaries
[*] Write ELF core dumps with partial segments (NEW)
<*> Kernel support for scripts starting with #! 
#支持TCP/IP協議
 [*] Networking support  --->   #支持網絡功能                                      
  Networking options  --->
[*] TCP/IP networking#支持TCP/IP協議
 
#支持scsi接口設備
Device Drivers  --->
SCSI device support  --->
<*> SCSI device support
<*> SCSI disk support 
 
#設備設置
Device Drivers  --->
[*] Fusion MPT device support  ---> 
<*>   Fusion MPT ScsiHost drivers for SPI 
[*]   Fusion MPT logging facility 
#USB接口驅動
Device Drivers  --->
[*] USB support  --->
<*>   Support for Host-side USB 
<*>     xHCI HCD (USB 3.0) support
<*>     EHCI HCD (USB 2.0) support
<*>     OHCI HCD (USB 1.1) support
<*>     UHCI HCD (most Intel and VIA) support
 
 
#輸入設備驅動
Device Drivers  --->
Input device support  ---> 
<*>   Mouse interface 
[*]   Keyboards  --->
<*>   AT keyboard (NEW) 
[*]   Mice  ---> 
<*>   PS/2 mouse (NEW)
#網卡驅動
[*] Network device support  --->  
[*]   Ethernet driver support (NEW)  ---> 
 [*]   Intel devices       #儘量去除不需要的網卡驅動                                                                                                   
 <*>     Intel(R) PRO/1000 Gigabit Ethernet support                                                                           
 <*>     Intel(R) PRO/1000 PCI-Express Gigabit Ethernet support  
 
 
#自動掛載設備文件到/dev目錄
Device Drivers  --->
Generic Driver Options  ---> 
[*] Maintain a devtmpfs filesystem to mount at /dev                                                                          
[*]   Automount devtmpfs at /dev, after the kernel mounted the rootfs 
#文件系統選擇
 File systems  --->  
<*> The Extended 4 (ext4) filesystem 
#=============================================================
[root@host1 linux]# make -j 4
[root@host1 linux]# make -j4  bzImage#用來制定使用的線程數
[root@host1 linux]# cp arch/x86/boot/bzImage /mnt/boot/

3) 創建必須文件夾並安裝busybox

[root@host1 src]# tar xf busybox-1.22.1.tar.bz2 
[root@host1 src]# cd busybox-1.22.1
[root@host1 busybox-1.22.1]# make menuconfig #以靜態編譯方式編譯
Build Options  --->   
[*] Build BusyBox as a static binary (no shared libs) 
[root@host1 busybox-1.22.1]# make && make install
[root@host1 busybox-1.22.1]# cp -a _install/* /mnt/sysroot/
#新已經可以正常進入

wKioL1P7I87ifZqWAACcqkyEdbM796.jpg 

#編輯使開機可以自動掛載
[root@host1 rc.d]# vim rc.sysinit 
 
#!/bin/sh
#
mkdir /dev/shm
mount -n -t ext4 /dev/sdb2 /
mount -n -t ext4 /dev/sda1 /boot
mount -n -t proc proc /proc
mount -n -t sys sys /sys
mount -n -t tmpfs tmpfs /dev/shm
 
mount -a
 
[root@host1 rc.d]# vim rc.sysinit 
 
#!/bin/sh
#
mount -n -o remount,rw -t ext4 /dev/sdb2 /
mount -n -t ext4 /dev/sda1 /boot
mount -n -t proc proc /proc
mount -n -t sys sys /sys
 
mount -a
echo -e "Welcome to \033[36mMini OS\033[0m v2 by WH"
 
[root@host1 ~]# vim /mnt/sysroot/etc/fstab 
/dev/sda2               /                       ext4    defaults        0 0 
/dev/sda1               /boot                   ext4    defaults        0 0 
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  defaults        0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
 
#提供用戶和密碼
[root@host1 etc]# cat passwd
root:x:0:0:root:/root:/bin/sh
[root@host1 etc]# cat shadow 
root:$1$sdgsag$3AEIdl7KBstUNb7JOEoDX.:16303:0:99999:7:::
 
[root@host1 ~]# openssl passwd -salt "sdgsag" -1
Password: 
$1$sdgsag$3AEIdl7KBstUNb7JOEoDX.


#已經可以認證

wKioL1P7I8_gIJnwAAGV0aB2rrk902.jpg 

#網卡也可以正常加載

wKioL1P7I9ChuVUpAAEjrcwFjCc532.jpg 

4) 安裝Dropbear,實現ssh連接

[root@host1 ~]# tar xf dropbear-2013.58.tar.bz2 -C /usr/src/
[root@host1 ~]# cd /usr/src/
#編譯並安裝
[root@host1 dropbear-2013.58]# ./configure --prefix=/usr/local/dropbear
[root@host1 dropbear-2013.58]# make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp"
[root@host1 dropbear-2013.58]# make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" install
#使用如下腳本將庫文件和命令拷貝到/mnt/sysroot/下


 

#生成密鑰

wKioL1P7I9SRaZ4iAAEqQQmQ8og213.jpg 

wKiom1P7Ir6TscbrAAFHZrNfm4c471.jpg 

#登陸成功

wKioL1P7I9bQqMnKAABo_fKw22U110.jpg 

5) 部署nginx站點

[root@host1 nginx-1.4.7]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --without-pcre --without-http_rewrite_module
[root@host1 nginx-1.4.7]# make && make install
[root@host1 nginx]# cp -r /usr/local/nginx/ /mnt/sysroot/usr/local/
#添加用戶信息和組信息到以下目錄
[root@host1 nginx]# vim /mnt/sysroot/etc/passwd 
nginx:x:0:0:root:/home/nginx:/bin/sh
[root@host1 nginx]# vim /mnt/sysroot/etc/shadow 
nginx:$1$sdgsag$3AEIdl7KBstUNb7JOEoDX.:16303:0:99999:7:::

 

訪問成功:

wKiom1P7IsHS5JMgAAFog1g9Aog298.jpg 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章