实验9ARMLinux内核配置编译

合集下载

kernel 编译 参数

kernel 编译 参数

kernel 编译参数在编译 Linux 内核时,可以使用多种参数来配置和优化内核。

以下是一些常用的参数:1. `make menuconfig`:这是一个基于文本的用户界面,用于配置内核的各个选项。

用户可以选择要包含或排除的功能,并保存配置以便以后使用。

2. `make xconfig`:这是一个基于图形界面的工具,用于配置内核选项。

它使用 Qt 库来创建用户界面,使得配置更加直观和易于使用。

3. `make oldconfig`:如果已经有一个旧的 `.config` 文件,可以使用此参数来快速配置新内核。

它只会询问新内核中与旧配置不同的选项。

4. `make defconfig`:此参数将使用默认配置来编译内核。

这通常是一个针对特定目标硬件的配置,但也可以根据需要手动修改。

5. `make allnoconfig`:此参数将禁用所有启用的内核选项,只启用必需的核心功能。

6. `make allyesconfig`:此参数将启用所有内核选项,不进行任何禁用或排除。

7. `make localmodconfig`:此参数将只启用当前系统上已加载的内核模块。

8. `make localyesconfig`:此参数将启用当前系统上已加载的内核模块,并且不进行任何禁用或排除。

9. `make install`:此参数将编译并安装新内核。

它还会将必要的内核模块和文件复制到相应的目录中,以便在启动时加载新内核。

10. `make -j`:此参数用于并行编译内核,以加快编译速度。

可以指定一个数字来指定要使用的并行进程数。

这些参数可以单独使用,也可以组合使用,具体取决于要执行的操作和目标硬件配置。

在使用 `make` 命令进行内核编译时,建议仔细阅读相关文档以了解更多选项和参数。

编译linux实验报告

编译linux实验报告

编译linux实验报告
编译Linux实验报告
在计算机科学领域,Linux操作系统一直被广泛使用。

它是一个开放源代码的操作系统,具有稳定性和安全性。

在本次实验中,我们将学习如何编译Linux内核,并撰写实验报告以记录我们的实验过程和结果。

实验目的:
1. 了解Linux内核的编译过程
2. 熟悉编译工具和技术
3. 掌握编译过程中可能遇到的问题和解决方法
实验步骤:
1. 下载Linux内核源代码
2. 解压源代码并配置编译环境
3. 使用make命令编译内核
4. 安装编译后的内核
5. 测试新内核的稳定性和功能
实验结果:
经过一系列的操作,我们成功地编译了Linux内核,并将其安装到我们的计算机上。

新内核的稳定性和功能得到了验证,证明我们的编译过程是成功的。

实验总结:
通过本次实验,我们不仅了解了Linux内核的编译过程,还学习了如何使用编译工具和技术。

在实验过程中,我们遇到了一些问题,但通过查阅资料和尝试不同的解决方法,最终成功地完成了编译过程。

这次实验为我们提供了宝贵的
经验,也增强了我们对Linux操作系统的理解和掌握。

总的来说,编译Linux内核的实验是一次有意义的学习过程,我们通过实践提升了自己的技能和知识水平。

希望在未来的学习和工作中,能够运用这些经验和技能,为我们的计算机科学之路增添更多的成就和贡献。

LINUX内核模块编译步骤

LINUX内核模块编译步骤

LINUX内核模块编译步骤编译Linux内核模块主要包括以下步骤:1.获取源代码2.配置内核进入源代码目录并运行make menuconfig命令来配置内核。

该命令会打开一个文本菜单,其中包含许多内核选项。

在这里,你可以配置内核以适应特定的硬件要求和预期的功能。

你可以选择启用或禁用各种功能、设备驱动程序和文件系统等。

配置完成后,保存并退出。

3. 编译内核(make)运行make命令开始编译内核。

这将根据你在上一步中进行的配置生成相应的Makefile,然后开始编译内核。

编译的过程可能需要一些时间,请耐心等待。

