分类: LINUX
2011-03-26 10:34:15
一 、主机平台上安装VMmare7.0、ubuntu9.10
Ø ubuntu分区:/boot 100M ext3 primary
swap 1024M(内存的2倍) logical
/ 剩下的所有空间 ext4 logical
Ø 注意:VMmare一定要下载完整版,一般绿色版、精简版没有VMware tools ,
VMmare6.5和VMware7.0都支持ubuntu9.10 相应的VMware tools也是支持的
Ø 安装交叉编译器后安装build-essential sudo apt-get build-essential 为C/C++提供编译环境
查看GCC是否安装成功 : arm-linux-gcc -v
二,移植Linux-2.6.29(别的版本大同小异2.6.29—2为主版本号6为次版本号29为补丁号其中的编号偶数为稳定版本)
1, 获取源码地址
2, 关于交叉编译器
编译内核都会用cross-3.4.1
本笔记用的是4.3.2
解压4.3.2到/usr/local/arm下
把4.3.2的arm-linux-gcc-导入环境变量里
echo $PATH—查看环境变量
gedit /etc/bash.bashrc ----编辑脚步自动写入环境变量
# crosstool PATH configure
if [ -d /usr/local/arm/4.3.2/bin ] ; then
PATH=/usr/local/arm/4.3.2/bin:"${PATH}"
fi
source /etc/profile --- 执行脚本使其加入环境变量中
(用arm-linux-gcc 4.00以上的编译器做出都 文件系统老是报这个错 ,
而用rm-linux-gcc 3.xx 版本都都不会,看来一下内核的配置
原来问题在这里
Kernel Features --->
[*] Use the ARM EABI to compile the kernel
[*] Allow old ABI binaries to
run with this kernel (EXPERIMENTA)
把这个选上就可以了)
3, 添加ARM的支持
gedit Makefile
ARCH?=$(SUBARCH)
CROSS_COMPILE?=
改成:
ARCH?=arm
CROSS_COMPILE?=arm-linux-
arm-linux- 后的“-”容易丢失
为内核添加yaffs2支持
下载源码 点击Download GUN tarball ,下载cvs-root.tar.gz
执行patch-ker.sh给内核打补丁 ./patch-ker.sh
再次配置内核添加yaffs2支持
File system--àMiscellaneous filesysytem--à <*> YAFFS2 file system support
再次生成镜像即可
4,、修改目标平台的时钟频率,arch/arm/mach-s3c2440/mach-smdk2440.c 下
将 s3c2440-init-clocks(16934400) 改成 s3c2440-init-clocks(12000000)
5,修改机器码
在 arch/arm/tools/mach-type 中s3c2440的机器码一定要与vivi 中的一致
Vivi中 param show –显示一小参数
6,修改MTD分区
在 arch/arm/plat-s3c24xx/common-smdk.c 中修改
Vivi 中 part show –显示以下参数
bootloader中的分区要与内核中的分区完全一致,包括分区名、起始地址、分区大小,比保
证内核、文件系统能够烧写到nandflash中
7, 制作配置文件
在 arch/arm/configs 下有 s3c2410-deconfig 一般的,以s3c2410-deconfig为基础制作
2440的的配置文件
将s3c2410-deconfig拷贝到 .config 中 make 内核是按照 .config 中的配置生成zImage
cp arch/arm/configs/s3c2410-deconfig .config
修改配置
make menuconfig
选择“system Type”将s3c2410 Machine 、s3c2440
Machine 中SMDK…….全部选中,其他类型不选(可选可不选)
内核配置
第一部分:全部删除
Code maturity level options ---> 代码成熟等级选项
[]Prompt for development and/or incomplete code/drivers 默认情况下是选择的,这将会
在设置界面中显示还在开发或者还没有完成的代码与驱动.不选。
第二部分 :除以下选项,其它全部删除
General setup—〉
System V IPC (IPC:Inter
Process Communication)是组系统调用及函数库,它能让程序彼此
间同步进行交换信息。某些程序以及DOS模拟环境都需要它。为进程提供通信机制,这将使系统中各进程间有交换信息与保持同步的能力。有些程序只有在选Y的情况下才能运行,所以不用考虑,这里一定要选。
第三部分:除以下选项,其它全部删除
Loadable module support ---> 可引导模块支持 建议作为模块加入内核
[] Enable loadable module support
这个选项可以让你的内核支持模块,模块是什么呢?模块是一小段代码,编译后可在系统内核运行时动态的加入内核,从而为内核增加一些特性或是对某种硬件进行支持。一般一些不常用到的驱动或特性可以编译为模块以减少内核的体积。在运行时可以使用modprobe命令来加载它到内核中去(在不需要时还可以移除它)。一些特性是否编译为模块的原则是,不常使用的,特别是在系统启动时不需要的驱动可以将其编译为模块,如果是一些在系统启动时就要用到的驱动比如说文件系统,系统总线的支持就不要编为模块了,否在无法启动系统。
[]Automatic kernel module loading
一般情况下,如果我们的内核在某些任务中要使用一些被编译为模块的驱动或特性时,我们要先使用modprobe命令来加载它,内核才能使用。不过,如果你选择了这个选项,在内核需要一些模块时它可以自动调用modprobe命令来加载需要的模块,这是个很棒的特性,当然要选Y喽。
第四部分:全部删除
Block layer-----〉块设备
第五部分:除以下选项,其它全部删除
Processor type and features ---> 处理器类型
Subarchitecture Type (PC-compatible) --->
这选项的主要的目的,是使Linux可以支持多种PC标准,一般我们使用的PC机是遵循所谓IBM兼容结构(pc/at)。这个选项可以让你选择一些其它架构。我们一般选择PC-compatible就可以了。
Processor family(386) :
它会对每种CPU做最佳化,让它跑的好又快,一般来说,你是什么型号的就选什么型号的就好。我选的是386,这样内核会省下不少空间
第六部分:除以下选项,其它全部删除
Power management options (ACPI, APM) ---> 电源管理选项
[ ] Power Management Debug Support
电源管理的调试信息支持,如果不是要调试内核有关电源管理部份,请不要选择这项。
ACPI Support ---〉
高级电源接口配置支持,如果BIOS支持,建议选上这项
[]Button
这个选项用于注册基于电源按钮的事件,比如power, sleep等,当你按下按钮时事件将发生,一个守护程序将读取/proc/acpi/event,并执行用户在这些事件上定义的动作比如让系统关机。可以不选择,根据自己的需求。
第七部分:除以下选项,其它全部删除
Bus options (PCI, PCMCIA, EISA, MCA, ISA) ---> 总线选项
[]PCI support
PCI access mode (Any) --->
PCI外围设备配置,强列建议选Any,系统将优先使用MMConfig,然后使用BIOS,最后使用Direct检测PCI设备。
第八部分:除以下选项,其它全部删除
Executable file formats --->
Kernel support for ELF binaries ELF是开放平台下最常用的二进制文件,它支持不同的硬件平台。一定要选。
第九部分:除以下选项,其它全部删除
Networking
Networking options --->
[]Unix domain sockets
[]TCP/IP networking
第十部分:除以下选项,其它全部删除
Device Drivers --->设备驱动
Block devices-------〉
[]Compaq SMART2 support
[] Compaq Smart Array 5xxx support
[]Loopback device support
大部分的人这一个选项都选N,因为没有必要。但是如果你要mount iso文件的话,你得选上Y。这个选项的意思是说,可以将一个文件挂成一个文件系统。如果要烧光盘片的,那么您很有可能在把一个文件烧进去之前,看看这个文件是否符合IS09660的文件系统的内容,是否符合您的需求。而且,可以对这个文件系统加以保护。不过,如果您 想做到这点的话,您必须有最新的mount程序,版本是在2.5X版以上的。而且如果您希望对这个文件系统加上保护,则您必须有des.1.tar.gz这个程序。注意:此处与网络无关。建议编译成模块
[] RAM disk support
SCSI device support ---> 里面有关于USB支持的,要选择
[]SCSI device support USB要用,必须选择
[]legacy /proc/scsi/ support
USB要用,必须选择
[]SCSI disk support USB要用,必须选择
SCSI Low-level drivers
[]Serial ATA(SATA) support
[]Intel PIIX/ICH SATA support 这个必须选择,否则无法产生引导文件
[]Via SATA support
Networking device support
---> 这个下面是选网卡驱动,一定要选
Ethernet(1000mbit)-我的电脑是千兆网卡所以就选这个
[]broadcom Tigon3support
Input device support ---> 这个里面要设置你的鼠标键盘什么的
[]Provide legacy /dev/psaux device
Graphics support --->
[]Support for frame buffer
devices 支持Frame buffer的,一定要选择
USB support --->
[]USB device filesystem 这个好象是用U盘必须的
[]EHCI HCD (USB 2.0) support 有usb2.0就选上把,编译成模块
[]OHCI HCD support 必须选择,编译成模块
[]UHCI HCD (most Intel and
VIA) support 必须选择,编译成模块
[]USB Mass Storage support 用U盘必须选择
USB Human Interface Device
(full HID) support 里面选择usb鼠标和usb键盘,如果你有一定选上这个必需选
HID input layer support 应该选择
/dev/hiddev raw HID device
support如果这里有USB键盘和鼠标选项,一定要选择
触摸屏
Device Drivers->
Input device support->
[*] Touchscreens->
<*> Samsung S3C2410 touchscreen input driver
UDA1341(声卡)支持
Device Drivers->
<*> Sound card support->
<*> Advanced Linux Sound Architecture->
<*> OSS Mixer API
<*> OSS PCM (digital audio) API
......
<*> ALSA for SoC audio support->
<*> SoC I2S Audio support UDA134X wired to a S3C24XX
.U盘
SCSI支持:
Device Drivers->
SCSI device support->
<*> SCSI device support
<*> SCSI disk support
USB支持:
Device Drivers->
[*] USB support->
<*> USB Mass Storage support
FAT文件系统支持
File systems->
DOS/FAT/NT Filesystems->
<*> MSDOS fs support
支持中英文编码
File systems->
-*- Native language support->
<*> Codepage 437 (United States, Canada)
<*> NLS ISO 8859-1 (Latin 1; Western European Languages)
<*> NLS UTF-8
.USB摄像头
Device Drivers->
<*> Multimedia support->
<*> Video For Linux
[ ] Enable Video For Linux API 1 (DEPRECATED)
[*] Enable Video For Linux API 1 compatible Layer
[*] Video capture adapters (NEW)->
[*] Autoselect pertinent encoders/decoders and other helper chips
[*] V4L USB devices (NEW)->
<*> USB Video Class (UVC)
[ ] UVC input events device support
<*> GSPCA based webcams->
<*> 全选(除[ ] Enable evdev support外)
.Linux字体
Device Drivers->
Graphics support->
Console display driver support->
[*] VGA 8x16 font
第十一部分:除以下选项,其它全部删除
file systems
--->文件系统
<*> Second extended fs
support
[*] Ext2 extended attributes
[*] Ext2 POSIX Access Control Lists
[*] Ext2 Security Labels
[*] Ext3 extended attributes
[*] Ext3 POSIX Access Control Lists
[*] Ext3 Security Labels
DOS/FAT/NT Filesystems --->
Native language
support
[]NLS ISO 8859-1 必须选择,这个是关于U盘挂载的。
CD-ROM/DVD Filesystems --->
这个是关于挂载ISO文件的,用的话就选。
<*> ISO 9660 CDROM file system support
nfs(默认开启)
记得每次更改nfs文件夹时,都要重新开启nfs
File systems->
Network File Systems->
<*> NFS client support
[*] NFS client support for NFS version 3
[*] NFS client support for the NFSv3 ACL protocol extension
[*] NFS client support for NFS version 4 (EXPERIMENTAL)
[ ] NFS client support for NFSv4.1 (DEVELOPER ONLY)
[*] Root file system on NFS
yaffs2文件系统
File systems->
[*] Miscellaneous filesystems->
<*> YAFFS2 file system support
-*- 512 byte / page devices
[ ] Use older-style on-NAND data format with pageStatus byte (NEW)
[ ] Lets Yaffs do its own ECC (NEW)
-*- 2048 byte (or larger) / page devices
[*] Autoselect yaffs2 format (NEW)
[ ] Disable YAFFS from doing ECC on tags by default (NEW)
[ ] Disable lazy loading (NEW)
[ ] Turn off wide tnodes (NEW)
[ ] Force chunk erase check (NEW)
[*] Cache short names in RAM (NEW)
[ ] Empty lost and found on boot (NEW)
[ ] Disable yaffs2 block refreshing (NEW)
[ ] Disable yaffs2 background processing (NEW)
第十二部分: 全部删除
Instrumentation support
第十三部分:全部删除
Kernel hacking --->破解核心?可不是当骸客啦,不选
第十四部分:全部删除
Security options --->
第十五部分:全部删除
Cryptographic options --->这是核心支持加密的选项
第十六部分:全部删除
Library routines --->
编译系统
make
生成目标文件
make zImage or make bzImage
一般用 make zImage
(完)