嵌入式linux系统的构建

摘要:
……BusyboxInstallationPrefix此选项指示编译的busybox的安装位置。installbusybox:makeinstallcdrootfs/bin发现许多命令已经完成。5.安装嵌入式文件系统initramfs安装根文件系统:cdrootfslsln-s/Bin/busyboxinit创建软连接:在当前目录中,它是/Bin/busybox创建软连接initmakemenuconfigARCH=armgeneralsetup-˃initialramfilesystemandramdisk检查-˃填写此项旁边的根文件系统目录。

前期工作:a.配置好tftp服务器:在嵌入式的童年中有介绍

b.开发板可以pc,linux 三者可以互相ping通

c.配置好nfs服务器:同样在嵌入式的童年中有介绍

一.嵌入式linux内核的制作(这里使用的国嵌提供的linux-ok6410内核,附带内核配置文件config-file)

a.进入内核目录清除原有配置和中间文件:

make clean

b.配置内核:

arm平台:make menuconfig ARCH=arm

将内核配置文件拷贝到内核目录中config-file
查看cpu是否对应:system type->arm system type(samsung s3c64xx):对的,保存,退出

c.编译内核:make uImage ARCH=arm CROSS_COMPILE=arm-linux-(这里需要mkimage工具,将该工具(mkimage在uboot的tools目录中,将它放到交叉编译工具链中/bin 中))             cp uImage ./tftpboot

tftp uImage 0xc0008000 (将uImage下载到开发板)

bootm 0xc0008000(启动内核)这里启动会失败,因为还没有挂载根文件系统。

二.根文件系统制作

1.   mkdir rootfs (创建根文件系统主目录)

cd rootfs

2.创建常见子目录

mkdir bin dev etc lib proc sbin sys usr mnt tmp var

mkdir usr/bin usr/lib usr/sbin lib/modules

3.向目录中添加一些必备的设备文件

cd rootfs/dev

mknod -m 666 console c 5 1

mknod -m 666 null c 1 3

4.加入配置文件

tar zxvf etc.gar.gz

cp etc/* rootfs/etc/ -rf

三.编译安装内核模块并添加到rootfs中

make modules ARCH=arm CROSS_COMPILE=arm-linux-

make modules_install ARCH=arm INSTALL_MOD_PATH=/XXX/rootfs

cd rootfs/lib/modules/2.6.35-embedsky/kelnel/drivers/scsi   我们能看到一些.ko文件.

 四.配置busybox(精通嵌入式中有提供可以使用的,一些常用的shell指令)

1.   tar zxvf busybox....tar.gz

cd busybox ...

2.  make menuconfig ARCHarm CROSS_COMPILE=arm-linux-

Busybox setting--->

build Options--->

选中“build busybox as a static binary”,静态链接。


3.  在同一页面--->Cross compiler prefix(arm-linux-).


4.  installation Options-->
选中“Don not use/usr”,选中该项可以避免busybox被安装到宿主系统的/usr目录下,破坏宿主系统。......
Busybox Installation Prefix(/xxx/rootfs)

该选项表明编译后的busybox的安装位置。
路径要指对,否则会安装失败(在Don not use/usr同一页面)。

安装busybox :make install

cd rootfs/bin
发现有很多的命令
根文件系统的制作完成

五.挂载嵌入式文件系统

initramfs挂载根文件系统:

cd rootfs

ls

ln -s ./bin/busybox init 创建软连接 :在当前目录下为./bin/busybox 创建软连接init

make menuconfig ARCH=arm

general setup->initial ram filesystem and ram disk勾上->
在该项的下一项填上根文件系统的目录。/home/kerne-lesson/rootfs
make uImage ARCH=arm CROSS_COMPILE=arm-linux-
cp arch/arm/boot/uImage  /tftpboot 

环境变量设置
setenv bootargs noinitrd console=ttySAC0,115200

包含两个部分:文件系统,内核-》uImage 

----------------------------------------------------------------------

nfs挂载根文件系统:

cd linux-ok6410
1. make menuconfig ARCH=arm
general setup->initial ram filesystem and ram disk取消-》
file system->network file system->root file system on nfs勾上
退出配置,进行内核编译

2.make uImage ................
3.启动参数的配置:
setenv bootargs noinitrd console=ttySAC0,115200 init=/init root=/dev/nfs(表示使用nfs作为根文件系统)rw nfsroot=192.168.1.104(之前配置好的nfs服务器的地址):/home/lesson-kernel/rootfs ip=192.168.1.102(开发板ip):192.168.1.104:192.168.1.1:255.255.255.0:(中间为主机名):eth0(将ip地址赋值给eth0这个网卡):off(关闭动态ip获取)。
/etc/init.d/nfs restart
tftp c0008000 uImage
bootm c0008000

这样嵌入式linux系统就构建好了。

免责声明:文章转载自《嵌入式linux系统的构建》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Charles系列二:Charles PC端和手机端抓取HTTP和HTTPS协议请求、HTTPS通用抓包规则go.js下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Linux Shellcode

Linux Shellcode 本篇主要是以x64系统为例对系统调用中一些功能性函数的解读和实际运用。目前网络上流传的通用shellcode,均使用系统调用实现,在记录整个学习过程的同时分享给大家一起学习探讨。 0x01 Shellcode 简介 0x1 shellcode Shellcode 是一段可以执行特定功能的特殊汇编代码,在设备漏洞利用过程...

迅为龙芯2K1000开发板Linux工具之make工具和Makefile文件

在编译程序hello world的时候我们是直接使用gcc命令进行编译的。我们编译一个程序是非常的简单的, 直接输入 gcc 然后跟上程序的名称再跟上指定生成程序的名称, 就可以很轻松的编译出可执行文件。但是大家有没有想过,如果要编译一个工程,这个工程里面有很多的源文件, 这时候我们全部使用这个命令来编译那就非常的麻烦了。为了解决编译一个工程非常繁琐这个问...

Linux下的sleep()和sched_yield()(转)

阿里四面被问到了这个问题,一脸懵逼,下来也没找到什么阐述这个的文章,就自己查man来对比总结一下吧: sched_yield()的man手册描述如下: DESCRIPTION       sched_yield()  causes  the  calling  thread to relinquish the CPU.  The  thread is mo...

Linux下安装Python3.xx个人解析

一、环境准备 提示:在系统的任何目录下都可以进行如下环境配置操作。 1、 yum install openssl -y yum install openssl-devel -y   这两个文件的安装是为了配置pip3,没有这步操作,后续pip3可能出现错误:ImportError: cannot import name 'HTTPSHandler'  ...

安装Linux内核源代码

系统:Ubuntu 18 CPU架构:AMD64 1,在终端输入:sudo apt install linux-source命令 2,进入/usr/src/linux-source-4.15.0目录解压源码压缩文件:sudo tar jxkf linux-source-4.15.0.tar.bz2 3,目录linux-source-4.15.0即包含...

linux驱动开发第一步hello

先查看Ubuntu的版本 cat /etc/issue lin@lin-virtual-machine:~$cat /etc/issue Ubuntu 12.04 LTS l 或者使用 lin@lin-virtual-machine:~$ sudo lsb_release -a [sudo] password forlin: No LSB modul...