构建自己的MiniLinux

1) 环境准备

在关机状态下新添加一块磁盘

对新加入的磁盘进行分区,并挂载至指定目录

[[email protected] ~]# 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
[[email protected] ~]# mke2fs -t ext4 /dev/sdb1
[[email protected] ~]# mke2fs -t ext4 /dev/sdb2
[[email protected] ~]# mount /dev/sdb1 /mnt/boot/
[[email protected] ~]# mount /dev/sdb2 /mnt/sysroot/
#安装grub到/dev/sdb
[[email protected] ~]# grub-install --root-directory=/mnt/ /dev/sdb
下载内核的源码并解压到/usr/src
[[email protected] src]# tar xf ~/linux-3.13.6.tar.xz -C /usr/src/
[[email protected] src]# ln -s linux-3.13.6/ linux

2) 编译源码:

#去掉除必须外所有编译选项
[[email protected] linux]# make allnoconfig
[[email protected] 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 
#=============================================================
[[email protected] linux]# make -j 4
[[email protected] linux]# make -j4  bzImage#用来制定使用的线程数
[[email protected] linux]# cp arch/x86/boot/bzImage /mnt/boot/

3) 创建必须文件夹并安装busybox

[[email protected] src]# tar xf busybox-1.22.1.tar.bz2 
[[email protected] src]# cd busybox-1.22.1
[[email protected] busybox-1.22.1]# make menuconfig #以静态编译方式编译
Build Options  --->   
[*] Build BusyBox as a static binary (no shared libs) 
[[email protected] busybox-1.22.1]# make && make install
[[email protected] busybox-1.22.1]# cp -a _install/* /mnt/sysroot/
#新已经可以正常进入

#编辑使开机可以自动挂载
[[email protected] 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
 
[[email protected] 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"
 
[[email protected] ~]# 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
 
#提供用户和密码
[[email protected] etc]# cat passwd
root:x:0:0:root:/root:/bin/sh
[[email protected] etc]# cat shadow 
root:$1$sdgsag$3AEIdl7KBstUNb7JOEoDX.:16303:0:99999:7:::
 
[[email protected] ~]# openssl passwd -salt "sdgsag" -1
Password: 
$1$sdgsag$3AEIdl7KBstUNb7JOEoDX.

#已经可以认证

#网卡也可以正常加载

4) 安装Dropbear,实现ssh连接

[[email protected] ~]# tar xf dropbear-2013.58.tar.bz2 -C /usr/src/
[[email protected] ~]# cd /usr/src/
#编译并安装
[[email protected] dropbear-2013.58]# ./configure --prefix=/usr/local/dropbear
[[email protected] dropbear-2013.58]# make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp"
[[email protected] dropbear-2013.58]# make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" install
#使用如下脚本将库文件和命令拷贝到/mnt/sysroot/下

#生成密钥

#登陆成功

5) 部署nginx站点

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

访问成功:

时间: 2024-10-15 00:46:54

构建自己的MiniLinux的相关文章

Android程序能够构建和运行,但是报以下报错,为什么?

安卓程序写完之后能够构建和运行,但是会报以下的错误.不知道原因为何?求大神解答. 网上说的是混淆编译的原因,不过程序没有开启混淆编译. Error:warning: Ignoring InnerClasses attribute for an anonymous inner class Error:(com.alipay.android.phone.mrpc.core.c) that doesn't come with an Error:associated EnclosingMethod at

如何构建安全的网络连接机制

随着计算机网络与信息化的不断发展,DT时代数据资源的多样性.庞大性.分布广泛性,导致信息安全问题日趋复杂,计算机网络的开放框架所带来的威胁层出不穷.面对严峻的网络安全形势,传统的信息安全系统从架构和强度上已经难有大的突破.人们在信息安全的实践中逐渐认识到,大多数安全隐患来自于终端,如何解决这项问题,成为了各网络大咖们需要攻克的又一课题. 勤智数码产品方案部-秦杨凯给出了这个课题的解决方案-- 通过构建对等规格的网络安全协议和的信息资源管理体系的分布式网络,可快速提高数据资源自由流通.往来无碍.安

认知,构建个人的知识体系(上)