4.安装模块编译完成后,运行make modules_install命令将编译好的模块安装到系统中。

这些模块被安装在/lib/modules/<kernel-version>/目录下。

5.安装内核运行make install命令来安装编译好的内核。

该命令会将内核映像文件(通常位于/arch/<architecture>/boot/目录下)复制到/boot目录,并更新系统引导加载程序(如GRUB)的配置文件。

6.更新GRUB配置文件运行update-grub命令来更新GRUB引导加载程序的配置文件。

这将确保新安装的内核在下次启动时可用。

7.重启系统安装完成后,通过重启系统来加载新的内核和模块。

在系统启动时,GRUB将显示一个菜单,你可以选择要启动的内核版本。

8.加载和卸载内核模块现在,你可以使用insmod命令来加载内核模块。

例如,运行insmod hello.ko命令来加载名为hello.ko的模块。

加载的模块位于/lib/modules/<kernel-version>/目录下。

如果你想卸载一个已加载的内核模块,可以使用rmmod命令。

例如,运行rmmod hello命令来卸载已加载的hello模块。

9.编写和编译模块代码要编写一个内核模块,你需要创建一个C文件,包含必要的模块代码。

Linux内核编译过程详解

Linux内核编译过程详解

内核升级前的准备工作:Linux系统进行内核升级或定制内核时需要安装GCC编译工具、make编译器,同时变异内核需要root权限。

安装GCC编译环境参考:/rhelinux/248.html操作系统:RHEL 5.5开始安装:按照以下顺序安装所需要的包就可以完成GCC的安装了1. rpm -ivh kernel-headers-2.6.18-194.el5.i386.rpm2. rpm -ivh glibc-headers-2.5-49.i386.rpm3. rpm -ivh glibc-devel-2.5-49.i386.rpm4. rpm -ivh libgomp-4.4.0-6.el5.i386.rpm5. rpm -ivh gcc-4.1.2-48.el5.i386.rpm6. rpm -ivh libstdc++-devel-4.1.2-48.el5.i386.rpm7. rpm -ivh gcc-c++-4.1.2-48.el5.i386.rpm8. rpm -ivh ncurses-5.5-24.20060715.i386.rpm9. rpm -ivh ncurses-devel-5.5-24.20060715.i386.rpm注意:在升级编译完内核,重启后提示如下错误信息:RedHat nash Version 5.1.19.6 startingrver(2.6.33.3)mount: could not find filesystem …/dev/root‟setuproot: moving /dev failed: No such file or directorysetuproot: error mounting /proc: No such file or directorysetuproot: error mounting /sys: No such file or directoryswitchroot: mount failed: No such file or directoryKernel panic – not syncing: Attempted to kill init![Linux-initrd @ 0x1fc37000,0x228585 bytes]于是在网上找了很多,也尝试了很多加模块、重编译了N次、改fstab等方法,都不行。

Linux内核配置移植及编译实验

Linux内核配置移植及编译实验

