1 / 27

Operating System Kernel Compilation

Operating System Kernel Compilation. Sarah Diesburg CS 3430 Operating Systems. Kernel Coding. The next project involves compiling a new kernel! Fun but challenging…. Each person/team will get their own virtual machine(s) See website instructions for how to install/use the virtual machine.

Download Presentation

Operating System Kernel Compilation

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Operating System Kernel Compilation Sarah Diesburg CS 3430 Operating Systems

  2. Kernel Coding • The next project involves compiling a new kernel! • Fun but challenging…. • Each person/team will get their own virtual machine(s) • See website instructions for how to install/use the virtual machine

  3. Booting with the Bootloader (grub2) • The newest version of the kernel will boot by default • Look in the submenu (or further down the list) for any older version

  4. Logging In • Username: user • Password: user • Username: root • Password: iamr00t

  5. Communicating with your fresh virtual machine • Use the GUI • Select the terminal program from the bottom of the left shortcuts bar

  6. Communicating with your fresh virtual machine (other ways) • Use ssh • Log into the terminal, and issue /sbin/ifconfig to get the second IP address • Type the IP address directly into PuTTY • Transfer files • Must use Winscp or Filezilla with the IP address found above • Basically, communicate with it the same way you communicated with the student.cs.uni.edu machine

  7. SSH/WinSCP Demo… • Issue this command inside VM to get its IP address ip address

  8. If you created your own virtual machine…. • Good for you! • You will want to install these packages: • gcc / flex / bison • make • ssh • vim / emacs / (your choice of editor) • libssl-dev • libncurses5-dev • others (heh heh)

  9. Kernel Compilation

  10. Example of Kernel Compilation….

  11. Choosing a Kernel • The next project will involve kernel development • We all need to be in the same boat… • The class version will be 4.20.10 (bleeding edge stable version)

  12. Kernel Repository • http://kernel.org – place to download latest and greatest Linux kernels! • Traditional place for kernel is in /usr/src/ • It is already in there for you • …That is, unless you created your own virtual machine. Then download it from kernel.org, and extract it with the command • $> tar xv linux-4.20.10.tar.xz

  13. Compiling the Kernel • Compiles based on configuration of .config file located in the kernel source directory • How can I correctly configure my kernel? • Use the ‘make oldconfig’ command • Use the ‘make menuconfig’ command

  14. ‘make oldconfig’ • This command makes the default configuration file for Linux. • It creates a new configuration file based on the old configuration, so the kernel has the right mix of drivers

  15. ‘make menuconfig’ • Only do this if you are trying to make the kernel smaller • Manually select and deselect drivers and options for your kernel • * -- compiled directly into kernel • M – compiled into a module (driver) that can be dynamically added • Can be tough to figure out what you need and don’t need • Command ‘lspci’ shows hardware on computer

  16. ‘make menuconfig’

  17. ‘lspci’

  18. General Linux Source Organization • Memory Management • Networking Layer • Security • Sound Processing • Architecture-specific Code • Disk Drivers • Devices • File Systems

  19. Config Example (Inside Source Dir) $> cd /usr/src/linux-4.20.10 $> make oldconfig $> make menuconfig

  20. Compiling the Kernel • Issue ‘make’ inside the source directory $> make • Grab some coffee….

  21. Installing the Kernel • Install the modules (drivers) • $> make modules_install • Install the actual kernel • $> make install

  22. Historical final steps • Now the ‘make install’ command does all the following for you • Create a ramfs image • Update grub

  23. Boot Driver Problem • Why ramfs? • Suppose you compiled the disk drivers and root file system drivers as modules • Boot process loads the kernel image • Kernel image does not contain disk drivers

  24. Configure the Boot Loader (Grub) • Update bootloader (no longer necessary with ‘make install’) $> sudo update-grub • Now you can issue a reboot and cross your fingers! $> sudo reboot

  25. Telling Which Kernel You are In • Select the new kernel from the grub menu! • Watch your virtual machine • If something goes wrong, reboot and go back into your original kernel to try again • The following command will tell you which kernel you are in: $> uname -r

  26. Uh oh…. • If it doesn’t boot, go back into the original kernel • Always important to have one working kernel! • Make sure you didn’t skip a step… • You may have taken too much out of the kernel… • Start with bloated kernel, take things out one by one

  27. Project 2 Spec • Let’s take a look at it

More Related