linux内核题,linux内核编译与模组管理练习题

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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值