Linux内核安装、裁剪图文教程
内核配置与裁剪

内核配置与裁剪1. Linux内核配置内核配置的方法很多,make config、make xconfig、make menuconfig、make oldconfig 等等,它们的功能都是一样的。
这里用的是make menuconfig。
过去基于2.x的内核为用户提供了四种基本的内核设置编辑器:✧. config 服务于内核设置的一个冗长的命令行界面;✧. oldconfig 一个文本模式的界面,主要包含一个已有设置文件,对用户所发现的内核资源中的设置变量进行排序;✧. menuconfig 一个基于光标控制库的终端导向编辑器,可提供文本模式的图形用户界面;✧. xconfig 一个图形内核设置编辑器,需要安装X-Window系统。
前三种编辑器在设置2.6内核时仍可使用,在运行“make xconfig”后,原有的界面被两个新的图形设置编辑器所代替。
这需要具体的图形库和X-Window系统的支持。
另外,用户还可以通过“make defconfig”命令,利用所有内核设置变量的缺省值自动建立一个内核设置文件。
下面具体介绍Linux内核配置选项:. 代码成熟度选项Code maturity level options --->[*] Prompt for development and/or incomplete code/drivers[*] Select only drivers expected to compile cleanly在内核中包含了一些不成熟的代码和功能,如果我们想使用这些功能,想打开相关的配置选项,就必需打开这一选项。
. 通用设置选项General setup --->() Local version - append to kernel release[*] Automatically append version information to the version string[*] Support for paging of anonymous memory (swap)[*] System V IPC[*] POSIX Message Queues[*] BSD Process Accounting[*] BSD Process Accounting version 3 file format[*] Sysctl support[ ] Auditing support[*] Support for hot-pluggable devices[*] Kernel Userspace Events[*] Kernel .config support[*] Enable access to .config through /proc/config.gz() Initramfs source file(s)[*] Configure standard kernel features (for small systems) ---> --- Configure standard kernel features (for small systems) [ ] Load all symbols for debugging/kksymoops[ ] Do an extra kallsyms pass[ ] Enable support for prinlk[ ] BUG()support[ ] Enable full-sinzed data structures for core[*] Enable futex support[*] Enable eventpoll support[*] Optimize for size[*] Use full shmem filesystem(0) Function alignment(0) Label alignment(0) Loop alignment(0) Jump alignmentLocal version - append to kernel release:这里填入的是64字符以内的字符串,在这里填上的字符串可以用uname -a命令看到。
Linux内核裁剪移植——内核的主要组成部分

接口。 虚拟文件系统隐藏了不同类型硬件的具体细节,为所有的硬件设备提供了一个标准的接口,
VFS提供了十多种不同类型的文件系统。
Linux内核裁剪移植——内核的主要组成部分 5
网络接口提供了对各种网络标准的存取和各种网络硬件的支持。 进程通信部分用于支持进程间各种不同的通信机制。 进程调度处于核心位置,内核的其他子系统都要依赖它,因为每个子系统都存在进程挂起或恢
Linux内核裁剪移植 ——内核的主要组成部分
Linux内核裁剪移植——内核的主要组成部分 2
内核,即操作系统。它为底层的可编程部件提供服务,为上层应用程序提供执行环境。 内核裁剪就是对这些功能进行裁剪,选取满足特定平台和需求的功能。不同的硬件平台对内核
要求也不同,因此从一个平台到另一个平台需要对内核进行重新配置和编译。 操作系统从一个平台过渡到另一个平台称为移植。 Linux是一款平台适应性且容易裁剪的操作系统,因此Linux在嵌入式系统得到了广泛的应用。
Linux内核裁剪移植——内核的主要组成部分 3
Linux内核主要的5个部分:进程调度、内存管理、虚拟文件系统、网络接口、进程通信。在系 统移植的时候,它们是内核的基本元素。
Linux内核裁剪移植——内核的主要组成部分 4
进程调度部分负责控制进程对CPU的访问。 内存管理允许多个进程安全地共享主内存区域。内存管理从逻核的主要组成部分 7
虚拟文件系统与网络接口之间的关系: ➢ 虚拟文件系统通过依赖网络接口支持网络文件系统(NFS) ➢ 也通过依赖内存管理支持RAMDISK设备。
内存管理与虚拟文件系统之间的关系: ➢ 内存管理利用虚拟文件系统支持交换 ➢ 交换进程定期地由调度程序调度,这也是内存管理依赖于进程调度的唯一原因。 ➢ 当一个进程存取的内存映射被换出时,内存管理将会向文件系统发出请求,同时,挂起当 前正在运行的进程。
RedHat LINUX安装全步骤(附图)

