实验03内核裁减与文件系统建立.docx
《实验03内核裁减与文件系统建立.docx》由会员分享,可在线阅读,更多相关《实验03内核裁减与文件系统建立.docx(25页珍藏版)》请在冰豆网上搜索。
实验03内核裁减与文件系统建立
实验三内核裁减与根文件系统建立
姓名:
学号:
时间:
地点:
实验目的:
熟悉内核和根文件系统的烧写,裁剪的基本操作,熟悉根文件系统的建立
实验设备:
PC机,虚拟机Linux系统,开发板
实验内容:
1.内核的裁剪过程的基本名令
2.文件系统建立busybox的配置,建立目录,复制文件,建立文件镜像.
3.在虚拟机pc-linux启动tftp服务,下载内核和文件系统到开发板.
操作步骤:
实验3-1内核和根文件系统烧写到flash中.
此操作需要用到tftpd32.exe,在widows下的F盘建立一个目录img,将虚拟机上的/arm2410cl24/img下的内容复制到F:
/img下。
启动tftpd32,将currentdirectory指定为f:
/img。
将开发板启动,进入vivi。
设置服务器的ip地址和开发板的ip地址。
然后,烧写内核和根文件。
操作步骤:
1)在windows下,在F盘下建立share目录
2)在虚拟机(PC-Linux)VMsetting->option可以将F:
/share设置为共享目录。
3)将/arm2410cl24/img/复制到共享目录中/mnt/hgfs/share
4)在windows下启动tftpd32,将currentdirectory指定为F:
/share
5)启动超级终端(或者minicom)
6)启动开发板,进入vivi
7)察看vivi的命令
[vivi]help
8)设置服务器的ip地址,设置开发板的ip地址(确保他们在同一网段)
查看ip地址
[vivi]ifconfig
设置服务器(PC-WIN)和开发板的ip地址
[vivi]ifconfigserver192.168.1.112(服务器PC-WIN)
[vivi]ifconfigip192.168.1.110(开发板)
[vivi]ifconfigsave(保存)
[vivi]ifconfig(查看)
9)烧写内核
[vivi]tftpflashkernelzImage
10)烧写根文件
[up-2410]tftpflashrootroot.cramfs
11)启动开发板
[vivi]boot
3.2内核的裁剪过程(制作开发板的linux操作系统)
(1)Linux内核的获取
将linux内核备份,然后裁减:
#cp–arf/arm2410cl/kernel/home
cp–arf/arm2410cl/kernel/home
进入到内核目录:
#cd/home/kernel/linux-2.6.24.4
#makeclean(清除以前的编译文件)
(2)配置内核#makemenuconfig
配置usb无线网卡驱动
Networking(协议配置)
wireless--GenericIEEE802.11NetworkingStack
Devicedriver(无线设备驱动配置)
Networkdevicesupport--WirelessLAN--WirelessLAN(IEEE802.11)
配置usb的多媒体设备(usb摄像头)
1)DevicedriverMultimediadevicesVideoforlinux(linu视频处理)
2)DevicedriverMultimediadevicesvideocaptureadapterV4LusbdeviceUSBZC0301[P]ImageProcessorandControlChipsupport(USB摄像头驱动)
3)DevicedriverGraphicssupportSupportforframebufferdevicesS3C2410LCDframebuffersupport(LCD的帧缓冲支持)
配置NAND设备
DevicedriverMemoryTechnologyDevice(MTD)support
[*]MTDpartitioningsupport
[*]Commandlinepartitiontableparsing
RAM/ROM/Flashchipdrivers
<*>DetectflashchipsbyCommonFlashInterface(CFI)probe
<*>Detectnon-CFIAMD/JEDEC-compatibleflashchips
<*>SupportforIntel/Sharpflashchips
<*>SupportforAMD/Fujitsuflashchips
<*>SupportforROMchipsinbusmapping
<*>NANDDeviceSupport--->
<*>NANDFlashsupportforS3C2410/S3C2440SoC
配置文件的支持
Filesystems--->
DOS/FAT/NTFilesystems--->
<*>MSDOSfssupport
<*>VFAT(Windows-95)fssupport
(437)DefaultcodepageforFAT
(iso8859-1)DefaultiocharsetforFAT
<>NTFSfilesystemsupport
Pseudofilesystems--->
[*]Virtualmemoryfilesystemsupport(formershmfs)
[*]TmpfsPOSIXAccessControlLists
Miscellaneousfilesystems-
<*>YAFFS2filesystemsupport
<*>CompressedROMfilesystemsupport(cramfs)
[*]NetworkFileSystems--->
<*>NFSfilesystemsupport
[*]ProvideNFSv3clientsupport
[*]ProvideclientsupportfortheNFSv3ACLprotocolextension
[*]ProvideNFSv4clientsupport(EXPERIMENTAL)
[*]AllowdirectI/OonNFSfiles
<>NFSserversupport
[*]RootfilesystemonNF
保存后退出配置窗口,产生.config文件。
(3)修改Makefile文件#viMakefile
ARCH?
=arm
CROSS_COMPILE?
=arm-linux-
(4)编译内核#makezImage(需要一些时间,可以不作这一步)
(6)查看编译好的内核zImage:
#cdarch/arm/boot
#ls
(7)将编译好的内核zImage复制到共享目录/share下:
#cpzImage/mnt/hgfs/share
*(8)按照前面烧写的步骤,烧写zImage到开发板(这一步不用做)
(9)清除刚才做的工作,方便后面同学做该内容。
#cd/home
#rm–rfkernel
实验3-3.建立文件系统
(1)获取busybox源代码,在/arm2410cl26/rootfs目录下。
#cd/home
#cp–arf/arm2410cl26/rootfs-C./
(2)进入到busybox目录:
#cd/home/rootfs/busybox-1.12.2
#makeclean
#rm–rf_install
(3)配置busybox的命令#makemenuconfig
(删除一些命令选项,只选择有限的一些命令)
(4)建立依赖关系#makedep
(5)编译生成busybox#make
(6)安装busybox,生成目录_install:
#makeinstall
(7)察看_insatall目录下的内容:
#cd_install
#ls
(查看这些命令)
(8)进入到/home/rootfs/target:
#cd/home/rootfs/target
(9)查看target下的文件目录:
ls
(10)将binsbinusr三个目录删除:
#rm–rfbin/sbin/usr/
(11)将_install目录下的内容复制到target下:
#cp–arf/home/rootfs/busybox-1.12.2_install./
(12)建立文件系统:
#cd/home/rootfs
#mkfs.cramfstargetroot.cramfs
(13)将编译好的内核root.cramfs复制到共享目录/share下:
#cproot.cramfs/mnt/hgfs/share
*(14)烧写根文件系统(这一步不用做)
(9)清除刚才做的工作,方便后面同学做该内容。
#cd/home
#rm–rfrootfs
回答下列思考题:
1.配置nandflash的启动需要配置哪些先关项?
每一项的含义是什么?
DevicedriverMemoryTechnologyDevice(MTD)support
[*]MTDpartitioningsupport
[*]Commandlinepartitiontableparsing
RAM/ROM/Flashchipdrivers
<*>DetectflashchipsbyCommonFlashInterface(CFI)probe
<*>Detectnon-CFIAMD/JEDEC-compatibleflashchips
<*>SupportforIntel/Sharpflashchips
<*>SupportforAMD/Fujitsuflashchips
<*>SupportforROMchipsinbusmapping
<*>NANDDeviceSupport--->
<*>NANDFlashsupportforS3C2410/S3C2440SoC
2.配置usb摄像头,需要配置哪些相关项?
每一项的含义是什么?
1)DevicedriverMultimediadevicesVideoforlinux(linux视频处理)
2)DevicedriverMultimediadevicesvideocaptureadapterV4LusbdeviceUSBZC0301[P]ImageProcessorandControlChipsupport(USB摄像头驱动)
3)DevicedriverGraphicssupportSupportforframebufferdevicesS3C2410LCDframebuffersupport(LCD的帧缓冲支持)
3.如果要配置usb蓝牙,需要配置哪些相关项?
内核的配置,基本上把 networking下 ---Bluetoothsubsystemsupport 里的以下几项全部选上即可:
L2CAPprotocolsupport
SCOlinkssupport
RFCOMMprotocolsupport
RFCOMMTTYsupport
BNEPprotocolsupport
HIDPprotocolsupport
此外,在Bluetoothdevicedrivers里选上你所需要支持的Bluetooth设备。
4.在制作根文件系统时,busybox的作用是什么?
BusyBox的安装脚本使得它很容易建立基于BusyBox的根文件系统,提供了类似Linux内核的配置脚本菜单,容易实现配置和裁剪。
5.制作开发板的根文件系统时,如何得到lib/的库文件?
应用程序通过ld命令的参数-rpath可以在链接时将共享库的路径记在应用程序中,但是通常不推荐这样做,通常应用程序中只记录共享库的文件名 ,启动程序时由动态链接器/lib/ld-linux.so根据以下规则查找共享库:
首先在环境变量LD_LIBRARY_PATH 所记录的路径中查找然后从缓存文件/etc/ld.so.cache中查找。
将共享库的路径写进/etc/ld.so.conf然后执行ldconfig命令就可以生成缓存文件/etc/ld.so.cache ,如果上述步骤都找不到,则到默认的系统路径中查找,先是/usr/lib然后是/lib。