linux 内核分析和应用技术

44
Γ В Linux 内内内内内内内内内 林林林 [email protected] 2003,8

Upload: amos-young

Post on 03-Jan-2016

92 views

Category:

Documents


3 download

DESCRIPTION

Linux 内核分析和应用技术. 林丰波 [email protected] 2003,8. ToC. 推荐讨论主题 推荐小题目 题目: fork 和 signal 题目: shell 编程关键函数 题目:关于线程 题目: Hello 内核模块 题目:使用汇编或特权指令 题目:试验一个 timer 题目: gcc 和 glibc 题目:键盘支持 题目:扩充一个系统调用 题目:截获一个系统调用 题目:审计或识别某种动作 题目: Linux 主要发行版介绍 题目: Linux in VMWare 题目: Gentoo 安装 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Linux 内核分析和应用技术

Γ

В

Linux内核分析和应用技术

林丰波 [email protected]

2003,8

Page 2: Linux 内核分析和应用技术

Γ

В

ToC

• 推荐讨论主题• 推荐小题目• 题目: fork 和 signal• 题目: shell 编程关键函数• 题目:关于线程• 题目: Hello 内核模块• 题目:使用汇编或特权指令• 题目:试验一个 timer• 题目: gcc 和 glibc• 题目:键盘支持• 题目:扩充一个系统调用• 题目:截获一个系统调用• 题目:审计或识别某种动作• 题目: Linux 主要发行版介绍• 题目: Linux in VMWare• 题目: Gentoo 安装• 题目:试用报告 knoppix 等

Page 3: Linux 内核分析和应用技术

Γ

В • 了解 RTOS• 试用 wine 等• 题目:诸许可比较• 题目: Computing 和 Linux• 题目 : VPN in Linux• 题目: Samba 试验• 题目:使用 /proc• 题目:配置 LXR• 题目: xinetd• 题目: wrapper• EMACS• TeX• 读书报告• 综合设计• User-mode linux• uClinux• FaQ

Page 4: Linux 内核分析和应用技术

Γ

В 推荐讨论主题

• Linux 编程概论– make

• make , cvs , autoconf/automake ,– C/C++

• gcc 特性,调试 gdb

– Assembly• as gcc nasm

– Java

Page 5: Linux 内核分析和应用技术

Γ

В -

• 硬件– IA32 :体系、内存管理、特权级、中断机制、

指令手册– IA64 :新的体系和区别– Linux on IA64

• http://www.linuxia64.org/

Page 6: Linux 内核分析和应用技术

Γ

В -

• Linux 网络程序设计– socket– 后台守护进程 daemon

• “Linux 守护进程的编程方法”• fork 、 inittab

• 被 xinetd 调用的进程的编程方法– packet capture ( promiscuous mode )

• libpcap/winpcap , tcpdump/windump/ethereal

• Linux 模块– 内核增强– 设备驱动

Page 7: Linux 内核分析和应用技术

Γ

В -

• 内核变量调控• /proc

• /proc/sys/kernel

• sysctl -a

• 系统调用– 窜改 / 监视– 增强

• 调度– 一般原理– 多 CPU 支持

• 文件系统– 分区加密

• 网络实现– IPv4/IPv6– ipchain, iptable– http://www.netfilter.org/

• 内核新方向新进展– 汉化问题见解– 内核之争

Page 8: Linux 内核分析和应用技术

Γ

В -

• 其他有意义主题– Linux 公司的经营模式– Free/Open 软件的再应用

• 积极参与题目,可以作业报告形式提交,也可在课堂大家讨论。

Page 9: Linux 内核分析和应用技术

Γ

В 推荐小题目

从小处着手,由浅入深出• 访问内核变量和函数

– 比如访问 jiffies

Page 10: Linux 内核分析和应用技术

Γ

В 题目: fork 和 signal

• 体会 fork 和 signal 函数使用– 设计一个程序, fork 出一个子进程

• 子进程可以睡眠或死循环– 子进程接收到 USR1 信号则退出

• 打印提示信息先– 父进程用 wait 等待子进程退出

• 或者 waitpid

