Linux3.5.2内核移植与文件系统制作

论坛 期权论坛 脚本     
匿名网站用户   2020-12-20 10:14   11   0

一、工具下载

1、Linux3.5.2下载

下载地址:www.kernel.org

2、yaffs2代码

进入http://www.aleph1.co.uk/cgi-bin/viewcvs.cgi/,点击“DownloadGNU

tarball”,下载后出现cvs-root.tar.gz压缩包。

3、busybox-1.13.3

http://www.busybox.net/downloads/下载busybox,这里下载的是busybox-1.13.3.tar.gz。

4、根文件系统制作工具

到友善之臂http://www.arm9.net/网站下载根文件系统制作工具

mkyaffs2image.tgz。

5、友善之臂的根文件系统

在制作根文件系统时,需要用到链接库,为保证链接库能用直接用友善之臂

的根文件系统root_qtopia中的链接库lib,到友善之臂网站http://www.arm9.net/

下载root_qtopia.tgz。

6、硬件平台

友善之臂的tiny4412

二、Linux3.5.2内核移植

1修改对硬件平台的支持。

先添加对arm的支持,在linux-3.5.2主目录下的Makefile文件下添加如下信息:

ARCH?=arm

CROSS_COMPILE?=/opt/FriendlyARM/toolschain/4.5.1/bin/arm-linux-

2、修改平台时钟

找到内核源码arch/arm/mach-exynos/mach-tiny4412.c文件,在函数static

void__initsmdk4x12_map_io(void)中,修改成s3c24xx_init_clocks(24000000)

3、修改Nandflash分区信息

很多人的做法是直接修改arch/arm/plat-s3c24xx/Common-smdk.c文件里面的smdk_default_nand_part数据结构,这样是不提倡的做法,因为还是那句话,破坏了内核。我们应该在arch/arm/mach-exynos/mach-tiny4412.c文件中建立我们自己板文件的nand信息。我们在mach-tiny4412.cstaticstructplatform_device*smdk2440_devices[]前面添加

staticstructmtd_partitionsmdk_default_nand_part[]={
[0]={
.name="loader",
.size=SZ_256K,
.offset=0,
},
[1]={
.name="kernel",
.offset=MTDPART_OFS_APPEND,
.size=SZ_1M+SZ_256K+SZ_512K,
},
[2]={
.name="root",
.offset=SZ_2M,
.size=SZ_32M,
},
[3]={
.name="user1",
.offset=MTDPART_OFS_APPEND,
.size=MTDPART_SIZ_FULL,
}
};
修改nandflash的参数:
在同一个文件中找到
staticstructs3c2410_platform_nandsmdk_nand_info={
.tacls=20,
.twrph0=60,
.twrph1=20,
.nr_sets=ARRAY_SIZE(smdk_nand_sets),
.sets=smdk_nand_sets,
};
改成
staticstructs3c2410_platform_nandsmdk_nand_info={
.tacls=0,
.twrph0=30,
.twrph1=0,
.nr_sets=ARRAY_SIZE(smdk_nand_sets),
.sets=smdk_nand_sets,
};

drivers/mtd/nand/s3c2410.c
839chip->ecc.mode=NAND_ECC_NONE;//NAND_ECC_SOFT;


4、建立板文件支持

修改arch/arm/mach-exynos/mach-tiny4412.c文件将MACHINE_START宏括号里面的名字换成ID换成TINY4412,,这个ID最终会被扩展为MACH_TYPE_TINY4412然后到arch/arm/tools/mach_types里面找对应的ID号,所有做完以这一步我们要在mach_types添加我们机器的ID

以下为主要步骤:

A、重新复制一份mach-smdk4x12.c,并命名为mach-tiny4412.c

[root@localhostarch]#cparm/mach-exynos/mach-smdk4x12.carm/mach-exypons/mach-

tiny4412.c

利用vi命令打开mach-tiny4412.c文件,修改如下内容(黄色区域)

B[root@localhostlinux-3.5.2]#cdarch/arm/tools

[root@localhosttools]#vimach_types

然后在mach_types里面添加我们机器的ID,再最后一行添加

Tiny4412MACH_TINY4412TINY44124173

第一个表示机器名字,第二个在Kconfig配置项里面定义的宏名称,下面一步我们会定义到,我们取名为MACH_tiny4412,第三表示MACH_START第一个参数ID名字,第四个是ID,ID号我们取为4173。

C修改arch/arm/mach-exynos/目录下的KconfigMakefile,以建立内核对板文件的支持使其可以被配置和编译进内核。

首先修改Kconfig,在endmenu之前加入下面的内容:

再修改Makefile,在Makefile文件中添加如下一行:obj-$(CONFIG_MACH_TINY4412)+=mach-tiny4412.o

D、配置Linux内核

进入linux-3.5.2内核主目录,通过以下命令将exynos的默认配置文件写到

当前目录下的.config

[root@localhostlinux-3.5.2]#cparch/arm/configs/exynos4_defconfig./

[root@localhostlinux-3.5.2]#makeexynos4_defconfig

执行加载默认配置文件后,可以开始配置新增加的菜单

[root@localhostlinux-3.5.2]#makemenuconfig

进入SystemTypes菜单项,打开SAMSUNGEXYNOSSoCsSupport--->菜单,出现一个目标开发板的列表:

选中tiny4412选项,然后执行makezImage,如果能够正常编译,可以将能够将体内一412板文件编译进内核.

如下为编译成功截图:


三、根文件系统的制作

1、建立根文件系统目录

进入到/opt/MyARM目录,新建建立根文件系统目录的脚本文件

create_rootfs_bash,使用命令chmod+xcreate_rootfs_bash改变文件的可执行权

限,./create_rootfs_bash运行脚本,就完成了根文件系统目录的创建。

