菜鸟学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

相关文章
|
1天前
|
存储 运维 Java
Linux笔记02 —— Shell补充
Linux笔记02 —— Shell补充
20 2
|
1天前
|
安全 Linux Shell
Linux笔记01 —— Linux初识与Shell汇总(请配合另一篇《Linux笔记02》一起使用)
Linux笔记01 —— Linux初识与Shell汇总(请配合另一篇《Linux笔记02》一起使用)
9 1
|
1天前
|
安全 Linux Android开发
FFmpeg开发笔记(十六)Linux交叉编译Android的OpenSSL库
该文介绍了如何在Linux服务器上交叉编译Android的FFmpeg库以支持HTTPS视频播放。首先,从GitHub下载openssl源码,解压后通过编译脚本`build_openssl.sh`生成64位静态库。接着,更新环境变量加载openssl,并编辑FFmpeg配置脚本`config_ffmpeg_openssl.sh`启用openssl支持。然后,编译安装FFmpeg。最后,将编译好的库文件导入App工程的相应目录,修改视频链接为HTTPS,App即可播放HTTPS在线视频。
FFmpeg开发笔记(十六)Linux交叉编译Android的OpenSSL库
|
10天前
|
编解码 Linux
FFmpeg开发笔记(十二)Linux环境给FFmpeg集成libopus和libvpx
在《FFmpeg开发实战》一书中,介绍了如何在Linux环境下为FFmpeg集成libopus和libvpx,以支持WebM格式的Opus和VP8/VP9编码。首先,下载并安装libopus。接着,下载并安装libvpx。最后,在FFmpeg源码目录下,重新配置FFmpeg,启用libopus和libvpx,编译并安装。通过`ffmpeg -version`检查版本信息,确认libopus和libvpx已启用。
FFmpeg开发笔记(十二)Linux环境给FFmpeg集成libopus和libvpx
|
10天前
|
编解码 Linux
FFmpeg开发笔记(十)Linux环境给FFmpeg集成vorbis和amr
在Linux环境下,为FFmpeg添加对AAC、MP3、OGG和AMR音频格式的支持,需安装libogg、libvorbis和opencore-amr库。首先,从官方源下载各库的最新源码,如libogg-1.3.5、libvorbis-1.3.7和opencore-amr-0.1.6,然后解压并依次执行`./configure`、`make`和`make install`进行编译安装。接着,在FFmpeg源码目录中,使用`./configure`命令重新配置,并重新编译安装FFmpeg。最后,验证FFmpeg版本信息确认已启用ogg和amr支持。
FFmpeg开发笔记(十)Linux环境给FFmpeg集成vorbis和amr
|
10天前
|
Linux 开发工具
【Linux笔记】文件查看和编辑
【Linux笔记】文件查看和编辑
|
10天前
|
Linux
【Linux笔记】文件和目录操作
【Linux笔记】文件和目录操作
|
10天前
|
运维 监控 Linux
【Linux笔记】系统信息
【Linux笔记】系统信息
|
10天前
|
安全 Linux 网络安全
【Linux笔记】网络操作命令详细介绍
【Linux笔记】网络操作命令详细介绍
|
10天前
|
Linux 数据安全/隐私保护
【Linux笔记】用户和权限管理基本命令介绍
【Linux笔记】用户和权限管理基本命令介绍