return platform_driver_register(&dm9k_driver); } 7.添加 YAFFS 文件系统支持 将我们提供的 YAFFS 的源代码 yaffs2.tar.gz 拷贝到 linux-2.6.24.4 的同 级目录下,解压该源码包,获得 YAFFS 源码: # pwd /root/2410-s # cp /mnt/hgfs/e/yaffs2.tar.gz ./ # tar zxvf yaffs2.tar.gz 然后进入 yaffs2 目录,运行./patch-ker.sh 给内核打上补丁: # cd yaffs2 # ./patch-ker.sh c ../linux-2.6.24.4/ 这样打好补丁以后,再做正确的配置,内核就可以支持 YAFFS 文件系统了。 8.配置和编译内核 到现在,一个简单的内核就准备好了,我们还需要做一些配置,然后编译, 内核才能正常使用。 在内核源代码的根目录下运行 make menuconfig 命令,进入配置界面: # make menuconfig (1)选择硬件系统 做如下选择: System Type --->
S3C2410 Machines ---> [*] SMDK2410/A9M2410 [ ] IPAQ H1940 [ ] Acer N30 [ ] Simtec Electronics BAST (EB2410ITX) [ ] NexVision OTOM Board [ ] AML M5900 Series [ ] Thorcom VR1000
.size = SZ_4M, }, [3] = {
.name = "User Space", .offset = 0x680000, .size = 0x1980000, }, }; 这样就把我们的 64M 的 NAND Flash 分为四个区: 第一个区从 0x00000000 到 0x00080000,大小为 0.5M 第二个区从 0x00080000 到 0x00280000,大小为 2M 第三个区从 0x00280000 到 0x00680000,大小为 4M 第四个区从 0x00680000 到 0x02000000,大小为 25.5M 5.添加 LCD 支持 我们的开发平台上配置有 640*480 的液晶屏,我们来为它加上驱动支持。 需要在 arch/arm/mach-s3c2410/mach-smdk2410.c 中添加一些内容。 # vi arch/arm/mach-s3c2410/mach-smdk2410.c 首先要包含我们的 LCD 使用的数据结构的头文件,增加如下内容: #include <asm-arm/arch-s3c2410/fb.h> #include <linux/platform_device.h> 然后添加如下内容: static struct s3c2410fb_display up2410_fb[] __initdata = { { .lcdcon5 = (1<<12)|(1<<11)|(1<<9)|(1<<8)|(1<<0), .type = (3<<5), .width = 640, .height = 480, .pixclock = 39721,

基于ARM9嵌入式Linux内核的移植

基于ARM9嵌入式Linux内核的移植
码 进行裁 减移植 。

