OS Homework 1 February 22, 2017.

Slides:



Advertisements
Similar presentations
Drivers and the kernel1-1 Drivers and the kernel UNIX system has three layers: m The hardware m The operating system kernel m The user-level programs Kernel.
Advertisements

Computer System Laboratory
Linux Installation Chapter II. Linux Distributions Pre-packaged, installable Linux Anyone can compile a distribution, have to inculde GPL Available for.
Project #2, Linux Kernel Modifications CS-502 Fall Programming Project #2 Linux Kernel Hacking CS-502 Operating Systems Fall 2006.
Tutorial and Demos on Linux Virtual Machine
Computer System Laboratory
WINDOWS 7 AND UBUNTU INSTALLING LINUX WITHIN WINDOWS.
Red Hat Installation. Installing Red Hat Linux is the process of copying operating system files from a CD, DVD, or USB flash drive to hard disk(s) on.
National Taiwan University OS Project 0 & 1 Advisor: Dr. Chih-Wen Hsueh Student: Tang-Hsun Tu 台灣大學 網媒所 / 資工所 Wireless Networking and Embedded Systems Laboratory.
LINUX System : Lecture 3 Vmware, Cygwin, LINUX installation Bong-Soo Sohn Assistant Professor School of Computer Science and Engineering Chung-Ang University.
For OS Experiments. What Do We Need? A Computer &
LOGO Linux Installation. Linux Distribution Including shells, libraries, tools, compiler, servers, applications. Redhat, Fedora, Mandrake, SuSE, Debian,
Lab 11 Department of Computer Science and Information Engineering National Taiwan University Lab11 - Porting 2014/12/9/ 26 1.
Project 2. “Linux Fundamental” procfs By Dong Jae Shin.
Linux in a Virtual Environment Nagarajan Prabakar School of Computing and Information Sciences Florida International University.
1 Introduce Linux Speaker: Yi-Ji Jheng Date:
Introduction to Linux ( I ) Sidney Fong 4 th Feb 2006.
09/21/081 Ho Chi Minh city University of Technology Linux kernel R.M. Introduction of building Linux kernel from source.
1 What is a Kernel The kernel of any operating system is the core of all the system’s software. The only thing more fundamental than the kernel is the.
Processes and Threads CS550 Operating Systems. Processes and Threads These exist only at execution time They have fast state changes -> in memory and.
COMPUTER SYSTEM LABORATORY Lab6 - Root Filesystem.
System Calls. The Linux we use is: Linux-Mandrake 7.0. In this project, you are going to change some kernel files and recompile the kernel. After you.
LOGO System Call. Introduction System call is the mechanism used by an application program to request service from the OS. Users use it to communicate.
1 Copyright © 2015 Pexus LLC Patriot PS Personal Server Installing Patriot PS ISO Image on.
National Taiwan University OS Project 0 & 1 Advisor: Dr. Chih-Wen Hsueh Student: Tang-Hsun Tu 台灣大學 網媒所 / 資工所 Wireless Networking and Embedded Systems Laboratory.
OS Project 0 February 25, Outline  Linux Installation  Linux Kernel Compilation  System Call Development  Kernel Modules / 452.
LOGO Linux Installation. Linux Distribution Including shells, libraries, tools, compiler, servers, applications. Redhat, Fedora, Mandrake, SuSE, Debian,
Lab 12 Department of Computer Science and Information Engineering National Taiwan University Lab12 – Driver 2014/12/16 1 /21.
Implementation of Embedded OS Lab3 Porting μC/OS-II.
Lab 8 Department of Computer Science and Information Engineering National Taiwan University Lab8 - Root Filesystem 2015/11/10/ 22 1.
Implementation of Embedded OS
Lab 5 Department of Computer Science and Information Engineering National Taiwan University Lab5 - OS Kernel 2014/10/21/ 16 1.
Spring 2007 Vmware and Linux kernel COMS W4118 Columbia University.
 CSC 215 : Procedural Programming with C C Compilers.
Rebuilding Linux Kernel Dedicated to penguin lovers everywhere 26 September 20161Rebuilding kernel by Visakh M R.
Installing Applications in FreeBSD
Operating System Kernel Compilation
Exercise #1: Exploring Open-Source Operating Systems with Virtual Machines J. H. Wang Sep. 20, 2016.
bitcurator-access-webtools Quick Start Guide
VMware ESX and ESXi Module 3.
Outline Installing Gem5 SPEC2006 for Gem5 Configuring Gem5.
EE516: Embedded Software Project 1
Implementation of Embedded OS
CSC227: Operating Systems
Programming Tools Most of the programming assignments will require using the C language. We will use a current version of the GCC C compiler. What’s GCC?
Computer System Laboratory
IPC demo on AM57xx EVM.
Installation and Configuration
Computer System Laboratory
Drivers and the kernel UNIX system has three layers: Kernel
Using Linux and Lab Setup OS Lab 1
linux and related thing
Compiling from source code
Exercise #1: Exploring Open-Source Operating Systems with Virtual Machines J. H. Wang Sep. 19, 2017.
Linux Programming Environment How to Run Linux in Windows
Hands-On Virtualization in the Classroom
Operating System Kernel Compilation
Lab #1 Install Linux & How to Build Live CD
University of Texas Rio Grande Valley Systems Administration CSCI 6175
Exercise #1: Exploring Open-Source Operating Systems with Virtual Machines J. H. Wang Sep. 21, 2018.
IS3440 Linux Security Unit 7 Securing the Linux Kernel
Build A New Kernel and Add New System Calls in A Linux OS
COP 4343 Unix System Administration
Implementation of Embedded OS
bitcurator-access-webtools Quick Start Guide
Computer System Laboratory
Lab 1: Getting Started.
Operating System Kernel Compilation
Programming Tools Most of the programming assignments will require using the C language. We will use a current version of the GCC C compiler. What’s GCC?
Presentation transcript:

OS Homework 1 February 22, 2017

Outline Linux Installation Linux Kernel Compilation System Call Development Kernel Modules / 45 2

Part I Linux Installation

Kernel versus Distribution 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://releases.ubuntu.com/12.04/ubuntu-12.04-desktop-amd64.iso (64-bit) http://releases.ubuntu.com/12.04/ubuntu-12.04-desktop-i386.iso (32-bit) / 45 4

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

Preparation (2/2) 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/ Please refer to this website for creating a VM in VirtualBox. / 45 6

/ 45 7

/ 45 8

/ 45 9

/ 45 10

/ 45 11

/ 45 12

/ 45 13

/ 45 14

Some Useful Commands 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 / 45 15

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

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

Part II Linux Kernel Compilation

When Should We Compile Kernel? 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 / 45 19

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

Preparation Setting up build environment Getting the source archive $ sudo apt-get update $ sudo apt-get install gcc vim ssh libncurses5-dev libssl-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 / 45 21

Kernel Configuration (1/2) 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 This step is optional. / 45 22

Kernel Configuration (2/2) / 45 23

Kernel Compilation 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): Then reboot! / 45 24

Kernel Compilation with Multiple Cores 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 ... / 45 25

Boot Loader Configuration (Optional) 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’ / 45 26

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

Part III System Call Development

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

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

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

Adding a System Call (3/4) 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. 350 i386 myservice sys_myservice The generated file is in arch/x86/include/generated/uapi/asm, after compilation. / 45 32

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

System Call Invocation Create a test file ap.c to try your system call. Compile & execute. $ gcc -o ap ap.c $ ./ap 10 01 02 03 04 05 06 07 08 09 10 11 12 13 #include <stdlib.h> #include <stdio.h> #define _GNU_SOURCE #include <unistd.h> #include <sys/syscall.h> #define __NR_myservice 350 int main(int argc, char** argv) { printf("%d\n", syscall(__NR_myservice, atoi(argv[1]))); return 0; } / 45 34

Related APIs Access a block of data from/to user space in the kernel. #include <linux/uaccess.h> 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 <sys/syscall.h> int syscall(int number, ...); The first argument, number, is the system call number. / 45 35

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

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

References Kernel Website LXR http://www.kernel.org http://lxr.free-electrons.com/ / 45 38

Part IV Kernel Modules

(1/5) Definition of the module structure / 45 40

(2/5) Initialization and cleanup functions / 45 41

(3/5) File operations / 45 42

(4/5) User AP / 45 43

(5/5) Makefile Testing $ sudo insmod hello.ko $ dmesg $ sudo ./ap $ sudo rmmod hello / 45 44

Contact us Lab 408 TA 張文 - R05922160@ntu.edu.tw / 45 45 45