虚拟机linux存放路径“E:\Users\Think\Documents\Virtual Machines\Red Hat Enterprise Linux 5”
解压: tar xjf xxx.tar.bz2
打补丁:patch -p1 <../linux-2.6.22.6_jz2440.patch
配置:① make menuconfig
② 使用默认配置。 寻找默认配置项find -name "*defconfig*"
③ 使用厂家提供的配置
配置的结果是生成一个.config文件
.config内容:
CONFIG_xxx = y / n / M
以DM9000为例:
CONFIG_DM9000=y 表示内核支持这个网卡
哪些地方会用到CONFIG_DM9000: grep "CONFIG_DM9000" * -nR
① c源码中:arch/arm/plat-s3c24xx/common-smdk.c:46:#if defined(CONFIG_DM9000) || defined(CONFIG_DM9000_MODULE)
② 子目录中的Makefile:drivers/net/Makefile:197:obj-$(CONFIG_DM9000) += dm9dev9000c.o
CONFIG_DM9000 = y编进内核,=M 生成模块
子目录makefile很简单:obj-y += xxx.o 会被编进内核
obj-m += xxx.o 会被编译成模块 xxx.ko
问题1:
obj-y、obj-M 在编译时,过程是咋样的:
http://19880512.blog.51cto.com/936364/303544
http://blog.csdn.net/qxb1229/article/details/8594263
③ include/linux/autoconf.h:145:#define CONFIG_DM9000 1 “必须配置后才能成才,例:make config_ok;由配置的.config生成”
scripts/kconfig/.zconf.tab.o.cmd:72: $(wildcard include/config/autoconfig.h) \
④ include/config/auto.conf:144:CONFIG_DM9000=y
供子目录makefile用。被顶层目录makefile包含:Makefile:453:# If .config is newer than include/config/auto.conf, someone tinkered
make menuconfig中输入“?”号代表详细信息; “/”代表查找。
make uImage编译:
OBJCOPY arch/arm/boot/Image
Kernel: arch/arm/boot/Image is ready
AS arch/arm/boot/compressed/head.o
GZIP arch/arm/boot/compressed/piggy.gz
AS arch/arm/boot/compressed/piggy.o
CC arch/arm/boot/compressed/misc.o
LD arch/arm/boot/compressed/vmlinux
OBJCOPY arch/arm/boot/zImage
Kernel: arch/arm/boot/zImage is ready
UIMAGE arch/arm/boot/uImage
Image Name: Linux-2.6.22.6
Created: Thu Mar 6 10:27:03 2014
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 1845824 Bytes = 1802.56 kB = 1.76 MB
Load Address: 0x30008000 //由uboot编译的工具mkimage工具决定
Entry Point: 0x30008000
Image arch/arm/boot/uImage is ready
分析:第一个文件:/arch/arm/kernel/head.S
链接脚本: /arch/arm/kernel/vmlinux.lds
编译的内核很大,可压缩很小的文件,压缩后的内核前有一段自解压代码。
jffs2文件是压缩文件
内核要做:① 处理uboot传入的参数[cpu、单板、页表、使能MMU、跳转start_kernel] 使能MMU参考--应用手册,这部分做了不少事情
②start_kernel中 setup_arch(&command_line);setup_command_line(command_line);uboot传入的处理启动参数。
运行应用程序,它放在根文件系统里面。挂接根文件系统,启动应用程序。
调用关系:
start_kernel
setup_arch //解析uboot传入的启动参数
setup_command_line
rest_init();
kernel_thread创建内核线程-kernel_init
prepare_namespace();
mount_root();
init_post();
//执行应用程序--由busybox生成
分区定义:Common-smdk.c (arch\arm\plat-s3c24xx) 6846
nand flash
解决问题:
有两种情况,会出现打开的文件都显示^M符号:
1. vim被配置为fileformat=unix,而你打开的文件都是dos格式的。
unix格式的换行符为0A(ascii码)也就是<LF>,dos格式的换行符为 0D 0A(也就是<CR><LF>),<CR>其实就显示为^M。
下面是详细讲解:DOS, Mac 和Unix格式的文件回想计算机的史前史,
那时的打字机使用两个字符来开始一个新行。
首先是一个字符命令使打印头移回开始位置(回车,<CR>),
然后另一个字符命令控制向前进纸一行(进纸,<LF>).在计算机诞生之初,存储设备十分昂贵。
于是有人就提出没有必要用两个字符来表示一行的结束。
UNIX一族决定只用进纸一个字符<LineFeed>来表示行尾。
来自苹果阵营的人则把回车<CR>作为换行的标准。
MS-DOS(和微软的Windows)仍然决定沿用古老的回车换行<CR><LF>传统。
这也意味着如果把文件从一个系统移到另一个不同的系统,你就会遇到与换行相关的问题。
Vim编辑器则可以识别这些不同格式的文件。
你可以在'fileformats'选项里指定你希望Vim能自动识别的格式的集合。
下面的这个命令就可以让Vim能自动识别UNIX格式和MS-DOS格式:
:set fileformats=unix,dos把这句话放在_vimrc中,一般情况就都能OK。
在用户家目录(/home/用户名)下面有一个.vimrc
/etc下面也有一个vimrc
一般只改用户家目录下面的 .vimrc 此配置文件只针对用户有效
更改后需使用su - 用户名 来使配置生效(例如 su - zhang3)
.vimrc为隐藏文件 使用ls -al可查看
2. 你的文本中既有unix的换行符,又有dos的换行符,那么vim会认为你打开的是unix的,
所以,那些dos的换行符就会出现恼人的^M。不过这种情况不常见。
办法是:1)若你的vim版本大于7.1,并想用dos显示和保存,如下语句:
:e ++ff=dos
2)若你的vim版本小于等于7.1,又想把文章按照dos格式显示和保存,如下语句:
:set ff=dos:%s/\r\+$//e3)
若你的vim版本小于等于7.1,又想把文章按照unix格式显示和保存,如下语句:
:set ff=unix:%s/\r\+$//e
解压: tar xjf xxx.tar.bz2
打补丁:patch -p1 <../linux-2.6.22.6_jz2440.patch
配置:① make menuconfig
② 使用默认配置。 寻找默认配置项find -name "*defconfig*"
③ 使用厂家提供的配置
配置的结果是生成一个.config文件
.config内容:
CONFIG_xxx = y / n / M
以DM9000为例:
CONFIG_DM9000=y 表示内核支持这个网卡
哪些地方会用到CONFIG_DM9000: grep "CONFIG_DM9000" * -nR
① c源码中:arch/arm/plat-s3c24xx/common-smdk.c:46:#if defined(CONFIG_DM9000) || defined(CONFIG_DM9000_MODULE)
② 子目录中的Makefile:drivers/net/Makefile:197:obj-$(CONFIG_DM9000) += dm9dev9000c.o
CONFIG_DM9000 = y编进内核,=M 生成模块
子目录makefile很简单:obj-y += xxx.o 会被编进内核
obj-m += xxx.o 会被编译成模块 xxx.ko
问题1:
obj-y、obj-M 在编译时,过程是咋样的:
http://19880512.blog.51cto.com/936364/303544
http://blog.csdn.net/qxb1229/article/details/8594263
③ include/linux/autoconf.h:145:#define CONFIG_DM9000 1 “必须配置后才能成才,例:make config_ok;由配置的.config生成”
scripts/kconfig/.zconf.tab.o.cmd:72: $(wildcard include/config/autoconfig.h) \
④ include/config/auto.conf:144:CONFIG_DM9000=y
供子目录makefile用。被顶层目录makefile包含:Makefile:453:# If .config is newer than include/config/auto.conf, someone tinkered
make menuconfig中输入“?”号代表详细信息; “/”代表查找。
make uImage编译:
OBJCOPY arch/arm/boot/Image
Kernel: arch/arm/boot/Image is ready
AS arch/arm/boot/compressed/head.o
GZIP arch/arm/boot/compressed/piggy.gz
AS arch/arm/boot/compressed/piggy.o
CC arch/arm/boot/compressed/misc.o
LD arch/arm/boot/compressed/vmlinux
OBJCOPY arch/arm/boot/zImage
Kernel: arch/arm/boot/zImage is ready
UIMAGE arch/arm/boot/uImage
Image Name: Linux-2.6.22.6
Created: Thu Mar 6 10:27:03 2014
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 1845824 Bytes = 1802.56 kB = 1.76 MB
Load Address: 0x30008000 //由uboot编译的工具mkimage工具决定
Entry Point: 0x30008000
Image arch/arm/boot/uImage is ready
分析:第一个文件:/arch/arm/kernel/head.S
链接脚本: /arch/arm/kernel/vmlinux.lds
编译的内核很大,可压缩很小的文件,压缩后的内核前有一段自解压代码。
jffs2文件是压缩文件
内核要做:① 处理uboot传入的参数[cpu、单板、页表、使能MMU、跳转start_kernel] 使能MMU参考--应用手册,这部分做了不少事情
②start_kernel中 setup_arch(&command_line);setup_command_line(command_line);uboot传入的处理启动参数。
运行应用程序,它放在根文件系统里面。挂接根文件系统,启动应用程序。
调用关系:
start_kernel
setup_arch //解析uboot传入的启动参数
setup_command_line
rest_init();
kernel_thread创建内核线程-kernel_init
prepare_namespace();
mount_root();
init_post();
//执行应用程序--由busybox生成
分区定义:Common-smdk.c (arch\arm\plat-s3c24xx) 6846
nand flash
解决问题:
有两种情况,会出现打开的文件都显示^M符号:
1. vim被配置为fileformat=unix,而你打开的文件都是dos格式的。
unix格式的换行符为0A(ascii码)也就是<LF>,dos格式的换行符为 0D 0A(也就是<CR><LF>),<CR>其实就显示为^M。
下面是详细讲解:DOS, Mac 和Unix格式的文件回想计算机的史前史,
那时的打字机使用两个字符来开始一个新行。
首先是一个字符命令使打印头移回开始位置(回车,<CR>),
然后另一个字符命令控制向前进纸一行(进纸,<LF>).在计算机诞生之初,存储设备十分昂贵。
于是有人就提出没有必要用两个字符来表示一行的结束。
UNIX一族决定只用进纸一个字符<LineFeed>来表示行尾。
来自苹果阵营的人则把回车<CR>作为换行的标准。
MS-DOS(和微软的Windows)仍然决定沿用古老的回车换行<CR><LF>传统。
这也意味着如果把文件从一个系统移到另一个不同的系统,你就会遇到与换行相关的问题。
Vim编辑器则可以识别这些不同格式的文件。
你可以在'fileformats'选项里指定你希望Vim能自动识别的格式的集合。
下面的这个命令就可以让Vim能自动识别UNIX格式和MS-DOS格式:
:set fileformats=unix,dos把这句话放在_vimrc中,一般情况就都能OK。
在用户家目录(/home/用户名)下面有一个.vimrc
/etc下面也有一个vimrc
一般只改用户家目录下面的 .vimrc 此配置文件只针对用户有效
更改后需使用su - 用户名 来使配置生效(例如 su - zhang3)
.vimrc为隐藏文件 使用ls -al可查看
2. 你的文本中既有unix的换行符,又有dos的换行符,那么vim会认为你打开的是unix的,
所以,那些dos的换行符就会出现恼人的^M。不过这种情况不常见。
办法是:1)若你的vim版本大于7.1,并想用dos显示和保存,如下语句:
:e ++ff=dos
2)若你的vim版本小于等于7.1,又想把文章按照dos格式显示和保存,如下语句:
:set ff=dos:%s/\r\+$//e3)
若你的vim版本小于等于7.1,又想把文章按照unix格式显示和保存,如下语句:
:set ff=unix:%s/\r\+$//e