qemu模拟开发板问题记录

问题现象:

guang@arm-vexpress:/ # ls
bin lib mnt sys usr
dev linuxrc proc test var
etc lost+found sbin tmp
guang@arm-vexpress:/ # cd test/
guang@arm-vexpress:/test # insmod qemu.ko
qemu: loading out-of-tree module taints kernel.
guang@arm-vexpress:/test # lsmod
qemu 16384 0 - Live 0x7f000000 (O)
guang@arm-vexpress:/test # insmod qemu.ko
insmod: can’t insert ‘qemu.ko’: File exists

问题1:如上,首次加载ko,提示out-of-tree,lsmod确显示ko已加载,insmod会报ko已经存在,wiki参考说是“内核在编译的时候选择支持内核签名机制,据说在3.7版本后面就支持”,不太确定,wiki地址:https://blog.csdn.net/Guet_Kite/article/details/73175991?locationNum=3&fps=1

guang@arm-vexpress:/test # rmmod qemu.ko
[Info]Hello! Enter QEMU.
guang@arm-vexpress:/test # insmod qemu.ko
[Info]Hello! Exit QEMU.
guang@arm-vexpress:/test # lsmod
qemu 16384 0 - Live 0x7f010000 (O)
guang@arm-vexpress:/test # rmmod qemu.ko
[Info]Hello! Enter QEMU.
guang@arm-vexpress:/test # lsmod
guang@arm-vexpress:/test #

问题2,如下,insmod和rmmod的log正好相反,很奇怪

guang@arm-vexpress:/test # lsmod
guang@arm-vexpress:/test # insmod qemu.ko
[Info]Hello! Exit QEMU.
guang@arm-vexpress:/test # rmmod qemu.ko
[Info]Hello! Enter QEMU.
guang@arm-vexpress:/test #
这里写图片描述

源码如下:

// qemu.c
#include <linux/init.h>
#include <linux/module.h>

static int __init qemu_init (void)
{
        printk (KERN_INFO"[Info]Hello! Enter QEMU.");
        return 0;
}
module_init (qemu_init);

static void __exit qemu_exit (void)
{
        printk (KERN_INFO"[Info]Hello! Exit QEMU.");
}
module_exit (qemu_exit);

MODULE_AUTHOR ("Guang-kylin");
MODULE_LICENSE ("GPL v2");
MODULE_DESCRIPTION ("A simple qume test module");
MODULE_ALIAS ("QEMU module");
// makefile
KDIR=/home/guang/Develop/linux-stable
PWD=$(shell pwd)

# Kernel modules
obj-m += qemu.o
module-objs = qemu.o

ARCH=arm
CROSS_COMPILE=arm-linux-gnueabi-

CC := $(CROSS_COMPILE)gcc
LD := $(CROSS_COMPILE)ld

#EXTRA_CFLAGS=-g -O0

default:
        make -C $(KDIR) M=$(PWD) modules
clean:
        rm -f *.ko *.o *.mod.c *.symvers *.order

猜你喜欢

转载自blog.csdn.net/skyleemon/article/details/80659950