博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
构建一个mini linux系统
阅读量:6225 次
发布时间:2019-06-21

本文共 2721 字,大约阅读时间需要 9 分钟。

mini linux:

启动流程:

centos6:post》bootsequence(bios)》BootLoader(mbr)》kernel(如无法直接识别硬盘驱动,需借助ramdisk)》rootfs》/sbin/init

centos7:post》bootsequence(bios)》BootLoader(mbr)》kernel(如无法直接识别硬盘驱动,需借助ramfs)》rootfs》/sbin/systemd

bootloader:lilo、grub legacy、grub2

stage1:mbr

stage1_5:filesystem driver

stage2:grub程序本身

内核编译步骤:

1、make menuconfig》生成.config文件

2、make [-j #]

3、make modules_install

4、make install

mini linux步骤:

1、内核:kernel(非模块方式)

2、根文件系统:busybox

3、按需进行命令移植

复制程序及其依赖的库文件脚本示例:

#!/bin/bash

#
target=/mnt/sysroot
[ -d $target ] || mkdir $target

read -p "a command:" command

libcp() {

for lib in $(ldd $1 | grep -o "[^[:space:]]/lib[^[:space:]]");do
libdir=$(dirname $lib)
[ -d $target$libdir ] || mkdir -p $target$libdir
[ -f $target$lib ] || cp $lib $target$lib
done
}

while [ "$command" != "quit" ];do

if ! which $command &> /dev/null;then
read -p "no such command, enter again:" command
continue
fi
command=$(which --skip-alias $command)
cmnddir=$(dirname $command)
[ -d $target$cmnddir ] || mkdir -p $target$cmnddir
[ -f $target$command ] || cp $command $target$command
libcp $command
read -p "a other command(quit):" command
done

yum groupinstall "development tools" "server platform development" -y

tar xf linux-3.16.56.tar.xz -C /usr/local/

cd /usr/local/

ln -sv linux-3.16.56 linux

cd linux

make mrproper      清理所有

make allnoconfig

make defconfig         根据参考你的机器架构生成一份基本能用的基础配置

make menuconfig

根据cpu、pci、ethernet、filesystem等设备信息挑选内核参数,lscpu、lspci、lsusb等

编译时选择的基本模块与功能介绍

1.[*] 64-bit kernel #编译64位内核

2.Enable loadable module suppose #支持内核的装载与卸载 [*] module unloding

3.Bus options #相关PCI接口支持

4.Processor type and features #关于处理器版本选择,选择自己处理器合适的

5.Device drivers #关于硬盘,网卡各设备的驱动lspci查看系统设备信息(自己选择)

6.File Systems #文件系统支持(自己选择)

7.Excutable file formates/Emulattions #支持文件可执行文件的格式(自己选择)

8.Networking Support #网络服务支持

make -j 4 bzImage

准备硬盘,安装grub,分区,复制编译后的内核

mkfs -t ext4 /dev/sdb1

mkfs -t ext4 /dev/sdb2

mkdir -pv /mnt/{boot,sysroot}

mount /dev/sdb1 /mnt/boot

mount /dev/sdb2 /mnt/sysroot/

grub-install --root-directory=/mnt /dev/sdb

cp /usr/local/linux/arch/x86/boot/bzImage /mnt/boot/bzImage

vim /mnt/boot/grub/grub.conf

default=0

timeout=3
title minilinux
root (hd0,0)
kernel /bzImage ro root=/dev/sda2

编译安装单文件的busybox,静态方式编辑依赖glibc-static

yum install glibc-static

wget

tar xvf busybox-1.28.4.tar.bz2

cd busybox-1.2.2.1

make menuconfig

选择

[*] Build static binary (no shared libs)      静态编译

What kind of applet links to install (as soft-links) --->        (X) as soft-links

(./_install) Destination path for 'make install'              定义安装路径

make && make install

cp -a _install/* /mnt/sysroot/

vim /mnt/boot/grub/grub.conf

default=0

timeout=3
title minilinux
root (hd0,0)
kernel /bzImage ro root=/dev/sda2 init=/sbin/init

转载于:https://blog.51cto.com/11476314/2125851

你可能感兴趣的文章
wget使用技巧
查看>>
转:Bash脚本15分钟进阶指导
查看>>
excel表格如何限制单元格输入内容
查看>>
认识一下ES6的Reflect和Proxy
查看>>
升级cordova
查看>>
Alpha 冲刺 (10/10)
查看>>
简述mysql数据库配置文件
查看>>
count
查看>>
P3518 [POI2011]strongbox
查看>>
JS判断数组方法大全
查看>>
【20181019T3】比特战争【最小生成树思想】
查看>>
Python之初识模块
查看>>
iphone-common-codes-ccteam源代码 CCUICalloutView.m
查看>>
鐵打的營盤
查看>>
成功来自刻意练习
查看>>
LR11生成图表后修正Analysis中显示请求的地址长度过短50个字符的问题
查看>>
架构之美阅读笔记之二
查看>>
11.时间序列分析狠
查看>>
Java之Annotation
查看>>
汇编语言中整数常量表示方式
查看>>