Presentation is loading. Please wait.

Presentation is loading. Please wait.

National Taiwan University OS Project 0 & 1 Advisor: Dr. Chih-Wen Hsueh Student: Tang-Hsun Tu 台灣大學 網媒所 / 資工所 Wireless Networking and Embedded Systems Laboratory.

Similar presentations


Presentation on theme: "National Taiwan University OS Project 0 & 1 Advisor: Dr. Chih-Wen Hsueh Student: Tang-Hsun Tu 台灣大學 網媒所 / 資工所 Wireless Networking and Embedded Systems Laboratory."— Presentation transcript:

1 National Taiwan University OS Project 0 & 1 Advisor: Dr. Chih-Wen Hsueh Student: Tang-Hsun Tu 台灣大學 網媒所 / 資工所 Wireless Networking and Embedded Systems Laboratory Real-Time System Software Group December 21, 2015

2 National Taiwan University Tang-Hsun Tu /552  Linux Installation  Linux Kernel Compilation  System Call Outline

3 National Taiwan University Linux Installation

4 National Taiwan University Tang-Hsun Tu /554  Including shells, libraries, tools, compiler, servers, applications.  Ubuntu, Redhat, Fedora, Mandrake, SuSE, Debian, Ubuntu, Gentoo…  Live CDs  You can make your own Linux distribution  This slide is based on Ubuntu 10.04 LTS Linux Distribution

5 National Taiwan University Tang-Hsun Tu /555  Modify the boot sequence to boot your computer from CD-ROM  Make sure your hardware and device  A clear head and relaxed mind  Some drinks and food Before Installation

6 National Taiwan University Tang-Hsun Tu /556

7 National Taiwan University Tang-Hsun Tu /557

8 National Taiwan University Tang-Hsun Tu /558  /dev/hda, /dev/hdb, /dev/hdc, … /dev/hda1, /dev/hda2, …  /dev/sda, /dev/scd0, …  Mount Points / /swap … Disks and Partitions

9 National Taiwan University Tang-Hsun Tu /559  Swap partition is usually twice as RAM when it is less than 1GB  No more than four primary partition including root partition and swap partition  If four isn’t enough, use extend partition  Make sure all your mount points are correct Partition Division

10 National Taiwan University Tang-Hsun Tu /5510

11 National Taiwan University Tang-Hsun Tu /5511

12 National Taiwan University Tang-Hsun Tu /5512

13 National Taiwan University Tang-Hsun Tu /5513  After dividing partitions, you only need to click your mouse.  After installation, reboot and enjoy your Linux!  Installation by text mode is the same as graphic mode End of Installation

14 National Taiwan University Tang-Hsun Tu /5514  鳥哥的私房菜 http://linux.vbird.org/  Ubuntu 正體中文站 http://www.ubuntu-tw.org/  Ubuntu Homepage http://www.ubuntu.com/ Reference

15 National Taiwan University Linux Kernel Compilation

16 National Taiwan University Tang-Hsun Tu /5516  Kernel is the core of an operating system. Scheduler, task management, memory management, …  You need to compile kernel source code to binary in order to run. What is Linux Kernel?

17 National Taiwan University Tang-Hsun Tu /5517  You can configure your Linux by compiling a new kernel. Add new features, ex. patch kernel. Support new hardware. Disable functions you don’t need. Develop your own kernel.... When Should We Compile Kernel?

18 National Taiwan University Tang-Hsun Tu /5518  Kernel Website, http://www.kernel.orghttp://www.kernel.org  You also can download the source from Ubuntu. Where to D/L Linux Kernel?

19 National Taiwan University Tang-Hsun Tu /5519  You need to be root to compile kernel sudo -i  Download the necessary tools apt-get update apt-get install kernel-package gcc libncurses5-dev automake gcc libc6-dev build-essential  Go to System/Administration/synaptic package Manager or http://www.kernel.org/http://www.kernel.org/ Get the kernel source code e.g. 2.6.35.5 Prepare Your Kernel Source Code

20 National Taiwan University Tang-Hsun Tu /5520  Unzip kernel source code. cd /usr/src tar jxvf linux-source-2.6.X.tar.bz2  You may have many versions of Linux source codes. Prepare Your Kernel Source Code (Cont)

21 National Taiwan University Tang-Hsun Tu /5521  There are many ways to configure. make config make menuconfig make xconfig...  If you do not know how to configure, you can copy the old config file from /boot. make mrproper cp /boot/config-`uname -r`.config make menuconfig Configure your Kernel

22 National Taiwan University Tang-Hsun Tu /5522 Configure your Kernel (Cont)