#!/bin/sh

echo"------Createrootfsdirectonsstart...--------"

mkdirrootfs

cdrootfs

echo"--------Createroot,dev....----------"

mkdirrootdevetcboottmpvarsysproclibmnthome

mkdiretc/init.detc/rc.detc/sysconfig

mkdirusr/sbinusr/binusr/libusr/modules

echo"makenodeindev/consoledev/null"

mknod-m600dev/consolec51

mknod-m600dev/nullc13

mkdirmnt/etcmnt/jffs2mnt/yaffsmnt/datamnt/temp

mkdirvar/libvar/lockvar/runvar/tmp

chmod1777tmp

chmod1777var/tmp

echo"-------makedirectiondone---------"

改变了tmp目录的使用权,让它开启sticky位,为tmp目录的使用权开启此

位,可确保tmp目录底下建立的文件,只有建立它的用户有权删除。尽管嵌入式

系统多半是单用户,不过有些嵌入式应用不一定用root的权限来执行,因此需

要遵照根文件系统权限位的基本规定来设计。

动态链接库直接用友善之臂的,先解压友善之臂的根文件包,拷贝lib的内

容到新建的根文件目录lib内。

tarzxvfroot_qtopia.tgzC/opt/MyARM

cprfd/opt/MyARM/root_qtopia/lib/*/opt/MyARM/rootfs/lib/*

2交叉编译busybox

tarzxvfbusybox-1.13.3.tar.tgzC/opt/MyARM

3、进入源码,修改Makefile文件:

cd/opt/MyARM/busybox-1.13.3

修改:

CROSS_COMPILE?=/opt/FriendlyARM/toolschain/4.5.1/bin/arm-linux-

ARCH?=arm

4、配置busybox

输入makemenuconfig进行配置

(1)BusyboxSettings--->

GeneralConfiguration--->

[*]Showverboseappletusagemessages

[*]Storeappletusagemessagesincompressedform

[*]Supportinstall[-s]toinstallappletlinksatruntime

[*]Enablelocalesupport(systemneedslocaleforthistowork)

GeneratedbyFoxitPDFCreatorFoxitSoftware

http://www.foxitsoftware.comForevaluationonly.portforlong-options

[*]Usethedevptsfilesystemforunix98PTYs

[*]Supportwritingpidfiles

[*]RuntimeSUID/SGIDconfigurationvia/etc/busybox.config

[*]Suppresswarningmessageif/etc/busybox.confisnotreadable

BuildOptions--->

[*]BuildBusyBoxasastaticbinary(nosharedlibs)

[*]BuildwithLargeFileSupport(foraccessingfiles>2GB)

InstallationOptions->

[]Dontuse/usr

Appletslinks(assoft-links)--->

(./_install)BusyBoxinstallationprefix

BusyboxLibraryTuning--->

(6)Minimumpasswordlegth

(2)MD5:TradeBytesforSpeed

[*]Fsater/procscanningcode(+100bytes)

[*]Commandlineediting

(1024)Maximumlengthofinput

[*]vi-stylelineeditingcommands

(15)Historysize

[*]Historysaving

[*]Tabcompletion

[*]Fancyshellprompts

(4)Copybuffersize,inkilobytes

[*]Useioctlnamesratherthanhexvaluesinerrormessages

[*]SupportinfinibandHW

下面的选项将增加对mdev的支持。

LinuxSystemUtilities--->

[*]Support/etc/mdev.conf

[*]Supportcommandexecutionatdeviceaddition/removal

cd/opt/MyARM/busybox-1.13.3

makeCONFIG_PREFIX=/opt/MyARM/rootfsinstall

rootfs目录下会生成目录binsbinusr和文件linuxrc的内容。

6建立etc目录下的配置文件

1)etc/mdev.conf文件,内容为空。

2)、拷贝主机etc目录下的passwdgroupshadow文件到rootfs/etc目录下。

3)etc/sysconfig目录下新建文件HOSTNAME,内容为”YuYanze”。

4)etc/inittab文件:

#etc/inittab

::sysinit:/etc/init.d/rcS

::askfirst:-/bin/sh

::ctrlaltdel:/sbin/reboot

::shutdown:/bin/umount-ar

5)etc/init.d/rcS文件:

#!/bin/sh

PATH=/sbin:/bin:/usr/sbin:/usr/bin

runlevel=S

prevlevel=N

umask022

exportPATHrunlevelprevlevel

echo"----------muntall----------------"

mount-a

mdev-s

echo"***********************************************"

echo"****************MyARM*********************"

echo"Kernelversion:linux-3.5.1"

echo"Student:Yuyanze"

echo"Date:2015.12.15"

echo"***********************************************"

/bin/hostname-F/etc/sysconfig/HOSTNAME

使用以下命令改变rcS的执行权限:

Chmod+xrcS

6)etc/fstab文件:

#devicemount-pointtypeoptiondumpfsckorder

proc/procprocdefaults00

none/tmpramfsdefaults00

sysfs/syssysfsdefaults00

mdev/devramfsdefaults00

7)etc/profile文件:

#Ashprofile

#vim:syntax=sh

#Nocorefilebydefaults

#ulimit-S-c0>/dev/null2>&1

USER="id-un"

LOGNAME=$USER

PS1='[\u@\h=W]#'

PATH=$PATH

HOSTNAME='/bin/hostname'

exportUSERLOGNAMEPS1PATH

7、制作根文件系统映像文件

使用以下命令安装好yaffs文件系统制作工具:

tarzxvfmkyaffs2image.tgzC/

/opt/MyARM目录下,使用命令mkyaffs2imagerootfsrootfs.img生成根文件系统映像文件。

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:1136255
帖子:227251
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP