菜鸟学Linux 第036篇笔记 busybox+vmlinux

简介:

菜鸟学Linux 第036篇笔记  busybox+vmlinux




以下为制作Mini_linux

用busybox 和宿主机的vmlinuz 下一章节就是busybox + 自制kernel


软件源 www.busybox.net


内核编译:

busybox:


Kernel+rootfs()


kernel+initrd(ramdisk)


kernel+


busybox-->initrd


kernel+initrd(busybox)-->rootfs(busybox)


kernel


RHEL5.8 + busybox(initrd) + rootfs(busybox)




查看本机硬件属性

1. cat /proc/cpuinfo


2. lsusb


3. lspci


4. hal-device (Hardware abstract layer)



编译内核:

1. 配置

make menuconfig

make gconfig

make kconfig

make oldconfig

make config手动配置每一个条目

保存为.config文件


2.编译安装

make 

make modules_install

make install

模块安装位置: /lib/modules/Kernel_version/



如何实现部分编译

1、只编译某子目录下的相关代码

make dir/subdir


2、只编译部分模块

make M=drivers/net


3、只编译某一模块

make drivers/net/pcnet32.ko

4、将编译完成的结果放置于其它目录中

make O=/root/kernel



如何编译busybox-->initrd:

1. 下载解压然后进入其目录执行make menuconfig

basybox settings-->build Options-->将库做成静态

installation Options

由于版本太旧可以需要新版本的内核的头文件 解压新版内核

找到kernel_file/include/mtd/ubi-user.h 复制到busybox/include/mtd/

busyboxy没有mtd目录手动创建一个就可以了

make install

编译完成在编译目录生成_install文件夹

cp _install /tmp/busybox -a

rm -rf linuxrc

mkdir sys proc mnt/sysroot dev etc tmp lib/modules -pv

添加ext3模块

cp /lib/modules/2.6.18-308.el5/kernel/fs/jbd/jbd.ko lib/modules/

cp /lib/modules/2.6.18-308.el5/kernel/fs/ext3/ext3.ko lib/modules/

2. 生成init配置文件

vim /tmp/busybox/init

添加

#!/bin/sh

mount -t proc proc /proc

mount -t sysfs sysfs /sys

insmod /lib/modules/jbd.ko

insmod /lib/modules/ext3.ko

mdev -s

mount -t ext3 /dev/hda2  /mnt/sysroot

exec  switch_root  /mnt/sysroot  /sbin/init

保存后加上执行权限chmod +x init

压缩到find . | cpio -H newc --quiet -o | gzip -9 > /mnt/boot/initrd.gz

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

cp /boot/vmlinuz-2.6.18-308.el5 /mnt/boot/

生成grub.conf配置文件到/mnt/boot/grub/grub.conf添加内容

default=0

timeout=3

title my little linux

        root (hd0,0)

        kernel /vmlinuz ro root=/dev/hda2

        initrd /initrd.gz


3. 生成设备文件

mknod dev/null c 1 3

mknod dev/console c 5 1


以上所操作/mnt/boot所需要的所有文件都已经完成接下来制作根

1.  cp /root/busybox-1_20_2/_install/* /mnt/sysroot/ -a

rm -rf linuxrc

mkdir proc sys dev tmp lib/modules etc var/{log,lock,run} 

  etc/rc.d/init.d root boot mnt media -pv 此两行为一行命令

vim etc/inittab 添加如下内容

::sysinit:/etc/rc.d/rc.sysinit

console::respawn:-/bin/sh

::ctrlaltdel:/sbin/reboot

::shutdown:/bin/umount -a -r

vim etc/fstab 添加如下内容

sysfs                   /sys                    sysfs   defaults        0 0

proc                    /proc                   proc    defaults        0 0

/dev/hda1               /boot                   ext3    defaults        0 0

/dev/hda2               /                       ext3    defaults        1 1


2. 生成设备文件(注意此处生成的是在真正的根下,前边的是在initrd文件里的)

mknod dev/null c 1 3

mknod dev/console c 5 1


IDE:

/dev/hda1: ext3  /boot

/dev/hda2: ext3  /

本文转自Winthcloud博客51CTO博客,原文链接http://blog.51cto.com/winthcloud/1879602如需转载请自行联系原作者


Winthcloud

相关文章
|
3月前
|
Ubuntu Linux Python
Tkinter错误笔记(一):tkinter.Button在linux下出现乱码
在Linux系统中,使用Tkinter库时可能会遇到中文显示乱码的问题,这通常是由于字体支持问题导致的,可以通过更换支持中文的字体来解决。
199 0
Tkinter错误笔记(一):tkinter.Button在linux下出现乱码
|
3月前
|
Linux API 开发工具
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
ijkplayer是由B站研发的移动端播放器,基于FFmpeg 3.4,支持Android和iOS。其源码托管于GitHub,截至2024年9月15日,获得了3.24万星标和0.81万分支,尽管已停止更新6年。本文档介绍了如何在Linux环境下编译ijkplayer的so库,以便在较新的开发环境中使用。首先需安装编译工具并调整/tmp分区大小,接着下载并安装Android SDK和NDK,最后下载ijkplayer源码并编译。详细步骤包括环境准备、工具安装及库编译等。更多FFmpeg开发知识可参考相关书籍。
123 0
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
|
5月前
|
Unix Linux 开发工具
linux笔记 diff及patch的制作与使用
这篇文章是关于Linux系统中使用`diff`命令生成补丁文件以及使用`patch`命令应用这些补丁的详细教程和实战案例。
143 2
linux笔记 diff及patch的制作与使用
|
5月前
|
Linux 网络安全 开发工具
内核实验(二):自定义一个迷你Linux ARM系统,基于Kernel v5.15.102, Busybox,Qemu
本文介绍了如何基于Linux Kernel 5.15.102版本和BusyBox创建一个自定义的迷你Linux ARM系统,并使用QEMU进行启动和调试,包括内核和BusyBox的编译配置、根文件系统的制作以及运行QEMU时的命令和参数设置。
468 0
内核实验(二):自定义一个迷你Linux ARM系统,基于Kernel v5.15.102, Busybox,Qemu
|
5月前
|
Linux
Linux源码阅读笔记13-进程通信组件中
Linux源码阅读笔记13-进程通信组件中
|
5月前
|
Linux 开发者
Linux源码阅读笔记18-插入模型及删除模块操作
Linux源码阅读笔记18-插入模型及删除模块操作
|
5月前
|
数据采集 Linux
Linux源码阅读笔记20-PCI设备驱动详解
Linux源码阅读笔记20-PCI设备驱动详解
|
5月前
|
Linux
Linux源码阅读笔记19-插入删除模块实战
Linux源码阅读笔记19-插入删除模块实战
|
5月前
|
Linux
Linux源码阅读笔记17-资源分配及总线系统
Linux源码阅读笔记17-资源分配及总线系统
|
5月前
|
存储 Linux 数据库
Linux源码阅读笔记16-文件系统关联及字符设备操作
Linux源码阅读笔记16-文件系统关联及字符设备操作