210 likes | 333 Views
This presentation covers essential concepts related to device drivers and kernel configuration in operating systems. Key topics include the role of device drivers in managing hardware, the functionality of kernel modules, automatic detection of devices, and techniques for configuring the kernel. The content emphasizes information about loadable device drivers, system information retrieval commands, and kernel compilation processes specific to Solaris, BSD, and Linux. Important considerations regarding optimizing system performance and handling multiple processes are also discussed.
E N D
Drivers and The KernelChapter 12 Presentation by: Kathleen Pensy
Purpose Assembles: • Processes • Signals and semaphores • Virtual Memory • File System • Interprocess Communication
Terms • Device Driver -A program that extends the operating system to support a device such as a disk or tape drive; or a program that enables an application to use a device such as a printer driver. Hardware devices such as sound cards, printers, scanners, and CD-ROM drives must each have the proper driver installed in order to run. Does not actually have to be associated with a device (ie pseudo terminal). • Module- a piece of kernel code that can be arbitrarily loaded and unloaded during run time. They can be installed and uninstalled as needed. Modules can be arbitrarily loaded at boot time. • Loadable device drivers – a device driver that is implemented as a module.
The Kernel • Device drivers • Automatic detection • Load all • Location of build directory build kernel • Solaris /kernel • BSD /usr/src/sys /kernel • Linux /usr/src/linux /boot/vmlinuz
Configuring the Kernel • Why? • Unwanted drivers • Drivers not loaded • New hardware • Tailor System –good thing (NOT) • Book’s wrong!!! • Only if you have a really pathetic system • Some exceptions # of tty’s or connections • Brian’s Rule – the cost of more memory or disk space is far less expensive and produces a much greater result than that of the cost of time and pain you will spend trying to optimize your current system. • I.E reasons I don’t support sound cards, and certain devices.
Solaris Kernel • Probes and automatically loads • Areas • /kernel – instructions • /platform/platformname (ie Ultra 5) • /platform/hardware sun4u • /usr/kernel • uname - Print certain system information. • Directories pg 227
Solaris continued… • /etc/system –very important • rootfs – type of root • rootdev – root partition • forceload – load devices • exclude – do not load devices • moddir – new path to modules • set – set variables • pt_cnt – number of available pty’s • max_nproc – max num. of proc. • maxuprc – max num. of user proc. • Examples: • Set the number of pty’s when too many users are connecting. Had problems on sunserver1 when too many users were trying to ssh in. TTY will be explained later. • Set the number of processes a given user can execute (too many users). • Max_nproc bad idea. Generally
Prtconf-general information Sysdef - prtconf on steroids Modinfo – dynamically loaded modules Debugging
Linux Kernel • Configuration menus • make xconfig – graphical configuration • make menuconfig curses configuration • Make config command line • .config contains everything about the kernel.
Linux continued • Entries in .config • M = enabled as module • Y = compiled into kernel • Compiling kernel: • Cd /usr/src/linux* • mrproper (not mentioned in the book) • make menuconfig • make dep • make clean • make bzImage • make modules • make modules_install
Linux continued … • lilo.conf specifies boot process • /sbin/lilo – installs boot loader that will be activated next time you boot • lilo – linux loader, master boot program or secondar. • Always backup your new image • Boot dos/windows partitions as well
Fine tuning /proc/sys/fs binfmt_misc dquot-nr inode-nr leases-enable dentry-state file-max inode-state overflowgid dir-notify-enable file-nr lease-break-time overflowuid Not remembered across reboots Try scripts From program sysctl (not mentioned in the book) Kat’s #1 Rule – man page is your friend Linux continued… Purpose is to allow run-time kernel modification
FreeBSD • Similar to linux • Location • /usr/src/sys = source • /usr/src/sys/arch/conf = configuration of kernel • Configuration • Edit conf • Config from conf • Make depend • Make |& tee error • Man –k is your other good friend
BSD continued… • /kernel = the kernel back it up • Configuration consists of • machine, cpu, ident, maxusers, options, config, controller, disk, tape, device, pseudo-device • example including nfs in config • options NFS • Disk wd0 at wdc0 disk 0 • Options “CD9660” • Controller isa0 • You can also change configuration on runtime through sysctl as well
Device Drivers • Device driver - manages systems interaction w/ a particular piece of hardware. • Configuring a driver for more than 20 computers can be painful - This is why kat thinks linux sucks • New devices = more pain (haha) a new device driver • Never upgrade a driver unless absolutely necessary • Solaris = easier • Linux = (Get the picture?) harder • /dev – device files that may link to device drivers • ls –l lists the major and minor • Major = device type • Minor = particular instance of a given device The frustration caused by trying to configure a device driver with certain OS’s
Many devices correspond to device files contained in /dev Types: Block – written or read as one block Character – written one byte at a time Standard interfaces: Attach Psize Strategy Close Read Timeout Dump Receive Transmit ioctl resize open Write select probe stop Configuration files Solaris /kernel/drv/*conf /kernel/drv/* HP-UX /stand/system /usr/conf/* Linux /usr/src/linux/.config /usr/src/linux/drivers/* FreeBsd /usr/src/sys/i386/conf/kernel /sys/i386/conf/files* Device files
Standard device files • Examples: • Pty –pseudo termnials (ssh,xterm, telnet, rlogin) • A slave and master the slave is actually controlled by the ssh, etc what have you. • Loopback – network interface to local host (send to self) • Rmt – tapes • Rst – scsi tapes • Console device • r= stands for the raw device • Conventions for each are in the hand out. • From Essential Systems Administrators Hand book. ( more clear) • Controller this is where disk is pluged device is the number at which it is attached on that controller. Partition is the slice on that disk. • Create your own device file: • Mknod or makedev
Structure Device Drivers Modules Static Device Drivers Loadable device drivers
Solaris Specific • Devices • Add • add_drv – loads driver into the kernel • pkgadd – very easy interface • Remove • pkgrm – easy • rem_drv – unload by hand • Modules • Add • modload – loads into the running file system • Remove • modunload – unloads it • Modules can be linked and removed while the kernel is running • Modinfo as seen before shows modules hardwired into the kernel afs, nfs, tcp
Linux Specific • Devices • Adding Device driver • cd /usr/src/linux ; patch –p1 < driver.diff • Modules • Add • insmod /path/to/object.o • Modprobe – install or remove into the kernel (can load all modules from a directory) • modprobe -a -t boot • List • lsmod – list modules • Remove • rmmod – remove modules • Modprobe • Can generate dynamic /etc/modules.conf
Questions • Anyone have any questions?