Drivers and The KernelDrivers and The KernelChapter 12Chapter 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
Debugging
• Prtconf-general information
• Sysdef - prtconf on steroids
• Modinfo – dynamically loaded modules
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
Linux continued…
• 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
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
Device files
• 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– Transmitioctl 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*
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
Loadable device drivers
Static 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?
Top Related