23 National Taiwan University Tang-Hsun Tu /5523  If you meet some problems (SATA) Device Drivers --->  SCSI device support --->  SCSI device support  SCSI disk support Device Drivers --->  SCSI device support --->  SCSI low-level drivers --->  [*] Serial ATA (SATA) support Configure your Kernel (Cont)

24 National Taiwan University Tang-Hsun Tu /5524  #make clean  #make bzImage  #make modules  #make modules_install  #make install  #mkinitramfs –o /boot/initrd.img-2.6.x 2.6.x Kernel Compilation

25 National Taiwan University Tang-Hsun Tu /5525  See how many cores/hyperthreading on your machine cat /proc/cpuinfo | grep processor | wc –l e.g. 8  Compile with the number of jobs make –j8 bzImage make –j8 modules... Speed up Kernel Compilation

26 National Taiwan University Tang-Hsun Tu /5526  Setup your boot manager. vim /boot/grub/menu.lst  Add the following section (Grub1): title Ubuntu 10.04 LTS, kernel 2.6.35.5 uuid xxxx kernel /boot/vmlinuz-2.6.35.5 root=UUID=xxxx ro splash initrd /boot/initrd.img-2.6.35.5 Configure your Boot Menu

27 National Taiwan University Tang-Hsun Tu /5527  Setup your boot manager. vim /boot/grub/grub.cfg  Add the following section (Grub2): Configure your Boot Menu (Cont)

28 National Taiwan University Tang-Hsun Tu /5528  Install ssh server apt-get install ssh  A ssh client on Windows. http://ntu.csie.org/~piaip/pietty/ Some Useful Tools

29 National Taiwan University Tang-Hsun Tu /5529  鳥哥的私房菜 http://linux.vbird.org/  Google http://www.google.com/ Reference

30 National Taiwan University System Call

31 National Taiwan University Tang-Hsun Tu /5531  System call is the mechanism used by an application program to request service from the OS.  Users can use it to communicate with kernel.  Here are two approaches developing our own system calls Using kernel module Modify the source code of linux directly Introduction

32 National Taiwan University Tang-Hsun Tu /5532  Building system calls in kernel module is more flexible than modifying kernel. When we want to use our system call, just install our kernel modules; and if we don’t need it right away, just remove modules. Modifying kernel is not necessary. (But you still need to modify your kernel for O.S. project one.) Using Kernel Module

33 National Taiwan University Tang-Hsun Tu /5533  For sys_call_table, your should extern it in a file such as /arch/x86/kernel/i386_ksyms_32.c. Export sys_call_table extern void* sys_call_table[]; /*variable should be exported. */ EXPORT_SYMBOL(sys_call_table); 01 02 03

34 National Taiwan University Tang-Hsun Tu /5534  sys_call_table is read-only after kernel version 2.6.23.  If you really want to try this method using kernel version which is higher than 2.6.23, you will have to modify your current kernel source and recompile it. Export sys_call_table (Cont)

35 National Taiwan University Tang-Hsun Tu /5535  Firstly, check your compiled kernel version uname –a  In x86 32bit vim /usr/src/linux-2.6.x/arch/x86/kernel/ entry_32.S.section.rodata, “a” .section.data, “aw” Export sys_call_table (Cont)

36 National Taiwan University Tang-Hsun Tu /5536  In x86 64bit vim /usr/src/linux- 2.6.x/arch/x86/kernel/syscall_64.c line 22: delete the “const” Export sys_call_table (Cont)

37 National Taiwan University Tang-Hsun Tu /5537  Add to export symbol vim /usr/src/linux-2.6.x/kernel/kallsyms.c extern void *sys_call_table; EXPORT_SYMBOL(sys_call_table); Export sys_call_table (Cont)

38 National Taiwan University Tang-Hsun Tu /5538  vim makefile  vim myservice.c Write Your Makefile

39 National Taiwan University Tang-Hsun Tu /5539  Include and Define  Extern the “sys_call_table”  Write your own system call Write Kernel Module #include /* We're doing kernel work */ #include #define __NR_mysyscall 200 /* define the number of our system call */ 01 02 03 typedef void (*sys_call_ptr_t)(void); extern sys_call_ptr_t sys_call_table[]; sys_call_ptr_t orig_sys_call; 01 02 03 /* Our system call */ asmlinkage int mysyscall(int n) { printk("enter mysyscall()\n"); return 2*n; } 01 02 03 04 05