LINUX软件安装步骤1.在Vmware 中创建一个Linux 的虚拟机版本是Red Hat Linux ,其中硬盘最少要有2GB 的空间(建议分4GB 其他硬盘,网卡的配置和Windows 虚拟机一样即可)。
2.把Vmware 的光驱制定到对应的镜像文件上,我们这里是linux iso 文件中的第一张盘。
3.启动虚拟机,由光盘进入。
在这个界面中输入linux text 后回车才能进入文本安装界面。
4.提示检测介质。
因为我们使用的是镜像文件,所以可以直接单击Skip 如果使用的是光盘最好还是检测一下比较好。
(在LINUX 文本模式中基本都是使用键盘进行操作,鼠标也支持但是不像在Windos 中那样好用。
用户可以通过Tab键和方向键来切换选项,空格和回车来确定)如果上面选择的是Skip就会直接跳到第8步。
5.开始检测。
如果是使用的光盘CD 需要先插入CD 后在Test 因为我们使用的是镜像文件所以就可以直接Test6.检测完毕。
选择OK7.提示是否检测其他的盘。
如果你为了保险起见可以继续检测,但是时间可能会长一些。
8.选择语言安装过程,在这里选择英语。
(如果选择的不是英语的话,在以后的一些提示显示中会出现乱码看不懂)9.选择键盘类型,在这里选择us 即可。
10.选择鼠标类型,在Linux 这类操作系统中,经常用到三键鼠标,因此,除了选择鼠标类型外,一般还选中下面的“Emulate 3 Buttons?”,这样同时点击鼠标左右键,代表点击中键。
11.选择安装类型。
在这里我们选择第4个Custom(定制)。
12.准备分区。
在这里选择Autopartition 。
13.这里会让用户选择如何处理硬盘上的原始分区。
因为我们是新建的所以选那个都无所谓,但是如果在已经安装好Windows 的系统上进行安装,一般选择第三项。
意思就是使用硬盘当中没有使用的空间来创建相应的分区。
在下面会让用户选择。
要安装到那个硬盘中,在这里只有一个硬盘sda ,所以直接选择即可。
Linu系统裁减指南redkliang完整版