• fork 和 singal 在服务器程序设计方面的应用– 结合 socket 的 ClientServer 体制

Page 11: Linux 内核分析和应用技术

Γ

В 题目: shell 编程关键函数

• 写一个简单的 shell– fork()– exec*()– wait/waitpid()– signal()– pipe()– 够了吗?还需要耐心

•若要看 bash的源代码,在– http://www.gnu.org/software/bash/bash.html

Page 12: Linux 内核分析和应用技术

Γ

В 题目:关于线程

• 写示例程序演示在 windows/linux/unix 中关于线程的编程接口– beginthread()/CreateThread()– pthread_create()/…– 请看 #man pthread_create

• 分析和讨论 linux 中是如何支持线程的– 和 fork 的实现比较

• Links– 见备注行

Page 13: Linux 内核分析和应用技术

Γ

В 题目: Hello 内核模块

• 做一个 HelloWorld 内核模块– 类似 printf(“hello,world!”);

• 用两个函数即可– init_module()

• printk(…)

– cleanup_module()

• 这个例子是后续很多小题目的基础,作业上也有实现

Page 14: Linux 内核分析和应用技术

Γ

В 题目:使用汇编或特权指令

• 使用 rdtsc 指令获取 CPU 主频计数器unsigned long low, high;asm ("rdtsc" : "=a" (low), "=d" (high));printf("rdtsc=%lu,%lu\n", high, low);

• 使用 IO 指令– 在用户空间不能执行 in/out 指令,在内核里可以

• “segmentation fault”

– 尝试在模块里用 in/out 指令读取开机 CMOS 信息

• ( 如果有的说 )• 也可以破坏 CMOS 校验和,从而绕过开机口令

asm(“inb $0x70”)cmos.txt

Page 15: Linux 内核分析和应用技术

Γ

В 题目:试验一个 timer

• ./include/linux/timer.h

23 extern void add_timer(struct timer_list * timer);

24 extern int del_timer(struct timer_list * timer);

• 添加计时器,在动作函数中打印 hello 信息• 如果不删除计时器,或者还没到时间就卸载模块

会怎样?– 注意可能会死机,要注意文件存盘先

Page 16: Linux 内核分析和应用技术

Γ

В 题目: gcc 和 glibc

• glibc

• gcc

Page 17: Linux 内核分析和应用技术

Γ

В -

• C Run-Time Libraries in Windows• printf(), memcpy(), fopen(), …

– .h• stdio.h, stdlib.h, string.h,

– .lib– .dll

• Standard C++ Library

Page 18: Linux 内核分析和应用技术

Γ

В 题目:键盘支持

• 键盘是最基本的输入支持设备• 分析内核中是如何管理键盘设备的• 键盘是字符设备

• ./drivers/char/keyboard.c– handle_scancode()

• ctrl_alt_del是怎样实现的?

Page 19: Linux 内核分析和应用技术

Γ

В 题目:扩充一个系统调用

• 找一个空闲的调用号 k– 查看你的内核源代码的源程序– 得针对你正所用的内核版本

• 把 syscall表中的 k位置指向你的调用函数– 不必编译完整的内核– 在模块初始化中做即可

• 在用户程序发起一个对 k 的调用– 使用 int80h ,调用号放在 ? 中

• 如果模块卸载了,用户还调用会怎样?

Page 20: Linux 内核分析和应用技术

Γ

В 题目:截获一个系统调用

• 截获谁有意思呢?– open– read– …

• 写一个自己的 sys_myopen() 函数把 syscall表中的 OPEN项指向自己– 可以在该函数中隐藏某种后门– 在该函数中,做了额外的相关处理之后,不要忘了还得调用旧的 sys_open 函数

– 记得卸载模块时恢复旧的调用

Page 21: Linux 内核分析和应用技术

Γ

В 题目:审计或识别某种动作

• 用户正在访问哪些文件• 是否存在某个进程是个病毒进程 ( 类似等等 )• 用户正在访问哪些站点• 网络接口正在接收或处理哪些异常的包?

– 有网络入侵的尝试在发生吗?

