Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 68 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
68
Dung lượng
0,94 MB
Nội dung
321 Chapter 15 ✦ Linux Kernel support, you can later choose the network adapters to use with the kernel. This method of configuration can be tedious because if you make a mistake near the end, you must start all over again. The next option for configuration, make menuconfig, uses ncurces to navigate through a menu-like screen from which you can navigate, select, and modify features using arrow keys. Using this tool to configure the kernel is much less overwhelming when adjusting and tweaking the configuration. Following the menus (see Figure 15-1), you can confidently set the configuration you want to use, indicating what you want to use as a module and what you want built into the kernel. Figure 15-1: A graphical kernel configuration tool using ncurses on a text display If you prefer to work from a complete graphical interface, use make xconfig to build the configuration file. This tool uses Tcl/Tk to interpret the configuration options, and then displays the categories as shown in Figure 15-2. You can use the mouse to click category buttons and select radio button options. You have the option to return each time to the main menu or progress through the entire configuration one window at a time. Lastly, if you have configured your kernel before and would like to use the old con- figuration with a new kernel version, you can use make oldconfig to minimize your efforts. This is not commonly used for first-time kernel updates. You will only be asked questions for new features with this method of configuration. After you have completed one of the configuration methods, you will have a .config file that the next process uses to compile the kernel. 4710-0 ch15.F 4/10/01 11:25 AM Page 321 322 Part III ✦ Administering Linux Figure 15-2: Using the convenient kernel configuration tool in an X environment Compiling and installing a new kernel After you have the configuration file created, you’re ready to move on to compiling the kernel. This takes several steps and can take some time depending on your computer’s speed and available resources. Moreover, certain programs and libraries must be up-to-date for a successful creation of binaries. A complete list can be found in /usr/src/kernel-source-version/Documentation/Changes. Use the following steps to create the binary of the kernel: 1. Set up all the dependencies correctly. From the command line, issue make dep to begin setting up and confirming the dependencies. Once finished, everything is set up to compile the kernel. 2. Issue make zImage to create a compressed kernel image. If everything goes as planned, the image (your new kernel) will be created, compressed, and then saved to the ./arch/i386/boot directory. Alternately, if you wish to make a boot floppy from this kernel, insert a disk into the A: drive and run make zdisk. However, if the image was too large for the zImage, it will likely fail here also. If no errors were generated, you can move on to Step 4. However, if you receive an error indicating that the image was too big (such as the one shown here), go to Step 3 instead: tools/build bootsect setup compressed/vmlinux.out CURRENT > zImage2 Root device is (3, 65) Boot sector 512 bytes. Setup is 2316 bytes. System is 818 kB 4710-0 ch15.F 4/10/01 11:25 AM Page 322 323 Chapter 15 ✦ Linux Kernel System is too big. Try using bzImage or modules. make[1]: *** [zImage] Error 1 make[1]: Leaving directory `/usr/src/linux-2.3.99/arch/i386/boot’ make: *** [zImage] Error 2 3. Because the kernel image was too big in Step 2, you now need to use a differ- ent compression method. Run make bzImage to create the image using the alternative compression method. The file will be created in the same location as the zImage would have been, but under the name of bzImage instead. 4. If during the kernel’s configuration you chose to make any portion a module instead of part of the kernel, you must compile these as modules. Run make modules at this time. 5. If you are compiling a kernel of the same version as you have installed, make sure that you have copied the old modules to a new location. One way to do this is by renaming the directory: mv /lib/modules/2.x.x /lib/modules/2.x.x-old 6. After the modules have compiled, you can install them using make modules_ install . This will copy the modules to the appropriate location on the file system. Because portions of the kernel have been compiled as modules, you are now responsible for loading them for the kernel. In the unfortunate event that something goes horribly awry while upgrading your kernel, fear not, as you still can gain access to your system. You should have, if nothing else, the installation CD that comes with this book. Use the installation CD (or other rescue boot disks) to boot to the prompt. From there, you can fsck the drive, mount it, restore the working kernel image (that you made a copy of), and rerun lilo. Reformatting and starting over is becoming far too prevalent for some operating systems these days. Starting over from scratch with Linux is rarely a thought that even crosses the mind of the experienced administrator. Only when all else fails, such as in the event of hardware failure, would one consider such a task; and even then, the experienced administrator has a catastrophic backup plan. 7. Now that you have a compiled, compressed kernel to install, you’re ready to set up the kernel to run your system at the next reboot. To start, copy the new kernel, located at /usr/src/Linux/arch/i386/boot/zImage, to /boot/ vmlinuz-2.x.x (depending on the version you compiled from) using a new name. Make sure you don’t overwrite any of the existing images. Copying the kernel image to the boot directory using a new name enables you to change the kernel with which you boot. If you experience a problem booting, you can easily switch to another kernel image. That completes the creation and installation of the kernel. Finally, you need to configure the boot loader, LILO, to recognize the new kernel. You must edit the /etc/lilo.conf file and add the new kernel to the configuration. Then, to accept your changes, you re-install LILO by running lilo from the prompt. For more details about modifying the LILO configuration file, see the next section. Note 4710-0 ch15.F 4/10/01 11:25 AM Page 323 324 Part III ✦ Administering Linux Debian includes a package of scripts to create a Debian kernel package using make-kpkg kernel-image. This script was born out of a desire to help auto- mate the routine creation of building, updating, and loading a new kernel. You can read more on this script and how to use it by loading the kernel-package.deb package and reading the man pages on make-kpkg. Using the Linux Boot Loader The boot loader — in this case, LILO, is initiated when the hardware reads the start- ing sectors of the disk. Under normal circumstances, LILO is installed and linked to the Master Boot Record (MBR). LILO then starts when the system starts to boot. When a system running LILO starts, it normally pauses to enable the user to enter the boot option, whether to configure an addition to a Linux driver, start a different kernel, or run a completely different operating system. LILO then passes control over to the selected operating system. If no input is added during the delay period, LILO passes control to whatever option happens to be the default. Table 15-3 describes some different command-line uses for LILO. As the administrator, you can use these commands to set the default boot kernel, to identify current kernel versions, or to set a specific option the next time the kernel boots. Table 15-3 Uses for LILO Command LILO’s main function /sbin/lilo Performs the basic install of the boot loader Command Auxiliary uses /sbin/lilo -q Runs a query of the boot map and displays the labels /sbin/lilo -R command Sets the default boot parameters for the next reboot. This is a once-only command. /sbin/lilo -I label Determines the path name of the current kernel identified by label /sbin/lilo -u devicename Uninstalls LILO by copying the boot sector back for devicename Tip 4710-0 ch15.F 4/10/01 11:25 AM Page 324 325 Chapter 15 ✦ Linux Kernel There is a limit to the number of cylinders to which LILO can point. Anything you wish to boot using LILO as the boot loader must be within the first 1,024 cylinders of your hard drive. Images and operating systems beyond the first 1,024 cylinders cannot be started using LILO. If your drive has more than 1,024 cylinders, turn on Logical Block Addressing (LBA) on your system’s BIOS. This may reduce the num- ber of cylinders and put the operating system back within reach of LILO. Otherwise, you may need to use a boot floppy to access the other operating sys- tems and images. Configuring LILO LILO is a highly configurable boot loader; it’s able to load several versions of kernel images or operating systems. The configuration file for LILO is located at /etc/ lilo.conf and is easily modified using any text editor. This file contains all the options for starting your system. The following code shows an example of a LILO configuration file: boot=/dev/hda5 map=/boot/map install=/boot/boot.b vga=normal lba32 prompt timeout=40 default=linux message=/boot/bootmessage.txt single-key delay=100 image=/vmlinuz label=linux root=/dev/hda5 read-only alias=1 image=/boot/vmlinuz-2.2.17 label=failsafe root=/dev/hda5 append=”failsafe” read-only alias=0 other=/dev/hda1 label=windows table=/dev/had alias=2 other=/dev/fd0 label=floppy unsafe Caution 4710-0 ch15.F 4/10/01 11:25 AM Page 325 326 Part III ✦ Administering Linux The first three lines set the global parameters for LILO and the system LILO is on. This includes the boot partition, the location of the map file, and the path to the boot file. Next, the default VGA mode is set (in this case, normal). This can be changed to ask, which prompts you to enter the mode by which you want to start each time. LBA is then enabled for use with new systems with large hard drives. The configuration file then enables LILO to accept input at the prompt, enabling you to choose another option at boot time. If nothing is entered at the prompt, a timeout in seconds is then set. The configuration file then sets the default image or operat- ing system so that LILO knows what to load with no user intervention. The message option specifies a text file (with complete path) that is printed to the display when LILO first starts. This text file can include instructions, boot options, warning messages, or anything that you, as administrator, want. The single-key option enables you to select a single key from which LILO will boot. (The key can be included in the text message.) The length of time (in tenths of seconds) that LILO waits before continuing to load the image is set by the delay option. The per-image section is where each image and operating system is identified, and individual options are specified for each image. The image options are identifiable in the file from the indented text. Each part gets its own customization, but is first identified as image or other, including the path to the device or image. Secondly, the image is labeled, which is nothing more than a name that can get used at boot time from the prompt. You can also specify the location of the root partition. This information is also kept in the kernel image, but specifying the root partition here keeps the root paths in one location for easy identification. This is useful when creating kernel images on other platforms and systems. The read-only option instructs the kernel to start in read-only mode to perform the file system check ( fsck), and then change to read-write mode afterward. The append option adds whatever is quoted to the image as an option for the image to load. This enables you to set up certain customizations here, rather than forcing the customization in the kernel. The alias option corresponds to the single key option mentioned previously, enabling the boot process with a single key instead of the label name. If you have any questions regarding more options not shown here, check the online documentation ( man lilo.conf). Adding the new kernel to LILO When you compile and add a new kernel to your system, you need to change the boot loader to recognize it. Because LILO only loads what is configured, any new configurations just need to be added to the system. Edit the LILO configuration file and add a section identifying the new kernel. The following example makes avail- able an old kernel image at boot time: image=/boot/vmlinuz-2.2.17-old label=OldLinux read-only 4710-0 ch15.F 4/10/01 11:25 AM Page 326 327 Chapter 15 ✦ Linux Kernel This identifies the image to use, including the complete path for the image and the image’s complete name. As a suggestion, if you often make changes to a kernel, modify lilo.conf to use a symbolic link name. Then, when you want to test a new kernel, create a link to that new kernel using the link name you used in the configu- ration file. Also identified here is the label (used at the boot prompt) for the image, and that the image should be started in read-only mode first. Once all the settings for the new kernel image are made to the file, reload this new configuration to the boot sector and you’re ready to use it. Booting to other operating systems It is possible to have multiple operating systems loaded on the same machine. Choosing which operating system then becomes the responsibility of the boot loader. You need to configure LILO properly to access another operating system at boot time. To accomplish this, edit the /etc/lilo.conf file. At the bottom of the file, add the appropriate parameters for the drive partition on which the other operating system is loaded, the label, and any other settings that are needed. Here is an example for you to follow: other=/dev/hda1 label=Win95 The first line identifies the drive partition and the second line gives it a label. Once this change is implemented, the new operating system will be accessible via the LILO prompt when the system starts. Complete the modifications by installing the new LILO configuration into the boot sector. This is the minimum you need to add to activate another operating system. More options can be found in the first example or by looking through the documentation (manpage) on lilo.conf. Testing and installing a new LILO configuration When all the necessary changes have been made to the LILO configuration file, you can test it using the -t option. This option does a dry run by creating the boot sec- tor on the disk without changing the boot sector. Running lilo -v -t produces the following: LILO version 21.5-1 beta (test mode), Copyright (C) 1992-1998 Werner Almesberger ‘lba32’ extensions Copyright (C) 1999,2000 John Coffman Reading boot sector from /dev/hda Merging with /boot/boot.b Boot image: /vmlinuz Added Linux * 4710-0 ch15.F 4/10/01 11:25 AM Page 327 328 Part III ✦ Administering Linux Boot image: /boot/vmlinuz-2.2.17-idepci Added LinuxOLD The boot sector and the map file have *NOT* been altered. After testing the configuration, it needs to be installed in order to create the boot sector using the setting from the configuration file. This must be done whenever changes are made to the configuration file or boot message file, or whenever a new kernel is loaded. To create the boot sector on the drive, simply run lilo again without the test option, as shown here (text in bold is entered by the user): lilo -v LILO version 21.5-1 beta, Copyright (C) 1992-1998 Werner Almesberger ‘lba32’ extensions Copyright (C) 1999,2000 John Coffman Reading boot sector from /dev/hda Merging with /boot/boot.b Boot image: /vmlinuz Added Linux * Boot image: /boot/vmlinuz-2.2.17-idepci Added LinuxOLD /boot/boot.0300 exists - no backup copy made. Writing boot sector. Now the boot sector has been written and you’re ready to restart the system to implement the changes. System Initialization When the Debian GNU/Linux system starts, any service specified to run continu- ously in the background is started as part of the system initialization. This includes file and printer processes, DNS processes, Web processes, and others. This initial- ization process is one of the advantages of using such a powerful operating system. To accomplish this initialization, a program called init starts everything that needs to run. This “parent of all processes” uses a collection of scripts to start and stop the processes. Based on the event that occurs, init needs to start a process (such as at boot time) or stop it (such as when shutting the system down). The system defines various collections of programs to run at each state of booting. Each state is called a run level. A series of directories contain links to the script. A configuration file ( /etc/- inittab ) contains the instructions for what run level to use at what time. When a system is shutting down, a program called telinit instructs init to change the run level, which in turn begins the process of following the instructions for the scripts. Run level 0 is used for halting the system. The following code shows the configuration file for init: # /etc/inittab: init(8) configuration. # $Id: inittab,v 1.8 1998/05/10 10:37:50 miquels Exp $ 4710-0 ch15.F 4/10/01 11:25 AM Page 328 329 Chapter 15 ✦ Linux Kernel # The default runlevel. id:2:initdefault: # Boot-time system configuration/initialization script. # This is run first except when booting in emergency (-b) mode. si::sysinit:/etc/init.d/rcS # What to do in single-user mode. ~~:S:wait:/sbin/sulogin # /etc/init.d executes the S and K scripts upon change # of runlevel. # # Runlevel 0 is halt. # Runlevel 1 is single-user. # Runlevels 2-5 are multi-user. # Runlevel 6 is reboot. l0:0:wait:/etc/init.d/rc 0 l1:1:wait:/etc/init.d/rc 1 l2:2:wait:/etc/init.d/rc 2 l3:3:wait:/etc/init.d/rc 3 l4:4:wait:/etc/init.d/rc 4 l5:5:wait:/etc/init.d/rc 5 l6:6:wait:/etc/init.d/rc 6 # Normally not reached, but fallthrough in case of emergency. z6:6:respawn:/sbin/sulogin # What to do when CTRL-ALT-DEL is pressed. ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now # Action on special keypress (ALT-UpArrow). kb::kbrequest:/bin/echo “Keyboard Request edit /etc/inittab to let this work.” # What to do when the power fails/returns. pf::powerwait:/etc/init.d/powerfail start pn::powerfailnow:/etc/init.d/powerfail now po::powerokwait:/etc/init.d/powerfail stop # /sbin/getty invocations for the runlevels. # # The “id” field MUST be the same as the last # characters of the device (after “tty”). # # Format: # <id>:<runlevels>:<action>:<process> 1:2345:respawn:/sbin/getty 38400 tty1 2:23:respawn:/sbin/getty 38400 tty2 3:23:respawn:/sbin/getty 38400 tty3 4:23:respawn:/sbin/getty 38400 tty4 5:23:respawn:/sbin/getty 38400 tty5 6:23:respawn:/sbin/getty 38400 tty6 4710-0 ch15.F 4/10/01 11:25 AM Page 329 330 Part III ✦ Administering Linux # Example how to put a getty on a serial line (for a terminal) # #T0:23:respawn:/sbin/getty -L ttyS0 9600 vt100 #T1:23:respawn:/sbin/getty -L ttyS1 9600 vt100 # Example how to put a getty on a modem line. # #T3:23:respawn:/sbin/mgetty -x0 -s 57600 ttyS3 The first bold text indicates the line where you can change the run level, which you can see is set to level 2. As you look through the configuration file code, you will also notice that a few other items are set in this file. For instance, the CTRL+ALT+DEL soft reboot command is interpreted here, and the corresponding command is issued. Another keyboard sequence is also included here, but at this point is not associated with any commands. CTRL+ALT+DEL only works when you are sitting at the system’s console and not through a remote login. Once a system is running, init doesn’t read the configuration file until it’s notified by telinit that the run level changed. You can force init to reread the configu- ration file without changing the run level with the -q option — telinit -q. Run levels Every run level has a specific purpose. Some can be changed, whereas others should not be touched. Table 15-4 lists the available run levels, their location on the file system, and the general purpose of each. As you can see, run levels 0, 1, and 6 are reserved for specific purposes; the others, run levels 2 through 5, are customizable. By default, Debian 2.2 uses run level 2 for the normal multi-user start routine. Most distri- butions use either 2 or 3, but primarily they use 3. Run levels 7 through 9 are also valid for use with init, although traditionally they are not used on UNIX variants. Table15-4 Available run levels Run level Location Typical use 0 /etc/rc0.d Normal shutdown 1 /etc/rc1.d Used to start in single-user mode 2 /etc/rc2.d Multi-user customizable (used as the Debian default) 3 /etc/rc3.d Multi-user customizable (used as default on other systems) 4 /etc/rc4.d Multi-user customizable Tip 4710-0 ch15.F 4/10/01 11:25 AM Page 330 [...]... Latitude 433MC CP, M 166 ST, M233XT CPi, A 366 XT CPt, C333GT, C400GT CPi, D 266 XT CPt, V 466 GT Cpi, D 266 XT CPi, D300XT CPt, S500GT CS, CSx, LM, P-100 LM, P-133 LS, LT, LX4100, XP Fujitsu Lifebook 280Dx, 420D, 420D, 435DX, 500, 55T, 63 5T, 65 5TX, 69 0Tx, 731Tx, 735Dx, 755Tx, 765 Dx, 790Tx, B110, B110, B110, B110, B112, B2130, C325, C350, C4110, C6320, C6330, C6535, E340, E342, E350, E6150, E6530, E, Series, L440,... ftp://ftp.uk .debian. org /debian stable main contrib #deb http://non-us .debian. org /debian- non-US stable/non-US main contrib non-free #deb http://security .debian. org stable/updates main contrib non-free deb cdrom: [Debian GNU/ Linux2 .2r2_Potato_-Official i3 86 Binary-3]/ main deb cdrom: [Debian GNU/ Linux2 .2r2_Potato_-Official i3 86 Binary-2]/ main deb cdrom: [Debian GNU/ Linux2 .2r2_Potato_-Official i3 86 Binary-1]/... 1441, 1450, 1451, 1452, 1 460 , 1472, 1480, 1 560 , 1720, 1721, T20, X20 Micron GoBook, Transport, TREK2 NEC Ready 120LT, 330T, 340T NEC Versa LX, LXi, FX, 2430CD, 263 5CD, 265 0CDT, 4200, 60 30X, 60 50MMX, 62 00MMX, SX/440 Panasonic Let’s Note CF-L1S, CF-Mini Panasonic CF-35, CF-41, CF -63 , CF-71 Sharp Actius A100, A150, A250, A280, A800 Sharp Mebius 560 0 Sharp Sony PC- 865 0II, PC- 866 0, PC-8800, PC-9020 Vaio... ftp://ftp.uk .debian. org /debian stable main contrib #deb http://non-us .debian. org /debian- non-US stable/non-US main contrib non-free #deb http://security .debian. org stable/updates main contrib non-free # Uncomment if you want the apt-get source function to work #deb-src http://http.us .debian. org /debian stable main contrib non-free #deb-src http://non-us .debian. org /debian- non-US stable non-US deb http://http.us .debian. org /debian/ ... Pro, 69 30 Pro, 7000 Pro, 7 560 Pro, 7580 Traveler HP Omnibook XE, XE2, 60 0, 800, 800CT, 900, 900B, 3000 CTX, 3100, 4000C, 4000CT, 4100, 4150, 5500, 5500CT, 5700, 5700 CT, 60 00, 7100 HP Pavillion 3100, 3100, 3150, 3190, 3250, 3270, 3330, 3390 IBM Thinkpad 230CS, 240, 310ED, 350, 360 CX, 365 XD, 380D, 380ED, 385CD, 385XD, 390, 500, 560 , 570, 570E, 60 0, 700, 701, 750, 755C, 760 , 765 L, 770, A20m, A20m, A20p... Z505RX, Z505S, Z505SX, Z600NE, Z600RE, Z600TEK Continued 355 4710-0 ch17.F 3 56 4/10/01 11:25 AM Page 3 56 Part IV ✦ Maintenance and Upgrade Table 17-2 (continued) Manufacturer Line Models Texas Instruments Extensa 355, 390, 560 CD, 570CD, 570CDT, 575CD, 67 0CDT Texas Instruments TravelMate 4000M, 60 30 Toshiba T1900S, T1910CS, T2000SXe, T2100CS, T2105CDS, T2105CDS, T3300SL, T4500, T 460 0, T4700, T4800CT, T4850... Rendition Verite Revolution 3D (T2R) S3 Aurora64V+ (generic) S3 Savage S3 Trio32 (generic) S3 Trio3D S3 Trio3D/2X S3 Trio64 S3 ViRGE S3 Vision 864 (generic) S3 Vision 868 (generic) S3 Vision 964 (generic) S3 Vision 968 (generic) SHARP 9080 SHARP 9090 SMI Lynx SMI LynxE SNI PC5H W32 SNI Scenic W32 SPEA Mercury 64 SPEA Mirage SPEA/V7 Mercury SPEA/V7 Mirage P64 SPEA/V7 ShowTime Plus STB Horizon Video STB... that does not mean that Debian will not work on the laptop 353 4710-0 ch17.F 354 4/10/01 11:25 AM Page 354 Part IV ✦ Maintenance and Upgrade Table 17-2 Linux- installable laptops Manufacturer Line Models Acer Extensa 355, 367 T, 368 T, 390, 500T, 503T, 506T, 710TE, 711TE Acer TravelMate 312T, 330T, 340T, 502T, 510T, 511T, 512DX, 512T, 513T, 516TE, 518TX, 521TE, 524TXV, 60 0TER, 60 2TER, 721TX, 722TX, 732TE,... 50CT, 50CT, 60 , 70, 70CT, 100CT, 100CT, 110CT, SS1000 Toshiba Portege 3010CT, 3010CT, 3015CT, 3015CT, 3110CT, 320CT, 3400, 3440, 360 0CT, 7000CT, 7010CDT, 7020CT, 7140CT, 7200CT Toshiba Satellite 100CS, 100CS, 110CS, 160 5, 162 0CDS, 164 0CDT, 167 0CDS, 200CDS, 205CDS, 230CX, 2000-Series, 300CDT, 310CDT, 315CDS, 320CDS, 320CDT, 330CDS, 335CDS, 330CDS, 400CS, 410CS, 415CS, 425CDS, 430CDT, 440CDX, 460 CDT, 480CDT,... the number 6 and pressing Enter The update is complete 345 4710-0 ch 16. F 3 46 4/10/01 11:25 AM Page 3 46 Part IV ✦ Maintenance and Upgrade The way the Debian package manager works to update and upgrade the installed applications has won it high praises from anyone who has used it — especially when those administrators have had to upgrade any other distributions The people who maintain the Debian distribution . are fixed. 16 16 CHAPTER ✦✦✦✦ In This Chapter Finding bugs in software Getting package updates with the Debian package manager Upgrading to the latest Debian release ✦✦✦✦ 4710-0 ch 16. F 4/10/01. compressed/vmlinux.out CURRENT > zImage2 Root device is (3, 65 ) Boot sector 512 bytes. Setup is 23 16 bytes. System is 818 kB 4710-0 ch15.F 4/10/01 11:25 AM Page 322 323 Chapter 15 ✦ Linux Kernel System. image at boot time: image=/boot/vmlinuz-2.2.17-old label=OldLinux read-only 4710-0 ch15.F 4/10/01 11:25 AM Page 3 26 327 Chapter 15 ✦ Linux Kernel This identifies the image to use, including the