1.前言 本文将聊聊我对构建个人知识体系的一些想法,主要是为了提升自我认知.从个人经历开始,谈谈对知识的划分,也就是一个是什么,为什么的过程. 2.缘起 把时间回到一年前,那时候我工作快一年了,得益于前面的一些努力,工作比较顺利.特别是技术上,没有遇到太多过无法解决的问题.同时也开始迷茫,工作难道就是这个轻松的样子?三五年之后那不是很无趣,该怎么办? 想找到这个问题的答案,而最好的方式莫过于,亲自去了解那些三五年工作经验的人是怎么的样子. 因此从那时候起,关注了不少来公司面试的人的简历,也有过几

Busybox构建根文件系统和制作Ramdisk

定制根文件系统的方法很多,最常用的是使用BusyBox来构建定制根文件系统.它集成压缩了Linux的许多工具和命令,可以使用户迅速方便地建立一套相对完整.功能丰富的文件系统,其中包括大量常用的应用程序.下面详细介绍有关Busybox定制根文件系统. 一.系统环境: 1.操作系统:Ubuntu140.4 2.交叉编译工具:gcc version 6.1.1 20160711 (Linaro GCC 6.1-2016.08) 3.busybox源码包:busybox-1.26.2 二.构建rootf

构建器模式

*构建器模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示.类图如下: *product产品类:表示被构建器构建的复杂对象,包含多个部件. 1 //产品接口 示意性产品,所以没有任何方法 2 public interface Product{ 3 } *builder构建器接口:定义创建一个product对象所需要的各个部件的操作. 1 //生成器接口 2 public interface Builder{ 3 public void builderPart1();

构建之法——读书笔记(8)

<构建之法>第十&十一章 主要讲述了在软件设计前期的需求分析问题上的方法和实践经验,分为"典型用户和场景"以及"软件设计与实现". 其中第十章大部分内容包含: 用户的分类(典型用户可以包括以下内容: 1. 名字(越自然越好) 2. 年龄(不同年龄和收入的用户有不同的需求) 3. 收入 4. 代表的用户在市场上的比例和重要性(比例大不等同于重要性高,如付费的用户比例较少,但是影响大,所以更重要 5. 使用这个软件的典型场景 6. 使用本软件/服务的

《构建之法》第二次

第二章讲的是个人技术和流程.绝大多数软件是由多人合作完成的.单元测试能够让自己负责的模块功能定义更加明确,模块内部的改变不会影响其他模块,而且模块的质量能得到稳定的.量化的保证. 创建一个单元测试函数的主要步骤是: 1.设置数据 2.使用被测试类型的功能 3.比较实际结果和预期的结果 在写技术模块规格说明书的时候,要越详细越好,最好各项要求都可以表示为一个单元测试用例.单元测试也并不是件容易的事,单元测试应该准确.快速地保证程序基本模块的正确性.首先单元测试应该在最基本的功能/参数上验证程序的正

SQL Server虚拟化系列(3)&mdash;&mdash;构建理想的基于VMware的SQL Server虚拟机

虚拟化变得越来越常见,并且在不了解虚拟化如何工作的情况下,DBA在尝试解决性能问题时会出现盲点,例如减少资源争用或改进备份和恢复操作等. 在本文中我们将主要讲述为您的SQL Server工作负载构建理想的基于VMware的虚拟机.我们的下一篇文章将介绍怎么样在Hyper-V上构建对应的SQL Server虚拟化环境. 现在,作为DBA,您可能没有访问权限来创建用于SQL Server的新虚拟机.这些操作可以交给您的VM管理员,他们将为您部署合适的VM环境. 以下详细信息适用于在Windows S

构建CTC语音识别解码网络

本文介绍 kaldi-ctc 构建 CTC[1, 2, 3, 4] 语音识别加权有限状态机(WFST)解码网络的方式. 示例相关资源 lifeiteng/codingmath/CTC-decoding-graph 构建语言模型 以 单句 "how are you are" 作为文本语料,训练 bi-gram(order=2)语言模型 生成 G.fst [data/lang_2/G.pdf],如下图 准备"发音" 词典 不同单元 phone[1, 2] / chara