Presentation is loading. Please wait.

Presentation is loading. Please wait.

OS Project 0 February 25, 2015. Outline  Linux Installation  Linux Kernel Compilation  System Call Development  Kernel Modules / 452.

Similar presentations


Presentation on theme: "OS Project 0 February 25, 2015. Outline  Linux Installation  Linux Kernel Compilation  System Call Development  Kernel Modules / 452."— Presentation transcript:

1 OS Project 0 February 25, 2015

2 Outline  Linux Installation  Linux Kernel Compilation  System Call Development  Kernel Modules / 452

3 Part I Linux Installation

4 Kernel versus Distribution / 454  Kernel is the core of the operating system including scheduler, memory management, file system, etc.  Distribution is a full functional environment including the kernel and a large collection of software applications.  The following slides are based on Ubuntu 12.04.4 (desktop version).  Download Link:  http://ftp.twaren.net/Linux/Ubuntu/ubuntu-cd/precise/ubuntu-12.04.4- desktop-amd64.iso (64-bit) http://ftp.twaren.net/Linux/Ubuntu/ubuntu-cd/precise/ubuntu-12.04.4- desktop-amd64.iso  http://ftp.twaren.net/Linux/Ubuntu/ubuntu-cd/precise/ubuntu-12.04.4- desktop-i386.iso (32-bit) http://ftp.twaren.net/Linux/Ubuntu/ubuntu-cd/precise/ubuntu-12.04.4- desktop-i386.iso

5 Preparation (1/2) / 455  A computer  An Ubuntu 12.04 DVD or image  A clear head and relaxed mind  Some drinks, food, or comics

6 Preparation (2/2) / 456  If you want to install Linux on your hard disk, please set at least 16GB unpartitioned space.  You may want to shrink your existing disk by disk management if there is no more unpartitioned space.  Ubuntu can coexist with Windows.  Change the boot sequence to boot from CD-ROM first.  If you want to install Linux on a virtual machine, you can use VirtualBox or VMware.  VirtualBox Website: https://www.virtualbox.org/https://www.virtualbox.org/  Please refer to this website for creating a VM in VirtualBox.website

7 / 457

8 8

9 9

10 10

11 / 4511

12 / 4512

13 / 4513

14 / 4514

15 Some Useful Commands / 4515  Installing packages in Ubuntu  $ apt-cache search xxxx  $ sudo apt-get install xxxx  GNU Compiler Collection  $ gcc -o test test.c  $./test  Makefile  $ make  Text-mode editor  $ vim  SSH server and client  $ ssh -p port user@hostname

16 Some Useful Tools / 4516  SSH server  $ sudo apt-get install ssh  SSH client for Windows  PieTTY  http://ntu.csie.org/~piaip/pietty/ http://ntu.csie.org/~piaip/pietty/

17 References / 4517  鳥哥的私房菜  http://linux.vbird.org http://linux.vbird.org  Ubuntu 正體中文站  http://www.ubuntu-tw.org http://www.ubuntu-tw.org  Ubuntu Homepage  http://www.ubuntu.com http://www.ubuntu.com

18 Part II Linux Kernel Compilation

19 When Should We Compile Kernel? / 4519  There are various situations we have to compile the kernel.  Try new kernel patches for the latest laptops.  Enable/disable features built in the kernel.  Develop new features.  …  This slides are based on Linux 3.13.2.  http://ftp.ntu.edu.tw/linux/kernel/v3.x/linux-3.13.2.tar.xz http://ftp.ntu.edu.tw/linux/kernel/v3.x/linux-3.13.2.tar.xz

20 Download Source Archives / 4520  Kernel Website: http://www.kernel.orghttp://www.kernel.org Mirror: http://ftp.ntu.edu.tw/linux/kernel/v3.x/

21 Preparation / 4521  Setting up build environment  $ sudo apt-get update  $ sudo apt-get install gcc vim ssh libncurses5- dev  Getting the source archive  $ cd ${HOME}  $ wget http://www.kernel.org/pub/linux/kernel/v3.0/linux -3.X.X.tar.xz  Extracting the archive  $ tar Jxvf linux-3.X.X.tar.xz  $ cd linux-3.X.X

22 Kernel Configuration (1/2) / 4522  There are several ways to configure the kernel.  $ make config  $ make menuconfig  $ make xconfig  (It will need qt4-qmake and qt4-dev-tools packages.) ...  If you do not know how to configure, you can copy the old configuration file from /boot.  $ cp /boot/config-`uname -r`.config  $ make olddefconfig  $ make menuconfig  This step is optional.

