Linux内核+Busybox自制linux系统

实验环境

1、centos7图形化界面安装
2、busybox:busybox-1.30.0.tar.bz2
   官网  https://busybox.net
   下载地址:https://busybox.net/downloads/busybox-1.30.0.tar.bz2
3、一块新添加的硬盘
Busybox 是一个开源项目,遵循GPL v2协议。Busybox将众多的UNIX命令集合进一个
很小的可执行程序中,其中包括了三百多个最常用Linux命令和工具

一、编译安装busybox

[[email protected] data]# yum install gcc gcc-c++ glibc glibc-devel  pcre pcre-devel  openssl openssl-desystemd-devel zlib-devel  glibc-static ncurses-devel wget

[[email protected] data]# tar xf busybox-1.30.0.tar.bz2
[[email protected] data]# cd busybox-1.30.0
[[email protected] busybox-1.30.0]make menuconfig
[[email protected] busybox-1.30.0] make && make install
    ##按下面选择,把busybox编译为静态二进制、不用共享库
             Busybox Settings -->Build Options -->[*] Build BusyBox   as a static binary (no shared
libs) 之后保存退出 --> exit --> exit --> yes


安装成功

busybox的使用有三种方式:
         busybox后直接跟命令,如 busybox ls
        直接将busybox重命名,如 cp busybox tar
        创建符号链接,如 ln -s busybox rm
以上方法中,第三种方法最方便,但为busybox中每个命令都创建一个软链接,
相当费事,busybox提供自动方法:busybox编译成功后,执行make install,则会
产生一个_install目录,其中包含了busybox及每个命令的软链接

二、添加新硬盘并分区

新添加的硬盘要保存为单个文件,并记录具体保存路径
添加后扫描到磁盘并分区格式化,至少分2个分区,/dev/sdb1为boot分区,/dev/sdb2为根分区 这里不写详细步骤了

三、安装bootloader和grub、内核文件

[[email protected] busybox-1.30.0]# grub2-install --root-directory=/mnt /dev/sdb    安装grub1阶段和1.5阶段
[[email protected] busybox-1.30.0]# hexdump -C -n 512 /dev/sdb   查看bootloader
[[email protected] busybox-1.30.0]# grub2-mkconfig > /mnt/boot/grub2/grub.cfg   grub阶段

[[email protected] busybox-1.30.0]# cp  /boot/vmlinuz-3.10.0-957.el7.x86_64     /mnt/boot/
[[email protected] busybox-1.30.0]# cp /boot/initramfs-3.10.0-957.el7.x86_64.img  /mnt/boot/
[[email protected] busybox-1.30.0]# cp  _install/* /mnt/sysroot/   将busybox下_install文件复制到/mnt/sysroot

[[email protected] ~]#vi /etc/default/grub
        修改/etc/default/grub在最后一行添加
        GRUB_DISABLE_LINUX_UUID=true

[[email protected] ~]#grub2-mkconfig > /mnt/boot/grub2/grub.cfg

到此自制系统已经完成下面开始验证



新建一个空白虚拟机,将原有的磁盘删除,不然bios会默认从第一块硬盘寻找系统

添加新硬盘

成功开机,里面的命令来自于busybox  

原文地址:https://blog.51cto.com/14322729/2412355

时间: 2024-10-18 11:25:45

Linux内核+Busybox自制linux系统的相关文章

Linux内核中的GPIO系统之(3):pin controller driver代码分析--devm_kzalloc使用【转】

转自:http://www.wowotech.net/linux_kenrel/pin-controller-driver.html 一.前言 对于一个嵌入式软件工程师,我们的软件模块经常和硬件打交道,pin control subsystem也不例外,被它驱动的硬件叫做pin controller(一般ARM soc的datasheet会把pin controller的内容放入GPIO controller的章节中),主要功能包括: (1)pin multiplexing.基于ARM core

使用 linux kernel +busybox 定制linux系统

目的: 了解linux的启动过程 主要内容: 1.grub 是启动程序的bootloader 2.linux-kernel 是linux的开源内核 3.busybox 是linux的工具集合 启动顺序: grub-> bzimage > initrd > init > chroot sbin/init (从内存镜像转换成rootfs)>/etc/inittab > fstab>etc/init.d/rcS 实验环境: 操作系统(编译使用): CentOS 7.4K

