The Linux Kernel Index

The Linux Kernel Index

The Linux Kernel Linux Kernel 1 Index • Introduc2on – Kernel types • Sta2c Reconfigura2on – configuraon – compilaon – install • Dynamic Reconfigura2on – /proc – LKM: Loadable Kernel modules • Device Driver Modules Linux Kernel 2 Introduc2on (Kernel) • Hides HW under an abstract, high level programming interface. • Creates these concepts from low-level HW features: – Processes (?me-sharing, protected address spaces) (SO) – Signals and semaphores (SO) – Virtual memory (swapping, paging, mapping) (OC, SO) – Filesystem (files, directories namespace) (SO?) – General input/output (specialty hw, keyboard, mouse, USB) (EC) – Communicaon (between processes / network connec?ons) (SO/Redes) • Linux kernel mostly wriQen in C (+ a few assembly) • Source code available (git repository): – hps://github.com/torvalds/linux) Linux Kernel 3 Introduc2on (Kernel) Kernel Space User Space • Three basic approaches: • Monolithic Kernel Code CPU Program Memory Scheduling Manager Loader – Monolithic kernels: User Program Error System Security Handling • All func?onality is compiled together Policies APIs File Device Systems • All code runs in privileged kernel-space Drivers – Microkernels: • Only essen?al func?onality is compiled • All other func?onality runs us user space. – Hybrid kernels: Kernel Space User Space • Most func?onality is compiled into the Kernel Code Third-Party Code Memory kernel, some func?ons loaded Manager CPU Device Scheduling Driver dynamically Security Policies Error Device Handling • Typically, all func?onality runs in kernel- Driver File System File Systems space. APIs System Program Loader User Program Linux Kernel 4 Introduc2on (Kernel) • Usually, distribu?ons include a kernel generic enough to avoid further reconfiguraon. • However, kernel reconfiguraon is some?mes unavoidable: – Adding a new hardware device – Performance op?mizaons • pre-compiled kernels provide many unnecessary components (compability) – Rou?ne updates (security patches) • How can we “adjust” the kernel? – Stacally, re-compiling the whole kernel (source code + compiler + a few more things). – Dynamically, through /proc params or modules. Linux Kernel 5 Index • Introduc2on – Kernel types • Sta2c Reconfigura2on – configuraon – compilaon – install • Dynamic Reconfigura2on – /proc – LKM: Loadable Kernel modules • Device Driver Modules Linux Kernel 6 Sta2c Reconfigura2on Working Directory: /usr/src • Step 1: Obtaining kernel source code – From www.kernel.org (recommended stable versions): • Complete version: linux-4.X.X.tar.xz (~80MB) • Patches: patch-4.X.X.xz (~50-100k). (applied to current kernel, with patch command) – From repositories: • apt-get install linux-source-4.X.X • Step 2: Configuraon – Kernel configuraon in file /usr/src/linux-4.X.X/.config • Each line contains a keyword (device/subsystem) and an argument: CONFIG_SCSI=y • Driver can be not selected (#), built into the kernel (=y) or built as a module (=m) – Extremely complex process, requires deep hw and system understanding. – Two ways to create .config: from scratch or adjus?ng a well known config. Linux Kernel 7 Sta2c Reconfigura2on • Step 2: Configuraon (cont.) – From scratch: make <config/menuconfig/xconfig> • config: starts a character based ques?on and answer session • menuconfig: starts a terminal-oriented configuraon tool (requires ncurses package) • xconfig: X based configuraon tool. – From scratch (2): make defconfig • creates a config file that uses default sengs based on the current system’s architecture. Linux Kernel 8 Sta2c Reconfigura2on • Step 2: Configuraon (cont.) – Adap?ng a pre-built .config: make <oldconfig/silentoldconfig> • oldconfig: update a config file (copied from another system or form previous kernel) to be compable with the newer kernel source code (ques?ons). • silentoldconfig: do not show ques?ons answered by the config process. – More building op?ons: make help. Symbol (variable/func?on) to address table Example: ffffffff8104d148 t swap_pages • Step 3: Compilaon Employed for debugging kernel oops (seg. fault) Also, drivers linked against kernel headers (instead of glibc) – Build the kernel + System.map • [root si ~] make bzImage (aer correct compilaon kernel appears in arch/i386/boot) – Build modules (see next sec?on) • [root si~] make modules – Build ramdisk if modules are required to access boo?ng device • [root si~] mkinitrd –o /boot/initrd-4.X.X.img 4.X.X (Example: our FS uses LVM/RAID) Linux Kernel 9 Sta2c Reconfigura2on • Step 4: Installaon – Copy kernel image, System.map and ramdisk to /boot • [root si~] cp arch/i386/boot/bzImage /boot/bzImage_KERNEL-VERSION • [root si~] cp System.map /boot/System.map-KERNEL_VERSION • [root si~] ln –s /boot/System.map-KERNEL_VERSION /boot/System.map – Install kernel modules (already built) : • [root si~] make modules_install (installed in /lib/modules/KERNEL_VERSION) – Configure bootloader (grub2): • [root si~] update-grub • Do not remove old kernels (new might not boot). Put them in /boot/grub/menu.lst … title Test Kernel (4.X.X) root (hd0,1) kernel /boot/bzImage-4.X.X ro root=/dev/sda1 ro quiet initrd /boot/initrd-4.X.X.img … Linux Kernel 10 Sta2c Reconfigura2on (DEBIAN) • Debian provides tools to compile + build a package for the kernel – Append compiled kernel informaon to the soqware database – Ease the management of mul?ple kernels (clean) – All the tools included in kernel-package (apt-get install kernel-package) • Alternave Steps with debian (make-kpkg) – Step 2 Configuraon: make-kpkg --config • Equivalent to make oldconfig – Step 3 Compilaon: make-kpkg --initrd kernel_image modules_image • generates a .deb file with name: linux-image-[version]_[arch].deb • recommended to do a make-kpkg clean previously. – Step 4 Installaon: as easy as dpkg -i linux-image-XXX.deb Linux Kernel 11 Index • Introduc2on – Kernel types • Sta2c Reconfigura2on – configuraon – compilaon – install • Dynamic Reconfigura2on – /proc – LKM: Loadable Kernel modules • Device Driver Modules Linux Kernel 12 Dynamic Reconfigura2on • kernel recompilaon is not a usual task (very complex and delicate). • Usually, kernel is “fine-tuned” dynamically. – Through /proc directory and/or Loadable Kernel Modules (LKM) • /proc: pseudo File System represen?ng current kernel status. – Details about system hardware (/proc/cpuinfo or /proc/devices) – Informaon about any process currently running. • cmdline: command line arguments [ root si /tmp ] ls /proc/2719 • cwd: link to current working directory attr environ mem root • environ: env variables auxv exe mountinfo sched cgroup fd mounts sessionid • exe: executable clear_refs fdinfo mountstats smaps • maps: memory maps to executable & library files cmdline io net stat coredump_filter limits oom_adj statm • mem: memory held by process cpuset loginuid oom_score status • … (see man proc) cwd maps pagemap task Linux Kernel 13 Dynamic Reconfigura2on (/proc) • /proc employed for : – input (configuraon): echo 32768 > /proc/sys/fs/file-max – output (monitoring): /proc/stat • Command sysctl: configure kernel parameters at run?me. – Syntax: $ sysctl [op?on] <arguments> • Op?on –a: display all values currently available. • Op?on –w: change a variable value (sysctl –w proc.sys.fs.file-max=32768 • Op?on –p: load sengs from a file. • hps://www.kernel.org/doc/Documentaon/sysctl/kernel.txt • Permanent modificaons: /etc/sysctl.conf Linux Kernel 14 Dynamic Reconfigura2on (LKM) • Loadable Kernel Modules (LKM): – Add code to the kernel while it is running (avoiding recompilaon). • Advantages: – No need to rebuild kernel (keep working kernel untouched) – Easier system problem diagnose • Kernel-> running; Kernel+LKM->died; problem located at Module. – Faster development/maintenance (no rebuild/reboot) – Saves your memory (only loaded when used), base kernel loaded all the ?me. • But… – Could be a performance boQleneck ( – Some pieces MUST be built into the base kernel: • Anything required to get the system up far enough to load LKMs, for example, the driver of the disk drive that contains root filesystem. Linux Kernel 15 Dynamic Reconfigura2on (LKM) • What LKMs are used for: – Device Drivers: allow communicaon between kernel and a piece of HW. – Filesystem Drivers: interpret the contents of a File System as files and directories. – System calls: make your own syscall or modify an exis?ng one. – Network driver: interprets a network protocol (IPX link -> IPX driver). – TTY line disciplines, Executable interpreters. • Where are modules: – Files with extension .o and .ko (since 2.6 version) – /lib/modules/4.X.X alu@si:/lib/modules/3.16.0-4-amd64/kernel/drivers$ ls arch crypto drivers fs lib mm net sound Linux Kernel 16 Dynamic Reconfigura2on (LKM) • LKM Administra2on: – Command insmod: insert a module into the linux kernel • Syntax: $ insmod <module_files> [params] – Command lsmod: show the status of modules in the Linux Kernel • reads the content of /proc/modules – Command rmmod: remove a module from linux kernel – Command modinfo: show informaon about a kernel module • Syntax: $ modinfo [modulename/filename] – Similar to soqware packages, many modules are not self-contained, and rely on other modules to load and operate successfully – Command depmod: Generate the file modules.dep and map files. – Command modprobe: insert a module into the kernel, solving previously dependencies. Linux Kernel 17 Dynamic Reconfigura2on (LKM) • Automa2c LKM Loading and Unloading – A LKM can be loaded automacally when the kernel first needs it (through the kernel module loader). – Op?onal part of the linux kernel (select CONFIG_MODULES in .config) – When kernel needs a LKM, it creates a user process that executes modprobe. –

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    13 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us