• 尝试做一个方面就行– 或仅仅是设想或论述一下也可

Page 22: Linux 内核分析和应用技术

Γ

В 题目: Linux 主要发行版介绍

• Redhat

• Debian

• SuSE

• Mandrake

• …

Page 23: Linux 内核分析和应用技术

Γ

В 题目: Linux in VMWare

• 两个题目:– Linux in VMWare– Solaris in VMWare

• 另:推荐 Virtual PC

Page 24: Linux 内核分析和应用技术

Γ

В 题目: Gentoo 安装

• Gentoo 的安装真原始,倒是挺锻炼基本功的。

Page 25: Linux 内核分析和应用技术

Γ

В 题目:试用报告 knoppix 等

( 1 ) Knoppix( 2 ) Lindows( 3 ) BeOS• 下载• 安装• 试用

• 报告– 比较、评价

Page 26: Linux 内核分析和应用技术

Γ

В 了解 RTOS

• Realtime Linux

• QNX

• VxWorks

• DOS

• Windows CE .NET

• Windows XP embed

• 试用报告

Page 27: Linux 内核分析和应用技术

Γ

В 试用 wine 等

• WINE

• CrossOver

• WineX

• ?

• 试用报告

Page 28: Linux 内核分析和应用技术

Γ

В 题目:诸许可比较

• GPL

• BSD

• …

• 商业模式

Page 29: Linux 内核分析和应用技术

Γ

В 题目: Computing 和 Linux

• Computing – Super Computing– Parallel Computing– Cluster Computing– Distributed Computing– Grid Computing– NUMA vs. SMP vs. others

• Linux 在 Computing 中的地位和关系• PVM / MPI

Page 30: Linux 内核分析和应用技术

Γ

В -

• Linux集群技术– Beowulf – Legion – Giganet cLAN – Cplant – MOSIX

Page 31: Linux 内核分析和应用技术

Γ

В 题目 : VPN in Linux

• OpenVPN

• Free S/WAN

• OpenVPN 较好操作,建议以 OpenVPN为主,并和 swan 简单比较

• 以 OpenVPN为工具组件虚拟私有网

Page 32: Linux 内核分析和应用技术

Γ

В 题目: Samba 试验

• 配置 samba in Linux

• 从 linux 中访问 windows 的共享目录• 从 windows 中访问 linux 的共享目录

• 报告

Page 33: Linux 内核分析和应用技术

Γ

В 题目:使用 /proc

• 使用 /proc 调整内核运行参数

Page 34: Linux 内核分析和应用技术

Γ

В 题目:配置 LXR

• 用 LXR建立一个 Linux 内核源代码阅读站点

Page 35: Linux 内核分析和应用技术

Γ

В 题目: xinetd

• xindet 的原理和机制

• xindet 中服务程序设计规范

• 举例

Page 36: Linux 内核分析和应用技术

Γ

В 题目: wrapper

• TCP Wrapper

• hosts.deny hosts.allow

Page 37: Linux 内核分析和应用技术

Γ

В EMACS

Page 38: Linux 内核分析和应用技术

Γ

В TeX

Page 39: Linux 内核分析和应用技术

Γ

В 读书报告

• 选择某本相关书籍• 系统阅读• 读书笔记

– 关键内容、实例运行、问题解决• 章节选讲

– 就某个较典型的问题及其相关内容报告

Page 40: Linux 内核分析和应用技术

Γ

В 综合设计

• 例子

设计(硬件+接口+驱动)

Page 41: Linux 内核分析和应用技术

Γ

В User-mode linux

• 主站– http://user-mode-linux.sourceforge.net/

• 介绍短文– 在 http://www-900.ibm.com/cn/

• 查” user mode linux”

Page 42: Linux 内核分析和应用技术

Γ

В uClinux

• ARM+uClinux

Page 43: Linux 内核分析和应用技术

Γ

В 开发工具

• GCC

• Sun ONE Studio

• NetBeans

• Kylix

• Eclipse

• Google(“年度最受用户喜欢开发的工具” )

Page 44: Linux 内核分析和应用技术

Γ

В FaQ