博客:http://blog.youkuaiyun.com/muyang_ren
一、制作内核错误
(1)make uImage
"mkimage" command not found - U-Boot images will not be built
make[1]: *** [arch/arm/boot/uImage] 错误 1
make: *** [uImage] 错误 2
解决方法:
如果要生成uImage,需要mkimage这个工具,此工具是在编译uboot的时候生成的,是用来生成uImage的工具。在编译uboot生成mkimage工具后,需要将此工具拷贝到ubuntu的/usr/bin目录下,并需要修改此文件的权限为可执行的。
(2)tar -xvf filesystem.tar.gz
tar: filesystem/dev/console:无法 mknod: 不允许的操作
filesystem/proc/
tar: 由于前次错误,将以上次的错误状态退出
解决方法:
使用root用户就可以实现解压缩
(3)rmmod hello
rmmod: chdir(/lib/modules): No such file or directory
解决方法:
mkdir /lib/modules
----------------------------------------------------------------------------------------
rmmod: chdir(3.0.8): No such file or directory
解决方法:
mkdir /lib/modules/3.0.8
(4)modinfo hello.ko
modinfo: can't open '/lib/modules/3.0.8/modules.dep': No such file or directory
解决方法:
mkdir /lib/modules/3.0.8/modules.dep
(5)简单makefile分析
//分析Makefile
ifeq ($(KERNELRELEASE),) //KERNELRELEASE宏定义
KERNELDIR =/home/farsight/work/kernel/linux-3.0.8 //内核源码所在路径
PWD =$(shell pwd) //内核模块hello.c所在路径
modules: //进入内核源码所在路径(KERNELDIR), 获取其中的Makefile(MAKE), 并利用Makefile将*.c -> *.o文件,同时将KERNELRELEASE赋值
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules //(1)
cp hello.ko /opt/filesystem/s5pv210 //(3)
modules_install: //这句没有执行
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install
clean:
rm -rf *.so *.o *.ko .tmp_versions *.mod.c *.order *.symvers
else
obj-m :=hello.o //hello.o -> hello.ko //(2)
endif