L i n u系统裁减指南r e d k l i a n gHEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】《Linux 系统裁减指南 (LiPS)》目录1 引言编写目的说明Linux系统裁减的过程及解决的主要技术问题。
本文档的编写是为了说明Li PS的详细设计过程,也可以作为构造一个小型化Linux系统的指南。
本文档内容的组织如下所述:这一部分是引言,第2部分是对项目软、硬件环境和需求的总体描述,第3部分说明了裁减LINUX的相关基本概念。
后面几个部分是具体实现方法的详细说明,4~6分别详细描述了创建内核、创建根文件系统和引导系统的方法。
最后的内容可以看作附录,其中7说明了一般Linux系统安装光盘的创建方法,8列出了相关的配置文件和源代码。
背景华中科技大学计算机存储系统国家专业实验室,NAS项目(——)。
定义O boot loader: 引导器O kernel: 内核O root filesystem: 根文件系统O USB: 通用串行总线参考资料[1] DIY:自己动手做一个迷你 Linux 系统. IBM developerWorks 中国网站.httcn/linux/embed/diy/[2] Linux From Scratch.[3] Linux启动过程综述.i=15750[4] The Linux Bootdisk HOWTO (中译版).[5] Using the initial RAM disk (initrd). /usr/src/Documentation/. (译文:d-boot/cdboot_refer/)[6] Quickmouse于发表于白云黄鹤BBS (Linux讨论区的帖子“裁减Linux”。
[7] Filesystem Hierarchy Standard. .[8] LINUX ALLOCATED DEVICES. /usr/src/Documentation/. 或者最新的列表在[9] Karim Yaghmour. Building Embedded Linux Systems. O'Reilly, April 200 3.[10] Alessandro Rubini. Take Command: Init.cs/init/ , November 1998.[11] 深入 Linux PAM 体系结构. IBM developerWorks 中国网站.2 总体描述硬件环境开发主机:Intel 845芯片组主板,P4赛扬 CPU,256M内存,60G IDE硬盘,RTL8139网卡。
linux系统如何安装软件 (详细文字教程)

linux系统如何安装软件 (详细文字教程)在Linux中安装软件时,我们经常要考虑到这样几个个问题:(1).怎样安装软件;(2).软件安装在什么地方;(3).如何卸载删除不要的软件......下面,我们就一起来认识一下这些方面的问题。
一.认识Linux应用软件安装包通常Linux应用软件的安装包有三种:1) tar包,如software-1.2.3-1.tar.gz。
它是使用UNIX系统的打包工具tar打包的。
2) rpm包,如software-1.2.3-1.i386.rpm。
它是Redhat Linux提供的一种包封装格式。
(现在用的全称叫RPM Package Manager,以前叫Redhat Package Manager)3) dpkg包,如software-1.2.3-1.deb。
它是Debain Linux提供的一种包封装格式。
而且,大多数Linux应用软件包的命名也有一定的规律,它遵循:名称-版本-修正版-类型例如:1) software-1.2.3-1.tar.gz 意味着:软件名称:software版本号:1.2.3修正版本:1类型:tar.gz,说明是一个tar包。
2) sfotware-1.2.3-1.i386.rpm软件名称:software版本号:1.2.3修正版本:1可用平台:i386,适用于Intel 80x86平台。
类型:rpm,说明是一个rpm包。
注:由于rpm格式的通常是已编译的程序,所以需指明平台。
在后面会详细说明。
而software-1.2.3-1.deb就不用再说了吧!大家自己练习一下。
二、了解包里的内容:一个Linux应用程序的软件包中可以包含两种不同的内容:1) 一种就是可执行文件,也就是解开包后就可以直接运行的。
在Windows中所有的软件包都是这种类型。
安装完这个程序后,你就可以使用,但你看不到源程序。
而且下载时要注意这个软件是否是你所使用的平台,否则将无法正常安装。
linux内核的裁剪与移植

1,获得源码,解压,进入解压后的目录;命令;2,修改makefile;为了能让此目录被执行所以在顶级目录的makefile中同时也进行修改;3,得到.config文件;命令;编译内核时对.config文件的依赖比较大,我们需要一个自己的.config文件,又因为我们的板子和smdk2410的很像,仅需将smdk2410的.config 文件复制到顶级目录即可不用修改;4;修改nandflash 分区;此系统启动时从nandflash 中启动而我们的板子不是的所以对其进行必要的修改;5,添加网卡驱动;arch/arm/mach-s3c2410/mach-smdk2410.c开发板上已经配置要的相应的网卡,并且内核中也有相应的实现代码我们只需做一下简单的修改;6添加yaffz文件系统支持将yaffz 源码包考到和linux-2.6.24 同一级目录下解压;在给内核打上补丁;命令是;7、配置和编译内核到现在,一个简单的内核就准备好了,我们还需要做一些配置,然后编译,内核才能正常使用。
在内核源代码的根目录下运行make menuconfig命令,进入配置界面:8,用u-boot启动内核;编译U-Boot时在源代码的tools目录下会生成一个mkimage可执行文件,用这个工具可以对前面编译内核时生成的zImage进行处理,以供U-Boot启动。
cd linux-2.6.24.4/arch/arm/bootcp /up-Star2410/kernel/linux-2.6.24.4/mkimage . 获取mkimage工具./mkimage -A arm -T kernel -C none -O linux -a 0x30008000 -e 0x30008040 -d zImage -n 'Linux-2.6.24' uImage9,最后把生成的uimage 放到主机tftp同目录下,启动开发板;用u-boot的tftp命令下载到sdram;。
VMwareWorkstation安装(Linux内核)银河麒麟图文教程