40 National Taiwan University Tang-Hsun Tu /5540  Initialize the kernel module  Extern the “sys_call_table” Write Kernel Module (Cont) /* Initialize the module - replace the system call */ int init_module() { printk("Insert mysyscall module\n"); orig_sys_call = sys_call_table[__NR_mysyscall]; sys_call_table[__NR_mysyscall] = mysyscall; return 0; } 01 02 03 04 05 06 07 /* Cleanup - unregister the appropriate file from /proc */ void cleanup_module() { printk("Remove mysyscall module\n"); sys_call_table[__NR_mysyscall] = orig_sys_call; } 01 02 03 04 05

41 National Taiwan University Tang-Hsun Tu /5541  Compile make  Insert the module to kernel insmod./myservice.ko  Remove the module from kernel rmmod myservice  List the modules in kernel lsmod Use Kernel Module

42 National Taiwan University Tang-Hsun Tu /5542  Write an application to use your system call vim ap.c  Compile and execute gcc ap.c –o ap./ap 10 User Application #include #define _GNU_SOURCE #include #define __NR_mysyscall 200 int main(int argc,char *argv[]) { printf("%d\n", syscall(__NR_mysyscall, atoi(argv[1]))); return 0; } 01 02 03 04 05 06 07 08 09 10 11 12 13

43 National Taiwan University Tang-Hsun Tu /5543  Here are two approaches developing our own system calls Using kernel module Modify the source code of Linux directly Build Your Own System Calls

44 National Taiwan University Tang-Hsun Tu /5544  Create a new file in /usr/src/linux- 2.6.x/kernel/ vim myservice.c  Add your system call Write Your System Call #include asmlinkage int sys_myservice(int arg1) { printk("my service is invoked!\n"); return arg1 * 10; } 01 02 03 04 05 06 07 08

45 National Taiwan University Tang-Hsun Tu /5545  In x86 32bit /usr/src/linux-2.6.x/arch/x86/include/asm/ unistd_32.h  The index must be the last in the list e.g. #define __NR_myservice 338 Write Your System Call (Cont) - x86_32

46 National Taiwan University Tang-Hsun Tu /5546  Create an entry (function name) in system call table /usr/src/linux-2.6.x/arch/x86/kernel/ syscall_table_32.S.long sys_myservice Write Your System Call (Cont) - x86_32

47 National Taiwan University Tang-Hsun Tu /5547  In x86 64bit /usr/src/linux-2.6.x/arch/x86/include/asm/ unistd_64.h  The index must be the last in the list #define __NR_myservice 300 __SYSCALL(__NR_myservice, sys_myservice) Write Your System Call (Cont) - x86_64

48 National Taiwan University Tang-Hsun Tu /5548  Define the prototype /usr/src/linux-2.6.x/include/linux/syscalls.h #define asmlinkage int sys_myservice(int arg1); Write Your System Call (Cont)

49 National Taiwan University Tang-Hsun Tu /5549  Add to makefile to compile vim /usr/linux-2.6.x/kernel/Makefile obj-y += myservice.o  Now, you can recompile your kernel Write Your System Call (Cont)

50 National Taiwan University Tang-Hsun Tu /5550  Write an application to use your system call vim ap.c  Compile and execute gcc ap.c –o ap./ap 10 User Application #include #define _GNU_SOURCE #include #define __NR_myservice 300 int main(int argc,char *argv[]) { printf("%d\n", syscall(__NR_myservice, atoi(argv[1]))); return 0; } 01 02 03 04 05 06 07 08 09 10 11 12 13

51 National Taiwan University Tang-Hsun Tu /5551  Since we want measure the number of sent signals and called sys_kill(), we might need to add a counter to system call “kill()” in /usr/src/Linux-2.6.x/kernel/signal.c. e.g. int nr_kills;  If you want to use this variable in your system call or kernel module, you have to export it. EXPORT_SYMBOL(nr_kills);  printk can print messages in kernel, use dmesg to check. Hints

52 National Taiwan University Tang-Hsun Tu /5552  Results Hints (Cont) 1. 2. 3.

53 National Taiwan University Tang-Hsun Tu /5553  LXR, http://rswiki.csie.org/lxr/http/sourcehttp://rswiki.csie.org/lxr/http/source Some Useful Tool

54 National Taiwan University Tang-Hsun Tu /5554  Manpages apt-get install manpages-dev Some Useful Tool (Cont)

55 National Taiwan University Tang-Hsun Tu /5555  Kernel Website http://www.kernel.org  LXR http://rswiki.csie.org/lxr/http/source http://lxr.linux.no/linux/  Google http://www.google.com/ Reference

56 National Taiwan University Tang-Hsun Tu /5556 Q & A


Download ppt "National Taiwan University OS Project 0 & 1 Advisor: Dr. Chih-Wen Hsueh Student: Tang-Hsun Tu 台灣大學 網媒所 / 資工所 Wireless Networking and Embedded Systems Laboratory."

Similar presentations


Ads by Google