ห้องสมุดไป่ตู้
I 在 相 关 地 方 增 加 修改根 目录中的 Ma ef 文件。这个 j“ CONFI ARCH— 3 4 0 = kfe l ¥ G— S C2 1 ”
Ma e l  ̄ kfe 件的任务有两个 : i3 产生v iu  ̄ i“ ml x n y”一 这个语句。 。 件 和 产 生 内 核模 块 。为 了达 到 此 目的 , 1 关键点: of 文件决定了m ncni cn g i euof g Ma ei 将递 归进入内核的各个子 目录中, 菜单的 内容 。把使 用的平 台加在需要的地 kf e l 分别调用位于这些子 目录中的 Ma ef 。 k f e j l 方,这样在配置Ln x时就能够选择是否 iu 打开最上 层目录下的 Ma ei 文 件, 1 k fl e 支持 你的 平台 了。 这个文件 中修改后 的内容如 下所示 : 1 4 . 改ac / r b o )修 r h a m/ o t目录下的 ( )指定 目标平台 :ARCH:= a m Ma ei 文件 1 r kfe l (2 ) 指 定 交 叉 编 译 器 : { 编译出来的内核是存放在 ac / r r am/ h
解压到 目标板的地址 :修改 b o 目录下的 ot 2. )根据电路设置T XT DD E A R { kfe Mael文件 ; i 修改 cm r s / kfe o pe e Mael sd i 因为 2. 1 4. 8版本 的内核还没有包含 1文 件 。
¥C 40 3 2 1X处理器 ,所以要手动增加下面内 } 5. ac /r / e e 目 ) 修改 r am kr l 录下的文 h n 容 『 件 i q¥C FG AR H_ 3 2 1)y f ((ON I_ C S C 40,) e

Linux内核编译及常见错误实验报告

Linux内核编译及常见错误实验报告

***学生实验报告一、实验目的(1)学习重新编译Linux内核的方法(2)理解Linux标准内核和发行版本内核的区别。

二、实验内容在Linux系统中下载同一发行版本的版本号较高的内核,编译之后运行自己编译的内核,并使用uname-r命令查看是否运行成功。

由于不同版本的内核在编译过程中可能出现不同的问题,本书推荐的内核版本为4.16.10。

从第7章开始的进阶实验篇,都可以选用该版本的内核。

三、实验设备Vmware上运行的linux ubuntu 5.11.0-43-generic实验成功:linux ubuntu 4.18.0-generic(Ubuntu18.04均可)实验成功的方法在最后四、实验过程和原理分析一、实验(一)准备工作:在这里我建议用一个全新的虚拟机,避免编译错误对原来常使用的虚拟机造成不可逆的影响,安装好后就先安装gcc、make等工具首先下载好Linux***内核文件解压至/usr/src 目录下,如下:确认安装好gcc、make等工具,后可直接运行命令sudo make menuconfig进行查看内核功能是否需要编译,如果遇到如下错误可以运行命令sudo apt bison 或sudo apt-get install fiex bison命令解决错误:解决:(不建议)(强烈建议)除此之外还可以直接运行,上一条命令解决不了就用下面这个:sudo apt-get install --reinstall bison libbison-dev flex libfl-dev解决上述错误(强烈建议)运行完上述命令后再次输入sudo make menuconfig便正常进入如下:见到这个界面后无需任何多余操作,使用键盘方向键选择<Save>回车再回车即可此时.config文件生成成功.config文件是隐藏文件记得加参数-a此外还有一个方法就是用cp 命令从原有系统的内核复制.config文件过来也可以命令:sudo cp /boot/config- 5.11.0-43-generic ./.config(二)编译内核为了避免多线程编译时同时出现过多错误,我们这里一开始只使用单线程编译在这里除了用make编译还可以用make-kpkg等工具,个人比较喜欢用make-kpkg但课本用make所以我接下来的实验也先用make完成。

《基于ARM9的嵌入式Linux系统开发原理与实践》课件第6章

《基于ARM9的嵌入式Linux系统开发原理与实践》课件第6章
第6章 创建嵌入式Linux交叉开发工具链
6.1 下载源文件 6.2 建立工作目录 6.3 输出环境变量 6.4 建立内核头文件 6.5 建立二进制工具 6.6 建立初始编译器 6.7 建立c库 6.8 建立全套编译器 6.9 完成工具链的设置 6.10 测试和验证交叉编译工具 本章小结
6.1 下 载 源 文 件
转移文件: [root@localhost bin] #mv as ar gcc ld nm ranlib strip $PREFIX/lib/gcc-lib/arm- linux/2.95.3 [root@localhost bin] #for file in as ar gcc ld nm ranlib
图6-1 Linux 2.4.21内核配置界面
6.5 建立二进制工具
binutils是GNU工具之一,它包括连接器、汇编器和其他 用于目标文件和档案的工具,它是二进制代码的处理维护工 具。安装binutils工具包含的程序有addr2line、aபைடு நூலகம்、as、c++filt、 gprof、ld、nm、objcopy、objdump、ranlib、readelf、size、 strings、strip、libiberty、libbfd和libopcodes。
给Linux内核打补丁: [root@localhost linux-2.4.21] #patch -p1 < ../../setup-
dir/patch-2.4.21-rmk1
配置: [root@localhost linux-2.4.21] #make ARCH=arm
CROSS_COMPILE=arm-linux- menuconfig
图6-4 编译初始编译器错误示例
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

42
Make dep Make zImage 出现问题 要执行make clean 把 .o 及可执行文件 清除掉

43
31
下载Linux 内核镜像
连接串口线和网线:PC的RJ45在底端 1) 在终端模式,启动minicom. 开发板上电 后,及时敲任何主机键盘键停止 Bootloader 运行。 2) 出现菜单项,等待用户输入。 3) 输入数字“0”,进入Bootloader 命令行 模式
32
执行MINICOM,重启270开发板
29
Bootp 设置
引导协议(BOOTP)是一种基于 UDP/IP 的协议。BOOTP 主要用于客户 机从服务器获得自己的IP 地址,服务器 的IP 地址以及启动映象文件名。 bootp和Tftp 一起使用来将内核和文 件系统从PC 上下载到目标板中。
30
bootptab 文件设置[已经设置好!] 在/etc 目录下创建bootptab 文件,按照如下图所 示的配置。 xsbase270:\ 标记 ht=1:\ 硬件类型(1 表示以太网) ha=0x123456789A00:\ 硬件地址(板子的MAC) ip=192.168.0.50:\ sm=255.255.255.0 子网掩码
通过 /dev/mtdX 设备节点访问MTD分区
13
RAM/ROM/Flash 芯片驱动配置界面
14
芯片存储映象驱动配置界面
15
块存储设备配置界面
将记录每个分区的统计信息,例如读、写等访问信息
16
网络配置选项界面
17
网络设备配置界面
18
19
红外接口配置界面
20
字符设备驱动配置界面
21
选择[0]
33
4) 输入以下命令设置以太网MAC 地址 set myhaddr 12:34:56:78:9a:00 5) 输入“bootp”,主机分配IP 地址给开发 板。
34
修改mac
如果PC不能分配IP, 则做如下检查
35
36
双击鼠标,查看IP 如果不活跃,激活
37
3 2 1
4
设置完成后,Linux要关机,再启动!
文件系统配置界面
22
23
终端设备驱动配置界面
24
声卡驱动界面
25
检查依赖性
[root@BC linux-2.4.21-51board_EDR]# make dep [root@BC linux-2.4.21-51board_EDR]# make zImage
如果编译没有出错,在arch/arm/boot 路径下生成映像文件zImage。
Linux内核的配置系统由三个部分组成
Makefile:定义 Linux 内核的编译规则; 配置文件(config.in):提供配置选择功能 配置工具:Make menuconfig