Linux内核源代码情景分析-系统初始化

我们跳过boot,setup,直接来到head代码,内核映像的起点是stext,也是_stext,引导和解压缩以后的整个映像放在内存从0x100000即1MB开始的区间.CPU执行内核映像的入口startup_32就在内核映像开头的地方,因此其物理地址也是0x100000. 然而,在正常运行时整个内核映像都应该在系统空间中,系统空间的虚拟地址与物理地址间有个固定的位移,这就是0xC0000000,即3GB.所以,在连接内核映像时已经在所有的符号地址加了一个偏移量0xC0000000,这样star

linux内核---嵌入式linux内核的五个子系统

转自:https://blog.csdn.net/qq_27522735/article/details/63251168 Linux内核主要由进程调度(SCHED).内存管理(MM).虚拟文件系统(VFS).网络接口(NET)和进程间通信(IPC)5个子系统组成,如图1所示. 图1 Linux内核的组成部分与关系 1.进程调度 进程调度控制系统中的多个进程对CPU的访问,使得多个进程能在CPU中"微观串行,宏观并行"地执行.进程调度处于系统的中心位置,内核中其他的子系统都依赖它,因为

linux内核notifier机制 linux通知链

在linux内核系统中,各个模块.子系统之间是相互独立的.Linux内核可以通过通知链机制来获取由其它模块或子系统产生的它感兴趣的某些事件.使用notifier由通知者可以传递给被通知者长整型参数与指针.在linux中有许多地方用到,比如reboot通知,cpu调频通知,网卡事件,电池低电警报等等.熟悉使用notifier有助于linux内核驱动开发. notifier_block结构: struct notifier_block { int (*notifier_call)(struct no

Linux内核project导论——linux学习和职业曲线(刚開始学习的人,中级,高级都可參考)

Linux世界介绍 给自己定级 门外汉: 不会安装操作系统 不会用虚拟机(安装和使用) 入门级: 熟悉常见的发行版,甚至装过而且能用一些特殊发行版(比如kali)做过一些简单的图形界面的使用. 会一些最基础的命令(比如cd.ps.top.ls.ifconfig等这个级别的) 基础级: 能够使用一些常见的命令(touch.tail.date.find.du.fdisk.less.pidof等这个级别的命令) 图形界面操作的比較熟练.而且能够相应一部分的后台命令. 知道一些经常使用的配置文件的作用(

Linux内核分析-分析Linux内核创建一个新进程的过程

作者:江军 ID:fuchen1994 实验题目:分析Linux内核创建一个新进程的过程 阅读理解task_struct数据结构http://codelab.shiyanlou.com/xref/linux-3.18.6/include/linux/sched.h#1235: 分析fork函数对应的内核处理过程sys_clone,理解创建一个新进程如何创建和修改task_struct数据结构: 使用gdb跟踪分析一个fork系统调用内核处理函数sys_clone ,验证您对Linux系统创建一个

Linux内核的系统调用---linux内核学习笔记(四)

内容一:实验报告相关说明. 真实姓名 谢润帮 原创作品转载请注明出处  所学课程:<Linux内核分析>MOOC课程   链接:http://mooc.study.163.com/course/USTC-1000029000 代码来源于孟宁老师的课件 虚拟实验室实验截图 实验结果图 实验代码截图

【Linux】从Linux内核角度看Linux上层应用

系统调用 是一个软中断,API函数,让上层应用陷入内核 进程管理 进程调度.调度算法.进程三态 进程是CPU调度资源的最小单位 fork VFS虚拟文件管理 在Linux之下,一切设备均是文件 驱动总线模型2.4  2.6(真正)支持pnp ext3 ext2 vfat文件管理系统 ---->在驱动总线模型下做驱动开发 内存管理 进程逻辑地址转换为物理地址 1.段式管理 逻辑地址转换为线性地址 2.页式管理 线性地址转换为物理地址 Linux内核为我们的应用程序创建了单独的进程空间 内核把进程单