VMwareWorkstation安装(Linux内核)银河麒麟图⽂教程本⽂为⼤家分享了VMware Workstation安装银河麒麟,供⼤家参考,具体内容如下
1.下载软件:VMware Workstation Kylin-x86_64.iso(Linux内核)银河麒麟系统镜像包。
2.安装完成VMware Workstation并运⾏。
3.创建新的虚拟机。
4.选中“典型”,下⼀步。
5.安装程序光盘映像⽂件(浏览——⽂件存放路径),下⼀步。
6.虚拟机中安装操作系统选择Linux,下⼀步。
7.输⼊虚拟机名称,下⼀步。
8.默认操作,下⼀步。
9.点击“完成”。
10. 点击“开启此虚拟机”。
11.启动界⾯如下图:
12.选择“安装银河麒麟操作系统”,回车。
13.安装过程如下图:
14.经过稍长时间等待,银河麒麟系统安装完成,系统界⾯如下图:图1:
图2:
以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
第4章 Linux内核裁剪与移植 Linux系统移植(第2版) 教学课件

4.1 Linux内核结构 4.2 内核配置选项 4.3 内核裁剪及编译 4.4 内 核 升 级
4.1.2 内核源码目录介绍
Linux内核代码以源码树的形式存放,如 果在安装系统的时候已经安装了源码树, 其源码树就在/usr/src/linux下。
1.arch目录
禁用随机heap(heap堆是一个应用层的概念,即堆对CPU是不可见的,它 的实现方式有多种,可以由OS实现,也可以由运行库实现,也可以在一个 栈中来实现一个堆)
Choose SLAB allocator Profiling support Kprobes
选择内存分配管理器,建议选择 支持系统评测,建议不选 探测工具,开发人员可以选择,建议不选
5.init目录
init子目录包含核心的初始化代码(注意, 不是系统的引导代码)。它包含两个文件 main.c和version.c,这是研究核心如何工 作的一个非常好的起点。
6.ipc目录
ipc子目录包含核心进程间的通信代码。 Linux下进程间通信机制主要包括管道、 信号、消息队列、共享内存、信号量、套 接口。
Physical 选择XIP后,内核存放的物理地址
Kexec system call
Kexec系统调用
4.2.4 网络协议支持相关选项
菜单选项(Networking Support)的子菜 单中包含一些网络协议支持的选项。
选项名 Networking options Amateur Radio support
arch子目录包括了所有和体系结构相关的 核心代码。它的每一个子目录都代表一种 支持的体系结构,例如arm子目录是关于 ARM平台下各种芯片兼容的代码。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录
Practice1 (4)
一编译过程 (4)
1 安装必要的软件 (4)
2 下载linux内核源文件 (4)
3 解压缩源文件 (5)
4 复制config文件 (6)
5 进行menucofig配置 (6)
6 menuconfig配置页面 (7)
7 对驱动设置进行简单配置 (8)
8 选择cpu类型 (8)
9 设置完成保存退出 (9)
10 开始编译内核 (9)
11 内核编译过程 (10)
12 内核编译过程(3小时后) (11)
13 内核编译成功 (12)
14 安装新内核 (12)
15 新内核安装过程 (13)
16 比较两个内核 (14)
17 重新启动系统 (14)
18 登录新内核 (15)
19 新内核登录成功 (15)
20 查看新内核版本号号 (16)
二、编译过程中遇到的问题 (16)
1 错误VFS:Unable to mount root (16)
2错误Driver ‘mdio-gpio’ (18)
Practice2 (20)
一、内核选项翻译及选择理由 (20)
1. General setup 常规设置 (20)
二、裁剪过程 (21)
1.进入设置界面 (21)
2. General setup页设置 (22)
3. Enable the block layer页设置 (23)
4. Processor type and features页设置 (24)
5. Power Management and ACPI options页设置 (28)
6. Bus options页设置 (29)
7. Executable file formats页设置 (30)
8. Networking options页设置 (31)
9. Device Drivers 页设置 (34)
10. Firmware Drivers页设置 (37)
11. File systems页设置 (38)
12. Kernel hacking页设置 (40)
13 CryptographicAPI页设置 (41)
14. 裁剪后内核运行截图 (42)
15. 内核大小9.6M (43)
感受和体会 (44)
Practice1
一编译过程
1 安装必要的软件
代码: $sudo apt-get install build-essential kernel-package libncurses5-dev
2 下载linux内核源文件
/下载2.6.38.8full版
3 解压缩源文件
代码:$ mkdir src && tar jfx linux-2.6.25.10.tar.bz2 -C src/
4 复制config文件
命令:cp /boot/config-`uname -r` ./.config
5 进行menucofig配置
代码:$sudo make menuconfig
6 menuconfig配置页面
7 对驱动设置进行简单配置
8 选择cpu类型
9 设置完成保存退出
10 开始编译内核
代码:$ sudo make-kpkg -initrd --initrd --append-to-version=bo100 kernel_image kernel-headers
11 内核编译过程
12 内核编译过程(3小时后)
13 内核编译成功
14 安装新内核
代码:$ sudo dpkg -i linux-image-2.6.38bo100
15 新内核安装过程
16 比较两个内核
17 重新启动系统
18 登录新内核
19 新内核登录成功
20 查看新内核版本号号
二、编译过程中遇到的问题
1 错误VFS:Unable to mount root
描述:内核安装成功后,启动内核出现如下图错误
原因:在执行内核安装的时候,initrd可能没有被安装出现以下错误
如图,新版本的initrd并没有安装成功,vmlinu有两份,而initrd只有一份。
因此启动时会找不到挂靠磁盘。
解决方案:
重新安装initrd
代码:sudo update-initramfs -c -k 2.6.38.8bo100
执行后:
再次重启,问题解决。
2错误Driver ‘mdio-gpio’
描述:内核安装成功后,启动内核出现如下图错误
原因:在执行内核安装的时候,grub配置文件并没有更新
解决方案:编辑/boot/grub/grub.cfg文件,添加initrd /initrd.img-2.6.39.4如图
执行之后,问题解决。
Practice2
一、内核选项翻译及选择理由
1. General setup 常规设置
1.1 Prompt for development and/or incomplete code/drivers
对开发中的或者未完成的代码和驱动进行提示
选择N
1.2 Local version – append to kernel release
本地版本附加内核发行版本
选择N
1.3 Automatically append version information to the version string
自动生成版本信息
选择N
1.4 Support for paging of anonymous memory
内存随机页面支持,可以提供更多的虚拟内存
选择N
1.5 System V IPC
中间过程连接,有些程序需要它才能运行
选择Y
1.6 BSD Process Accounting
BSD进程统计,对用户级别的程序非常有用
选择Y
1.7 BSD Process Accounting version 3 _le format
BSD 进程统计V3文件格式一种进程统计的格式
选择N
1.8 Export task/process statistics through netlink
通过网联接口输出工/进程的相关数据
选择N
1.9 Enable extended accounting over taskstats
允许通过任务状态进行扩展统计
选择N
1.10 Control Group support
组控制支持
选择N
1.11 Initial RAM _lesystem and RAM disk sup-port
初始RAM文件系统和RAM磁盘支持
选择Y
1.12 Kprobes
K探测器
选择N
因为要进行内核裁剪,我研究明白了几乎所有选项的意思,但由于时间原因,实在无法逐一写出并解释,准备假期的时候把这些东西全部写出了,整理成文档供后人使用。
这里只写到第一部分,内核裁剪很有意思,有时间的时候一定好好总结一下。
二、裁剪过程
1.进入设置界面
命令:make menuconfig
2. General setup页设置
3. Enable the block layer页设置
4. Processor type and features页设置
5. Power Management and ACPI options页设置
6. Bus options页设置
7. Executable file formats页设置
8. Networking options页设置
9. Device Drivers 页设置
10. Firmware Drivers页设置
11. File systems页设置
12. Kernel hacking页设置
13 CryptographicAPI页设置
14. 裁剪后内核运行截图
15. 内核大小9.6M
感受和体会
这次作业可以用旷日持久来形容,并不是因为自己拖着不做,而是确实需要很多的时间,由于使用的时虚拟机,编译一次完整版的内核需要5个小时左右,这是极大程度上对耐心的考验,不过虽然经历坎坷但最终还是完成了任务。
做这次作业最大的感受就是要谋定而后动,要对整个编译的内容、操作的过程有完整的考虑,想清楚,弄明白之后再去编译,否则一旦出了一些小错误,很可能导致5个小时过去了而一无所获。
这种5个小时的教训使得我们不得不每一步都谨小慎微,严谨治学。
这次作业对个人的研究能力也是一个极大的考验,因为编译基本都会出错,而出的错又千奇百怪,没有一个文档或是说明能囊括所有的错误,所以必须去自己搜集可能的原因,分析别人的资料,最终在不断的尝试过程中解决问题。
可以说作业是在不断地发现问题,解决问题过程中进行了,所有的操作都要在linux系统下进行,包括文件的安装、备份,所以做作业的同时对linux系统的认知和理解也更深入了一个层次。