Linux内核编译、驱动开发命令及步骤总结.docx
《Linux内核编译、驱动开发命令及步骤总结.docx》由会员分享,可在线阅读,更多相关《Linux内核编译、驱动开发命令及步骤总结.docx(23页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Linux内核编译、驱动开发命令及步骤总结-常用命令-内核源码本身也无32位和64位之分,只要编译以后才有区别-yumlistinstalled列出所有已安装的软件包yumlistupdates列出所有可更新的软件包yuminstallsoftName安装软件包yumremovesoftName删除软件包服务#chkconfig-list#列出所有系统服务#chkconfig-list|grepon#列出所有启动的系统服务程序#rpm-qa#查看所有安装的软件包进程#ps-ef#查看所有进程#top#实时显示进程状态系统#uname-a#查看内核/操作系统/CPU信息#head-n1/etc/
2、issue#查看操作系统版本#cat/proc/cpuinfo#查看CPU信息#hostname#查看计算机名#lspci-tv#列出所有PCI设备#lsusb-tv#列出所有USB设备#lsmod#列出加载的内核模块#env#查看环境变量资源#free-m#查看内存使用量和交换区使用量#df-h#查看各分区使用情况#du-sh#查看指定目录的大小#grepMemTotal/proc/meminfo#查看内存总量#grepMemFree/proc/meminfo#查看空闲内存量#uptime#查看系统运行时间、用户数、负载#cat/proc/loadavg#查看系统负载磁盘和分区#mount|
3、column-t#查看挂接的分区状态#fdisk-l#查看所有分区#swapon-s#查看所有交换分区#hdparm-i/dev/hda#查看磁盘参数(仅适用于IDE设备)#dmesg|grepIDE#查看启动时IDE设备检测状况网络#ifconfig#查看所有网络接口的属性#iptables-L#查看防火墙设置#route-n#查看路由表#netstat-lntp#查看所有监听端口#netstat-antp#查看所有已经建立的连接#netstat-s#查看网络统计信息用户#w#查看活动用户#id#查看指定用户信息#last#查看用户登录日志#cut-d:-f1/etc/passwd#查看系统
4、所有用户#cut-d:-f1/etc/group#查看系统所有组#crontab-l#查看当前用户的计划任务-Fedora16内核版本为3.1.0-7.fc16.i686到3.4.2(2021.07.12)-Fedora18的内核版本:3.6.10-4-Fedora17采用3.3.4内核,集成4.7.0版gcc、gcc-c+、gcc-gfortran、gcc-objc以及gcc-gnat,OpenJDK7取代了OpenJDK6,成为了Fedora默认Java开发套件,集成KDE4.8桌面环境,性能和稳定性上有显著提升,其中包含KDEPlasma工作空间,集成了GNOME3.4桌面环境。-Fed
5、ora19采?用?3.9.0内?核1.uname-a/-r/查看内核版本2.安装VMwareTools后需要重启,复制粘帖功能才正常。3.Makefile文件的两行make开始的行,make前头必须是一个Tab空格,不能是Space键的其它空格,也不能没有空格。4.添加sudo权限rootlocalhost#chmod777/etc/sudoersrootlocalhost#gedit/etc/sudoersrootlocalhost#chmod440/etc/sudoers5.CentOS中文设置rootlocalhost#gedit/etc/sysconfig/i18n#LANG=en_U
6、S.UTF-8LANG=zh_CN.UTF-8/改成中文6.*.glade是GTK+图形界面产生器的XML格式设计文件,可用于C、C+、Java、C#、Python、Perl等。7.VMware调整客户机尺寸atuosize-autofitguest番外篇安装内核头文件编译一个设备驱动模块时,你需要在系统中安装内核头文件。内核头文件同样在你编译与内核直接链接的用户空间程序时需要。当你在这些情况下安装内核头文件时,你必须确保内核头文件准确地与你当前内核版本匹配比方:3.13.0-24-generic。#rpm-qa|grepkernel-headers-$(uname-r)第一篇内核编译安装1.
7、下载要编译的源码包,sudocpsrc-name.tar.xz/usr/src/复制到/usr/srcsudoxz-dsrc-name.tar.xz/解压xz包sudotar-xvfsrc-name.tar/解压tar包,得到源码文件夹另外,似乎可以用#tar-Jxvfsrc-name.tar.xz-C/usr/src一步解压bzip2-dlinux-2.6.32.26.tar.bz2/解压bz2包2.安装编译工具1)sudoyumgroupinstallDevelopmentTools或者sudoyuminstallgccgcc-c+kernel-devel2)-安装ncurses它是一个能
8、提供功能键定义(快速键),屏幕绘制及基于文本终端的图形互动功能的动态库。这就不难解释为何执行makemenuconfig命令需要ncurses了。sudoyuminstallgccmakencursesncurses-develperlsudoyumupdate3.清理旧配置文件法1:sudomakemrproper/删除源码目录残留.o和其他附属文件,确保源代码目录下没有不正确的.o文件以及文件的相互依靠法2:sudomakedistclean4.配置注意:编译的时候用的.config文件最好用你原来内核的config文件,这个文件在/boot/目录下有个config-内核版本号。将这个文件
9、copy到你要安装的内核的根目录下名字改成.config,再编译。可能会提示你一些新的配置,不懂的yes或者编译成模块选M就行了,宁多勿缺啊!*注意:标准内核源码对CPU默认配置是Pentium-Pro,为高性能奔腾处理器。有可能存在兼容问题,建议将CPU类型改为X586。步骤:在Menuconfig菜单下,进入Generalsetup-Processortypeandfeatures回车进入Processorfamily,选择586/K5/5x86/6x86/6x86MX项法1:sudomakemenuconfig-此命令运行将弹出kernelconfiguration界面,按ESC,点YE
10、S退出即可法2:sudomakeoldconfig/假如只想在原来内核配置的基础上修改一些小地方,会省去不少费事Y-将该功能编译进内核N-不M-将该功能编译成可在需要时动态载入内核的模块5.编译内核注意:2.6内核作了优化,不必显式执行makedep、makebzImage,只需make命令,系统会自动完成makedep、makebzImage所做工作sudomake-j4/4个线程编译,6.编译和安装模块sudomakemodules_install7.安装内核在源码目录下执行makeinstall,此命令为我们全权代理了安装新内核的所有工作,执行完后,就可直接重启,在启动菜单中就有新内核供
11、选择。其完成的工作有3项,见后。sudomakeinstall注意:本人makeinstall时出现下面几个错误,应该是虚拟机VMwareTools模块,直接无视,重新启动系统,出现启动选择菜单,选择新编译的内核菜单,顺利启动并能正常使用。ERROR:modinfo:couldnotfindmodulenf_defrag_ipv6ERROR:modinfo:couldnotfindmodulevmblockERROR:modinfo:couldnotfindmodulevsockERROR:modinfo:couldnotfindmoduleipv6ERROR:modinfo:couldnot
12、findmodulevmhgfs要解决这些错误,只需在配置.config时,将以上模块全设成m,或者直接在.config中将以上项全改成m即可。makeinstall完成的3项工作:1是将编译生成的内核镜像bzImage从源码目录arch/i386/boot复制到/boot,并重命名为vmlinuz-2.6.32.68(根据详细内核版本而定);2是用命令mkinitrdinitrd-2.6.32.682.6.32.68,生成initrd-2.6.32.68.img文件,它用于临时引导硬件到实际内核vmlinuz能够接管并继续引导的状态,将其也复制到/boot目录。注意mkinitrd是RedH
13、at特有命令,其他Linux有类似命令;3是配置grub打开/boot/grub/grub.conf,参加下面代码titleMyLinux-2.6.32.68(这是启动菜单显示的名字)root(hd0,0)/boot放在hd0磁盘的第一个分区kernel/vmlinuz-2.6.32.68roroot=UUID=./详细看grub.conf然后重启,若一切正常即可看到新内核的启动项。8.修改启动菜单注意:本人在CentOS6.5上编译2.6.32.68上未修改启动菜单,安装内核后重启就能看到启动菜单中有新编译的内核。#vim/boot/grub/grub.conf二、驱动开发篇安装完cento
14、s后,编译了一下驱动测试程序Hello。编译经过出现如下错误:make:*/lib/modules/2.6.32-220.4.1.el6.i686/build:Nosuchfileordirectory.Stop.make:*allError2但是用ls查询了一下,该文件明明存在。上网搜集,原来需要安装下面kernel相关的编译软件:1:kernel-firmware2:kernel3:kernel-debug4:kernel-headers5:kernel-doc6:kernel-devel7:kernel-debug-deve安装完成之后,即能够make成功。三、驱动编译及Makefile
15、1.Makefileobj-m:=hello.o/obj-m指的是编译内核模块,obj-y“指的是内核编译;make-C$(KDIR)M=$(PWD)modules/-C指定内核源码所在途径,M=指定待编译module模块所在目录。写好了一个简单hello驱动后,编译模块是出现了问题:1)没有.config文件2)总是出现找不到文件的情况后来才发如今编译模块之前首先要配置并构造内核,准备内核树关于Makefile运行的详细经过,重点介绍为何Makefile被执行了两次;一个简单的hello内核模块的Makefile:#hell0_makefileifneq($(KERNELRELEASE),)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Linux 内核 编译 驱动 开发 命令 步骤 总结
限制150内