第六章 用户接口实验课件.ppt
文本预览下载声明
第六章 用户接口实验 ;6.2.1 控制台命令接口;6.2.2 添加系统调用 ;# define __NR _foo 222
ENTRY(sys_call_table)
.long SYSMBOL_NAME(sys_ni_syscall)
.long SYSMBOL_NAME(sys_exit)
.long SYSMBOL_NAME(sys_fork)
...
?
.long SYSMBOL_NAME(sys_foo) ;3.重新编译内核;4.使用新编译的内核
cp –a /usr/src/linux-2.4.2/arch/i386/boot/bzImage /boot
5.重新配置/etc/lilo.conf 文件
vi /etc/lilo.conf
image=/boot/bzImage #启动内核的位置, 即自己新配置的内核所在目录
label=xhlinux #给内核起一个名称, 配置完成, 重新启动的时候, 会显示这个名称;
#用户可以选择该项, 重启后, 系统将进入你新配置的内核进行引导。;read_only #定义新的内核为只读
root=/dev/hda5 #定义硬盘的启动位置是/dev/hda5, 在该设计中没有变
#仿照以前内核引导的位置, 不用修改, 用以前的就可以
6.完成以上配置后,重新启动系统进入自己的新系统。;6.3 实验内容
? 6.3.1 控制台命令接口实验
查看Bash版本
编写Bash脚本,统计/my目录下c语言文件的个数
? 6.3.2 系统调用实验
一、编程调用一个系统调用fork(),观察结果
二、编程调用创建的系统调用foo(),观察结果
三、自己创建一个系统调用mycall(),实现功能:打印字串到屏幕上
四、编程调用自己创建的系统调用
6.4 实验指导;一.查看Bash版本
$echo $BASH_VERSION
二.编写Bash脚本,统计/my目录下c语言文件的个数
cd /home/student #在home/student目录下编程
vi count
#! /bin/bash
function count
{
echo –n Number of matches for $1: #接收程序的第一个参数
ls $1|wc –l #对子程序的第一个参数所在的目录进行操作
} ;mkdir my
cd my
vi 1.c #在my目录下建立几个c文件, 以便用来程序测试
...
cd ...
chmod +x count
count ./my/*.c ;6.4.2 系统调用实验指导 ;下面是可能得到的一种结果:;二.编程调用创建的系统调用foo( ); printf(This is the result of new kernel\n);
printf(%d,j);
}
gcc –o –I /usr/src/linux-2.4.2/include test.c
./test
;三.创建系统调用mycall();[root@linuxserver root]# make menuconfig // 配置新内核
[root@linuxserver root]# make dep // 创建新内核
[root@linuxserver root]# make modules_install // 加入模块
[root@linuxserver root]# make clean // 清除多余创建的文件
[root@linuxserver root]# make bzImage // 生成可执行内核引导文件
[root@linuxserver root]# cp /usr/src/linux/arch/i386/boot/bzImage /boot/
[root@linuxserver root]# /sbin/lilo ;四.编程调用自己创建的系统调用;谢谢聆听!第六章 用户接口实验 ;6.2.1 控制台命令接口;6.2.2 添加系统调用 ;# define __NR _foo 222
ENTRY(sys_call_table)
.long SYSMBOL_NAME(sys_ni_syscall)
.long SYSMBOL_NAME(sys_exit)
.long SYSMBOL_NAME(sys_fork)
...
?
.long SYSMBOL_NAME(sys
显示全部