分类:
2009-04-10 17:45:53
1)编写内核态程序,hello.c,功能:插入时打印输出Hello,world,退出时打印输出Goodbye, world
参考答案:
#include
#include
MODULE_LICENSE("Dual BSD/GPL");
static int hello_init(void)
{
printk(KERN_EMERG "Hello, world\n");
return 0;
}
static void hello_exit(void)
{
printk(KERN_EMERG"Goodbye, world\n");
}
module_init(hello_init);
module_exit(hello_exit);
2)编写对映的Makefile,执行后生成ko模块,文件存放目录与hello.c一致
参考答案:
obj-m := hello.o
KERNELDIR := /lib/modules/2.6.9-42.EL/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
3)编译hello.c为内核模块程序,并将内核模块插入到modules中,观察结果
参考答案:
make
insmod hello.ko
4)用lsmod查看目前的模块
参考答案:
lsmod
5)用modinfo查看hello模块
参考答案:
modinfo hello.ko
6)列出所有的模块文件
参考答案:
modprobe -l
7)列出所有的模块信息
参考答案:
modprobe -c
8)升级内核redhat es4(2.6.9)-->2.6.23
8.1)删除以前留下的.o文件
8.2)以菜单方式进行内核方式选择
8.3)清除掉以前的.o文件
8.4)制作出核心文件
8.5)制作出模组相关的文件
8.6)安装模组
8.7)产生initrd文件
8.8)安装核心到boot
8.9)编辑menu.lst,加入新核心选项
参考答案:
cd linux-2.6.23/
make mrproper
make menuconfig
保存退出
vi .config
make clean
make bzImage
make modules
make modules_install
mkinitrd /boot/initrd-2.6.23.img 2.6.23
make install
/boot/grub/menu.lst加入以下内容:
title ckhitler Kernel (2.6.23)
root (hd0,1)
kernel /boot/bzImage-2.6.23 ro root=LABEL=/
initrd /boot/initrd-2.6.23.img
1)编写内核态程序,hello.c,功能:插入时打印输出Hello,world,退出时打印输出Goodbye, world
参考答案:
#include
#include
MODULE_LICENSE("Dual BSD/GPL");
static int hello_init(void)
{
printk(KERN_EMERG "Hello, world\n");
return 0;
}
static void hello_exit(void)
{
printk(KERN_EMERG"Goodbye, world\n");
}
module_init(hello_init);
module_exit(hello_exit);
2)编写对映的Makefile,执行后生成ko模块,文件存放目录与hello.c一致
参考答案:
obj-m := hello.o
KERNELDIR := /lib/modules/2.6.9-42.EL/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
3)编译hello.c为内核模块程序,并将内核模块插入到modules中,观察结果
参考答案:
make
insmod hello.ko
4)用lsmod查看目前的模块
参考答案:
lsmod
5)用modinfo查看hello模块
参考答案:
modinfo hello.ko
6)列出所有的模块文件
参考答案:
modprobe -l
7)列出所有的模块信息
参考答案:
modprobe -c
8)升级内核redhat es4(2.6.9)-->2.6.23
8.1)删除以前留下的.o文件
8.2)以菜单方式进行内核方式选择
8.3)清除掉以前的.o文件
8.4)制作出核心文件
8.5)制作出模组相关的文件
8.6)安装模组
8.7)产生initrd文件
8.8)安装核心到boot
8.9)编辑menu.lst,加入新核心选项
参考答案:
cd linux-2.6.23/
make mrproper
make menuconfig
保存退出
vi .config
make clean
make bzImage
make modules
make modules_install
mkinitrd /boot/initrd-2.6.23.img 2.6.23
make install
/boot/grub/menu.lst加入以下内容:
title ckhitler Kernel (2.6.23)
root (hd0,1)
kernel /boot/bzImage-2.6.23 ro root=LABEL=/
initrd /boot/initrd-2.6.23.img
9)安装grub软件到/dev/sda
参考答案:
grub-install /dev/sda
10)进入grub的shell
10.1)先设定/boot目录的那个 partition
10.2)搜索stage1
10.3)搜索内核文件
10.4)安装grub到mbr
参考答案:
grub
root (hd0,0)
find /boot/grub/stage1
find /boot/vmlinuz-2.6.9-42.EL
setup (hd0)