23 Kernel Configuration (2/2) / 4523

24 Kernel Compilation / 4524  The first time (about 30min ~ 1.5hr):  $ make bzImage  $ make modules  (It takes quite a long time.)  $ sudo make modules_install  $ sudo make install  $ sudo mkinitramfs -o /boot/initrd.img-3.X.X 3.X.X  Do this whenever you reinstall the modules.  Configure the boot loader and then reboot!  Others (about 5~10min):  $ make bzImage  $ sudo make install  Then reboot!

25 Kernel Compilation with Multiple Cores / 4525  See how many cores on your machine.  $ cat /proc/cpuinfo | grep processor | wc -l  E.g., 4.  Compile with the number of jobs (threads).  $ make -j4 bzImage  $ make -j4 modules ...

26 Boot Loader Configuration (Optional) / 4526  Ubuntu will do this for you when installing the kernel.  Adding a new entry to /boot/grub/grub.cfg  If you got a black screen after booting the new kernel  Change ‘ gfxmode $linux_gfx_mode ’  ‘ gfxmode text ’

27 Rebooting / 4527  Do not forget to reboot every time you install a new kernel image!  You can use ‘ uname -a ’ to check current system information.

28 Part III System Call Development

29 Preparation / 4529  Find out whether the kernel is 32-bit or 64-bit version.  $ uname -p  32-bit: i386 i686  64-bit: x86_64

30 Adding a System Call (1/4) / 4530  Define your system calls.  Create a new file kernel/myservice.c.  Add this new attribute to kernel/Makefile.  obj-y += myservice.o #include asmlinkage int sys_myservice(int arg1) { printk(“My service is invoked!\n"); return arg1 * 10; } 01 02 03 04 05 06 07 08

31 Adding a System Call (2/4) / 4531  Declare the prototype of your system calls.  Add the declaration to include/linux/syscalls.h.  asmlinkage int sys_myservice(int arg1);

32 Adding a System Call (3/4) / 4532  Register a system call number (32-bit).  For Linux 3.X, it has a automatic way to generate system calls compared to the previous versions.  Add a new entry to arch/x86/syscalls/syscall_32.tbl.  350i386myservicesys_myservice  The generated file is in arch/x86/include/generated/uapi/asm, after compilation.

33 Adding a System Call (4/4) / 4533  Register a system call number (64-bit).  Add a new entry to arch/x86/syscalls/syscall_64.tbl.  313commonmyservicesys_myservice  The generated file is in arch/x86/include/generated/uapi/asm, after compilation.

34 System Call Invocation / 4534  Create a test file ap.c to try your system call.  Compile & execute.  $ gcc -o ap ap.c  $./ap 10 #include #define _GNU_SOURCE #include #define __NR_myservice 350 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

35 Related APIs / 4535  Access a block of data from/to user space in the kernel.  #include  unsigned long copy_from_user (void* to, const void __user* from, unsigned long n);  unsigned long copy_to_user (void __user* to, const void* from, unsigned long n);  Use the generic function syscall to invoke a specific system call in user space.  #include  int syscall(int number,...);  The first argument, number, is the system call number.

36 Some Useful Tools (1/2) / 4536  LXR Website: http://lxr.linux.no/linux/http://lxr.linux.no/linux/

37 Some Useful Tools (2/2) / 4537  Manpages  $ sudo apt-get install manpages-dev  $ man XXXX

38 References / 4538  Kernel Website  http://www.kernel.org http://www.kernel.org  LXR  http://lxr.linux.no/linux/ http://lxr.linux.no/linux/

39 Part IV Kernel Modules

40 An Example of Writing a Kernel Module (1/5) / 4540  Definition of the module structure

41 An Example of Writing a Kernel Module (2/5) / 4541  Initialization and cleanup functions

42 An Example of Writing a Kernel Module (3/5) / 4542  File operations

43 An Example of Writing a Kernel Module (4/5) / 4543  User AP

44 An Example of Writing a Kernel Module (5/5) / 4544  Makefile  Testing  $ sudo insmod hello.ko  $ dmesg  $ sudo./ap  $ dmesg  $ sudo rmmod hello

45 Q & A / 4545


Download ppt "OS Project 0 February 25, 2015. Outline  Linux Installation  Linux Kernel Compilation  System Call Development  Kernel Modules / 452."

Similar presentations


Ads by Google