4
内核所在的路径
5
Linux内核的配置与编译
Linux内核编译的操作方法
make menuconfig 命令打开内核配置。 [root@BC linux-2.4.21-51board_EDR]# make menuconfig
实验九 ARMLinux 内核配置
1
实验目的
1、了解Linux 内核源代码的目录结构及各 目录的相关内容 2、了解Linux 内核配置和编译方法 3、用TFTP下载内核
2
内核源代码目录


arch 与CPU体系结构相关的内核代码 include 编译内核所需要的头文件 init 内核的初始化代码 mm 存储器管理代码 kernel 主要的内核代码 drivers 系统所有支持的设备驱动代码 block 块设备驱动 char 字符设备驱动 cdrom 所有的CD-ROM驱动 pci PCI卡驱动,包含PCI子系统映射和初始化代码等 scsi 所有的SCSI驱动 net 网络设备驱动 sound 声卡设备驱动 lib 内核所需的库文件 Net 与网络相关的内核代码 ipc 内核进程通信的代码 Fs 所有文件系统代码和各种类型的文件操作代码 scripts 用于配置内核的脚本
26
在arch/arm/boot
27
将所生成的zImage文件拷贝到/tftpboot, 准备以tftp形式传输到270开发板
选择Y 如果zImage在当前目录,可以执行 cp ./zImage /tftpboot
28
TFTP
(Trivial File Transfer Protocol,简单文 件传输协议)是TCP/IP协议族中的一个 用来在客户机与服务器之间进行简单文件 传输的协议,基于UDP协议实现,提供不 复杂、开销不大的文件传输服务,不能列 出目录。
6
内核配置界面 make menuconfig
7
代码的成熟度选项界面
过时的
8
可装载模块支持选项界面
9
System Type
10
11
General setup
DVM/DFM动态电压管理和动态频率管理
12
Memory Technology Devices (MTD)
允许在nor flash定义多分区
39
在minicom状态下,利用tftp写zImage
Flash kernel 命令,按照bootloader partition.c 内存分配地址, 把kernel 映像zImage 写到 0x00040000_0x00180000,共占1.25M
运行reboot命令,pxa270系统重新启动
41
退出minicom的方法
开启minicom 后,不要通过关闭终端的 方式,关闭串口,否则需要关闭虚拟机, 机器也要重启! 如果已经进入Bootloader 选单,提示: 51board> 需要输入:quit 然后 在选单界面,按下 Ctrl 同时再按A,然 后松开两个键,再按z, 选择Q,退出 minicom状态
相关文档
最新文档