【 转载】Linux系统移植
来源:互联网 发布:淘宝首页切图 编辑:程序博客网 时间:2024/05/23 23:23
来自《四种嵌入式WEB服务器介绍》豆丁
Linux内核子目录结构
目录名
描述
arch
体系结构相关的代码,对于每个架构的CPU,arch目录下都有一个对应的子目录
block
块设备的通用函数
crypto
常用的加密和散列算法,还有一些压缩和CRC校验算法
drivers
所有的设备驱动程序,里面每个子目录对应着一类驱动程序
fs
Linux支持的文件系统的代码,每个子目录对应一种文件系统
include
内核头文件,包括基本头文件、各种驱动或功能部件的头文件以及各种体系结构的头文件
init
内核的初始化代码(不是系统的引导代码)
ipc
进程间通信的代码
kernel
内核管理的核心代码
lib
内核用到的一些库函数代码
mm
内存管理代码
net
网络支持代码,每个子目录对应网络的一个方面
security
安全、密钥相关的代码
sound
音频设备的驱动程序
usr
用来制作一个压缩的cpio归档文件
documentation
内核文档
scripts
用于配置、编译内核的脚本文件
内核的源代码可以从http://www.kernel.org获取:
1.首先解压缩内核源代码,修改顶层的Makefile文件
ARCH?= arm
CROSS_COMPILE ?= arm-linux-
这里需要指定目标平台的体系结构和交叉编译工具链的路径。
2.修改linux-2.6.26.8/arch/arm/mach-s3c2440/mach-smdk2440.c文件
s3c24xx_init_clocks(16934400)修改为s3c24xx_init_clocks(12000000)
指定开发板的晶振频率为12MHz。
3.修改linux-2.6.26.8/arch/arm/plat-s3c24xx/common-smdk.c文件
内核的源代码可以从http://www.kernel.org获取:
1.首先解压缩内核源代码,修改顶层的Makefile文件
ARCH?= arm
CROSS_COMPILE ?= arm-linux-
这里需要指定目标平台的体系结构和交叉编译工具链的路径。
2.修改linux-2.6.26.8/arch/arm/mach-s3c2440/mach-smdk2440.c文件
s3c24xx_init_clocks(16934400)修改为s3c24xx_init_clocks(12000000)
指定开发板的晶振频率为12MHz。
4. 下一步,就是进行内核的配置了。
这里可以参考S3C2410的开发板来进行配置和调整,内核自带了S3C2410开发板的配置文件。在内核源代码根目录下,执行make s3c2410_defconfig,生成一个基于S3C2410的开发板的默认配置文件。然后再执行makemenuconfig会生成一个基于S3C2410开发板的内核配置菜单。这里需要保留S3C2410/S3C2440 CPU的相关配置选项、TCP/IP协议、NAND Flash驱动、USB驱动以及适合的文件系统类型。
本文中采用的是JFFS2的文件系统类型。内核默认已经对JFFS2有着非常良好的支持,只需要在配置内核的时候加入相应的配置选项就可以了。
JFFS2文件系统配置如下:
File systems --->
Miscellaneousfilesystems --->
<*>Journalling Flash File System v2 (JFFS2) support
(0) JFFS2 debugging verbosity (0 = quiet, 2 =noisy) (NEW)
[*] JFFS2 write-buffering support (NEW)
[] Verify JFFS2 write-buffer reads(NEW)
[] JFFS2 summary support (EXPERIMENTAL)(NEW)
[] JFFS2 XATTR support (EXPERIMENTAL)(NEW)
[] Advanced compression options forJFFS2 (NEW)
构建根文件系统
Linux遵守文件系统科学分类标准(FilesystemHierarchy Standard,FHS),一个定义许多文件和目录的名字和位置的标准,该标准可以在http://www.pathname.com/fhs中找到。FHS也是用来组织Linux和Unix文件的方法,它使得Linux文件系统布局实现了标准化。
构建Linux根文件系统,就是按照FHS标准,创建各种目录、工具和配置文件。这里首先通过Busybox来创建可执行文件。
Busybox最初是由BrucePerens在1996年为Debian GNU/Linux安装盘编写的。其目标是在一张软盘上创建一个可引导的GNU/Linux系统,这可以用作安装盘和急救盘。一张软盘可以保存大约1.4~1.7MB的内容,因此这里没有多少空间留给Linux内核以及相关的用户应用程序使用1、首先解压缩源代码,修改顶层Makefile
2、执行makemenuconfig生成一个配置菜单。这里,只需选择默认配置就可以了。
3、最后执行make进行编译,执行make install进行安装。这样会在当前目录下生成一个_install目录。
可执行文件创建好以后,接下来需要建立lib目录,并且复制所需要的共享库。可以通过arm-linux-readelf -a busybox |grep ‘Shared’命令来查看Busybox调用了哪些共享库,然后将其中对应的共享库复制到lib目录中就可以了。
下面根据FHS标准,构建etc配置目录。
1.创建inittab文件
# System initialization.
::sysinit:/etc/init.d/rcS
::ctrlaltdel:/sbin/reboot
::shutdown:/sbin/swapoff -a
::shutdown:/bin/umount -a
::restart:/sbin/init
::askfirst:-/bin/sh
2.创建init.d/rcS文件
#!/bin/sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin
export PATH
umask 022
/bin/mount -a
/bin/mount -t tmpfsmdev /dev
/bin/mkdir /dev/pts
/bin/mount -t devptsdevpts /dev/pts
/bin/mount -t sysfssysfs /sys
echo /sbin/mdev >/proc/sys/kernel/hotplug
/sbin/mdev -s
/bin/mount -t ramfs ramfs /var
/bin/mkdir -p /var/run
/bin/mkdir -p /var/log
/bin/hostname hrbeu06ws
/sbin/syslogd
3.创建fstab文件
#device mount-point type options dump fsckorder
proc /proc proc defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
tmpfs /dev tmpfs defaults 0 0
4.建立dev目录下必备的设备节点
sudomknod console c 5 1
sudomknod null c 1 3
5.创建passwd文件
root:*:0:0:root:/root:/bin/sh
6.创建shadow文件
root:$1$5qCxLMsr$jJgsPqDW8ZJOS8LE4c5n50:0:0:99999:7::1:
7.创建group文件
root::0:
8.创建profile文件
# /etc/profile: system-wide .profile filefor the Bourne shell
if [ "$PS1" ];then
if [ "$(id -u)" -eq 0 ];then
PS1='\u@\h:\w\# '
else
PS1='\u@\h:\w\$ '
fi
fi
HOME=/root
export HOME
9.创建resolv.conf文件
nameserver 202.118.176.2
10.复制主机的inetd.conf、protocols、mime.types和services文件,其中定义了常见的网络服务的端口和协议。
11.最后,创建一些必要的空目录
mkdir mnt proc root sys tmp var
- 【 转载】Linux系统移植
- 非常详细的ok6410的linux系统移植《转载》
- Linux系统移植
- linux:系统移植
- Linux系统移植
- Linux系统移植
- TQ2440 Linux 系统移植
- Linux系统移植
- Linux系统移植
- Linux系统移植
- Linux系统移植
- linux系统移植 书
- linux系统移植要点
- 01.linux系统移植
- linux 系统移植
- linux系统移植概述
- LINUX系统移植
- linux系统移植日志
- 2013-08-02我会记住这个日子
- [HDU 2795] Billboard[线段树][单点增删]
- URAL 1010 - Discrete Function
- setBounds
- 全面认识Flex安全沙箱
- 【 转载】Linux系统移植
- apche的AB测试详解
- ios上获取是否安装了某个程序
- 逐浪CMS发哥分享:门户网站开发的效率提升与逐浪CMS应用性能优化的几点感触
- 数据结构笔记—从头开始理解KMP算法(1)
- 利用cmake编译opencv库
- 我对VMware Workstation虚拟网络VMnet0、VMnet1、VMnet8的理解和图解
- 关于生成子序列的常用方法
- java转义字符对照表