linux内核编译

本文详细介绍了在Ubuntu和CRUX系统上编译Linux 2.6.18内核的过程,包括安装虚拟机、下载及配置内核源代码、解决编译过程中遇到的常见问题,并提供了具体的解决方案。

实验环境:Ubuntu14 kylin

虽然是最新的操作系统,但是用起来并不是很顺手,综合看起来,编译内核过程中这个系统出现的问题最多.

 

操作步骤:1.安装虚拟机,纯粹是鼠标操作的环节,基本可以忽略.

2.下载内核源代码包linux-2.6.18.tar.bz2, 

3.将源代码解压到/usr/src/目录下(tar -xvf linux-2.6.18.tar.bz2 ),实际上,解压到哪里都是可以的,进入/linux-2.6.18/

4.make menuconfig,如果报错,说明缺少组件,使用

apt-get install build-essential kernel-package libncurses5-dev libqt3-headers 

来安装需要的gcc工具以及运行库等,也可以使用cp /boot/.config-xxxx ./.config(xxxx处按tab

键出现)将系统配置拷贝过来

5.make-kpkg kernel_image来编译,前提是安装组件 

sudo apt-get install kernel-package

6.编译完成后,在文件夹中找到生成的安装包,使用dpkg -i xxx安装该包,

7.然后重启,在高级选项中选择该内核即可,

 

编译过程中出现的问题有如下:

1, PATH_MAX’未声明错误:PATH_MAX’未声明(在此函数内第一次使用),scripts/mod/sumversion.c:384: 错误:(即使在一个函数内多次出现,每个未声明...    

解决方案:scrips/mod/sumversion.c,引入头文件,即添加"#include<limits.h>"

 

2, elf_i386:没有那个文件或目录 ------解决方法原因是 gcc 4.6 不再支持 linker-style 架构。讲 arch/x86/vdso/Makefile 中, 将以VDSO_LDFLAGS_vdso.lds 开头所在行的 "-m elf_x86_64" 替换为 "-m64"

 解决方案:将以 VDSO_LDFLAGS_vdso32.lds 开头所在行的 "-m elf_x86" 替换为 "-m32"

 

3, 对‘__mutex_lock_slowpath’未定义的引用解决方案: .config中编辑添加CONFIG_DEBUG_MUTEXES=y

 

实验环境:CRUX2.6系统

出现的问题有如下:

1, PATH_MAX’未声明错误:PATH_MAX’未声明(在此函数内第一次使用),scripts/mod/sumversion.c:384: 错误:(即使在一个函数内多次出现,每个未声明...    

解决方案:scrips/mod/sumversion.c,引入头文件,即添加"#include<limits.h>"

 

2, 启动的时候显示:kernel too old

kernel panic: 

 

 

 

 

 

 

实验环境:CRUX2.2系统

由于CRUX2.6无法安装旧的内核,我又尝试了旧版本的CRUX2.2版本来安装,

实验步骤:1. 硬盘分区,使用fdisk /dev/hda,分成hda1hda2,hda1用来作swap

2.格式化,mkfs.ext3 /dev/hda2,     mkswap /dev/hda1,  swapon hda1, hda2  mount/mnt

3.setup开始安装CRUX2.2, 选择安装到/mnt

4.然后 chroot, 

5.make menuconfig,选择好驱动,

6.make all编译内核,将编译好的内核拷贝到/boot,System.map也拷贝到/boot,修改,fstab以及/etc/lilo.conf, 

7.重启,进入系统,至此CRUX系统安装完成

8.将linux2.6.18源代码拷贝进来,

9. make menuconfig选择好驱动,

10.Make all编译完成,

11.将编译好的内核拷贝到/boot,

12.在lilo.conf中增加数据块,

prompt

timeout=300

image=新的内核

boot=/dev/hda

label=xxxx

root=/dev/hda2

13.reboot重启,输入xxxx,进入系统,

出现的问题:有了前几次的经验,基本没有出现问题,

运行结果:

 

已经博主授权,源码转载自 https://pan.quark.cn/s/053f1da40351 在计算机科学领域,MIPS(Microprocessor without Interlocked Pipeline Stages)被视作一种精简指令集计算机(RISC)的架构,其应用广泛存在于教学实践和嵌入式系统设计中。 本篇内容将深入阐释MIPS汇编语言中涉及数组处理的核心概念与实用操作技巧。 数组作为一种常见的数据结构,在编程中能够以有序化的形式储存及访问具有相同类型的数据元素集合。 在MIPS汇编语言环境下,数组通常借助内存地址与索引进行操作。 以下列举了运用MIPS汇编处理数组的关键要素:1. **数据存储**: - MIPS汇编架构采用32位地址系统,从而能够访问高达4GB的内存容量。 - 数组元素一般以连续方式存放在内存之中,且每个元素占据固定大小的字节空间。 例如,针对32位的整型数组,其每个元素将占用4字节的存储空间。 - 数组首元素的地址被称为基地址,而数组任一元素的地址可通过基地址加上元素索引乘以元素尺寸的方式计算得出。 2. **寄存器运用**: - MIPS汇编系统配备了32个通用寄存器,包括$zero, $t0, $s0等。 其中,$zero寄存器通常用于表示恒定的零值,$t0-$t9寄存器用于暂存临时数据,而$s0-$s7寄存器则用于保存子程序的静态变量或参数。 - 在数组处理过程中,基地址常被保存在$s0或$s1寄存器内,索引则存储在$t0或$t1寄存器中,运算结果通常保存在$v0或$v1寄存器。 3. **数组操作指令**: - **Load/Store指令**:这些指令用于在内存与寄存器之间进行数据传输,例如`lw`指令用于加载32位数据至寄存器,`sw`指令...
根据原作 https://pan.quark.cn/s/cb681ec34bd2 的源码改编 基于Python编程语言完成的飞机大战项目,作为一项期末学习任务,主要呈现了游戏开发的基本概念和技术方法。 该项目整体构成约500行代码,涵盖了游戏的核心运作机制、图形用户界面以及用户互动等关键构成部分。 该项目配套提供了完整的源代码文件、相关技术文档、项目介绍演示文稿以及运行效果展示视频,为学习者构建了一个实用的参考范例,有助于加深对Python在游戏开发领域实际应用的认识。 我们进一步研究Python编程技术在游戏开发中的具体运用。 Python作为一门高级编程语言,因其语法结构清晰易懂和拥有丰富的库函数支持,在开发者群体中获得了广泛的认可和使用。 在游戏开发过程中,Python经常与Pygame库协同工作,Pygame是Python语言下的一款开源工具包,它提供了构建2D游戏所需的基础功能模块,包括窗口系统管理、事件响应机制、图形渲染处理、音频播放控制等。 在"飞机大战"这一具体游戏实例中,开发者可能运用了以下核心知识点:1. **Pygame基础操作**:掌握如何初始化Pygame环境,设定窗口显示尺寸,加载图像和音频资源,以及如何启动和结束游戏的主循环流程。 2. **面向对象编程**:游戏中的飞机、子弹、敌人等游戏元素通常通过类的设计来实现,利用实例化机制来生成具体的游戏对象。 每个类都定义了自身的属性(例如位置坐标、移动速度、生命值状态)和方法(比如移动行为、碰撞响应、状态更新)。 3. **事件响应机制**:Pygame能够捕获键盘输入和鼠标操作事件,使得玩家可以通过按键指令来控制飞机的移动和射击行为。 游戏会根据这些事件的发生来实时更新游戏场景状态。 4. **图形显示与刷新**:...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值