linux版本的安装问题
来源:互联网 发布:ahhhh网络用语什么意思 编辑:程序博客网 时间:2024/05/16 05:00
拿着还是12年买的郭天祥的arm7开发板,重新学习uclinux相关内容,首先在虚拟机中安装redhat4,以前一直是井底之蛙,现在才知道别说redhat4了,就是redhat9都是老掉牙的东西了,apt-get for redhat4 没有,看到for redhat9有,就下了,结果安装教程不明朗确定,问题百出,遂放弃直接用ubuntu14 高级货。。。这说明还是要紧跟时代的步伐,老学些老掉牙的东西,不仅知识体系是旧的,而且很麻烦,学着很痛苦。
首先还是用虚拟机装的ubuntu14,装好后巨卡,也难怪,同时又win7和ubuntu运行,我这华硕破电脑担待不起,于是用U盘启动在d盘安装了ubuntu14 麒麟版本。果然比土的掉渣的redhat9 炫酷多了,很有苹果mac os 的感觉。小激动后,准备研究linux内核的第一步工作:即建立内核树,这个内核树到底是个什么概念,现在其实也没搞清楚,先不管了,毕竟知识是一步步学的,不要让前面太多分支的东西干扰主线,后面有基础了回过头来再学就轻松了。
百度,翻墙google,搞清基本步骤:
(1)$apt-get install build-essential kernel-package libncurses5-dev libncurses5 ,把工具安装了,没管具体有啥用,先安了再说,还是那句话,对于初学者,如果抱着什么都想立马知道,会学得很痛苦,先把当前的事干好了再说;
(2)apt-get install linux-source-2.6.32 下载内核,那个版本号可以搜下最新的;
(3)解压缩 用 tar -gxvf path(linux-source的路径);
(4)make menuconfig ,save和load 都是.config
(5)开始编译 make -j4(笔记本双核)(忘了多久,反正从晚上7点多到第二天早上弄编译好了);
(6)make bzImage 可以看到在当前目录下生成了一个新的文件: vmlinux, 其属性为-rwxr-xr-x ;
(7)make modules ;
(8)make modules_install 搞定 内核树建立好了
(9)选个目录建立一个linuxq文件夹,里面好放例子,比如helloworld驱动例子,需要hello.c Makefile 两个文件,代码分别为:
//hello.c
#include <linux/init.h>
#include <linux/module.h>
MODULE_LICENSE("Dual BSD/GPL");
static int hello_init(void)
{
printk(KERN_ALERT "Hello, world\n");
return 0;
}
static void hello_exit(void)
{
printk(KERN_ALERT"Goodbye, cruel world\n");
}
module_init(hello_init);
module_exit(hello_exit);
//Makefile
obj-m := hello.o
KERNELDIR := /lib/modules/2.6.32-21-generic/build
PWD := $(shell pwd)
modules:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
modules_install:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install
clean:
rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions $(TARGET)
需要注意的是makefile的格式$(MAKE)前面要加个tab.
make 编译,不出现错误的话,用ls -al查看linux_modules目录下产生了如下文件:
hello.c hello.mod.c hello.o modules.order
hello.ko hello.mod.o Makefile Module.symvers
其中hello.ko就是可加载的模块文件
现在我们就可以将编译好的模块helloworld加载到内核中去了
#insmod ./hello.ko //这个命令把hello.ko加载到内核
#lsmod|grep hello //lsmod 这个命令可以查看当前所有的驱动模块,结果应该显示hello 680 0
#rmmod hello //这个命令是把hello这个模块移除掉
程序的输出结果可以在
/var/log/syslog文件中查看
Hello,World
Goodbye,cruel world
这是程序的输出。
- linux版本的安装问题
- linux下安装java版本的问题
- 虚拟机安装linux,版本选择只有32位的问题
- MongoDB32位linux版本在安装中遇到的问题
- [linux问题及解决] jdk版本问题-非最新安装的版本
- VMware安装版本的问题
- 安装oracle的版本问题
- 解决Linux下Python安装版本问题
- linux版本qq的安装
- 关于Linux的版本问题
- genymotion的2.5版本的安装问题
- 考考你。腾讯QQ Linux版本安装过程遇到的问题。(操作系统debian etch)
- 安装Ubuntu版本linux过程中没有提示设置root用户密码问题的解决办法
- Linux下安装subversion1.7或更高版本问题的解决
- 安装Ubuntu版本linux过程中没有提示设置root用户密码问题的解决办法
- 在Linux下安装jdk完成后,java -version显示版本不对的问题
- 在Linux下安装jdk完成后,java -version显示版本不对的问题
- 关于eclipseUML free版本的安装问题
- 写在前面的话
- 使用python的map和reduce统计词频
- 【剑指Offer面试编程题】题目1507:不用加减乘除做加法--九度OJ
- 20个jQuery、CSS3和html5最新插件
- 第三章栈和队列总结
- linux版本的安装问题
- 用户体验设计
- AFNetworking json解析报错 unrecognized selector sent to instance
- dubbo总结1
- django cpu监控之五-----前台监控页面
- Altium Designer 轻松上手
- Linux下常用目录的作用
- ZOJ3582---Back to the Past
- [extjs3.4]同步请求