Differences between version 3 and predecessor to the previous major change of HowToRemoteSerialConsoleHOWTO.
Other diffs: Previous Revision, Previous Author, or view the Annotated Edit History
Newer page: | version 3 | Last edited on Sunday, October 31, 2004 1:35:21 am | by AristotlePagaltzis | Revert |
Older page: | version 2 | Last edited on Friday, June 7, 2002 1:07:25 am | by perry | Revert |
@@ -1,7547 +1 @@
-Remote Serial Console HOWTO
-!!!Remote Serial Console HOWTO
-!Glen !TurnerAustralian Academic and Research Network
-
-glen.turner+howto@aarnet.edu.au
-
-
-!Mark F. Komarinski
-
-mkomarinskiATwayga.org
-
-
-
-v2.1 2002-05-16
-
-
-__Revision History__Revision 2.12002-05-16Revised by: gdtCorrections to kernel console syntax. Addition of USB
-and devfs.Revision 2.02002-02-02Revised by: gdtSecond edition.Revision #88041.02001-03-20Revised by: mfkFirst edition.
-
-
-
-
-
-An RS-232 serial console allows
-Linux to be controlled from
-a terminal or modem attached to an asynchronous serial port. The
-monitor, mouse and keyboard are no longer required for system
-administration. Serial consoles are useful where Linux systems are deployed in remote
-sites or are deployed in high-density racks.
-
-
-
-This ''HOWTO'' describes how to configure
-Linux to attach a serial
-console.
-
-
-
-
-
---------
-!!!Dedication
-
-Glen Turner would like to thank his family for allowing him to
-work on this project for the surprisingly large number of evenings
-which it took to write this ''HOWTO''. Thanks
-Karen, Kayla and Ella.
-
-; __Table of Contents__; 1. Introduction: ; 1.1. What is a console?; 1.2. Why use a serial console?; 1.3. Alternative meanings of #8216console#8217; 1.4. Configuration overview; 2. Preparation: ; 2.1. Create fallback position; 2.2. Select a serial port; 2.3. Select a serial speed and parameters; 2.4. Configure the modem or the null-modem cable; 2.5. Configure the terminal or the terminal emulator; 3. Optionally configure the BIOS; 4. Configure the boot loader: ; 4.1. Configure the LILO boot
-loader; 4.2. Configure the GRUB boot
-loader; 4.3. Configure the SYSLINUX boot
-loader; 5. Configure Linux
-kernel: ; 5.1. Configure Linux kernel using
-LILO; 5.2. Configure Linux kernel using
-GRUB; 5.3. Configure Linux kernel using
-SYSLINUX; 6. Configure getty: ; 6.1. init system; 6.2. Traditional getty; 6.3. agetty; 6.4. mgetty; 6.5. mingetty; 6.6. No getty; 7. Configure incidentals: ; 7.1. Allow root to
-login from serial console; 7.2. Change init level to textual; 7.3. Remove saved console settings; 7.4. Serial console is not /dev/modem; 7.5. Alter target of /dev/systty; 7.6. Configure Pluggable Authentication Modules; 7.7. Configure Red Hat Linux; 8. Reboot and test: ; 8.1. Verify console operation; 8.2. Re-create saved console settings; 8.3. Test the console; 8.4. Where to next from here?; 9. Security: ; 9.1. Use good passwords; 9.2. Obey Data Terminal Ready and Data Carrier Detect; 9.3. Use or configure a dumb modem; 9.4. Restrict console messages; 9.5. Modem features to restrict usage; 9.6. BIOS features; 9.7. Use a boot loader password; 9.8. Non-interactive boot sequence; 9.9. Magic __!SysRq__ key; 9.10. Adjust behaviour of __Ctrl__-__Alt__-__Delete__; 9.11. Log attempted access; 9.12. Interception of telephony links; 10. Configuring a kernel to support serial console: ; 10.1. Linux kernel version 2.5; 10.2. Linux kernel version 2.4; 10.3. Linux kernel version
-2.2; 11. Serial cabling: ; 11.1. Jargon; 11.2. Cable from console port to modem; 11.3. Cable from console port to terminal (or another PC); 11.4. Making serial cables; 12. Modem configuration: ; 12.1. Using Minicom to give commands to
-a modem; 12.2. Configure dumb modem; 12.3. Configure modem with AT commands; 12.4. Internal modems; 12.5. !WinModems; A. Bugs and annoyances: ; A.1. Red Hat Linux
-7.1 and !SysVinit; A.2. BIOSs, keyboards and video cards; A.3. Modem hangs up upon reboot; A.4. init and
-syslog output does not display on
-secondary consoles; A.5. The console is unresponsive after connecting; A.6. Modem hangs up during initialization; A.7. Boot loader has no flow control; A.8. Boot loaders are vulnerable to line noise; A.9. Advanced Power Management; A.10. Modems and overseas telecommunications requirements; B. Uploading files from a serial console: ; B.1. Disable logging to console; B.2. ASCII upload and __cat__; B.3. Xmodem,
-Ymodem and
-Zmodem; B.4. Kermit; C. Upgrading Red Hat Linux from a
-serial console: ; C.1. Select boot disk; C.2. Configure the BIOS to use the serial
-port; C.3. Configure modem to ignore DTR and assert
-DCD; C.4. Prepare a network install floppy diskette; C.5. Prepare HTTP server; C.6. Record network configuration; C.7. Record LILO configuration; C.8. Upgrade Red Hat distribution; C.9. Create boot disk for serial console; C.10. Further references; D. Terminal server configuration: ; D.1. Considerations when buying second-hand terminal
-servers; D.2. Cisco 2511; D.3. Xyplex/iTouch MAXserver
-1600; D.4. Xylogics/Bay/Nortel Annex; E. Gratuitous advice for developers: ; E.1. Advice for boot loader authors; E.2. Advice for BIOS authors; F. About this HOWTO: ; F.1. Copyright; F.2. Disclaimer; F.3. Acknowledgments; F.4. Comments and corrections; Colophon; __List of Tables__; 1-1. Different ways of referring to the #8216console#8217; 2-1. Many names for the same serial port; 2-2. Interrupts used for IBM
-PC/AT RS-232
-ports; 4-1. SYSLINUX flow control
-bitmap; 10-1. IBM-PC/AT serial port bit rates and
-their bit-clock divisors; __List of Figures__; 2-1. Using the __setserial__ command in
-/etc/rc.serialto disable the serial port
-/dev/ttyS2; 2-2. Syntax for serial bits per second rate, in extended
-Backus-Naur form; 2-3. Syntax for serial parity, in extended Backus-Naur
-form; 2-4. Syntax for serial data bits, in extended Backus-Naur
-form; 2-5. Syntax for serial stop bits, in extended Backus-Naur
-form; 2-6. Syntax for serial flow control, in extended Backus-Naur
-form; 2-7. Syntax for kernel serial parameters, in extended
-Backus-Naur form; 4-1. Syntax of LILO
-__serial__ command, in
-EBNF; 4-2. LILO __serial__
-EBNF variables; 4-3. LILO boot loader sample configuration; 4-4. Using __md5crypt__ to create a hashed
-password for GRUB; 4-5. GRUB configuration to require a
-password; 4-6. GRUB configuration for serial
-console; 4-7. GRUB configuration for serial
-console and attached monitor and keybaord console; 4-8. GRUB configuration for command
-line interface for terminals other than
-VT100; 4-9. Adding a single user mode option to the
-GRUB menu; 4-10. Syntax of SYSLINUX
-__serial__ command, in
-EBNF; 4-11. SYSLINUX
-__serial__ EBNF variables; 5-1. Kernel console syntax, in EBNF; 5-2. Recommended kernel parameters, PCs with
-video card; 5-3. Recommended kernel parameters, PCs
-without video card; 5-4. Recommended kernel parameters, LILO configuration; 5-5. Recommened kernel parameters,
-GRUB configuration; 5-6. Recommended kernel parameters,
-SYSLINUX configuration; 6-1. Interactively altering the connecting terminal's make and
-model; 6-2. getty is started by
-init, based upon an entry in
-/etc/inittab; 6-3. Define CON9600 in
-gettydefs; 6-4. Syntax of entries in /etc/gettydefs,
-in EBNF; 6-5. /etc/inittab entry for
-agetty; 6-6. /etc/inittab entry for
-mgetty; 6-7. mgetty configuration file
-mgetty.config; 6-8. Fewer virtual terminals. Removing
-mingetty entries from
-/etc/inittab; 6-9. Fewer virtual terminals. Deallocating unused virtual
-terminals and removing their device files.; 6-10. Contents of /etc/rc.serial to lock
-console serial port when no getty
-used; 7-1. Alter securetty to allow root to log in from the serial
-console; 7-2. Removal of ioctl.save containing the
-saved console parameters; 7-3. Remove /dev/modem if
-it points to the serial console's port; 7-4. Default value of /dev/systty in
-/etc/makedev.d/linux-2.4.x; 7-5. Alter value of /dev/systty in
-__MAKEDEV__ configuration file; 7-6. Installing new value of /dev/systty; 7-7. Default `consoleb in
-console.perms refers to attached keyboard and
-screen; 7-8. Default device listing in
-console.perms; 7-9. Devices in console.perms required for
-attached keyboard and screen; 7-10. Add `sconsoleb in
-console.perms to refer to serial
-console; 7-11. Remaining devices in console.perms
-altered to refer to serial console; 7-12. Alterations to /etc/sysconfig/init for
-Red Hat Linux; 7-13. Alterations to /etc/sysconfig/kudzu
-for Red Hat Linux; 9-1. Extract from Crackers favour war dialling and
-weak passwords; 9-2. /etc/syslog.conf modified to copy log
-messages to a log server; 9-3. Allowing remote log messages by setting options in
-/etc/sysconfig/syslog; 9-4. Restrict syslog messages to
-remote.example.edu.au; 9-5. Using nscd to cache reverse
-DNS lookups; 9-6. Restrict sending of messages to console user; 9-7. Restrict sending of messages to console user,
-/etc/profile.d/mesg.sh; 9-8. Restrict sending of messages to console user,
-/etc/profile.d/mesg.csh; 9-9. Install files into /etc/profile.d; 9-10. Using __sysctl__ to defeat the magic
-__!SysRq__ key; 9-11. Configuring /etc/sysctl.conf to defeat
-the magic __!SysRq__ key; 9-12. Kernel __make menuconfig__ showing disabled
-__!SysRq__ key; 9-13. Kernel .config showing disabled
-__!SysRq__ key; 9-14. Default handling of __Ctrl__-__Alt__-__Delete__ in
-/etc/inittab; 9-15. Ignoring __Ctrl__-__Alt__-__Delete__ in
-/etc/inittab; 9-16. Shut down cleanly upon __Ctrl__-__Alt__-__Delete__ in
-/etc/inittab; 10-1. Kernel configuration for serial console using __make
-menuconfig__; 10-2. Kernel configuration for serial console using
-.config; 10-3. Kernel configuration for USB dongle
-serial console using __make menuconfig__; 10-4. Kernel configuration for USB dongle
-serial console using .config; 10-5. Kernel configuration for serial console using __make
-menuconfig__; 10-6. Kernel configuration for serial console using
-.config; 11-1. Null modem cable with full status and handshaking; 11-2. Null modem cable with falsified status and
-handshaking; 11-3. Null modem cable with no status or handshaking; 12-1. Front panel of a dumb modem; 12-2. Testing the modem's port speed; 12-3. Configure modem using AT
-commands; 12-4. Resetting a Hayes AT-style
-modem; A-1. __setserial__ causes a modem to hang up as
-the machine initializes; B-1. Supressing kernel messages to the console in Red Hat
-Linux; C-1. Configuring BIOS to use serial link; C-2. Configuring BIOS to boot from hard disk; C-3. Extract from Red Hat Linux 7.2
-mkbootdisk which creates
-SYSLINUX.CFG; C-4. Altered extract from mkbootdisk, which
-creates a SYSLINUX.CFG that uses a serial
-console; D-1. Basic configuration for Cisco
-2511 terminal server to Linux PC; E-1. Configuring /dev/nvram to access the
-CMOS configuration; E-2. Getting the CMOS configuration; E-3. Setting the CMOS configuration; __List of Examples__; 4-1. Using kernel parameters to avoid access permissions; 5-1. Complete LILO configuration, as
-installed by vendor; 5-2. Complete LILO configuration, modified for serial console; 5-3. Complete GRUB configuration, as
-installed by vendor; 5-4. Complete GRUB configuration,
-modified for serial console; 8-1. Dialing into a serial console; C-1. Displaying the Internet Protocol configuration; C-2. Displaying the LILO
-configuration----
-!!!Chapter 1. Introduction
- ''
-
-''''console'' n.
[[From
-latin ''consolatio(n)'' "comfort,
-spiritual solace."
] A device for displaying or printing
-condolances or obituaries for the operator.''
-
-
-
-''Stan Kelly-Bootle, ''The Computer
-Contradictionary''.''
-
-''----
-!!!1.1. What is a console?
-
-The console is the text output device for system
-administration messages. These messages come from the kernel, from
-the init system and from the system
-logger.
-
-
-
-On modern small computers the console is usually the
-computer's attached monitor and keyboard.
-
-
-
-On many older computers the console is an
-RS-232 link to a terminal such as a
-DEC VT100. This
-terminal is in a locked room and is continually observed by the
-minicomputer's operators. Large systems from Sun, Hewlett-Packard
-and IBM still use serial consoles.
-
-
-
-It is usually possible to login from the console. A login
-session from the console is treated by many parts of the operating
-system as being more trustworthy than a login session from other
-sources. Logging in as the root super-user from the console is
-the Command Line of Last Resort when faced with a misbehaving
-system.
-
-----
-!!!1.2. Why use a serial console?
-
-For the average user a serial console has no advantage over a
-a console offered by a directly attached keyboard and screen.
-Serial consoles are much slower, taking up to a second to fill a 80
-column by 24 line screen. Serial consoles generally only support
-non-proportional ASCII text, with limited
-support for languages other than English. A new terminal can be
-more expensive than an old PC.
-
-
-
-There are some scenarios where serial consoles are
-useful. These are:
-
-
-
-
-
-; Systems administration of remote computers:
-
-Linux is an good
-operating system for deployment at unstaffed sites. Linux is also good at hosting
-critical network infrastructure such as DNS
-and DHCP servers. These servers are
-generally installed at every site of an organisation including
-sites which may be too small or too remote to have information
-technology staff.
-
-
-
-System administration of these remote computers is usually
-done using SSH, but
-there are times when access to the console is the only way to
-diagnose and correct software failures. Major upgrades to the
-installed distribution may also require console access.
-
-
-
-In these cases the serial console is attached to a modem.
-Access to the console is gained from a remote computer by
-dialing into the modem. This allows the console to be reached
-from any telephone socket.
-
-; High density racks of computers:
-
-Clusters of personal computers can outperform mainframe
-computers and form competitive supercomputers for some
-applications. See the ''Cluster-HOWTO''
-for more information on clustering.
-
-
-
-These clusters are typically assembled into 19 inch
-telecommunications equipment racks and the system unit of each
-computer is typically one rack unit (or 1.75 inches) tall. It
-is not desirable to put a keyboard and monitor on each computer,
-as a small cathode ray tube monitor would consume the space used
-by sixteen rack units.
-
-
-
-A first glance it seems that a monitor and keyboard switch
-is the best solution. However the VGA signal
-to the monitor is small, so even with the switch the monitor
-cannot be placed very far away from the rack of
-computers.
-
-
-
-It is desirable to allow the consoles to be monitored in
-the operators' room of the computer center, rather than in the
-very expensive space of the machine room. Although monitor
-switches with remote control and fiber optical extensions are
-available, this solution can be expensive.
-
-
-
-A standard RS-232 cable can be 15 meters
-in length. Longer distances are easily possible. The cabling is
-cheap. Terminal servers can be used to allow one terminal to be
-access up to 90 serial consoles.
-
-; Recording console messages:
-
-This is useful in two very different cases.
-
-
-
-Kernel programmers are often faced with a kernel error
-message that is displayed a split second before the computer
-reboots. A serial console can be used to record that
-message. Another Linux
-machine can be used as the serial terminal.
-
-
-
-Some secure installations require all security events to
-be unalterably logged. A way to meet this requirement is to
-print all console messages. Connecting the serial console to a
-serial printer can achieve this.[[1]
-
-; Embedded software development:
-
-Linux is
-increasingly being as the operating system in embedded
-applications. These computers do not have keyboards or
-screens.
-
-
-
-A serial port is a cheap way to allow software developers
-to directly access the embedded computer. This is invaluable
-for debugging. Most chip sets designed for embedded computers
-have a serial port precisely for this purpose.
-
-
-
-The shipping product need not present the
-RS-232 port on an external connector.
-Alternatively the RS-232 port is often used for
-downloading software updates.
-
-; Craft terminal for telecommunications equipment:
-
-Linux is
-increasingly being used as the operating system inside
-telecommunications equipment. The Carrier Grade
-Linux consortia hopes to accelerate and coordinate this
-trend.
-
-
-
-Most telecommunications equipment is remotely managed from
-a distant computer. However, site technicans (called
-''craft personnel'' in telco-speak) need to
-access the equipment to test installation changes, check the
-status of reported faults, and so on. The terminal used by the
-craft personnel is called the ''craft
-terminal''. The craft terminal plugs into the
-''craft interface'' on the
-equipment.[[2]
-
-
-
-It is common, but not universal, industry practice for
-craft terminals to be a DEC
-VT100 terminal (or
-an emulator). The craft interface is commonly assumed to be an
-RS-232 DCE interface,
-running at 9600bps with 8 data bits, no parity,
-one stop bit, no handshaking and no status lines. An
-RJ45 connector is sometimes used in place of
-RS-232's standard 25-pin D
-connector. The DCE interface allows the
-craft terminal to be connected without a special null modem
-cable.
-
-
-
-Unlike minicomputer systems, the
-IBM
-PC was not designed to use a
-serial console. This has two consequences.
-
-
-
-Firstly, Power On Self-Test messages and Basic Input/Output
-System (BIOS) messages are sent to the screen
-and received from the keyboard. This makes it difficult to
-reconfigure the BIOS and makes it impossible to
-see Power On Self-Test errors.
-
-
-
-An increasing number of manufacturers of rackable
-''server'' equipment are altering their
-BIOSs to optionally use the
-RS-232 port for the BIOS's messages and
-configuration. If you are buying a machine specifically for use
-with serial console you should seek this feature. If you have an
-existing machine that definitely requires access to the
-BIOS from the serial port then there are
-hardware solutions such as PC Weasel
-2000.
-
-
-
-Secondly, the RS-232 port on the
-IBM
-PC is designed for connecting to a
-modem. Thus a null modem cable is needed when connecting the PC's
-serial port to a terminal.
-
-----
-!!!1.3. Alternative meanings of #8216console#8217
-
-Some authors use the word #8216console#8217 to refer to
-the keyboard and monitor that are attached to the system unit.
-This is described as a #8216physical console#8217 by some
-Linux documentation. The
-console where system messages appear is described as the
-#8216logical console#8217 by that documentation.
-
-
-
-As an illustration of the difference, X
-Windows should start on the physical console but
-system messages issued by failures when starting X
-Windows should be written to the logical
-console.
-
-
-
-To avoid confusion this ''HOWTO'' uses the
-word #8216console#8217 to describe the place where system
-messages are printed. This ''HOWTO'' uses the
-phrase "attached monitor and keyboard" rather than the
-confusing words "physical console".
-
-
-
-These distinctions are also made in the naming of devices.
-The device /dev/console is
-used to send messages to the console. The symbolic link /dev/systty points to the device which
-is used by the attached monitor and keyboard, often /dev/tty0.
-
-
-
-__Table 1-1. Different ways of referring to the #8216console#8217__
-
-
-Document
-
-This ''HOWTO''
-
-
-
-console
-
-
-
-Attached monitor and keyboard
-
-
-
-Some Linux documentation
-
-
-
-Logical console
-
-
-
-Physical console
-
-
-
-Device names
-
-
-
-/dev/console
-
-
-
-/dev/systty
-
-----
-!!!1.4. Configuration overview
-
-There are five major steps to configuring a serial
-console.
-
-
-#
-
-Optionally, the BIOS may be configured
-to use the serial port.
-
-
-#
-#
-
-If needed, the boot loader may be configured to use the
-serial port.
-
-
-#
-#
-
-The Linux kernel must be configured to use the serial port
-as its console. This is done by passing the kernel the
-console parameter when the kernel is started
-by the boot loader.
-
-
-#
-#
-
-The init system should keep a
-process running to monitor the serial console for logins. The
-monitoring process is traditionally called
-getty.
-
-
-#
-#
-
-A number of system utilities need to be configured to make
-them aware of the console, or configured to prevent them from
-disrupting the console.
-
-
-#
-
-Examples in this ''HOWTO'' are from
-Red Hat Linux versions
-7.1 and
-7.2, which were released in 2001.
-The maintainer would appreciate updates for later versions of
-Red Hat Linux. The maintainer would
-very much appreciate examples for Linux distributions that are dissimilar
-to Red Hat Linux; particularly
-Debian GNU/Linux and
-Slackware Linux.
-
-----
-!!!Chapter 2. Preparation
-
-This chapter ensures that access the existing console can be
-restored should the serial console fail to start.
-
-
-
-This chapter then discusses the selection of the
-RS-232 port and its parameters.
-
-----
-!!!2.1. Create fallback position
-
-Good system administrators always have a viable fallback
-plan to cope with failures. A mistake configuring the serial
-console can make both the serial console and the attached monitor
-and keyboard unusable. A fallback plan is needed to retrieve
-console access.
-
-
-
-Many Linux
-distributions allow boot diskettes to be created. Writing a boot
-diskette before altering the console configuration results in a
-boot diskette that passes good parameters to the kernel rather than
-parameters that may contain an error.
-
-
-
-Under Red Hat Linux a boot
-diskette is created by determining the running kernel
-version
-
-
-
-
-
-
-bash$ __uname -r__
-2.4.2-2
-
-
-
-
-
-and then using that version to create the boot
-diskette
-
-
-
-
-
-
-bash# __mkbootdisk --device /dev/fd0 2.4.2-2__
-
-
-
-
-
-An alternative fallback position is have a rescue diskette
-with the machine. A common choice is Tom's root boot.
-
-----
-!!!2.2. Select a serial port
-!!2.2.1. Serial port names
-
-Linux names its serial ports in the
-UNIX tradition. The first serial port
-has the file name /dev/ttyS0, the second serial port
-has the file name /dev/ttyS1, and so on.
-
-
-
-This differs from the IBM
-PC tradition. The first serial
-port is named COM1:, the
-second serial port is named COM2:, and so on. Up to four serial
-ports can be present on a IBM
-PC/AT computer and its
-successors.
-
-
-
-Most boot loaders have yet another naming scheme. The first
-serial port is numbered , the second serial
-port is numbered 1, and so on.
-
-
-
-If your distribution of Linux uses the
-devfs device manager then the serial
-ports have yet another name. The first serial port is /dev/tts/, the second serial port
-is /dev/tts/1, and so
-on.
-
-
-
-The result is that the first serial port is labeled
-COM1: on the chassis of
-the IBM
-PC; is known as /dev/ttyS0 to Linux; is known as /dev/tts/0 to Linux's running
-devfs; and is known as port
-0 to many boot loaders.
-
-
-
-The examples in this ''HOWTO'' use this
-first serial port, as that is the serial port which most readers
-will wish to use.
-
-
-
-__Table 2-1. Many names for the same serial port__
-
-
-IBM PCLinux kernelLinux kernel with
-devfsMost boot loadersCOM1:/dev/ttyS0/dev/tts/00COM2:/dev/ttyS1/dev/tts/11COM3:/dev/ttyS2/dev/tts/22COM4:/dev/ttyS3/dev/tts/33----
-!!2.2.2. Cannot share interrupt used for console's serial
-port
-
-When used for a console the serial port cannot share an
-interrupt with another device. The
-IBM
-PC devices are usually installed
-as shown in Table 2-2. If you
-use the serial port /dev/ttyS0 for the console then you
-should avoid sharing interrupt 4 by not installing a serial port
-/dev/ttyS2 in your
-PC. If /dev/ttyS2 cannot be physically
-removed then disable it using the __setserial__
-command, as shown in Figure 2-1.
-
-
-
-__Table 2-2. Interrupts used for IBM
-PC/AT RS-232
-ports__
-
-
-!DeviceInterruptPort/dev/ttyS040x3f8/dev/ttyS130x2f8/dev/ttyS240x3e8/dev/ttyS330x2e8
-
-__Figure 2-1. Using the __setserial__ command in
-/etc/rc.serialto disable the serial port
-/dev/ttyS2__
-
-
-# Disable /dev/ttyS2 so interrupt 4 is not shared,
-# then /dev/ttyS0 can be used as a serial console.
-setserial /dev/ttyS2 uart none port 0x0 irq
-
-Note that the interrupt-sharing constraint appears to apply
-to all computer architectures, not just Intel Architecture
-32.
-
-----
-!!!2.3. Select a serial speed and parameters
-
-This ''HOWTO'' does not discuss the
-RS-232 standard, which is formally known as
-''ANSI/TIA/EIA-232-F-1997 Interface
-Between Data Terminal Equipment and Data Circuit-Terminating
-Equipment Employing Serial Data Interchange''. For an
-explanation of #8216bits per second#8217, #8216start
-bits#8217, #8216data bits#8217, #8216parity#8217,
-#8216stop bits#8217 and #8216flow control#8217 refer to the
-''Serial-HOWTO''
-and the ''Modem-HOWTO''.
-
-
-
-The description of the command syntax for setting the serial
-parameters in the kernel, boot loaders and login applications uses
-the following variables which describe RS-232
-parameters.
-
-
-
-
-
-; ''`speedb'':
-
-The speed of the serial link in bits per second.
-
-
-
-The Linux kernel
-on a modern PC supports 50, 75, 110, 134.5,
-150, 200, 300, 600, 1200, 1800, 2400, 4800, 9600, 19200, 38400,
-57600 and 115200 bits per second for a serial port being used as
-a console. Higher bit rates may be possible depending upon the
-model of the serial port's semiconductor.
-
-
-
-Very recent Linux
-kernels can also offer a serial console using a
-USB serial dongle at speeds of 1200, 2400,
-4800, 9600, 19200, 38400, 57600 and 115200 bits per
-second.
-
-
-
-Most boot loaders only support a subset of the range
-supported by the kernel. LILO
-21.7.5 supports 110, 150, 300,
-600, 1200, 2400, 4800, 9600, 19200, 38400, 56000, 57600 and
-115200 bits per second. SYSLINUX
-1.67 supports 75 to 56000 bits
-per second. GRUB
-.90 supports 2400, 4800, 9600,
-19200, 38400, 57600 and 115200 bits per second.
-
-
-
-You must chose the same speed for both the boot loader and
-for the Linux kernel.
-An operating system may use more than one boot loader. For
-example, Red Hat Linux uses
-SYSLINUX to install or upgrade the
-operating system; LILO as the boot
-loader for Red Hat Linux
-7.1 and earlier; and
-GRUB as the boot loader for
-Red Hat Linux
-7.2 and later.
-
-
-
-If you are using a serial terminal or if you are using a
-dumb modem then the bit rate of the terminal or dumb modem must
-also match the bit rate selected in the boot loader and
-kernel.
-
-
-
-If the serial console is connected to a Hayes-style modem
-slower than 9600bps then configure the serial
-console with the same speed as the modem. Modems faster than
-9600bps will generally automatically
-synchronize to the speed of the serial port.
-
-
-
-The selected bit rate must also be supported by the serial
-port's semiconductor. Early model UARTs such
-as the 8250 series and the 16450 could only reliably recieve at
-up to 14400bps. The 16550 series and later
-models will work at all bit rates.
-
-
-
-Unless you have good reason, use the popular bit rate of
-9600 bits per second. This is the default bit rate of a great
-many devices.
-
-
-
-The speeds that are supported by the kernel, the three
-common boot loaders, and all IBM PCs capable of running Linux
-are: 2400, 4800, 9600 and 19200 bits per second. This is a
-depressingly small selection: not slow enough to support a call
-over an international phone circuit and not fast enough to
-upload large files. You may need to choose a speed that will
-result in a less robust software configuration.
-
-
-
-__Figure 2-2. Syntax for serial bits per second rate, in extended
-Backus-Naur form__
-
-
-
-''`speedb'' ::= ''`digitsb''
-''`digitsb'' ::= ''`digitb'' | ''`digitb''''`digitsb''
-''`digitb'' ::= 0 | 1 | #8230 | 9
-
-; ''`parityb'':
-
-Number of parity bits and the interpretation of a parity
-bit if one is present.
-
-
-
-Allowed values are n for no parity bit,
-e for one bit of even parity and
-o for one bit of odd parity.
-
-
-
-Using no parity bit and eight data bits is
-recommended.
-
-
-
-If parity is used then even parity is the common
-choice.
-
-
-
-Parity is a simple form of error detection. Modern modems
-have much better error detection and correction. As a result
-the parity bit guards only the data on the cable between the
-modem and the serial port. If this cable has a low error rate,
-and it should, then the parity bit is not required.
-
-
-
-__Figure 2-3. Syntax for serial parity, in extended Backus-Naur
-form__
-
-
-
-''`parityb'' ::= n | e | o
-
-; ''`datab'':
-
-The number of data bits per character.
-
-
-
-Allowed values are 7 bits or
-8 bits, as Linux uses the
-ASCII character set which requires at least
-seven bits.
-
-
-
-Eight data bits are recommended. This allows the link to
-easily be used for file transfers and allows non-English text to
-be presented.
-
-
-
-__Figure 2-4. Syntax for serial data bits, in extended Backus-Naur
-form__
-
-
-
-''`datab'' ::= 7 | 8
-
-; ''`stopb'':
-
-The number of stop bit-times.[[3]
-
-
-
-Allowed values are 1 or
-2.
-
-
-
-One stop bit-time is recommended.
-
-
-
-If the RS-232 cable is very long then
-two stop bit-times may be needed.
-
-
-
-You may occassionally see 1.5 stop bit-times. The intent
-is to gain 4% more data throughput when a link is too long for
-one stop bit-time but is too short to require two stop
-bit-times. 1.5 stop bit-times is now rare enough to be a hazard
-to use.
-
-
-
-__Figure 2-5. Syntax for serial stop bits, in extended Backus-Naur
-form__
-
-
-
-''`stopb'' ::= 1 | 2
-
-; ''`flow_controlb'':
-
-The type of flow control to use.
-
-
-
-The Linux kernel allows no flow control and
-CTS/RTS flow
-control.
-
-
-
-No flow control is the default, this is indicated by
-omitting `flow_controlb.
-
-
-
-CTS/RTS flow control
-is recommended, especially if login access is also provided to
-the serial port. This is indicated by a `flow_controlb of
-r.
-
-
-
-CTS/RTS flow control
-regulates the flow of chatacters. The computer does not send
-characters until Clear To Send is asserted by the modem. If the
-computer is has enough buffering to recieve characters from the
-modem the computer asserts Ready to Send. Thus neither the
-computer nor the modem's buffers are filled to
-overflowing.
-
-
-
-The kernel's CTS/RTS
-flow control is not perfect. Unlike a user application, the
-kernel cannot wait forever for Clear To Send to be asserted.
-The kernel tests Clear To Send a large number of times and then
-sends the message in any case. The kernel does not assert Ready
-To Send, as the kernel is never recieves key strokes. Of
-course, a user-space application such as
-getty can set Ready To Send to
-recieve keystrokes.
-
-
-
-At present the RS-232 status lines are
-ignored by the kernel. A kernel message will be printed even if
-Data Carrier Detect and Data Set Ready are not asserted. This
-is a bug, which probably appeared because it is convenient for
-kernel developers to avoid the hassle of configuring their
-terminal emulators correctly.
-
-
-
-__Figure 2-6. Syntax for serial flow control, in extended Backus-Naur
-form__
-
-
-
-''`flow_controlb'' ::= ''`nilb'' | r
-
-
-
-The Linux kernel uses the syntax in Figure 2-7 to describe the serial
-parameters. Many boot loaders use a variation of the syntax used
-by the Linux kernel.
-
-
-
-__Figure 2-7. Syntax for kernel serial parameters, in extended
-Backus-Naur form__
-
-
-
-''`modeb'' ::= ''`speedb''''`parityb''''`datab''''`flow_controlb''
-
-
-
-Note that ''`modeb'' does not
-include ''`stopb''. The kernel
-assumes the number of stop bits to be one. This shortcoming need
-to be considered when deploying long RS-232
-cables.
-
-
-
-Most boot loaders default to 9600n8. A
-common default found on older terminals is
-9600e7.
-
-
-
-Use 9600n8r if possible, as this is the
-default for most Linux software and modern devices.
-
-
-
-This ''HOWTO'' always configures the
-serial speed and parameters, even where not strictly necessary.
-This is so that people configuring parameters other than the
-recommended and common default value 9600n8r
-will know what to alter.
-
-----
-!!!2.4. Configure the modem or the null-modem cable
-
-If a modem is used, configure it to be a dumb modem at the
-port speed selected in Section 2.3. If
-the modem accepts Hayes AT commands see Chapter 12 to dumb-down the modem.
-
-
-
-Alternatively if a terminal and a null-modem cable are used
-see Section 11.3, which discusses the pinout
-of the null modem cable.
-
-----
-!!!2.5. Configure the terminal or the terminal emulator
-
-Configure the terminal to match the serial parameters. The
-data bits, parity bits and stop bits must match. If a modern
-#8216smart#8217 modem is used then the bit speeds need not
-match. If a dumb modem or a null modem cable is used then the bit
-speeds must match.
-
-
-
-Set CTS/RTS handshaking
-on, DTR/DSR handshaking off
-and XON/XOFF handshaking off.
-Your equipment may call
-CTS/RTS handshaking or
-DTR/DSR handshaking
-#8216hardware handshaking#8217 and may call
-XON/XOFF handshaking
-#8216software handshaking#8217.
-
-
-
-Set automatic line wrapping on. This allows all of a long
-console message to be read.
-
-
-
-Set the received end of line characters to
-LF CR (line feed then
-carriage return). Set the transmitted end of line characters to
-just CR (carriage return).
-
-
-
-If you are using a terminal emulator then it is best to
-choose to emulate the popular DEC
-VT100 or
-VT102 terminal. Later terminals in the
-DEC VT range are compatible
-with the VT100. If this terminal is not
-available then try to emulate another terminal that implements
-''ANSI X3.64-1979
-Additional Controls for Use with American National Standard Code
-for Information Interchange'' (or its successor
-'' ISO/IEC 6429:1992
-ISO Information technology - Control
-functions for coded character sets''). For example, many
-emulators have a terminal called ANSI BBS which
-uses the IBM PC character set, the 16
-IBM PC colors, a 80 column by 25 line
-screen and a selection of ''X3.64-1979'' control
-sequences.
-
-
-
-See the ''Text-Terminal-HOWTO''
-for much more information on configuring terminals.
-
-----
-!!!Chapter 3. Optionally configure the BIOS
-
-Some BIOSs provide support for serial
-consoles. If your computer's BIOS is one of
-these you should investigate the extent of the support provided.
-Depending upon the extent of serial console support you may not need
-to explicitly configure the boot loader to use the serial
-port.
-
-
-
-The contributors to this ''HOWTO'' have
-encountered the following styles of BIOS support
-for serial consoles.
-
-
-
-
-
-; Redirection of textual VGA output to the serial port:
-
-The BIOS takes the interrupt 0x10
-"video" requests used to write to the screen and
-sends the characters that would have appeared on the screen to
-the serial port. Characters recieved from the serial port are
-used to supply characters to BIOS interrupt
-0x16 "read key" requests.
-
-
-
-Any 16-bit application which uses the
-BIOS functions for outputing text to the
-screen and reading from the keyboard is redirected to the serial
-port. This includes the BIOS itself, the boot
-loader, and 16-bit operating systems (such as
-MS-DOS).
-
-
-
-When a 32-bit operating system (such as Linux, BSD or Windows NT/2000/XP) loads the 16-bit
-BIOS is no longer accessible and the
-BIOS can no longer be used for input and
-output. The 32-bit operating system loads its own device drivers
-for this purpose. These device drivers then need to provide the
-redirection of console I/O to the serial
-port.
-
-
-
-If your BIOS uses this technique then
-you should:
-
-
-#
-
-Configure the BIOS to redirect
-keyboard input and video output to the serial port.
-
-
-#
-#
-
-Do not configure the boot loader, as the
-BIOS will redirect this 16-bit application's
-input and output to the serial port.
-
-
-#
-#
-
-Configure Linux
-to use the serial port as a console, as Linux is a 32-bit operating
-system.
-
-
-#; BIOS configuration and power on self-test
-uses the serial port:
-
-These BIOSs use the serial port for
-configuration and the power-on self-test, but do not redirect the
-interrupt 0x10 "video" requests interrupt 0x16
-"read key" requests to the serial port.
-
-
-
-Some BIOSs which usually redirect all
-keyboard and video output to the serial port can be configured in
-only to redirect BIOS inpout and output. Look
-for a BIOS configuration option similar to
-Cease redirection after boot.
-
-
-
-If your BIOS uses this technique or you
-choose to set Cease redirection after
-boot then you should:
-
-
-#
-
-Configure the BIOS to send its output
-to the serial port.
-
-
-#
-#
-
-Configure the boot loader to use the serial port.
-
-
-#
-#
-
-Configure Linux
-to use the serila port as the console, as Linux is a 32-bit operating
-system.
-
-
-#; Redirection of graphical VGA output to
-the serial port:
-
-Some graphical 32-bit operating systems do not provide
-their own facilities to send console output to the serial port.
-Some BIOSs attempt to overcome this shortcoming, using a
-propietary serial protocol to send graphical output to a remote
-serial client.
-
-
-
-As these machines cannot be connected to from a standard
-terminal emulator this facility is best left unconfigured when
-using the Linux operating
-system.
-
-
-#
-
-Configure the BIOS not to send output
-to the serial port.
-
-
-#
-#
-
-Configure the boot loader to use the serial port.
-
-
-#
-#
-
-Configure Linux
-to use the serial port as the console.
-
-
-#; No serial port facilities:
-
-The BIOS cannot be accessed from the
-serial port, so power-on self-test messages cannot be
-seen.
-
-
-
-Note that BIOS may still be able to be
-configured remotely using the /dev/nvram device. This takes some
-care.
-
-
-#
-
-Configure the boot loader to use the serial port.
-
-
-#
-#
-
-Configure Linux
-to use the serial port as the console.
-
-
-#
-
-If you need to configure the boot loader to use the serial
-port then continue to Chapter 4.
-Otherwise go to directly to Chapter 5 to
-configure the kernel; this is done by configuring the boot loader to
-pass boot parameters to the Linux kernel.
-
-----
-!!!Chapter 4. Configure the boot loader
-
-When a PC boots the CPU it runs code from Read-Only Memory.
-This code is the Basic Input/Output System, or
-BIOS. The BIOS then loads a
-boot loader from the Master Boot Record of the first hard
-disk.[[4]
-In turn, the boot loader reads the operating system into memory and
-then runs it.[[5]
-
-
-
-Neither the BIOS nor the boot loader are
-strictly necessary. For example, there are versions of Linux
-that run directly from the flash memory which usually contains the
-BIOS.
-
-
-
-The benefits of using a boot loader are:
-
-
-
-
-
-
-*
-
-Multiple operating systems can be booted. See the ''Linux + Windows HOWTO'' for
-more information.
-
-
-*
-*
-
-Parameters can be passed to the kernel interactively. This
-is useful for solving hardware problems; for example, some
-interrupt lines can be disabled, direct memory access to some
-drives can be disabled, and so on. See the ''Linux
-!BootPrompt-HOWTO'' for a list of kernel
-parameters.
-
-
-*
-*
-
-Differing kernels can be interactively loaded. This is
-useful when deploying a new kernel, as it provides simple fallback
-to a proven kernel.
-
-
-*
-
-For these reasons systems administrators want to be able to
-interactively control the boot loader from the serial
-console.
-
-
-
-LILO,
-GRUB and
-SYSLINUX are popular boot loaders for
-IBM
-PCs. Find which of these boot
-loaders your Linux
-installation uses and then follow the instructions for your boot
-loader in the following section.
-
-----
-!!!4.1. Configure the LILO boot
-loader
-
-LILO is the Linux Boot Loader used
-on Intel machines. Other boot loaders for Intel machines exist,
-common alternatives are GRUB and
-SYSLINUX. Equivalents to
-LILO exist for other processor
-architectures, their names are usually some play upon
-#8216LILO#8217.
-
-
-
-LILO is documented in the
-''lilo(8)'' and
-''lilo.conf(5)'' manual pages; the
-''LILO Generic boot loader for
-Linux #8230 User's Guide'' found in the file
-/usr/share/doc/lilo#8230/doc/User_Guide.ps;
-and the ''LILO
-mini-HOWTO''.
-
-
-
-The LILO configuration is kept in
-the file /etc/lilo.conf. The first part of
-the file applies to all images. The following parts are
-image descriptions for each kernel.
-
-
-
-Set LILO to use the serial port.
-The syntax of the serial line parameters follows that used by the
-kernel, except that one stop bit is assumed.
-
-
-
-__Figure 4-1. Syntax of LILO
-__serial__ command, in
-EBNF__
-
-
-
-serial=''`portb''[[,''`speedb''[[''`parityb''[[''`datab'']]]
-
-
-
-Where the variables are the same as used by the kernel (shown
-in Figure 2-7) and:
-
-
-
-__Figure 4-2. LILO __serial__
-EBNF variables__
-
-
-
-''`portb'' ::= 0 | 1| #8230 | 3
-
-
-
-Our examples use /dev/ttyS0, which
-LILO knows as port
-.
-
-
-
-__Figure 4-3. LILO boot loader sample configuration__
-
-
-serial=,9600n8
-timeout=100
-restricted
-password=''PASSWORD''
-
-The parameters restricted and
-password are used to avoid someone dialing in,
-booting the machine, and stepping around the Linux access
-permissions by typing:
-
-
-
-__Example 4-1. Using kernel parameters to avoid access permissions__
-
-
-LILO: __linux init=/sbin/sash__
-
-The password should be good, as it can be used to gain
-root access. The
-LILO password is stored in plain text in
-the configuration file, so it should never be the same as any other
-password. The permissions on the configuration file should be set
-so that only root can
-read /etc/lilo.conf.
-
-
-
-
-
-
-bash# __chmod u=rw,go= /etc/lilo.conf__
-
-
-
-
-
-LILO has an option to display a
-boot message. This does not work with serial consoles. Remove any
-lines like:
-
-
-
-
-
-
-message=/boot/message
-
-
-
-
-
-LILO is now configured to use the
-serial console. The kernels booted from
-LILO are yet to be configured to use the
-serial console.
-
-----
-!!!4.2. Configure the GRUB boot
-loader
-
-GRUB is a boot loader designed to
-boot a wide range of operating systems from a wide range of
-filesystems. GRUB is becoming popular
-due to the increasing number of possible root filesystems that can
-Linux can reside upon.
-
-
-
-GRUB is documented in a
-GNU info file. Type __info grub__
-to view the documentation.
-
-
-
-The GRUB configuration file is
-/boot/grub/menu.lst, although some
-distributions use another configuration file. For example,
-Red Hat Linux uses the file
-/boot/grub/grub.conf.
-
-
-
-GRUB configuration files are
-interpreted. Syntax errors will not be detected until the machine
-is rebooted, so take care not to make typing errors.
-
-
-
-Edit the GRUB configuration file
-and remove any __splashimage__ entries. If these
-entries are not removed GRUB .90
-behaves very oddly, transferring control between the serial console
-and the attached monitor and keyboard.
-
-
-
-If there is not already a __password__ command
-in the GRUB configuration file then
-create a hashed password, see Figure 4-4. The password should be
-good, as it can be used to gain root access.
-
-
-
-__Figure 4-4. Using __md5crypt__ to create a hashed
-password for GRUB __
-
-
-grubb __md5crypt__
-Password: __**********__
-Encrypted: $1$U$JK7xFegdxWH6VuppCUSIb.
-
-Use that hashed password in the
-GRUB configuration file, this is shown
-in Figure 4-5.
-
-
-
-__Figure 4-5. GRUB configuration to require a
-password__
-
-
-password --md5 $1$U$JK7xFegdxWH6VuppCUSIb.
-
-Define the serial port and configure
-GRUB to use the serial port, as shown in
-Figure 4-6.
-
-
-
-__Figure 4-6. GRUB configuration for serial
-console__
-
-
-serial --unit=0 --speed=9600 --word=8 --parity=no --stop=1
-terminal serial
-
---unit is the number of the
-serial port, counting from zero, unit 0 being
-COM1.
-
-
-
-Note that the values of
---parity are spelt out in full:
-no, even and
-odd. The common abbreviations
-n, e and o
-are ''not'' accepted.
-
-
-
-If there is mysteriously no output on the serial port then
-suspect a syntax error in the __serial__ or
-__terminal__ commands.
-
-
-
-If you also want to use and attached monitor and keyboard as
-well as the serial port to control the
-GRUB boot loader then use the
-alternative configuration in Figure 4-7.
-
-
-
-__Figure 4-7. GRUB configuration for serial
-console and attached monitor and keybaord console__
-
-
-password --md5 $1$U$JK7xFegdxWH6VuppCUSIb.
-serial --unit=0 --speed=9600 --word=8 --parity=no --stop=1
-terminal --timeout=10 serial console
-
-When both the serial port and the attached monitor and
-keyboard are configured they will both ask for a key to be pressed
-until the timeout expires. If a key is pressed then the boot menu
-is displayed to that device. The other device sees nothing.
-
-
-
-If no key is pressed then the boot menu is displayed on the
-whichever of serial or
-console is listed first in the
-__terminal__ command. After the timeout set by the
-__timeout__ the default option set by
-__default__ is booted.
-
-
-
-
-
-
-Press any key to continue.
-Press any key to continue.
-Press any key to continue.
-Press any key to continue.
-Press any key to continue.
-Press any key to continue.
-Press any key to continue.
-Press any key to continue.
-Press any key to continue.
-Press any key to continue.
-GRUB version .90 (639K lower / 162752K upper memory)
-+-------------------------------------------------------------------------+
-| [[ Red Hat Linux (2.4.9-21) ] |
-| |
-| |
-+-------------------------------------------------------------------------+
-Use the ^ and v keys to select which entry is highlighted.
-Press enter to boot the selected OS or 'p' to enter a
-password to unlock the next set of features.
-The highlighted entry will be booted automatically in 10 seconds.
-
-
-
-
-
-Note that there are two timeouts involved.
-Press any key to continue is
-printed for __terminal --timeout=10__ seconds,
-waiting for someone on the keyboard or terminal to press a key to
-get the input focus. Then the menu is displayed for
-__timeout 10__ seconds before the default boot
-option is taken.
-
-
-
-If the terminal attached to the serial port is not a real or
-emulated VT100, then force
-GRUB to use it's command line interface.
-This interface is much more difficult to use than
-GRUB's menu interface; however, the
-command line interface does not assume the
-VT100's terminal language.
-
-
-
-__Figure 4-8. GRUB configuration for command
-line interface for terminals other than
-VT100__
-
-
-terminal --timeout=10 --dumb serial console
-
-This ''HOWTO'' does not discuss the use of
-GRUB's command line. It is far too
-complex and error-prone to recommend for use on production
-machines. Wizards will know to consult
-GRUB's info
-manual for the commands required to boot the kernel.
-
-
-
-GRUB's menu's can be edited
-interactively after __P__ is pressed and the password
-supplied. A better approach is to add menu items to boot the
-machine into alternative run levels. A sample configuration
-showing a menu entry for the default run level and an alternative
-menu entry for single user mode (run level
-''s'') is shown in Figure 4-9. Remember to use
-the __lock__ command to require a password for
-single user mode, as single user mode does not ask for a
-Linux password.
-
-
-
-__Figure 4-9. Adding a single user mode option to the
-GRUB menu__
-
-
-password --md5 $1$U$JK7xFegdxWH6VuppCUSIb.
-default
-title Red Hat Linux (2.4.9-21)
-root (hd0,)
-kernel /vmlinuz-2.4.9-21 ro root=/dev/hda6
-initrd /initrd-2.4.9-21.img
-title Red Hat Linux (2.4.9-21) single user mode
-lock
-root (hd0,)
-kernel /vmlinuz-2.4.9-21 ro root=/dev/hda6 s
-initrd /initrd-2.4.9-21.img
-
-File names in the __kernel__ and
-__initrd__ commands are relative to the
-GRUB installation directory, which is
-usually /boot/grub. So
-/vmlinuz-2.4.9-21 is actually the file
-/boot/grub/vmlinuz-2.4.9-21.
-
-
-
-GRUB is now configured to use the
-serial console. The kernels booted from
-GRUB are yet to be configured to use the
-serial console.
-
-----
-!!!4.3. Configure the SYSLINUX boot
-loader
-
-SYSLINUX
-is a boot loader that is installed on a MS-DOS floppy disk. As
-directed by it's configuration file
-\SYSLINUX.CFG it will load one of the files
-from the floppy disk as a Linux kernel.
-
-
-
-SYSLINUX presents a simple text
-interface that can be used to select between canned configurations
-defined in the configuration file and can be used to add parameters
-to the kernel.
-
-
-
-ISOLINUX and
-PXELINUX are variants of
-SYSLINUX for CD-ROMs and Intel's Preboot
-Execution Environment.
-
-
-
-SYSLINUX supports a variety of
-serial port speeds, but it only supports eight data bits, no parity
-and one stop bit. SYSLINUX supports the
-serial ports COM1: through
-to COM4:, as with most boot
-loaders these are written as port 0 through to
-port 3.
-
-
-
-For SYSLINUX to support a serial
-console add a new ''first line'' to
-\SYSLINUX.CFG:
-
-
-
-__Figure 4-10. Syntax of SYSLINUX
-__serial__ command, in
-EBNF__
-
-
-
-serial ''`spaceb'' ''`portb'' [[ ''`spaceb'' ''`speedb'' [[ ''`spaceb'' ''`syslinux_flow_controlb'' ] ]
-
-
-
-The variables are the same as used by syntax descriptions in
-Figure 2-7 and Figure 4-2 plus those in Figure 4-11.
-
-
-
-__Figure 4-11. SYSLINUX
-__serial__ EBNF variables__
-
-
-
-''`spaceb'' ::= #8216 #8217
-''`syslinux_flow_controlb'' ::= ''`hex_digitsb''
-''`hex_digitsb'' ::= 0x''`hex_digitb''''`hex_digitb''''`hex_digitb''
-''`hex_digitb'' ::= 0 | 1 | #8230 | 9 | a | b | #8230 | f
-
-
-
-The ''`syslinux_flow_controlb''
-variable controlling the RS-232 status and flow
-control signals is optional. If your null-modem cable does not
-present any status or handshaking signals then do not use it. The
-value of ''`syslinux_flow_controlb''
-is calculated by adding the hexadecimal values for the desired flow
-control behaviours listed in Table 4-1.
-
-
-
-The behaviours for a correctly-wired null-modem cable or a
-correctly configured modem are marked "Required for full
-RS-232 compliance" in the table. The sum
-of these values is 0xab3.
-
-
-
-__Table 4-1. SYSLINUX flow control
-bitmap__
-
-
-
-
-Flow control behaviour
-
-
-
-Hex value
-
-
-
-Required for full RS-232
-compliance?
-
-
-
-Assert DTR
-
-
-
-0x001
-
-
-
-Yes
-
-
-
-Assert RTS
-
-
-
-0x002
-
-
-
-Yes
-
-
-
-Wait for CTS assertion
-
-
-
-0x010
-
-
-
-Yes
-
-
-
-Wait for DSR assertion
-
-
-
-0x020
-
-
-
-Yes
-
-
-
-Wait for RI assertion
-
-
-
-0x040
-
-
-
-No
-
-
-
-Wait for DCD assertion
-
-
-
-0x080
-
-
-
-Yes
-
-
-
-Ignore input unless CTS asserted
-
-
-
-0x100
-
-
-
-No
-
-
-
-Ignore input unless DSR asserted
-
-
-
-0x200
-
-
-
-Yes
-
-
-
-Ignore input unless RI asserted
-
-
-
-0x400
-
-
-
-No
-
-
-
-Ignore input unless DCD asserted
-
-
-
-0x800
-
-
-
-Yes
-
-
-
-Our preferred configuration of 9600bps,
-port , full RS-232 status
-signals and CTS/RTS flow
-control is written as:
-
-
-
-
-
-
-serial 0 9600 0xab3
-
-
-
-
-
-
-
-
-
-
-When using this configuration SYSLINUX
-will not display anything and will not accept any typed character
-until the RS-232 status signals show a
-connected modem call (or a connected terminal if you are using a
-null-modem cable).
-
-
-
-If you have a null modem cable with no RS-232 status signals
-and no flow control then use:
-
-
-
-
-
-
-serial 0 9600
-
-
-
-
-
-Remember that the __serial__ command must be
-the first line in \SYSLINUX.CFG.
-
-----
-!!!Chapter 5. Configure Linux
-kernel
-
-The Linux kernel is
-configured to use a serial console by passing it the
-console parameter. The
-console parameter can be given repeatedly; in
-that case output is sent to all consoles and input is taken from the
-last listed console. The last console is the one
-Linux uses as the /dev/console device.
-
-
-
-The syntax of the console parameter is
-given in Figure 5-1.
-
-
-
-__Figure 5-1. Kernel console syntax, in EBNF__
-
-
-
-console=ttyS''`portb''[[,''`modeb'']
-console=tty''`virtual_terminalb''
-console=lp''`parallel_portb''
-console=ttyUSB[[''`usb_portb''[[,''`speedb''[[''`parityb''[[''`datab''[[r]]]]]
-
-
-
-''`portb'' is the number of the
-serial port. This is defined in Figure 4-2 and discussed in Section 2.2. The examples in this
-''HOWTO'' use the first serial port, giving
-''`portb'' the value
-ttyS0.
-
-
-
-If you are using the devfs device
-filesystem with your Linux installation the kernel parameter for the
-first serial port is still ttyS0, even though the
-first serial device is no longer known as /dev/ttyS0 but as /dev/ttys/.
-
-
-
-''`modeb'' is defined in Figure 2-7 and is discussed in Section 2.3. The examples in this
-''HOWTO'' use 9600 bits per second, one start
-bit, eight data bits, no parity, one stop bit, and
-CTS/RTS flow control giving
-''`modeb'' the value of
-9600n8r.
-
-
-
-''`usb_portb'' can specify the
-address of a USB dongle containing a serial port
-to be used as a serial console.[[6]
-For example, the serial port
-console=ttyS00,9600n8r when moved to a
-USB serial dongle would be written as
-console=ttyUSB0,9600n8r. The
-USB subsystem is started rather late in the boot
-process, console messages printed during boot before the
-USB subsystem is loaded will be lost.
-
-
-
-With no console parameter the kernel will
-use the first virtual terminal, which is /dev/tty0. A user at the keyboard
-uses this virtual terminal by pressing
-__Ctrl__-__Alt__-__F1__.
-
-
-
-If your computer contains a video card then we suggest that
-you also configure it as a console. This is done with the kernel
-parameter console=tty0.
-
-
-
-For computers with both a video card and a serial console in
-the port marked #8216COM1:#8217 this
-''HOWTO'' suggests the kernel parameters:
-
-
-
-__Figure 5-2. Recommended kernel parameters, PCs with
-video card__
-
-
-console=tty0 console=ttyS0,9600n8r
-
-Kernel messages will appear on both the first virtual terminal
-and the serial port. Messages from the
-init system and the system logger will
-appear only on the first serial port. This can be slightly
-confusing when looking at the attached monitor: the machine will
-appear to boot and then hang. Don't panic, the
-init system has started but is now
-printing messages to the serial port but is printing nothing to the
-screen. If a getty has been configured
-then a login: prompt will
-eventually appear on the attached monitor.
-
-
-
-For PCs without a video card, this
-''HOWTO'' suggests the kernel parameters:
-
-
-
-__Figure 5-3. Recommended kernel parameters, PCs
-without video card__
-
-
-console=ttyS0,9600n8r
-
-These parameters are passed to the booting kernel by the boot
-loader. Next we will configure the boot loader used by your
-Linux installation to pass
-the console parameters to the kernel.
-
-----
-!!!5.1. Configure Linux kernel using
-LILO
-
-For each image entry in
-/etc/lilo.conf add the line:
-
-
-
-__Figure 5-4. Recommended kernel parameters, LILO configuration__
-
-
-append="console=tty0 console=ttyS0,9600n8r"
-
-Sometimes the append line will already
-exist. For example
-
-
-
-
-
-
-append="mem=1024M"
-
-
-
-
-
-In this case, the existing append line is
-modified to pass all the parameters. The result is:
-
-
-
-
-
-
-append="mem=1024M console=tty0 console=ttyS0,9600n8r"
-
-
-
-
-
-As a complete example, a typical
-/etc/lilo.conf configuration from
-Red Hat Linux
-7.1 is:
-
-
-
-__Example 5-1. Complete LILO configuration, as
-installed by vendor__
-
-
-boot=/dev/hda
-map=/boot/map
-install=/boot/boot.b
-prompt
-timeout=50
-message=/boot/message
-default=linux
-image=/boot/vmlinuz-2.4.2-2
-label=linux
-read-only
-root=/dev/hda6
-initrd=/boot/initrd-2.4.2-2.img
-
-This is modified to
-
-
-
-__Example 5-2. Complete LILO configuration, modified for serial console__
-
-
-boot=/dev/hda
-map=/boot/map
-install=/boot/boot.b
-prompt
-default=linux
-# Changes for serial console on COM1: in global section
-# Deleted: message=/boot/message
-timeout=200
-serial=,9600n8
-timeout=100
-restricted
-password=de7mGPe3i8
-image=/boot/vmlinuz-2.4.2-2
-label=linux
-read-only
-root=/dev/hda6
-initrd=/boot/initrd-2.4.2-2.img
-# Changes for serial console on COM1: in each image section
-append="console=tty0 console=ttyS0,9600n8r"
-
-Now that we have finished configuring
-LILO, use the __lilo__
-command to install the new boot record onto the disk:
-
-
-
-
-
-
-bash# __chown root:root /etc/lilo.conf__
-bash# __chmod u=rw,g=,o= /etc/lilo.conf__
-bash# __lilo__
-Added linux *
-
-
-
-----
-!!!5.2. Configure Linux kernel using
-GRUB
-
-Find each title entry in the GRUB
-configuration file. It will be followed by a
-kernel line. For example
-
-
-
-
-
-
-title Red Hat Linux (2.4.9-21)
-root (hd0,)
-kernel /vmlinuz-2.4.9-21 ro root=/dev/hda6
-initrd /initrd-2.4.9-21.img
-
-
-
-
-
-Modify each of the kernel lines to append
-the parameters that inform the kernel to use a serial
-console.
-
-
-
-__Figure 5-5. Recommened kernel parameters,
-GRUB configuration__
-
-
-title Red Hat Linux (2.4.9-21)
-root (hd0,)
-kernel /vmlinuz-2.4.9-21 ro root=/dev/hda6 console=tty0 console=ttyS0,9600n8r
-initrd /initrd-2.4.9-21.img
-
-As a complete example, Example 5-3 is a typical GRUB
-configuration from Red Hat Linux
-7.2.
-
-
-
-__Example 5-3. Complete GRUB configuration, as
-installed by vendor__
-
-
-default=
-timeout=10
-splashimage=(hd0,)/grub/splash.xpm.gz
-password --md5 $1$wwmIq64O$2vofKBDL9vZKeJyaKwIeT.
-title Red Hat Linux (2.4.9-21)
-root (hd0,)
-kernel /vmlinuz-2.4.9-21 ro root=/dev/hda6
-initrd /initrd-2.4.9-21.img
-
-The modified configuration file is shown in Example 5-4.
-
-
-
-__Example 5-4. Complete GRUB configuration,
-modified for serial console__
-
-
-default=
-timeout=10
-password --md5 $1$wwmIq64O$2vofKBDL9vZKeJyaKwIeT.
-serial --unit=0 --speed=9600 -word=8 --parity=no --stop=1
-terminal --timeout=10 serial console
-title Red Hat Linux (2.4.9-21)
-root (hd0,)
-kernel /vmlinuz-2.4.9-21 ro root=/dev/hda6 console=tty0 console=ttyS0,9600n8r
-initrd /initrd-2.4.9-21.img
-title Red Hat Linux (2.4.9-21) single user mode
-lock
-root (hd0,)
-kernel /vmlinuz-2.4.9-21 ro root=/dev/hda6 console=tty0 console=ttyS0,9600n8r s
-initrd /initrd-2.4.9-21.img----
-!!!5.3. Configure Linux kernel using
-SYSLINUX
-
-Edit each LABEL entry to add an
-APPEND line containing the serial console
-parameter to pass to the Linux kernel. Like
-LILO, if a kernel already has
-parameters, then add our parameters to the list after
-APPEND.
-
-
-
-For example:
-
-
-
-__Figure 5-6. Recommended kernel parameters,
-SYSLINUX configuration__
-
-
-APPEND console=tty0 console=ttyS0,9600n8r
-
-There are some traps for beginners in the differences between
-LILO and
-SYSLINUX.
-LILO uses append=,
-whereas SYSLINUX uses just
-append. __lilo__ needs to be run
-after each change to /etc/lilo.conf, whereas
-__syslinux__ does not need to be run after changing
-\SYSLINUX.CFG.
-
-----
-!!!Chapter 6. Configure getty
-
-getty monitors serial lines,
-waiting for a connection. It then configures the serial link, sends
-the contents of /etc/issue, and asks the person
-connecting for their login name. getty
-then starts login and
-login asks the person for their password.
-If the user does nothing, getty or
-login hang up and
-getty goes back to waiting.
-
-
-
-The getty command has been
-re-implemented numerous times. There is a wide selection of
-getty clones, each with slight
-differences in behavior and syntax. We will describe the
-traditional getty, and then some popular
-alternatives.
-
-
-
-One of the jobs of a getty is to
-set the TERM environment variable to indicate the
-make and model of the terminal which is connecting. In this
-''HOWTO'' we set the terminal to the commonly
-emulated DEC
-VT100. If you occassionally
-connect using a different terminal emulation then you can
-interactively change your choice of terminal by setting
-TERM to the appropiate terminal listed in
-/etc/termcap.
-
-
-
-__Figure 6-1. Interactively altering the connecting terminal's make and
-model__
-
-
-bash$ __TERM=kermit__
-bash$ __tset -r__
-
-But first, let's see how getty gets
-started in the first place.
-
-----
-!!!6.1. init system
-
-The file /etc/inittab contains the
-background programs that used to keep the system running. One of
-these programs is one getty process per
-serial port.
-
-
-
-__Figure 6-2. getty is started by
-init, based upon an entry in
-/etc/inittab__
-
-
-s0:2345:respawn:/sbin/getty ttyS0 CON9600
-
-Each field in inittab is separated by a
-colon and contains:
-
-
-
-
-
-; s0:
-
-Arbitrary entry for inittab. As long
-as this entry doesn't appear anywhere else in
-inittab, you're okay. We named this entry
-s0 because it's for /dev/ttyS0.
-
-; 2345:
-
-Run levels where this entry gets started. Run levels 2,
-3, 4 and 5 can be used for an operational system,
-getty should not be used in other run
-levels. The serial console still works in run level 1 (or
-single user mode) even without a
-getty.
-
-; respawn:
-
-Re-run the program if it dies. We want this to happen so
-that a new login prompt will appear when you
-log out of the console.
-
-; /sbin/getty ttyS0 CON9600 vt102:
-
-The command to run. In this case, we're telling
-getty to connect to /dev/ttyS0 using the settings for
-CON9600 which exists in
-/etc/gettydefs. This entry represents a
-terminal running at 9600bps. Initially assume
-that the terminal is a later-model
-VT100.
-
-
-
-After changing /etc/inittab restart
-init with
-
-
-
-
-
-
-__telinit q__
-
-
-
-
-
-An alternative is to send the hangup signal to
-init with the command __kill -HUP
-1__. This is not recommended: if you make a typing mistake
-and actually kill init then your system
-will suddenly halt.
-
-----
-!!!6.2. Traditional getty
-
-Traditional getty implementations
-include uugetty and
-getty_ps.
-
-
-
-The traditional getty is listed in
-/etc/inittab with the name of a section in
-/etc/gettydefs to use for its configuration.
-Our example in Figure 6-2 used the section
-CON9600.
-
-
-
-There is no CON9600 in the standard
-gettydefs. This is deliberate, as serial
-consoles sometimes require slight tweaking. Copy the
-DT9600 entry and use it as your model.
-
-
-
-__Figure 6-3. Define CON9600 in
-gettydefs__
-
-
-# Serial console 9600, 8, N, 1, CTS/RTS flow control
-CON9600# B9600 CS8 -PARENB -ISTRIP CRTSCTS HUPCL # B9600 SANE CS8 -PARENB -ISTRIP CRTSCTS HUPCL #@S @L login: #CON9600
-
-Separate each line with a blank line.
-
-
-
-Each configuration line has the syntax:
-
-
-
-__Figure 6-4. Syntax of entries in /etc/gettydefs,
-in EBNF__
-
-
-
-''`labelb''# ''`initial_flagsb'' # ''`final_flagsb'' #''`login_promptb''#''`next_labelb''
-
-
-
-The ''`labelb'' is referred to
-on the getty command line.
-
-
-
-The ''`next_labelb'' is the
-definition used if a RS-232 Break is sent. As
-the console is always 9600bps, this points back
-to the original ''label''. See Section 9.9 if you ever intend to have more one line
-for CON9600 in
-gettydefs.
-
-
-
-''`initial_flagsb'' are the
-serial line parameters used by getty.
-These are modeled on the ''stty(1)'' and
-''termios(3)'' options and the full list varies
-depending upon your getty variant. The
-parameters in Figure 6-3 ensure that a
-line at 9600bps with eight data bits and no
-parity is configured.
-
-
-
-''`final_flagsb'' are the serial
-line parameters set by getty before it
-calls login. You will usually want to set a
-9600bps line, SANE terminal
-handling, eight data bits, no parity and to hang up the modem when
-the login session is finished.
-
-
-
-The ''`login_promptb'' for
-serial lines is traditionally the name of the machine, followed by
-the serial port, followed by login: and a space.
-The macro that inserts the name of the machine and the serial port
-varies, see the documentation for your
-getty.
-
-----
-!!!6.3. agetty
-
-agetty is an "alternative
-getty". It takes all of its parameters on the command line,
-with no use of /etc/gettydefs or any other
-configuration file. agetty is
-documented in the manual page
-''agetty(8)''.
-
-
-
-Figure 6-5 shows how to invoke
-agetty for use with a serial
-console.
-
-
-
-__Figure 6-5. /etc/inittab entry for
-agetty__
-
-
-s0:2345:respawn:/sbin/agetty -h -t 60 ttyS0 9600 vt102
-
-ttyS0 refers to the serial device
-/dev/ttyS0.
-
-
-
-9600 is the bits per second of the serial
-link. agetty will support multiple values, using the modem's
-CONNECT message or the RS-232
-Break signal to select between them. Only use one value, as serial
-consoles only have only one data rate.
-
-
-
-vt102 sets the TERM
-environment variable to indicate that a
-VT100 terminal is
-connecting.
-
-
-
--h activates CTS/RTS handshaking.
-
-
-
--t 60 allows 60 seconds for someone to
-attempt to log in before the modem is hung up.
-
-
-
-agetty uses escape sequences in
-/etc/issue to insert information. For
-example, \n.\o \l will appear as
-remote.example.edu.au ttyS0.
-
-----
-!!!6.4. mgetty
-
-mgetty is a modem-aware
-getty. It supports modems with the
-Hayes AT command set and is especially designed
-for supporting modems that are used to send faxes and to dial out
-as well as dial in. These features are not required for a serial
-console.
-
-
-
-mgetty does not require the
-traditional /etc/gettydefs file. As a result
-mgetty is invoked from
-/etc/inittab without supplying an entry in
-/etc/gettydefs.
-
-
-
-__Figure 6-6. /etc/inittab entry for
-mgetty__
-
-
-s0:2345:respawn:/sbin/mgetty ttyS0
-
-mgetty is configured using the
-file /etc/mgetty+sendfax/mgetty.config. It
-should contain an entry for the port used by the serial
-console.
-
-
-
-__Figure 6-7. mgetty configuration file
-mgetty.config__
-
-
-port ttyS0
-speed 9600
-direct yes
-data-only yes
-toggle-dtr yes
-need-dsr yes
-port-owner root
-port-group root
-port-mode 600
-login-prompt @ \P login:\040
-login-time 60
-term vt102
-
-All the options are documented in the
-!PostScript file
-/usr/share/doc/mgetty#8230/mgetty.ps.
-
-
-
-We set direct,
-data-only, need-dsr and
-toggle-dtr so that the RS-232
-control lines are used correctly for a dumb modem.
-
-
-
-port-owner, port-group
-and port-mode set the serial device to be
-accessible only by the root user. Modem applications, which
-normally use the uucp
-group, cannot now accidentally use the serial console.
-
-
-
-login-prompt shows the machine
-(@) and serial port (\P)
-being used. The text \040 is simply the octal
-code for a space after login:.
-
-
-
-term vt102 gives the make and model of the
-terminal most likely to dial in. This sets the
-TERM environment variable, which you can change
-if you are dialling in from another terminal type.
-
-
-
-The remaining configuration files,
-/etc/mgetty+sendfax/dialin.config and
-/etc/mgetty+sendfax/login.config, do not need
-to be altered.
-
-
-
-If you wish to alter the suggested configuration then note
-that mgetty's
-blocking and toggle-dtr
-parameters do not co-exist well.
-
-
-
-If you have difficulties, activate debugging by adding
-debug 8 to mgetty.config.
-mgetty's actions are then visible in the
-file /var/log/mgetty.log.ttyS0.
-
-----
-!!!6.5. mingetty
-
-mingetty is designed to be a
-minimal getty for the virtual terminals
-on the the workstation's monitor and keyboard. It has no support
-for serial lines.
-
-
-
-You must not use mingetty for the
-serial line in /etc/inittab, but the current
-mingetty entries for the virtual
-terminals can remain.
-
-
-
-Each virtual terminal uses about 8KB of
-kernel memory. If this matters, it is easy to allocate fewer
-virtual terminals. In the Linux 2.4 kernel virtual terminals are
-created on demand, so not starting
-mingetty on the virtual terminal will
-not create the virtual terminal. If the machine does not have a
-video card then remove all the mingetty
-entries from /etc/inittab.
-
-
-
-__Figure 6-8. Fewer virtual terminals. Removing
-mingetty entries from
-/etc/inittab__
-
-
-1:2345:respawn:/sbin/mingetty tty1
-# Additional virtual terminals are not used
-# 2:2345:respawn:/sbin/mingetty tty2
-# 3:2345:respawn:/sbin/mingetty tty3
-# 4:2345:respawn:/sbin/mingetty tty4
-# 5:2345:respawn:/sbin/mingetty tty5
-# 6:2345:respawn:/sbin/mingetty tty6
-
-After restarting init it would be
-wise to remove the unused device files.
-
-
-
-__Figure 6-9. Fewer virtual terminals. Deallocating unused virtual
-terminals and removing their device files.__
-
-
-bash# __telinit q__
-bash# __deallocvt /dev/tty[[2-9] /dev/tty[[-9][[-9]__
-bash# __rm /dev/tty[[2-9] /dev/tty[[-9][[-9]__----
-!!!6.6. No getty
-
-If you are using serial console simply to print console
-messages then do not run a getty process
-on the serial port.
-
-
-
-getty follows a locking convention
-that prevents other serial port applications from using the serial
-port. Since we do not want other processes to use the serial port,
-but are not running getty, manually
-create the lock file.
-
-
-
-Create a file /var/lock/LCK..ttyS0 to
-contain the text 1. This lets other potential
-serial port applications know that process 1 has the serial port in
-use. Process 1 is always the init
-process, and init is always running, so
-the serial port is always locked.
-
-
-
-The file is created upon each system boot, as lock files are
-often cleared when the system boots. A convenient place to create
-the lock file is from /etc/rc.serial. It
-should contain:
-
-
-
-__Figure 6-10. Contents of /etc/rc.serial to lock
-console serial port when no getty
-used__
-
-
-# Lock /dev/ttyS0 as it is used by an output-only console
-(umask 022 88 \
-rm -f '/var/lock/LCK..ttyS0' 88 \
-echo '1' b '/var/lock/LCK..ttyS0')----
-!!!Chapter 7. Configure incidentals
-
-A surprising number of other configuration files need small
-modifications before the serial console works well.
-
-
-
-The configuration of many items depends upon your security
-requirements, especially depending upon the level of trust and
-corresponding need for security at the remote site. By assuming a
-high need for security at the remote site this
-''HOWTO'' can illustrate a large number of
-configuration items.
-
-----
-!!!7.1. Allow root to
-login from serial console
-
-The file /etc/securetty controls the
-devices that the root
-user can log in upon.
-
-
-
-It is usually desirable to have root be able to log in from the
-console, so add the basename of the serial console device to
-/etc/securetty.
-
-
-
-__Figure 7-1. Alter securetty to allow root to log in from the serial
-console__
-
-
-ttyS0
-
-Almost anyone can now dial into the modem and attempt to
-guess the root password.
-Normally we do not allow root to log in from a remote site,
-rather we have a normal user log in and then use
-__su__ or __sudo__
-to become root. This
-gives some traceability.
-
-
-
-Unfortunately, the root user needs to be able to log in
-from the console to fix a full disk. Disk subsystems typically
-reserve 5% of their space for root's exclusive use.[[7]
-This is enough space for the root user to log in and start
-deleting the files that filled the disk.
-
-----
-!!!7.2. Change init level to textual
-
-There is little point in running the X Window
-System on a server with no screen. Edit
-/etc/inittab finding the line containing
-initdefault, such as
-
-
-
-
-
-
-id:5:initdefault:
-
-
-
-
-
-Alter the default from run level 5 (multiuser with X Window
-System) to run level 3 (multiuser).
-
-
-
-
-
-
-id:3:initdefault:
-
-
-
-
-
-The __startx__ command can be used if an
-occassional X Windows session is
-required upon an attached keyboard and monitor.
-
-----
-!!!7.3. Remove saved console settings
-
-The file /etc/ioctl.save contains the
-serial and terminal parameters to use in single user mode. The
-serial and terminal parameters are usually set by
-getty - during single user mode no
-getty runs and the contents of
-/etc/ioctl.save are used to set the serial and
-terminal parameters.
-
-
-
-As we are changing consoles, the saved settings are no longer
-correct.
-
-
-
-__Figure 7-2. Removal of ioctl.save containing the
-saved console parameters__
-
-
-bash# __rm -f /etc/ioctl.save__
-
-We re-create this file once we can log in from the serial
-console.
-
-----
-!!!7.4. Serial console is not /dev/modem
-
-In many Linux distributions the file /dev/modem is a symbolic link to the
-serial port containing a modem which is available for use.
-
-
-
-Although the serial console is a serial port with a modem, we
-certainly don't want it used to place an outgoing call.
-
-
-
-Check that /dev/modem
-does not point to the serial port being used for the console, say
-/dev/ttyS0. If it does,
-then remove the symbolic link.
-
-
-
-__Figure 7-3. Remove /dev/modem if
-it points to the serial console's port__
-
-
-bash$ __ls -l /dev/modem__
-lrwxrwxrwx 1 root root 10 Jan 01 00:00 /dev/modem -b /dev/ttyS0
-bash# __rm /dev/modem__----
-!!!7.5. Alter target of /dev/systty
-
-In many Linux distributions the file /dev/systty is a symbolic link to the
-device which is used as the by the attached monitor and keyboard.
-See Section 1.3 for a fuller description.
-
-
-
-If there is no attached keyboard and monitor or no wish to
-give the attached keyboard and monitor greater capabilities then a
-text terminal, then alter /dev/systty to point to the serial
-console.
-
-
-
-Rather than directly altering this symbolic link, it is
-better to modify the configuration file used by
-__MAKEDEV__, which is then run to recreate the
-symbolic link. The configuration file is in the directory
-/etc/makedev.d. The default
-configuration will point to the first virtual terminal, as shown in
-Figure 7-4.
-
-
-
-__Figure 7-4. Default value of /dev/systty in
-/etc/makedev.d/linux-2.4.x__
-
-
-l systty tty0
-
-Modify this to point to the serial port being used by the
-console, as shown in Figure 7-5.
-
-
-
-__Figure 7-5. Alter value of /dev/systty in
-__MAKEDEV__ configuration file__
-
-
-bash# __cd /etc/makedev.d__
-bash# __fgrep systty *__
-linux-2.4.x:l systty tty0
-bash# __vi linux-2.4.x__
-l systty ttyS0
-
-Now re-create /dev/systty using its new definition, as
-shown in Figure 7-6.
-
-
-
-__Figure 7-6. Installing new value of /dev/systty__
-
-
-bash# __cd /dev__
-bash# __rm systty__
-bash# __./MAKEDEV systty__----
-!!!7.6. Configure Pluggable Authentication Modules
-
-The Pluggable Authentication
-Module system can be used to give special privileges
-to users that logged in through the console. It is used to make
-devices like the floppy disk mountable by the console's user;
-usually they would need to become the super-user to mount a
-disk.
-
-
-
-The PAM configuration file
-/etc/security/console.perms contains the
-`consoleb variable. For Red
-Hat Linux 7.1
-`consoleb is the regular
-expression:
-
-
-
-__Figure 7-7. Default `consoleb in
-console.perms refers to attached keyboard and
-screen__
-
-
-`consoleb=tty[[-9][[-9]* vc/[[-9][[-9]* :[[-9]\.[[-9] :[[-9]
-
-Later in the file the `consoleb user
-is granted permission to use some devices. This is done by
-altering the devices' permissions upon login and logout.
-
-
-
-__Figure 7-8. Default device listing in
-console.perms__
-
-
-`consoleb 0660 `floppyb 0660 root.floppy
-`consoleb 0600 `soundb 0600 root
-`consoleb 0600 `cdromb 0660 root.disk
-`consoleb 0600 `pilotb 0660 root.uucp
-`consoleb 0600 `jazb 0660 root.disk
-`consoleb 0600 `zipb 0660 root.disk
-`consoleb 0600 `ls120b 0660 root.disk
-`consoleb 0600 `scannerb 0600 root
-`consoleb 0600 `camerab 0600 root
-`consoleb 0600 `memstickb 0600 root
-`consoleb 0600 `flashb 0600 root
-`consoleb 0600 `fbb 0600 root
-`consoleb 0600 `kbdb 0600 root
-`consoleb 0600 `joystickb 0600 root
-`consoleb 0600 `v4lb 0600 root
-`consoleb 0700 `gpmb 0700 root
-
-There are two types of devices listed above: those devices
-required by someone connecting from an attached keyboard and
-monitor and those devices that allow convenient access to devices.
-The configuration file fails to make the distionction between
-logical and physical console noted in Section 1.3.
-The configuration file is modified to create that
-distinction.
-
-
-
-__Figure 7-9. Devices in console.perms required for
-attached keyboard and screen__
-
-
-`consoleb 0600 `fbb 0600 root
-`consoleb 0600 `kbdb 0600 root
-`consoleb 0600 `joystickb 0600 root
-`consoleb 0600 `v4lb 0600 root
-`consoleb 0700 `gpmb 0700 root
-
-The remaining devices should be altered to give control only
-to people attaching from the serial console. For example, we don't
-want an unprivileged user at a co-location site mounting a floppy
-disk. Define a new console type for the serial console, say
-`sconsoleb.
-
-
-
-__Figure 7-10. Add `sconsoleb in
-console.perms to refer to serial
-console__
-
-
-`sconsoleb=ttyS0
-
-Now modify the remaining entries from
-`consoleb to
-`sconsoleb.
-
-
-
-__Figure 7-11. Remaining devices in console.perms
-altered to refer to serial console__
-
-
-`sconsoleb 0660 `floppyb 0660 root.floppy
-`sconsoleb 0600 `soundb 0600 root
-`sconsoleb 0600 `cdromb 0660 root.disk
-`sconsoleb 0600 `pilotb 0660 root.uucp
-`sconsoleb 0600 `jazb 0660 root.disk
-`sconsoleb 0600 `zipb 0660 root.disk
-`sconsoleb 0600 `ls120b 0660 root.disk
-`sconsoleb 0600 `scannerb 0600 root
-`sconsoleb 0600 `camerab 0600 root
-`sconsoleb 0600 `memstickb 0600 root
-`sconsoleb 0600 `flashb 0600 root----
-!!!7.7. Configure Red Hat Linux
-
-Red Hat Linux stores parameters concerning system start up in
-the file /etc/sysconfig/init.
-
-
-
-Alter the parameter BOOTUP to use
-terminal-independent commands to write the
-OK,
-PASSED and
-FAILED messages. These messages
-will no longer appear in green, yellow or red. The comments in
-/etc/sysconfig/init suggest that any value
-other than color will do, but it seems that
-BOOTUP must be set to
-serial.
-
-
-
-Alter the PROMPT parameter to disallow
-interactive start up. Allowing an unauthenticated keystroke to stop
-system services is not robust against line noise and allows anyone
-that dials in during system boot to deny services.
-
-
-
-__Figure 7-12. Alterations to /etc/sysconfig/init for
-Red Hat Linux__
-
-
-BOOTUP=serial
-PROMPT=no
-
-Red Hat Linux runs a hardware
-discoverer, named kudzu. When
-attempting to identify a serial port
-Kudzu resets the serial port. This
-stops the serial console. Kudzu is
-configured from the file
-/etc/sysconfig/kudzu.
-
-
-
-Kudzu can be prevented from
-resetting hardware by setting the configuration parameter
-SAFE to yes.
-
-
-
-__Figure 7-13. Alterations to /etc/sysconfig/kudzu
-for Red Hat Linux__
-
-
-SAFE=yes----
-!!!Chapter 8. Reboot and test
-!!!8.1. Verify console operation
-
-If possible, plug an RS-232 breakout box
-into the serial port. During reboot the Data Terminal Ready line
-should become active and then the Transmit Data lights should flash
-as console messages appear.
-
-
-
-Attach a modem, or a null modem cable and a terminal.
-Configure them to match the serial parameters used by the serial
-console port. If using a modem, dial in to it from a terminal
-emulator.
-
-
-
-
-
-
-__+++__
-__AT Z__
-__AT DT 1234-5678__
-CONNECT 9600
-
-
-
-
-
-Configure the terminal or terminal emulator to match the
-serial parameters used by the serial console. If using a modern
-Hayes AT-style modem then the speed need not
-match. If using a directly-attached terminal then the speed must
-match.
-
-
-
-Reboot the computer.
-
-
-
-
-
-
-bash# __shutdown -h now__
-
-
-
-
-
-During reboot the terminal should see the usual boot loader
-text, and then the default kernel booting, then the
-init output, and finally the contents of
-/etc/issue and
-getty asking you to login.
-
-
-
-
-
-
-LILO:
-Linux version #8230
-Kernel command line: auto BOOT_IMAGE=linux ro root=306 BOOT_FILE=/boot/vmlinuz-2.4.3-12 console=tty0 console=ttyS0,9600n8r
-#8230
-INIT version #8230
-#8230
-/etc/issue says "All your base are belong to us".
-remote.example.edu.au ttyS0 login:
-
-
-
-
-
-If you do not see the login: message then
-press __Return__ or __Enter__.
-
-----
-!!!8.2. Re-create saved console settings
-
-Log in as root from
-the serial console and send the console into single user mode. The
-modem may hang up whilst doing this and you may need to
-re-connect.
-
-
-
-
-
-
-remote.example.edu.au ttyS0 login: __root__
-Password: __#8230__
-bash# __telinit 1__
-#8230Telling INIT to go to single user mode.
-INIT: Going single user
-INIT: Sending processes the TERM signal
-sh# __rm -f /etc/ioctl.save__
-sh# __stty sane -parenb cs8 crtscts brkint -istrip -ixoff -ixon__
-
-
-
-
-
-Exiting from single user mode back to the default run level
-will save the serial console configuration into
-/etc/ioctl.save.
-
-
-
-
-
-
-sh# __exit__
-#8230
-bash# __ls -l /etc/ioctl.save__
--rw------- 1 root root 60 Jan 1 00:00 /etc/ioctl.save
-
-
-
-
-
-This file will be used if the machine boots into single user
-mode for any reason.
-
-----
-!!!8.3. Test the console
-
-Dial in from a machine, perhaps using
-Minicom.
-
-
-
-__Example 8-1. Dialing into a serial console__
-
-
-localhost bash$ __minicom__
-Initializing modem
-Welcome to minicom 1.83.1
-Press ALT-Z for help on special keys
-AT S7=45 S0=0 L1 V1 X4 8C1 E1 Q0
-OK
-__Alt__-__D__ remote.example.edu.au-ttyS0
-Dialing: remote.example.edu.au-ttyS0 At: 1234-5678
-Connected. Press any key to continue
-__Any__
-CONNECT 115200/V34/LAPM/V42BIS/33600:TX/33600:RX
-__Enter__
-/etc/issue says "All your base are belong to us".
-remote.example.edu.au ttyS0 login: __user__
-Password: __********__
-Message of the day is "be careful out there".
-remote bash$ __stty -a__
-speed 9600 baud; rows ; columns ; line = ;
-intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = `undefb;
-eol2 = `undefb; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W;
-lnext = ^V; flush = ^O; min = 1; time = ;
--parenb -parodd cs8 hupcl -cstopb cread -clocal crtscts
--ignbrk brkint ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl -ixon -ixoff
--iuclc -ixany -imaxbel
-opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab3 bs0 vt0 ff0
-isig icanon -iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
--echoctl -echoke
-#8230
-remote bash$ __logout__
-NO CARRIER
-__Alt__-__X__
-Leave Minicom? Yes
-Resetting modem
-localhost bash$
-
-Interestingly the __stty -a__ command, used to
-display the terminal settings, reports that the link from the modem
-to the serial console is 9600bps. The
-CONNECT message reports that link between the
-two modems operates at 33600bps. The constant
-speed modem-computer link is a very useful feature of the Hayes
-AT-style modems: the calling computer need not
-know in advance the line speed of the called serial console.
-
-----
-!!!8.4. Where to next from
here?
-
-The serial console is now configured. Check the security
-pointers given in Chapter 9 to complete the
-job.
-
-----
-!!!Chapter 9. Security
-
-Using serial console with a modem gives anyone the opportunity
-to connect to the console port. This connection is not mediated by
-firewalls or intrusion detection sniffers. It is important to
-prevent the misuse of the serial console by unauthorized
-people.
-
-
-
-The resurgence of the BBS-era technique of
-#8216war dialling#8217 is described in @Stake's ''Wardialling
-Brief'' and reported upon by ''The
-Register'', see an extract in Figure 9-1.
-
-
-
-__Figure 9-1. Extract from ''Crackers favour war dialling and
-weak passwords''__
-
-
-
-With all the talk about zero day exploits and sometimes
-esoteric vulnerabilities its easy to lose sight of the role of
-older, less sophisticated techniques as a mainstay of cracker
-activity.
-
-
-
-During a hacking debate at !InfoSecurity Europe yesterday
-[[2002-04-25], black hat hacker KP said that when he broke into a
-network he did so 90 per cent of the time through an unprotected
-modem, often through war dialling.
-
-
-
-War dialling involves systematically trying to locate the
-numbers associated with corporate modems through testing each
-extension of a corporate phone system in turn.
-
-
-
-"Intrusion detection systems are no real deterrent for
-me because I get in through the back door," he
-said. "Many networks are constructed like Baked Alaska
-- crunchy on the outside and soft in the
-middle."
-
-
-
-KP often takes advantage of weak or default passwords to
-break into networks#8230
-
-
-
-''Crackers favour war dialling and weak passwords''
-John Leyden, ''The Register'', 2002-04-26.
-
-
-----
-!!!9.1. Use good passwords
-
-Anyone that can guess the BIOS password,
-the boot loader password, or the root password can get full control of
-the machine. These should be different, unrelated, excellent
-passwords. Random text and digits are by far the best choice. You
-should never use a password that you think would return a hit from
-a search engine.[[8]
-
-
-
-Guessing a user's password is only slightly less severe, as a
-hacker can obtain root
-access simply by waiting. The hacker waits for a #8216local
-exploit#8217 for a flaw in the operating system to appear and
-uses that exploit before the machine is patched.
-
-
-
-Severely limit the number of users on the machine. Ensure
-that only good passwords are chosen by using a fascist password
-checker such as a cracklib-based
-PAM
-module.
-
-
-
-You should write down the BIOS password,
-the boot loader password and the root password. Now you don't need to
-remember them, so there is no reason for them not to be totally
-random, unrelated, excellent passwords. Fold the page, put it in
-an envelope and seal it.
-
-
-
-Now we have turned a computer security problem into a
-physical security problem. We know how to solve those problems:
-locks, keys, alarms, safes, guards, regular inspections. If your
-site has staffed security then a good option is to leave the
-envelope in the care of the guard post with instructions to treat
-the envelope with the same procedures used for the site's master
-keys. Smaller sites can use a safe, a cash box or a locked drawer.
-A thief forcing a locked drawer still leaves shows more apparent
-signs of entry and more clues to their identity than is left by a
-hacker behind a modem.
-
-
-
-These three passwords are an important corporate asset. If
-the machine is secure then forgetting the major passwords for the
-machine should result in a machine whose configuration cannot be
-altered by actions short of disassembly. You should have written
-procedures controlling the generation, storage, lifetime and use of
-major passwords.
-
-----
-!!!9.2. Obey Data Terminal Ready and Data Carrier Detect
-
-The RS-232 Data Terminal Ready signal is
-lowered when the computer wishes the modem to hang up. The
-computer wishes to hang up when people have ended their login
-session ends or when they fail to respond to the
-login: prompt.
-
-
-
-Using a modem cable that has DTR wired and a
-modem that is configured to obey DTR is essential
-to prevent denial of service attacks upon the access to the
-console.
-
-
-
-Without DTR a caller can simply hold the
-modem line open, denying system administrators access to the
-console.
-
-
-
-The RS-232 Data Carrier Detect signal is
-lowered when the user hangs up.
-
-
-
-Using a modem cable that has DCD wired and
-a modem that is configured to assert DCD is
-essential to prevent people dialling in after a user has hang up
-and from carrying on their session.
-
-
-
-Without DCD the session is not cleared when
-an accidental disconnection occurs. This allows any subsequent
-caller to resume the previous session. The machine is totally
-compromised if the previous user was root.
-
-----
-!!!9.3. Use or configure a dumb modem
-
-Most modems use the Hayes AT command set.
-The modem's attention is gained by sending +++
-surrounded by some idle time. Commands are then sent prefixed by
-AT.
-
-
-
-Unfortunately, if the modem sees +++
-during a call it may revert to command mode. The modem can then be
-configured by the caller. For example, the modem could be set to
-permit incoming calls only from the number #82160#8217, this
-would deny the system administrators access to the modem.
-
-
-
-The attention command can be removed using __AT
-S2=255__. Of course once that is done no more
-AT commands can be given to the modem, so any
-other configuration of the modem needs to be done prior to that
-command.
-
-
-
-Unfortunately, when power to the modem is applied the modem
-starts in command mode. So a carefully chosen console message
-could disable the modem.
-
-
-
-The best solution is to select a modem that has a
-#8216dumb#8217 or "select profile"
-DIP switch or jumper. These switches disable
-command mode and load the modem's saved configuration when they
-start.
-
-----
-!!!9.4. Restrict console messages
-!!9.4.1. Restrict console messages from the system log
-
-Generating a stready stream of console messages can easily
-overwhelm a 9600bps link.
-
-
-
-Although displaying all syslog
-messages on the console appears to be a good idea, this actually
-provides a nice method to deny effective use of the remote
-console.
-
-
-
-Configure log messages to the console to the bare minimum,
-especially if the machine is sending
-syslog messages to a remote log server.
-Look in /etc/syslog.conf for lines ending
-with /dev/console.
-
-
-
-None of the above prevents all log messages being sent to
-another machine for recording and analysis. Figure 9-2 shows the standard
-/etc/syslog.conf from Red Hat
-Linux 7.2 modified to
-record log messages to a log server. Each line of
-syslog.conf has been repeated to send a copy
-of the message to the log server. The log server has the
-DNS alias loghost.example.edu.au; this
-allows the log server to be moved without updating the
-configuration of all the remote machines. The local copy of the
-log message is no longer the only means of determining the cause
-of a system failure, so we can gain some performance advantage by
-disabling synchronous file writes, although this increases the
-odds of an inconsistent filesystem (an issue with filesystems that
-do not do journalling). Placing a - before the
-filename disables synchronous file writes.
-
-
-
-__Figure 9-2. /etc/syslog.conf modified to copy log
-messages to a log server__
-
-
-# Log anything (except mail) of level info or higher.
-# Don't log private authentication messages!
-*.info;mail.none;authpriv.none;cron.none @loghost.example.edu.au
-*.info;mail.none;authpriv.none;cron.none -/var/log/messages
-# The authpriv file has restricted access.
-authpriv.* @loghost.example.edu.au
-authpriv.* /var/log/secure
-# Log all the mail messages in one place.
-mail.* @loghost.example.edu.au
-mail.* -/var/log/maillog
-# Log cron stuff
-cron.* @loghost.example.edu.au
-cron.* -/var/log/cron
-# Everybody gets emergency messages
-*.emerg @loghost.example.edu.au
-*.emerg *
-# Save news errors of level crit and higher in a special file.
-uucp,news.crit @loghost.example.edu.au
-uucp,news.crit -/var/log/spooler
-# Save boot messages also to boot.log
-local7.* @loghost.example.edu.au
-local7.* -/var/log/boot.log
-
-A log server is configured using the standard
-/etc/syslog.conf and also allowing remote
-syslog messages, shown for
-Red Hat Linux in Figure 9-3. Additionally, denial of
-services attacks are prevented by configuring IP
-Tables to restrict the sources of the syslog
-messages; and performance is improved by checking that
-nscd is running to cache reverse
-DNS lookups.
-
-
-
-__Figure 9-3. Allowing remote log messages by setting options in
-/etc/sysconfig/syslog__
-
-
-# Red Hat Linux default value, does not write timer mark messages
-SYSLOGD_OPTIONS="-m "
-# Add option to accept remote syslog messages
-SYSLOGD_OPTIONS="${SYSLOGD_OPTIONS} -r"
-
-__Figure 9-4. Restrict syslog messages to
-remote.example.edu.au__
-
-
- bash# __chkconfig iptables on__
- bash# __/etc/init.d/iptables restart__
-# Allow all IP traffic from this machine
- bash# __iptables --append INPUT --source 127.../8 --in-interface lo --jump ACCEPT__
-# Allow other traffic you may like
-#8230
-# Accept syslog messages from remote.example.edu.au
- bash# __iptables --append INPUT --source remote.example.edu.au --protocol udp --destination-port syslog -j ACCEPT__
-# Silently drop unexpected syslog messages
- bash# __iptables --append INPUT --protocol udp --destination-port syslog -j DROP__
-# Save the running configuration
- bash# __/etc/init.d/iptables save__
-
-__Figure 9-5. Using nscd to cache reverse
-DNS lookups__
-
-
-bash# __chkconfig nscd on__
-bash# __/etc/init.d/nscd restart__----
-!!9.4.2. Restrict console messages from broadcast messages
-
-Users that are logged into the serial console should not
-accept broadcast messages. Add new files to /etc/profile.d to do this. Figure 9-6 shows a file for use by the
-Bourne shell.
-
-
-
-__Figure 9-6. Restrict sending of messages to console user__
-
-
-#
-# Do we have files referred to?
-if [[ -x /usr/bin/mesg -a -x /usr/bin/tty ]
-then
-# Are we on serial console?
-if [[ `/usr/bin/tty` = /dev/ttyS0 ]
-then
-# Do not accept broadcast messages
-/usr/bin/mesg n
-fi
-fi
-
-As this file is run frequently, we use a faster but less
-readable version of Figure 9-6,
-shown in Figure 9-7.
-
-
-
-__Figure 9-7. Restrict sending of messages to console user,
-/etc/profile.d/mesg.sh__
-
-
-#
-# /etc/profile.d/mesg.sh -- prevent people hassling the serial console user
-[[ -x /usr/bin/mesg -a -x /usr/bin/tty -a `/usr/bin/tty` = /dev/ttyS0 ] 88 /usr/bin/mesg n
-
-We also need a C shell version, shown in Figure 9-8.
-
-
-
-__Figure 9-8. Restrict sending of messages to console user,
-/etc/profile.d/mesg.csh__
-
-
-#
-# /etc/profile.d/mesg.csh -- prevent people hassling the serial console user
-if (-X mesg 88 -X tty 88 `tty` == /dev/ttyS0) then
-mesg n
-endif
-
-Although mesg.sh and
-mesg.csh are included by the parent shell
-rather than executed, the files need the execute permission
-set. The procedure in Figure 9-9
-installs the files and sets the permissions.
-
-
-
-__Figure 9-9. Install files into /etc/profile.d__
-
-
-bash# __cp mesg.*sh /etc/profile.d/__
-bash# __chown root:root /etc/profile.d/mesg.*sh__
-bash# __chmod u=rwx,g=rx,o=rx /etc/profile.d/mesg.*sh__----
-!!!9.5. Modem features to restrict usage
-
-Most modems support the addition of a password. This is not
-particularly useful as it has the same strengths and weaknesses of
-all other password authentication schemes. We already have
-password authentication in the BIOS, in the boot
-loader and in login.
-
-
-
-Many modems support call-back. The modem is called and a few
-seconds after hang-up it calls a pre-configured number. This
-limits the locations that can gain access to the console.
-
-
-
-Many modems support checking the calling line identification
-(CLI) against a predefined list. If the calling number is not on
-the list then the call is cleared. The phone line to the modem
-must be configured to send CLI, this may incur an additional charge
-from the phone company. Not all calling phones can send CLI and
-some valid callers may have asked their phone company to suppress
-the sending of CLI.
-
-
-
-Many modems can be configured to log the calling line
-identification. This is useful when tracing misuse.
-
-
-
-Many modems support encryption. Some modems allow multiple
-keys. This gives a neat solution: only authorized modems can dial
-in, but they can do so from any location. The modems usually need
-to be of the same make, and perhaps of the same model.
-
-
-
-
-
-
-__Encryption dual-use technology__
-
-Possessing, using, buying, selling, importing or exporting
-modems with encryption features is a serious criminal offense in
-some countries.
-
-
-
-You must acquiant yourself with the laws in your
-jurisdiction and the laws of jurisdictions you may travel
-through.
-
-
-
-Many telephone services or PBX lines can
-be set to allow only incoming calls. This is useful as it prevents
-misuse of the modem should the computer be compromised. A
-#8216demon dialler#8217 can call many numbers seeking an
-answering modem and the cost of these calls can be
-significant.
-
-----
-!!!9.6. BIOS features
-
-Most BIOSs can be configured with a
-#8216configuration password#8217. This should set and tested.
-Some motherboards will require a jumper to be set to allow the
-password to take effect. Some BIOSs have
-well-known #8216master passwords#8217, use a search engine to
-ensure that your BIOS is not one of these. The
-password should not be the same as the boot loader or root passwords.
-
-
-
-The BIOS configuration will have a
-#8216boot order#8217 setting. It should be set to boot from
-the hard disk before any other media. This prevents someone
-inserting a rescue diskette, booting the machine, and gaining
-access to the filesystems as root.
-
-----
-!!!9.7. Use a boot loader password
-
-Configure the boot loader to request a password when booting a
-non-default image or when supplying parameters from the command
-line.
-
-
-
-This prevents someone from dialing in during the boot
-sequence and booting the kernel with options to take control of the
-machine, as in Example 4-1.
-
-
-
-The password should not be the same as the
-BIOS or root passwords.
-
-----
-!!!9.8. Non-interactive boot sequence
-
-Red Hat Linux has an
-#8216interactive boot#8217 option that can be used to prevent
-services from being started. This may not be pleasant if the
-purpose of the machine is web serving and the
-HTTP daemon is interactively prevented from
-starting by an unauthenticated person.
-
-
-
-Edit /etc/sysconfig/init to contain the
-line
-
-
-
-
-
-
-PROMPT=no
-
-
-
-----
-!!!9.9. Magic __!SysRq__ key
-
-The #8216magic __!SysRq__ key#8217 is a key
-sequence that allows some basic commands to be passed directly to
-the kernel. Kernel software developers use this interface to debug
-their software. Under most circumstances it can also be used to
-uncleanly reboot the computer, something that is otherwise
-difficult or expensive to do remotely.
-
-
-
-For computers that are not used for kernel software
-development the magic __!SysRq__ key makes an ideal
-denial of service device. A few unauthenticated keystrokes and the
-computer is dead in the water. The console, serial or otherwise,
-must be in an area with access limited to trusted people.
-
-
-
-The serial console uses the RS-232 break
-function as the #8216magic __!SysRq__ key#8217. A
-#8216break#8217 is a period of no transmission on the serial
-line, on traditional terminals it is activated by pressing a key
-labeled __Break__.
-
-
-
-Anyone can dial into a modem and send a break, so if the
-serial console is attached to a modem we need to disable the magic
-__!SysRq__ key . If the serial console is attached to
-a terminal server which asks for authentication, or is attached
-directly to another terminal using a null modem cable then you may
-decide to activate the magic __!SysRq__ key.
-
-
-
-The magic __!SysRq__ key can be disabled by
-setting a kernel variable or by not compiling support for the
-key.
-
-
-
-Writing a 0 into
-/proc/sys/kernel/sysrq will disable the magic
-__!SysRq__ key. The command __sysctl__
-can also be used:
-
-
-
-__Figure 9-10. Using __sysctl__ to defeat the magic
-__!SysRq__ key__
-
-
-bash# __sysctl -w kernel.sysrq=__
-
-Your Linux distribution may have a file
-/etc/sysctl.conf which is used to run
-__sysctl__ during the boot of the machine. Add the
-lines:
-
-
-
-__Figure 9-11. Configuring /etc/sysctl.conf to defeat
-the magic __!SysRq__ key__
-
-
-# Disables the magic !SysRq key
-kernel.sysrq =
-
-Even when setting the magic __!SysRq__ key off in
-/etc/sysctl.conf there is a period of
-vulnerability after the kernel boots but before contents of the
-file are applied.
-
-
-
-It is much better to compile your own kernel and set the
-following configuration parameter:
-
-
-
-__Figure 9-12. Kernel __make menuconfig__ showing disabled
-__!SysRq__ key__
-
-
-Kernel hacking ---b
-[[ ] Magic !SysRq key
-
-This should place the following configuration parameter in
-/usr/src/linux/.config.
-
-
-
-__Figure 9-13. Kernel .config showing disabled
-__!SysRq__ key__
-
-
-# CONFIG_MAGIC_SYSRQ is not set----
-!!!9.10. Adjust behaviour of __Ctrl__-__Alt__-__Delete__
-
-The IBM PC used __Ctrl__-__Alt__-__Delete__ to launch a reboot of the computer. Linux traps this
-key chord and makes it available to the
-init system. This is done by sending
-the init process a
-SIGINT signal (although __ctrlaltdel
-hard__ can undo this trap and make the key chord reboot the
-comptuer immediately). The init system
-uses /etc/inittab to determine how to handle
-the signal generated by the __Ctrl__-__Alt__-__Delete__ key
-chord.
-
-
-
-Most distributions cleanly reboot the system, mimicing the
-behaviour that most users expect. Figure 9-14 shows how this is
-done.
-
-
-
-__Figure 9-14. Default handling of __Ctrl__-__Alt__-__Delete__ in
-/etc/inittab__
-
-
-# Trap CTRL-ALT-DELETE
-ca::ctrlaltdel:/sbin/shutdown -t3 -r now
-
-Depending upon each individual site you may wish to disable
-__Ctrl__-__Alt__-__Delete__. This is shown in Figure 9-15.
-
-
-
-__Figure 9-15. Ignoring __Ctrl__-__Alt__-__Delete__ in
-/etc/inittab__
-
-
-# Trap CTRL-ALT-DELETE and do nothing
-ca::ctrlaltdel:
-
-Alternatively, you may wish to cleanly shut down the
-computer. This is very easy to explain to operators and
-instructions can be displayed on the monitor using
-/etc/issue or a Post-it
-Note. If the computer uses Advanced
-Power Management (or APM) then
-shutting down the computer will also remove the power.
-
-
-
-__Figure 9-16. Shut down cleanly upon __Ctrl__-__Alt__-__Delete__ in
-/etc/inittab__
-
-
-# Trap CTRL-ALT-DELETE and shut down
-ca::ctrlaltdel:/sbin/shutdown -t3 -h now----
-!!!9.11. Log attempted access
-
-Look in the system logs for the output of
-getty. Add the monitoring of these
-messages to your log-watching procedures.
-
-----
-!!!9.12. Interception of telephony links
-
-Modems calls over telephones can be intercepted. This can be
-an issue if you do not trust a telecommunications carrier in your
-call's path, or do not trust the law enforcement agencies that may
-request interception facilities from that carrier.
-
-
-
-International calls are particularly exposed. Calls which
-are routed across satellite or wireless links can be intercepted by
-readily-available radio receivers. Calls routed across undersea
-links are much more expensive to intercept, so this is probably
-limited to national governments, such as those using the Echelon
-system.
-
-
-
-If you do not pass sensitive data over the link, then the
-major exposure is typing in your user name and password. Look into
-S/KEY
-or look into OPIE
-and its related An
-OPIE for
-PAM.
-
-
-
-These one-time password systems have flaws, a good summary of
-these is ''Vulnerabilities in the
-S/KEY one time
-password system'' by Peiter #8216mudge#8217
-Zatko.
-
-
-
-
-
-
-__Interception-defeating key material__
-
-Possessing cryptographic key material, such as a one-time
-password generator or list of one-time passwords, which intended
-to defeat legislatively-permitted interception is a serious
-criminal offense in some countries.
-
-
-
-You must acquiant yourself with the laws in your
-jurisdiction and the laws of jurisdictions you may travel
-through.
-
-----
-!!!Chapter 10. Configuring a kernel to support serial console
-
-Most Linux kernels shipped by distributors are configured to
-allow the serial console to be enabled. However system
-administrators will almost certainly encounter some problems best
-solved by recompiling a kernel. In these cases configure the kernel
-to support the serial console. The usual virtual terminal console
-is also configured, as we normally want console messages to go a
-monitor as well as the serial port.
-
-----
-!!!10.1. Linux kernel version 2.5
-
-Kernel version 2.5 is under active development, so this
-section may be out of date. Version 2.5 includes support for the
-console to a serial port attached to a USB dongle.
-
-
-
-When configuring the kernel set the following configuration
-parameters:
-
-
-
-__Figure 10-1. Kernel configuration for serial console using __make
-menuconfig____
-
-
-Character devices ---b
-[[*] Virtual terminal
-[[*] Support for console on virtual terminal
-`*b Standard/generic (8250/16550 and compatible UARTs) serial support
-[[*] Support for console on serial port
-
-This should set the following configuration parameters in
-/usr/src/linux/.config.
-
-
-
-__Figure 10-2. Kernel configuration for serial console using
-.config__
-
-
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_SERIAL=y
-CONFIG_SERIAL_CONSOLE=y
-
-If you also want to use a serial port attached to a
-USB bus, then in addition to the usual
-USB configuration, configure the kernel to load
-the USB console driver and one of the
-USB serial dongles (our example uses the generic
-serial dongle).
-
-
-
-__Figure 10-3. Kernel configuration for USB dongle
-serial console using __make menuconfig____
-
-
-USB Serial Converter support ---b
-`Mb USB Serial Converter support
-[[M] USB Serial Console device support
-[[M] USB Generic Serial Driver
-
-This should set the following configuration parameters in
-/usr/src/linux/.config
-
-
-
-__Figure 10-4. Kernel configuration for USB dongle
-serial console using .config__
-
-
-CONFIG_USB_SERIAL=m
-CONFIG_USB_SERIAL_CONSOLE=m
-CONFIG_USB_SERIAL_GENERIC=m
-
-You should also configure the kernel without the magic
-__!SysRq__ key, as described in Section 9.9.
-
-----
-!!!10.2. Linux kernel version 2.4
-
-When configuring the kernel set the following configuration
-parameters:
-
-
-
-__Figure 10-5. Kernel configuration for serial console using __make
-menuconfig____
-
-
-Character devices ---b
-[[*] Virtual terminal
-[[*] Support for console on virtual terminal
-`*b Standard/generic (8250/16550 and compatible UARTs) serial support
-[[*] Support for console on serial port
-
-This should set the following configuration parameters in
-/usr/src/linux/.config.
-
-
-
-__Figure 10-6. Kernel configuration for serial console using
-.config__
-
-
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_SERIAL=y
-CONFIG_SERIAL_CONSOLE=y
-
-You should also configure the kernel without the magic
-__!SysRq__ key, as described in Section 9.9.
-
-----
-!!!10.3. Linux kernel version
-2.2
-
-The later Linux 2.2
-kernels use the same build parameters and parameter syntax as the
-Linux version 2.4
-kernels.
-
-
-
-For earlier kernels see the article
-by Francesco Conti in issue 36 of ''Linux
-Journal'' published in April 1997.
-
-
-
-This article included some patches for the kernel, which have
-been extended in the notes below to use a broader range of serial
-port speeds.
-
-
-
-Choose to use the serial console by adding a couple of
-#defines at the start of
-/usr/src/linux/drivers/char/console.c:
-
-
-
-
-
-
-#define CONFIG_SERIAL_ECHO
-#define SERIAL_ECHO_PORT 0x3f8 /* COM1 port address */
-
-
-
-
-
-Alternatively, to use ttyS1 use these
-lines:
-
-
-
-
-
-
-#define CONFIG_SERIAL_ECHO
-#define SERIAL_ECHO_PORT 0x2f8 /* COM2 port address */
-
-
-
-
-
-The kernel assumes a serial link speed of
-9600bps. If you are using a differing bit rate
-then find these two lines:
-
-
-
-
-
-
-serial_echo_outb(0x00, UART_DLM); /* 9600 baud */
-serial_echo_outb(0x0c, UART_DLL);
-
-
-
-
-
-and change 0x0c to one of the values in
-Table 10-1.
-
-
-
-__Table 10-1. IBM-PC/AT serial port bit rates and
-their bit-clock divisors__
-
-
-Bit RateDivisor115200bps0x0157600bps0x0238400bps0x0319200bps0x069600bps0x0c4800bps0x182400bps0x301200bps0x60----
-!!!Chapter 11. Serial cabling
-!!!11.1. Jargon
-
-RS-232 cables were originally intended to
-link terminals to modems. The terminal is formally named a Data
-Terminal Equipment, abbreviated to DTE. The modem
-is formally named a Data Communications Equipment, abbreviated to
-DCE.
-
-
-
-A standard RS-232 cable has a 25-pin
-D-type socket which connects to the DTE and a
-25-pin D-type plug which connects to the DCE.
-All 25 pins are connected, with pin 1 on the plug wired to pin 1 on
-the socket, pin 2 on the plug wired to pin 2 on the socket, and so
-on. The shielding of the cable is attached to the metallic cover
-on the socket.
-
-
-
-RS-232 signaling is much more robust than
-the signalling of many other communications standards. Pins can be
-shorted, not connected or drive more than one output.
-
-
-
-Signals are named from the point of view of the Data Terminal
-Equipment. So Transmit Data on the DTE is
-connected to Transmit Data on the DCE. Transmit
-Data on the DTE actually transmits data, whereas
-Transmit Data on the DCE actually recieves
-data.
-
-----
-!!!11.2. Cable from console port to modem
-
-The RS-232 standard defines the
-interconnection of computers and modems, so there is little to go
-wrong here by simply purchasing a pre-assembled cable. There are
-two types of cable: cables with connectors for a standard 25-pin D
-connector on the computer; and cables with connectors for a
-proprietary 9-pin D connector used on the IBM
-PC/AT and many other
-computers. The cables have titles like
-''RS-232 25-pin computer
-(DTE) to 25-pin modem
-(DCE)'' or
-''RS-232 9-pin IBM
-PC/AT computer
-(DTE) to 25-pin modem
-(DCE)''. Most modems are packaged
-with a suitable cable.
-
-
-
-If you need to manufacture your own cables, see the
-''Serial-HOWTO'' for the RS-232
-pinout for your computer. Connect Transmit Data on the computer to
-Transmit Data on the modem, Receive Data on the computer to Receive
-Data on the modem, and so on for Signal Ground, Clear to Send,
-Ready to Send, Data Set Ready, Data Terminal Ready, Data Carrier
-Detect and Ring Indication.
-
-
-
-For professional computer room installations consider routing
-the serial cable through an RJ-45 patch panel.
-There are two common pinouts on used on the
-RJ-45 connector: Yost and
-Cisco
-2500-series console.
-
-
-
-If you create your own pinout for unshielded twisted pair
-cable then be sure that your pinout twists a Signal Ground wire
-with the Transmit Data wire and another Signal Ground wire with the
-Receive Data wire. Although the RS-232 signals
-are not balanced, this twist will result in the least amount of
-signal degradation and noise pickup.
-
-----
-!!!11.3. Cable from console port to terminal (or another PC)
-
-The RS-232 standard allows for, but does
-not specify, the interconnection of two computers without
-intervening modems. A special cable is required, called a
-#8216null modem#8217 cable.
-
-
-
-The wiring within the null modem cable depends upon the
-handshaking and control signals that are needed. Differing
-manufacturers have differing views on this topic, so don't buy a
-null modem cable that does not come with a wiring diagram.
-
-
-
-Linux needs all of the flow control and modem control signals
-to be correctly wired. The correct wiring of a null modem cable is
-shown in Figure 11-1.
-
-
-
-Linux uses CTS and RTS to
-do handshaking, preventing the computer from overrunning the
-terminal and preventing the terminal from overrunning the computer.
-If you are connecting two computers together, then you will not get
-reliable file transfers without
-CTS/RTS handshaking.
-
-
-
-Linux uses DSR and DCD to
-sense that a terminal is connected. It will then request a login.
-If a session is established and DCD falls then
-Linux will log out the user.
-
-
-
-Linux uses DTR to force the link to be
-cleared. It does this after a user logs off to free up the
-communications channel.
-
-
-
-Major security exposures can occur with incorrectly wired
-null modem cables.
-
-
-
-__Figure 11-1. Null modem cable with full status and handshaking__
-
-
- Signal ground ---------------------- Signal ground
-Receive data ---------------------- Transmit data
-Transmit data ---------------------- Receive data
-Ready to send ---------------------- Clear to send
-Clear to send ---------------------- Ready to send
-Data terminal ready -----------------+---- Data carrier detect
-|
-+---- Data set ready
-Data carrier detect ----+----------------- Data terminal ready
-|
-Data set ready ----+
-Ring indication -- not connected
-not connected -- Ring indication
-
-Unfortunately not all Linux boot loaders support the control
-signals required by the Linux operating system. This odd state
-of affairs may force you to do away with control signals and
-handshaking if you need to issue commands to the boot
-loader.
-
-
-
-There are two ways of defeating the RS-232
-handshaking: software and hardware.
-
-
-
-If you have a modem then by far the best technique is to
-disable the control signals and handshaking by using
-AT commands to configure the modem's software.
-This allows the handshaking to be restored when the boot loader
-authors correct their support for serial terminals.
-
-
-
-For a null modem cable the best approach is to disable
-handshaking in your terminal emulation software.
-
-
-
-In the worst case for a null modem you will need a cable that
-falsifies the handshaking and control signals.
-
-
-
-__Figure 11-2. Null modem cable with falsified status and
-handshaking__
-
-
- Signal ground ---------------------- Signal ground
-Receive data ---------------------- Transmit data
-Transmit data ---------------------- Receive data
-Data terminal ready ---+ +--- Data terminal ready
-| |
-Clear to send ---+ +--- Clear to send
-| |
-Data carrier detect ---+ +--- Data terminal ready
-| |
-Data set ready ---+ +--- Data set ready
-Ready to send -- not connected
-not connected -- Ready to send
-Ring indication -- not connected
-not connected -- Ring indication
-
-If you are happy with a quick hack, perhaps just to use a
-serial console to grab a kernel oops message, then you can
-configure some getty programs to ignore
-the RS-232 status signals. For example,
-mgetty has the direct
-option in mgetty.conf. In this case only a
-three-wire RS-232 null modem cable is
-needed.
-
-
-
-__Figure 11-3. Null modem cable with no status or handshaking__
-
-
-Signal ground ---------------------- Signal ground
-Receive data ---------------------- Transmit data
-Transmit data ---------------------- Receive data
-
-Don't use this cable in a production environment.
-
-----
-!!!11.4. Making serial cables
-
-If you use a serial console for densely-racked computers you
-will end up making a lot of null-modem serial cables. This section
-has some hints on making serial cables. If you are making more
-than ten cables and live in a city you will probably find it
-economic to have the cables made by a specialty cabling
-firm.
-
-
-
-The RS-232 standard will drive at least 15
-meters of shielded cable. Longer distances are possible with
-better cable; 100 meter cables are advertised by some specialty
-firms. Distances longer than 15m are also be possible with the
-high-quality unshielded twisted pair used for
-100Base-TX ethernet. Be wary of long unshielded
-cables, as the RS-232 signals are not balanced and
-thus pick up noise easily. For distances beyond 100m use an
-RS-232 line driver; these will typically drive up
-to 2000 meters over category 3 UTP cable. For
-greater distances consider using fiber optical modems, the global
-telephony system, the mobile telephony system, satellite or
-radio.
-
-
-
-If the environment has a lot of radio frequency noise then
-use shielded cable and connectors. Connect the shield in the cable
-to the computer at ''one'' end. This can be done
-by connecting the drain wire of the shield it to the Protective
-Ground (if present) or by soldering the drain wire to the body of
-the connector. If there is a substantial amount of noise also
-place a ferrite core over the shielded cable at both ends of the
-cable. Follow the usual good practices of making the cable to the
-correct length and screwing home the D connectors into the
-chassis.
-
-
-
-If you are making one of these cables and have some soldering
-skill, you can easily do the jumpering of the signal wires within
-the backshell of the DB9 or
-DB25 connector.
-
-
-
-If you are making a large number of cables then crimping
-systems are much faster than soldering. Again, pin jumpering can
-be done within the backshell.
-
-
-
-No matter what system is adopted, use the Resistance setting
-of a multimeter to check for dead and shorted pins. A minute here
-can save hours later.
-
-
-
-For structured cabling systems, space is tight within
-DB9/RJ-45 backshells, so the jumpering is better
-done behind the patch panel. The DB9/RJ-45
-connectors present the IBM
-PC pinout at the DB9 connector and
-present the Yost or Cisco pinout at the RJ-45
-connector.
-
-
-
-
-
-
-__Incompatible devices in structured cabling systems__
-
-Take care to connect only RS-232 devices
-to RS-232 devices when patching structured
-cabling systems. Other cables may be carrying ethernet,
-ISDN, telephony, alarm and
-DC power voltages. Connecting incompatible
-voltages may destroy equipment.
-
-----
-!!!Chapter 12. Modem configuration
-!!!12.1. Using Minicom to give commands to
-a modem
-
-Minicom is a full-screen serial
-terminal emulation package, very much like the classic
-Telix terminal emulator for
-MS-DOS.
-
-
-
-Firstly, start Minicom in
-configuration mode with the command:
-
-
-
-
-
-
-bash# __minicom -o -s__
-
-
-
-
-
-The following menu appears:
-
-
-
-
-
-
-Filenames and paths
-File transfer protocols
-Serial port setup
-Modem and dialing
-Screen and keyboard
-Save setup as dfl
-Save setup as..
-Exit
-Exit from Minicom
-
-
-
-
-
-Select Serial port setup and
-set
-
-
-
-
-
-
-A - Serial Device: __/dev/ttyS0__
-B - Lockfile Location: __/var/lock__
-C - Callin Program:
-D - Callout Program:
-E - Bps/Par/Bits: __9600 8N1__
-F - Hardware Flow Control: __Yes__
-G - Software Flow Control: __No__
-
-
-
-
-
-Now save the configuration
-
-
-
-
-
-
-Give name to save this configuration?
-b __console__
-
-
-
-
-
-and exit Minicom.
-
-
-
-To configure a modem use the command __minicom -o
-console__ to start Minicom without sending an
-initialization string to the modem. Now issue the
-AT commands to configure the modem.
-
-
-
-When finished use the Quit option
-to leave Minicom without sending a reset
-string to the modem; this option is
-__Alt__-__Q__.
-
-
-
-Sometimes Minicom will use
-__Ctrl__-__A__ rather
-than __Alt__ to access the menu system, look for a
-hint in Minicom's start up
-message:
-
-
-
-
-
-
-Press ALT-Z for help on special keys
-Press CTRL-A Z for help on special keys
-
-
-
-----
-!!!12.2. Configure dumb modem
-
-Linux, like most UNIX-like
-operating systems, expects a serial console to be connected to a
-dumb modem. Dumb modems are not seen much these days, perhaps only
-on exotic hardware such as ISDN terminal adapters
-or satellite ground terminals.
-
-
-
-A dumb modem is configured using hardware. Figure 12-1 shows the front panel of a fanciful
-dumb modem. In reality the speed and mode settings are likely to
-be done using jumpers or DIP switches.
-
-
-
-__Figure 12-1. Front panel of a dumb modem__
-
-
-+-----------------------------+
-| |
-| SPEED MODE |
-| [[ ] 300 [[ ] Originate |
-| [[ ] 600 [[X] Answer |
-| [[ ] 2400 |
-| [[X] 9600 |
-| |
-+-----------------------------+
-
-The modem's speed is set to the desired bit rate, in our case
-9600bps. The modem's mode is set to Answer,
-that is, to wait for incoming calls and to answer them.
-
-
-
-If the RS-232 control line Data Terminal
-Ready is low, the modem will not answer a call. The computer is
-off or the computer's serial interface is not yet initialized.
-Once DTR is high the modem will answer incoming
-calls.
-
-
-
-Once an incoming call is established the modem raises the
-Data Carrier Detect control line.
-
-
-
-getty on the Linux computer has
-been waiting for DCD to come high, and
-getty welcomes the user and requests
-them to log in.
-
-
-
-Whilst the user is logged in and data is flowing, Clear to
-Send and Ready to Send are used between the modem and the computer
-to prevent data being sent too soon. The computer lowers Clear to
-Send when it is too busy to receive a character. The modem lowers
-Ready to Send when it is too busy to receive a character.
-
-
-
-When the user hangs up, Data Carrier Detect falls and the
-hang up signal is sent to all processes associated with the dial in
-session.
-
-
-
-Alternatively, the user can log out. When the shell dies,
-the computer pulls Data Terminal Ready low, causing the modem to
-hang up. When the getty brings Data
-Terminal Ready high again, the modem will accept more incoming
-calls.
-
-
-
-We have not yet described Data Set Ready. This line is low
-if the modem is off or if the modem has not yet initialized.
-
-----
-!!!12.3. Configure modem with AT commands
-
-Most modems today are smart modems based upon the Hayes
-modems and their command sets. But as discussed above, the
-Linux serial console is
-designed to operate with a dumb modem.
-
-
-
-Thus the smart modem is dumbed-down until it resembles a dumb
-modem. Some expensive modems will have a DIP
-switch or board jumper to put them into dumb mode.
-
-
-
-It is essential to have a manual for the modem which describes
-that modem's AT commands. Although most modems
-agree on the more popular AT commands, they
-differ in the more technical commands.
-
-----
-!!12.3.1. Configure port speed
-
-Hayes AT-style modems can maintain a
-static speed between the computer and the modem, no matter what
-speed the dialing modem uses.
-
-
-
-For most modems this is set automatically based upon the
-speed of the first characters sent after power-on.
-
-
-
-Power cycle the modem and connect to it with the command
-__minicom -o console__. Press
-__Enter__ a few times. The modem should now be
-running at the same bit rate used by
-Minicom, which we set to the speed of
-the serial console in Section 12.1.
-
-
-
-You can check the port speed by asking the modem to generate
-some output.
-
-
-
-__Figure 12-2. Testing the modem's port speed__
-
-
-bash# __minicom -o console__
-Welcome to minicom
-Press CTRL-A Z for help on special keys
-__Enter__ __Enter__ __Enter__
-__ATI__ __Enter__
-56k V.90 Series 3 External V2.20
-__Ctrl__-__A__ __Q__
-Leave without reset? Yes
-
-Some modems have an AT command to
-re-establish the port speed, look in your modem's manual for the
-__AT8B1__ command. Some modems have a command
-to explicitly set the port speed, look in you modem's manual for
-the __ATB__ command.
-
-----
-!!12.3.2. Configure answer mode
-
-The modem will answer an incoming call on the second ring
-using the command __ATS0=2__.
-
-
-
-Don't answer the phone on the first ring as this may
-invalidate the certification of the modem in some telephony
-jurisdictions.
-
-----
-!!12.3.3. Configure CTS/RTS handshaking
-
-CTS/RTS handshaking
-prevents lost characters.
-
-
-
-The AT command is
-__AT8K3__.
-
-----
-!!12.3.4. Configure Data Carrier Detect
-
-Data Carrier Detect should follow the presence or absence of
-a calling modem.
-
-
-
-The AT command is
-__AT8C1__.
-
-----
-!!12.3.5. Configure Data Terminal Ready
-
-Data Terminal Ready should control the modem. If
-DTR is high the modem is ready to receive calls.
-If DTR is low the modem should not receive any
-More calls and should hang up any existing call.
-
-
-
-The AT command is
-__AT8D2__.
-
-----
-!!12.3.6. Configure no CONNECT
-messages
-
-An Hayes AT-style modem usually outputs a
-message when a call is received. For example:
-
-
-
-
-
-
-CONNECT 9600
-
-
-
-
-
-The modem has a #8216quiet mode#8217 that disables these
-messages.
-
-
-
-The AT command is
-__ATQ1__. There will be no
-OK printed in response to this
-command.
-
-----
-!!12.3.7. Configure no echo of commands
-
-Echoing commands can confuse the console.
-
-
-
-The AT command is
-__ATE0__.
-
-----
-!!12.3.8. Configure silent connection
-
-Most modems have a speaker. By default this is connected
-whilst a modem is connecting and negotiating a common protocol and
-speed. This is very useful for a dialing modem, as it prevents a
-human being accidentally repeatedly called. The speaker can be
-annoying on answering modems.
-
-
-
-If wanted, use the __ATM0__ command to turn
-off the speaker.
-
-----
-!!12.3.9. Configure DTR delay
-
-Data Terminal Ready drops when the semiconductor that
-supports the RS-232 link is reset. This then
-hangs up the modem. This can be annoying. If the
-getty supports a parameter similar to
-mgetty's
-toggle-dtr-waittime then it is possible to
-extend the time that the modem will ignore DTR.
-The time that getty holds
-DTR low to force a hang up is extended beyond the
-modem's setting. The result is that resetting the semiconductor
-does not hang up the modem, but getty
-can still hang up the modem at the end of a login session.
-
-
-
-Check your modem's documentation. Our example modem uses
-S-register 25 to contain the threshold for noticing a change in
-DTR. The value is in one-hundreds of a second.
-By setting the modem with __ATS25=150__ (1.5
-seconds) and setting mgetty with
-toggle-dtr-waittime 2000 (2 seconds) we ignore
-small blips in DTR.
-
-----
-!!12.3.10. Configure no attention sequence
-
-Once the modem is correctly configured and works well,
-disable the __+++__ sequence that gives access to
-the modem's command mode.
-
-
-
-The AT command is
-__ATS2=255__.
-
-
-
-If this command is accidentally given see Section 12.3.12 to reset the modem to its factory
-default parameters and start again.
-
-----
-!!12.3.11. Configuration example
-
-__Figure 12-3. Configure modem using AT
-commands__
-
-
-bash# __minicom -o console__
-Welcome to minicom
-Press CTRL-A Z for help on special keys
-__AT 8F__ __Enter__
-OK
-__AT Z__ __Enter__
-OK
-__AT 8C1 8D2 8K3 S0=2 M0__ __Enter__
-OK
-__AT E0 Q1 S2=255 8W__ __Enter__
-__Alt__-__A__ __Q__
-Leave without reset? Yes----
-!!12.3.12. Resetting the modem
-
-If you need to issue more AT commands to
-the modem then power cycle the modem. This should place the modem
-into command mode.
-
-
-
-Now issue the following commands to restore the modem's
-factory configuration.
-
-
-
-__Figure 12-4. Resetting a Hayes AT-style
-modem__
-
-
-bash# __minicom -o console__
-Welcome to minicom
-Press CTRL-A Z for help on special keys
-__AT 8F 8Y0 8W 8W1__ __Enter__
-OK
-__AT Z__ __Enter__
-OK
-__Alt__-__A__ __Q__
-Leave without reset? Yes
-
-If this fails then you will need to clear the modem's
-configuration memory. The procedure for this varies by
-manufacturer, and probably requires the disassembly of the
-modem.
-
-----
-!!!12.4. Internal modems
-
-An internal modem is basically an external modem and serial
-port mounted upon a PC bus card. These are
-cheaper than external modems as they do not require a power supply
-or a chassis.
-
-
-
-Internal modems work fine for remote serial console
-applications. They are especially attractive for computers at
-co-location sites, as those sites charge according to space and
-power consumption.
-
-
-
-Check that your internal modem preserves its setting across a
-power cycle.
-
-
-
-Ensure that the interrupt line and port address space used by
-the internal modem's serial port does not conflict with that used
-by any other pre-existing serial ports. Alternatively, ensure that
-the internal serial port can be disabled, freeing its interrupt
-line and port address space for use by the internal modem.
-
-
-
-Be careful not to confuse an internal modem with a !WinModem.
-An internal modem does not need a special device driver, but
-appears to Linux as a
-stardard serial port.
-
-----
-!!!12.5. !WinModems
-
-If you look at a modem, with it's small central processing
-unit and special-purpose digital signal processor, and then look at
-a modern PC, with it's large CPU
-and general-purpose DSP on the sound card, you may
-wonder if the hardware duplication of an external modem is
-necessary.
-
-
-
-A #8216WinModem#8217 incorporates the
-CPU and DSP of the modem into
-the slightly-enhanced fabric of a PC. They are
-called "!WinModems" because they originally only shipped with
-Microsoft Windows device
-drivers. These device drivers presented the illusion of a serial
-port attached to a Hayes AT-style modem. For a
-long time only Windows
-versions of these drivers where available. Some manufacturers now
-provide Linux versions of
-their device drivers as well, these are jokingly called
-#8216LinModems#8217.
-
-
-
-It is probably possible to use a !LinModem as a Linux console. At the most this would
-require altering the source code to dumb-down the AT command
-emulation of the modem and recompiling the kernel.
-
-
-
-Boot loaders, however, work in a very confined software
-environment and struggle to support a simple serial chip.
-Considering that some boot loaders do not even handle interrupts,
-handling the complex DSP of a !LinModem is well
-beyond what is practical.
-
-----
-!!!Appendix A. Bugs and annoyances
-!!!A.1. Red Hat Linux
-7.1 and !SysVinit
-
-The System V init system shipped
-with Red Hat Linux
-7.1 does not support serial console
-correctly in single user mode. See Red Hat advisory
-''RHBA-2001:085-02 ''New
-!SysVinit package to fix hangs on serial
-console''''. The advisory announces an
-update to the package
-!SysVinit-2.78-15.i386.rpm that is shipped on
-the Red Hat Linux
-7.1 CD.
-
-----
-!!!A.2. BIOSs, keyboards and video cards
-
-Some BIOSs will not boot if the keyboard is
-not installed.
-
-
-
-
-
-
-Keyboard faulty, press F1
-
-
-
-
-
-Most BIOSs have settings that will allow
-them to boot without a keybaord.
-
-
-
-Some odd BIOSs will not boot if no video
-card is installed.
-
-----
-!!!A.3. Modem hangs up upon reboot
-
-During reboot the serial controller is reset. This drops the
-modem control line Data Terminal Ready. This in turn instructs the
-modem to hang up.
-
-
-
-Avoid the temptation to configure the modem to ignore
-DTR. This leads to a worse bug, where the
-telephone line does not clear down correctly, the modem is engaged,
-and there is no way to clear it. Ignoring DTR
-also gives no way to clear hostile callers from the line.
-
-
-
-You may wish to record the amount of time that the computer
-takes from Restarting system to
-the boot loader prompt.
-
-
-
-The modem may also hang up during the boot process (as the
-serial chip is reset) or when the init
-run level is changed (as getty is
-restarted).
-
-----
-!!!A.4. init and
-syslog output does not display on
-secondary consoles
-
-The kernel can be configured to output messages to the serial
-port and to the attached monitor. However messages from
-init and
-syslog only appear on the last-listed
-console device, in our case the serial port.
-
-
-
-This can confuse someone looking at the attached monitor, as
-the messages on the monitor suggest that the machine has hung just
-before starting init. Eventually the
-machine will finish booting and getty
-will display a login: request. A Post-it Note on
-the monitor may reassure the impatient.
-
-----
-!!!A.5. The console is unresponsive after connecting
-
-The terminal's screen may be blank after connecting to the
-machine. Pressing __Enter__ will usually bring up a
-login: request.
-
-
-
-If no characters appear upon the screen after pressing
-__Enter__ do not panic. The machine must have power
-and the operating system must have booted: for our call to be
-answered by the modem Data Terminal Ready must be active.
-
-
-
-The most likely thing is that the machine booted and is
-running a __fsck__ filesystem check. These checks
-can take some considerable time, all with no or very little
-output.
-
-
-
-It will help your peace of mind considerably to record in the
-system log book the time __fsck__ takes to check
-each filesystem.
-
-
-
-If you see garbled text after pressing __Enter__
-then there are mismatched bit rates or parity parameters. Correct
-your terminal emulator's configuration.
-
-----
-!!!A.6. Modem hangs up during initialization
-
-Using __setserial__ will reset the serial
-port. This will hang up the modem.
-
-
-
-__setserial__ is sometimes used during the
-boot process, resulting in the output seen in Figure A-1. Look into the file
-/etc/rc.serial and remove any references to
-the port which is being used as the serial console.
-
-
-
-__Figure A-1. __setserial__ causes a modem to hang up as
-the machine initializes__
-
-
-#8230
-Mounting local filesystems: [[ OK ]
-Turning on user and group quotas for local filesystems: [[ OK ]
-Enabling swap space: [[ OK ]
-/dev/ttyS0 at 0x03f8 (irq = 4) is a 16550A
-NO CARRIER----
-!!!A.7. Boot loader has no flow control
-
-Most boot loaders do not support
-CTS/RTS flow control. This can
-cause some data loss where large speed mis-matches exist, as is
-often the case with a modern modem connected into a
-9600bps fixed-speed port.
-
-
-
-SYSLINUX 1.66 supports flow
-control.
-
-----
-!!!A.8. Boot loaders are vulnerable to line noise
-
-Most boot loaders will sit at their prompt forever after
-receiving a single character of line noise.
-
-
-
-Some modems will let the RS-232 signals
-"float", sending noise when their is no caller. Because the modem
-is not asserting Data Carrier Detect it expects the receiver to
-discard the noise characters.
-
-
-
-The combination of an unfortunate boot loader with an
-unfortunate modem can result in a machine that will regularly hang
-during booting.
-
-
-
-If you cannot configure your boot loader to obey
-DCD then be careful to test any modem you intend
-to purchase to ensure that it does not generate characters when
-their is no caller. At the present only
-SYSLINUX implements full
-RS-232 status signals.
-
-----
-!!!A.9. Advanced Power Management
-
-APM allows control of the power from
-software. This can be a blessing and a curse.
-
-
-
-The blessing is that the machine can be cleanly and totally
-shut down remotely. You may want to do this if the remote site is
-maintaining their power supply.
-
-
-
-The curse is that once powered down the machine will not
-start up again until the __Power__ button is
-physically pressed. Some machines have a BIOS or
-motherboard setting to defeat this unhelpful behaviour.
-
-
-
-
-
-
-__Errors when typing __shutdown__ are worse
-with APM__
-
-Be careful not to confuse __shutdown -r
-now__, which cleanly reboots the machine, with
-__shutdown -h now__, which cleanly powers down the
-machine. Someone will need to physically press the
-__Power__ button if you choose wrongly.
-
-
-
-If you are serious about remote site computing then you
-should investigate remote power switches from companies like Western Telematic, Server Technology and many
-others. Some models include built-in terminal servers, built-in
-modems and RS-232 lines to simulate a
-UPS input power failure (and thus shut the
-Linux system down cleanly
-before removing power).
-
-----
-!!!A.10. Modems and overseas telecommunications requirements
-
-There is no world-wide approval processes to certify that a
-modem is suitable for connection to the telephone network. This is
-despite the presence of a common set of technical standards that
-modems must meet for use on the global switched telephone network.
-There is little or no recognition of one nation's approvals by
-other national regulators.
-
-
-
-There are national technical requirements concerning the use
-of modems. Common requirements are to set the modem and its
-software to answer after the second ring and never to dial the same
-engaged or faulty number more than five times in a row.
-
-
-
-
-
-
-__Telecommunications device approvals__
-
-Using or importing unapproved telecommications equipment is
-a criminal offense in most countries.
-
-
-
-Additionally, the operator of some types of equipment may
-require certification.
-
-
-
-Privacy laws may control what can be done with calling line
-identification records.
-
-
-
-Do not assume that Touch Tone dialling is globally available.
-There is no common standard for decadic dialling: some countries
-have the longest sequence for zero, other countries have the
-shortest sequence for zero.
-
-
-
-There is little coordination of national numbering plans. Be
-careful not to call a national emergency services number when
-intending to dial the international access code. Common emergency
-services numbers are: 112, 911, 000. International access codes
-vary by country.
-
-
-
-Intelligent network features such as toll-free numbers are
-usually not available to calls originating from abroad.
-
-
-
-International calls may be routed through fiber optical
-submarine cable, satelite or High Frequency radio. The possible
-bit rates vary considerably between these options. Expect the
-maximum throughput with no errors from fiber optical submarine
-cable. Expect 1200bps to
-2400bps with some errors from satelite. Expect
-75bps to 300bps with many
-errors from HF radio.
-
-
-
-There will be considerable latency depending upon the
-distance. If the latency becomes greater than the modem's error
-correction window then you will get better
-Zmodem file transfer performance if you
-disable the HDLC-based error correction in the
-modems.
-
-
-
-International calls may have their signal altered
-considerably. Traditionally, international calls are placed
-through analogue conditioning circuits to minimise echo. This
-conditioning limits the maximum bit rate a modem can achieve,
-probably to less than 9600bps. You may be able to program a
-''guard tone'' to disable analogue
-conditioning, this will vary by carrier and the commands to send
-the guard tone vary by modem.
-
-
-
-On some modern international circuits, particularly those
-accessed by international calling cards, digital voice compression
-is used. No reliable modem connection can be established over
-these digitally-compressed circuits. The best current tactic for
-identifying these digitally compressed circuits is to listen to the
-background noise - when no-one is speaking the real
-background noise will be replaced by a synthesized background noise
-(a compression technique called ''silence
-suppression'').
-
-----
-!!!Appendix B. Uploading files from a serial console
-
-There are many scenarios where the machine is dead in the
-water and you need to upload a file to correct that. In many of
-these scenarios the only way to upload the file is via the serial
-port being used as the console.
-
-
-
-Moving files about over serial links has a long history in
-microcomputing and this section goes back in time to uncover the
-tools commonly used in the pre-Internet age of the Bulletin Board
-System.
-
-----
-!!!B.1. Disable logging to console
-
-Before attempting to upload or download files it is a good
-idea to prevent messages from appearing on the console. These
-messages will corrupt files moved using __cat__ and
-will cause Xmodem and similar protocols
-to take much, much longer.
-
-
-
-Alter your system's configuration to give
-klogd the -c 1
-parameter, inhibiting the display of kernel messages directly to
-the console. Kernel messages will still go to the system
-logger.
-
-
-
-__Figure B-1. Supressing kernel messages to the console in Red Hat
-Linux__
-
-
-bash# __vi /etc/sysconfig/syslog__
-KLOGD_OPTIONS="-2 -c 1"
-bash# __/etc/init.d/syslog restart__
-
-Also modify the system logger's configuration not to send
-messages to the console. Edit
-/etc/syslog.conf, altering lines sending
-output to /dev/console.
-Send this output to a file instead.
-
-----
-!!!B.2. ASCII upload and __cat__
-
-__cat__ is available on every
-UNIX-like system. It copies the data received
-from the keyboard to a file. Minicom and other terminal emulators
-have an #8216ASCII upload#8217 facility that
-will send a file up the serial link as though it had been
-typed.
-
-
-
-
-
-
-remote bash$ __cat b upload.txt__
-__Alt__-__S__ Upload ascii
-[[ascii upload - Press CTRL-C to quit]
-
-Wait for upload to complete#8230
-
-
-ASCII upload of "upload.txt"
-10.0 Kbytes transferred at 3900 CPS... Done.
-READY: press any key to continue...
-__Ctrl__-__D__
-remote bash$
-
-
-
-
-
-Without hardware flow control ASCII upload
-will drop the occassional character.
-
-
-
-To upload binary files encode them into
-ASCII, upload them, and then decode them into
-binary again.
-
-
-
-
-
-
-localhost bash$ __uuencode upload.bin ` upload.bin b upload.txt__
-__Alt__-__S__ Upload ascii
-[[ascii upload - Press CTRL-C to quit]
-
-Wait for upload to complete#8230
-
-
-ASCII upload of "upload.txt"
-10.0 Kbytes transferred at 3900 CPS... Done.
-READY: press any key to continue...
-__Ctrl__-__D__
-remote bash$
-remote bash$ __uudecode ` upload.txt__
-
-
-
-
-
-You can detect transmission errors by using a checksum
-program such as __sum__, __cksum__ or
-__md5sum__. Print the ckecksum of the file before
-it is sent from the local machine and after it is recieved upon the
-remote machine.
-
-
-
-
-
-
-localhost bash$ __cksum upload.bin__
-1719761190 76 upload.bin
-remote bash$ __cksum upload.bin__
-1719761190 76 upload.bin
-
-
-
-
-
-There are a number of checksumming programs. The
-__sum__ command should be used with caution, as
-there are versions for BSD and
-System V UNIX which
-give differing results. __cksum__ is the attempt by
-the POSIX standards developers to correct that
-mess: it gives the same result for the same file on all
-POSIX machines.
-
-
-
-If the checksums of the original and uploaded files do not
-match then the file will have to be uploaded again. If the link is
-noisy and the file is big then you may never get a successful
-upload. What is needed in this case is to divide the file into
-many small parts, upload a part, check its checksum, and if it is
-fine proceed to the next part.
-
-
-
-This sounds like something that should be automated.
-Entering from stage left is Xmodem.
-
-----
-!!!B.3. Xmodem,
-Ymodem and
-Zmodem
-
-Xmodem sends 128 bytes and a
-checksum, waits for a Acknowledgment to say all is well and sends
-the next block. If a negative acknowledgement is received or if no
-ACK or NAK ever appears then
-the block is sent again.
-
-
-
-Xmodem is a simple protocol, as
-you would expect of a program written for 8-bit computers runing
-CP/M. It has lots of
-inefficiencies and minor problems, such as rounding up the file
-size to the next 128 byte boundary. These deficiencies lead to an
-evolution of the protocol with revisions of
-Xmodem, then
-Ymodem and finishing with
-Zmodem.
-Zmodem is substantially faster than
-Xmodem and has no niggling problems.
-The Zmodem protocol is substantially
-more complex than the Xmodem protocol,
-but since we only seek to at most compile the code, that complexity
-need not concern us.
-
-
-
-
-
-
-remote bash$ __rz__
-... waiting to receive.**B0100000023be50
-__Alt__-__S__ Upload zmodem
-[[zmodem upload - Press CTRL-C to quit]
-Sending: upload.bin
-Bytes Sent: 3072/ 10000 BPS:2185 ETA 00:09
-
-
-
-
-
-If an upload fails and you are left with
-__rz__ waiting to recieve a file then typing
-__Ctrl__-__X__ a
-number of times will return you to the command prompt. This also
-works for Xmodem's __rx__
-and Ymodem's
-__ry__.
-
-
-
-A useful Zmodem capability is the
-ability to resume failed uploads and to send multiple files in a
-single upload session.
-
-
-
-An implementation of Xmodem,
-Ymodem and
-Zmodem for POSIX
-computers is available from http://www.ohse.de/uwe/software/lrzsz.html.
-Red Hat Linux distribute this in the
-lrzsz RPM package.
-lrzsz is a enhanced free software branch
-of the public domain version of rzsz
-from Omen
-Technology.
-
-----
-!!!B.4. Kermit
-
-Kermit
-is a terminal emulator and file transfer program delevoped by
-Columbia University.
-It's popularity springs from the large range of computers that
-Kermit could be used to access, from
-IBM mainframes to
-MS-DOS
-PCs.
-
-
-
-A Kermit variant named G-Kermit
-was released under the ''GNU Public License''.
-This is available in most Linux
-distributions.
-
-
-
-The recent Kermit and
-Zmodem protocols are built upon the same
-technologies. Zmodem has better
-performance in calls with high error rates.
-Kermit has been ported to more host
-platforms.
-
-----
-!!!Appendix C. Upgrading Red Hat Linux from a
-serial console
-
-Upgrades to Linux distributions are frequently released. A
-machine is not remotely manageable unless these upgrades can be
-installed without needing to physically touch the machine.
-
-
-
-This section examines the remote installation and remote
-upgrade of Red Hat Linux.
-
-
-
-Red Hat Linux can be installed over
-the network from a HTTP server using an install
-diskette. We modify this diskette to use the serial console. If we
-can control whether to boot from this diskette or from the hard disk
-then we can remotely upgrade the Red Hat Linux distribution from the
-serial port. If a blank diskette is placed in the drive when the
-machine is deployed then no on-site intervention is needed to
-upgrade the operating system.
-
-
-
-If you have upgrade procedures for other
-Linux distributions please contribute
-them to the ''HOWTO'' maintainer.
-
-----
-!!!C.1. Select boot disk
-
-The key to a remote upgrade is to be able to boot from floppy
-disk to perform the upgrade, and then to reboot from the hard disk.
-The possibilities are:
-
-
-
-
-
-
-#
-
-Most BIOSs allow the boot disk order to be
-controlled through the BIOS' configuration. If
-the BIOS supports a serial console then the
-machine can be upgraded whilst leaving the floppy disk in the
-drive. No one need attend the site to upgrade the operating
-system
-
-
-#
-#
-
-Someone can insert a floppy disk before the upgrade and
-remove it afterwards. Most co-location sites will provide this
-level of #8216board-swap#8217 technical support.
-
-
-#
-#
-
-Two records of the CMOS memory which stores the
-BIOS configuration can be made: one for booting
-from floppy and another for booting from hard disk.
-Unfortunately the nvram device driver does not yet work on a wide
-enough variety of machines for this HOWTO to pursue this option
-further.
-
-
-#----
-!!!C.2. Configure the BIOS to use the serial
-port
-
-Many servers allow the BIOS to be configured
-from the serial port, especially on systems designed for rack
-mounting. At the moment few machines designed to be used as
-desktop systems allow the BIOS to be accessed from
-the serial port.
-
-
-
-Refer to your vendor's documentation to set the
-BIOS to use the serial port. Some vendors call
-this feature #8216console redirection#8217. Unfortunately, the
-meaning of this term varies by vendor. Some vendors use it to mean
-the redirection of the VGA output and keyboard
-to a remote PC using a proprietary serial
-protocol. This feature can only be used in conjunction with the
-Linux serial console if the
-BIOS can be instructed to disable the serial
-redirection after booting.
-
-
-
-As an example of the confusion, Dell uses #8216console
-redirection#8217 when describing the Dell
-2400 and the Dell 2450.
-The Dell 2450 BIOS
-can be configured from the serial port. The Dell
-2400's #8216console redirection#8217 is
-additional hardware that remotely replicates the computer's
-VGA monitor and keyboard.
-
-
-
-An example of a BIOS configuration is given
-in Figure C-1.
-
-
-
-__Figure C-1. Configuring BIOS to use serial link__
-
-
-BIOS setup console redirection
-Enter BIOS setup during boot when
-Keyboard: [[Ctrl+Alt+Esc pressed]
-Serial port: [["HAL" is typed]
-Serial port
-Port: [[COM1]
-Speed [[9600] bps
-Data: [[8] bits
-Parity: [[None]
-Stop: [[1] bits
-Handshaking: [[Full CTS/RTS handshaking]
-Terminal: [[Dumb]
-
-Many BIOSs will enter their configuration
-dialogs if a particular terminal key is pressed during the
-BIOS boot. This can be a problem if the modem
-link is noisy.
-
-
-
-For normal operation, set the boot order to attempt to boot
-from the hard disk first.
-
-
-
-__Figure C-2. Configuring BIOS to boot from hard disk__
-
-
-BIOS setup boot order
-First: [[Hard disk]
-Second: [[CD-ROM]
-Third: [[Floppy disk]----
-!!!C.3. Configure modem to ignore DTR and assert
-DCD
-
-We will be doing a fair about of rebooting and having this
-hang up the modem is annoying, so modify the modem's configuration
-to ignore Data Terminal Ready. Use the __AT8D0__
-to ignore the status of DTR.
-
-
-
-We may also wish to disconnect during the install to reduce
-transmission charges. Configuring the modem to hold Data Carrier
-Detect on will prevent any disconnection and reconnection from
-being apparent to the installer. Use the command
-__AT8C0__ to always hold DCD
-high.
-
-
-
-Apply these changes using the procedure in Section 12.3, retaining all of the other
-AT commands.
-
-----
-!!!C.4. Prepare a network install floppy diskette
-
-The Red Hat Linux web site has a
-floppy diskette image for a network installation. For
-Red Hat Linux
-7.1 the image is ftp://ftp.redhat.com/pub/redhat/linux/7.1/en/os/i386/images/bootnet.img.
-
-
-
-Install this image on a floppy disk.
-
-
-
-
-
-
-bash# __mkfs -t msdos -c /dev/fd0__
-mkfs.msdos 2.2 (06 Jul 1999)
-bash# __dd if=bootnet.img of=/dev/fd0 bs=1440k__
-1+0 records in
-1+0 records out
-bash# __sync__
-
-
-
-
-
-Now mount the diskette and check that the installer files are
-present.
-
-
-
-
-
-
-bash# __mount -t vfat /dev/fd0 /mnt/floppy__
-bash# __ls /mnt/floppy__
-boot.msg general.msg ldlinux.sys rescue.msg vmlinuz
-expert.msg initrd.img param.msg syslinux.cfg
-
-
-
-
-
-This floppy disk uses the
-SYSLINUX boot loader which was
-discussed in Section 4.3 and
-in Section 5.3. Firstly, we alter
-the boot loader configuration file
-/mnt/floppy/syslinux.cfg to use the serial
-port. If you are going to use the vi
-editor to alter this file, use the -n option to
-avoid writing a swap file to the floppy disk.
-
-
-
-
-
-
-bash# __vi -n /mnt/floppy/syslinux.cfg__
-serial 0 9600
-
-
-
-
-
-Secondly we add a new boot option. This is modeled upon the
-other boot options in the file. Our variant passes the serial
-console parameters to the kernel, the same parameters that we pass
-during normal operation when using serial console. "serial" seems
-an appropriate name for the boot option.
-
-
-
-
-
-
-label serial
-kernel vmlinuz
-append initrd=initrd.img lang= text serial expert devfs=nomount console=ttyS0,9600n8r
-
-
-
-
-
-text, serial and
-expert are parameters to the Red Hat
-anaconda installer. Specifying
-text ensures that the graphical installer does
-not start. Specifying serial prevents scans for
-possibly non-existent video hardware. You will need to run
-Xconfigurator manually if you do have a
-video card. Specifying expert allows all the
-configuration options to be seen, giving one floppy image that can
-be used for all purposes.
-
-
-
-Thirdly, we make this new configuration start automatically.
-As there is no-one at the site, there's no need to issue a
-boot: prompt.
-
-
-
-
-
-
-default serial
-prompt
-
-
-
-
-
-Fourthy, we write the new configuration to diskette.
-
-
-
-
-
-
-bash# __umount /mnt/floppy__
-
-
-
-
-
-Check that the diskette boots. If it does not then write a
-new boot sector by downloading and running the most recent
-SYSLINUX.
-
-
-
-
-
-
-bash# __syslinux /dev/fd0__
-
-
-
-
-
-Finally, create a new boot image for copying to the
-computers to be upgraded.
-
-
-
-
-
-
-bash# __dd if=/dev/fd0 of=bootserialnet.img bs=1440k__
-1+0 records in
-1+0 records out
-
-
-
-
-
-If you test the new boot floppy on a machine with a serial
-console you should briefly see SYSLINUX
-booting
-
-
-
-
-
-
-SYSLINUX 1.52 2001-02-07 Copyright (C) 1994-2001 H. Peter Anvin
-
-
-
-
-
-and then presenting the boot.msg file
-and then the Linux kernel should be
-loaded
-
-
-
-
-
-
-Loading initrd.img..............
-Loading vmlinuz............. ready.
-
-
-
-
-
-and run.
-
-
-
-
-
-
-Linux version 2.4.2-2BOOT (root@porky.devel.redhat.com) (gcc version 2.96 200001
-
-
-
-
-
-Next the init system flashes
-by
-
-
-
-
-
-
-Greetings.
-Red Hat install init version 7.0 starting
-mounting /proc filesystem... done
-mounting /dev/pts (unix98 pty) filesystem... done
-Red Hat install init version 7.0 using a serial console
-remember, cereal is an important part of a nutritionally balanced breakfast.
-checking for NFS root filesystem...no
-trying to remount root filesystem read write... done
-checking for writeable /tmp... yes
-running install...
-running /sbin/loader
-
-
-
-
-
-before the installation application, called
-anaconda, is started
-
-
-
-
-
-
-Welcome to Red Hat Linux
-+----------+ Devices +-----------+
-| |
-| Do you have a driver disk? |
-| |
-| +-----+ +----+ |
-| | Yes | | No | |
-| +-----+ +----+ |
-| |
-| |
-+--------------------------------+
-`Tabb/`Alt-Tabb between elements | `Spaceb selects | `F12b next screen
-
-
-
-
-
-There does not seem to be a way to access the function keys,
-fortunately the user interface does not require their use.
-
-
-
-Now that the floppy has been tested, eject the disk and
-reboot the machine into normal operation.
-
-----
-!!!C.5. Prepare HTTP server
-
-It is best if the web server runs the version of Red Hat
-Linux as is being upgraded to. If it runs an earlier version, then
-do not rebuild the operating system on this machine and install
-anaconda-runtime from the later
-operating system.
-
-
-
-Copy the Linux distribution to a local web server using a
-mirroring utility like __wget__. Alternatively the
-files can be copied from the distribution CDs to
-the web server.
-
-
-
-
-
-
-bash$ __mkdir --mode=664 --parents /var/www/html/redhat/linux/7.1/en/os/i386__
-bash$ __umask 002__
-bash$ __wget -nh -nH -r -N -nr -l0 -k -np -X SRPMS ftp://ftp.redhat.com/pub/redhat/linux/7.1/en/os/i386/ -P /var/www/html/redhat/linux/7.1/en/os/i386__
-
-
-
-
-
-It's best to use a mirror site in place of Red Hat's FTP site
-used in the example above.
-
-
-
-It is very important not to gain files along the way. Delete
-any files generated by FTP servers, web servers
-and CD-ROMs.
-
-
-
-
-
-
-bash$ __cd /var/www/html/redhat__
-bash$ # Files added by FTP server
-bash$ __find . -name '.listing' -print -exec rm {} \;__
-bash$ __find . -name 'ls-*' -print -exec rm {} \;__
-bash$ # Files added by a wget from a HTTP server
-bash$ __find . -name '\?*' -print -exec rm {} \;__
-bash$ # Files added by a CD-ROM
-bash$ __find . -name 'TRANS.TBL' -print -exec rm {} \;__
-
-
-
-
-
-We now need to add the latest updates to the distributed
-software. This is done to avoid the machine being compromised
-immediately following the upgrade.
-
-
-
-Adding the updates is essential for Red Hat
-Linux 7.1, see Section A.1.
-
-
-
-Collect together the updates RPMs from
-ftp://ftp.redhat.com/pub/updates/7.1/en/os/
-in the subdirectories i386,
-i486, i586 i686, images and noarch.
-
-
-
-Merge these updates into the copy of the distribution. For
-each updated RPM file, remove the original
-RPM file then replace it with the updated
-RPM file. For example:
-
-
-
-
-
-
-bash$ __cd /var/www/html/redhat/linux/7.1/en/os/i386/!RedHat/RPMS__
-bash$ __ls /var/www/html/redhat/updates/7.1/en/os/i386__
-!SysVinit-2.78-17.i386.rpm
-bash$ __ls !SysVinit-*.rpm__
-!SysVinit-2.78-15.i386.rpm
-bash$ __rm !SysVinit-2.78-15.i386.rpm__
-bash$ __cp /var/www/html/redhat/updates/7.1/en/os/i386/!SysVinit-2.78-17.i386.rpm .__
-bash$ __chmod u=rw,g=r,o=r !SysVinit-2.78-17.i386.rpm__
-
-
-
-
-
-Merge the RPMs from the updates subdirectories i386, i686 and noarch into /var/www/html/redhat/linux/7.1/en/os/i386/!RedHat/RPMS.
-Merge the files from the directory /var/www/html/redhat/updates/7.1/en/os/images
-into the directory /var/www/html/redhat/linux/7.1/en/os/i386/images.
-
-
-
-The file
-/var/www/html/redhat/linux/7.1/en/os/i386/!RedHat/base/hdlist
-and hdlist2 contain the list of the
-RPMs to install. This needs to be modified to
-contain the names of the updated RPMs.
-
-
-
-Install the anaconda-runtime
-RPM on the HTTP server. This
-RPM should be the same version as the Red Hat
-Linux being upgraded to.
-
-
-
-Now create a new hdlist with the
-commands:
-
-
-
-
-
-
-bash$ __cd /usr/lib/anaconda-runtime__
-bash$ __rm /var/www/html/redhat/linux/7.1/en/os/i386/!RedHat/base/hdlist*__
-bash$ __umask 002__
-bash$ __./genhdlist --withnumbers --hdlist /var/www/html/redhat/linux/7.1/en/os/i386/!RedHat/base/hdlist /var/www/html/redhat/linux/7.1/en/os/i386__
-
-
-
-
-
-The distribution plus the updates can now be used for a
-network install. They cannot be used for a CD
-install, but that doesn't concern us.
-
-
-
-As the distribution plus the updates is different from the
-original distribution, we should not use the version number of the
-original distribution. Appending the date to which the updates
-have been applied seems best.
-
-
-
-
-
-
-bash$ __cd /var/www/html/redhat/linux/__
-bash$ __mv 7.1 7.1-20020202__
-
-
-
-----
-!!!C.6. Record network configuration
-
-If the machine does not use the Dynamic Host Configuration
-Protocol then record the current network configuration. This is
-used to complete the installer's Configure
-TCP/IP screen.
-
-
-
-__Example C-1. Displaying the Internet Protocol configuration__
-
-
-bash$ __ifconfig eth0__
-eth0 Link encap:Ethernet HWaddr 00:11:22:33:44:55
-inet addr:10.1.2.3 Bcast:10.1.2.255 Mask:255.255.255.
-UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
-RX packets:344233 errors:0 dropped:0 overruns:0 frame:
-TX packets:285750 errors:0 dropped:0 overruns:0 carrier:
-collisions:0 txqueuelen:100
-Interrupt:10 Base address:0x9000
-bash$ __netstat -r -n__
-Kernel IP routing table
-Destination Gateway Genmask Flags MSS Window irtt Iface
-10.1.2.0 ...0 255.255.255.0 U 40 0 0 eth0
-127...0 ...0 255...0 U 40 0 0 lo
-...0 10.1.2.254 ...0 UG 40 0 0 eth0
-bash$ __cat /etc/resolv.conf__
-domain example.edu.au
-nameserver 10.255.1.1
-nameserver 10.255.2.1
-nameserver 172.16.1.1; : The value of inet addr is the
-#8216IP address#8217. Our example shows
-10.1.2.3. The value of
-Mask is the #8216Netmask#8217. Our
-example shows 255.255.255..; : The value in the Gateway column for Destination
-...0 is the #8216Default
-gateway#8217. Our example shows
-10.1.2.254.; : The value of the first listed
-nameserver is the #8216Primary
-nameserver#8217. Our example shows
-10.255.1.1.----
-!!!C.7. Record LILO configuration
-
-Record the current value of append=,
-boot= and linear in
-/etc/lilo.conf.
-
-
-
-__Example C-2. Displaying the LILO
-configuration__
-
-
-bash# __fgrep append= /etc/lilo.conf__
-append="console=tty0 console=ttyS0,9600n8r"
-bash# __fgrep boot= /etc/lilo.conf__
-boot=/dev/hda
-bash# __fgrep linear /etc/lilo.conf__
-bash#
-
-If the boot= parameter points to a hard
-disk then LILO is installed in the
-master boot record, or MBR. It can also point to
-a partition.
-
-
-
-If the linear parameter is present then
-the hard disk that is booted from uses linear block addressing, or
-LBA.
-
-----
-!!!C.8. Upgrade Red Hat distribution
-
-In this section it all comes together. We will walk through
-an entire serial console upgrade, not that it differs much from a
-standard text mode upgrade.
-
-
-
-Configure BIOS to boot from floppy or
-insert the floppy disk. Now reboot the machine.
-
-
-
-
-
-
-bash# __shutdown -r now__
-SYSLINUX 1.64 1.64-pre2 Copyright (C) 1994-2001 H. Peter Anvin
-Welcome to Red Hat Linux 7.1!
-- To install or upgrade Red Hat Linux in graphical mode,
-press the `ENTERb key.
-- To install or upgrade Red Hat Linux in text mode, type: text `ENTERb.
-- To enable low resolution mode, type: lowres `ENTERb.
-Press `F2b for more information about low resolution mode.
-- To disable framebuffer mode, type: nofb `ENTERb.
-Press `F2b for more information about disabling framebuffer mode.
-- To enable expert mode, type: expert `ENTERb.
-Press `F3b for more information about expert mode.
-- To enable rescue mode, type: linux rescue `ENTERb.
-Press `F5b for more information about rescue mode.
-- If you have a driver disk, type: linux dd `ENTERb.
-- Use the function keys listed below for more information.
-[[F1-Main] [[F2-General] [[F3-Expert] [[F4-Kernel] [[F5-Rescue]
-boot:
-Loading initrd.img..............
-Loading vmlinuz............. ready.
-Linux version 2.4.2-2BOOT (root@porky.devel.redhat.com) (gcc version 2.96 20000731 (Red Hat Linux 7.1 2.96-79)) #1 Sun Apr 8 18:24:33 EDT 2001
-
-
-
-
-
-Because we have booted into expert mode, the menus differ
-slightly from the standard upgrade. For example, you probably
-don't have a driver disk.
-
-
-
-
-
-
- Welcome to Red Hat Linux
-+----------+ Devices +-----------+
-| |
-| Do you have a driver disk? |
-| |
-| +-----+ +----+ |
-| | Yes | |[[No]| |
-| +-----+ +----+ |
-| |
-+--------------------------------+
-
-
-
-
-
-The upgrade then continues in the usual fashion.
-
-
-
-
-
-
-+--------+ Choose a Language +---------+
-| |
-| What language should be used during |
-| the installation process? |
-| |
-| Czech : |
-| [[ English : ] |
-| Danish : |
-| French : |
-| German : |
-| Hungarian : |
-| Icelandic : |
-| Italian : |
-| |
-| +----+ |
-| |[[OK]| |
-| +----+ |
-| |
-+--------------------------------------+
-
-
-
-
-
-Select HTTP to upgrade from the
-web server we prepared previously.
-
-
-
-
-
-
-+-----+ Installation Method +------+
-| |
-| What type of media contains the |
-| packages to be installed? |
-| |
-| NFS image |
-| FTP |
-| [[ HTTP ] |
-| |
-| +----+ +------+ |
-| |[[OK]| | Back | |
-| +----+ +------+ |
-| |
-+----------------------------------+
-
-
-
-
-
-Here we supply the network details recorded in Example C-1. If your network supports Dynamic
-Host Configuration Protocol or the Bootstrap Protocol then these
-work fine too.
-
-
-
-
-
-
-+--------------------+ Configure TCP/IP +--------------------+
-| |
-| Please enter the IP configuration for this machine. Each |
-| item should be entered as an IP address in dotted-decimal |
-| notation (for example, 1.2.3.4). |
-| |
-| [[ ] Use dynamic IP configuration (BOOTP/DHCP) |
-| |
-| IP address: 10.1.2.3________ |
-| Netmask: 255.255.255.___ |
-| Default gateway (IP): 10.1.2.254______ |
-| Primary nameserver: 10.255.1.1______ |
-| |
-| +----+ +------+ |
-| |[[OK]| | Back | |
-| +----+ +------+ |
-| |
-+------------------------------------------------------------+
-
-
-
-
-
-Provide the name of the pre-prepared web server. Note that
-the response to Red Hat directory must
-start with a /.
-
-
-
-
-
-
-+-----------------+ HTTP Setup +-----------------------------------+
-| |
-| Please enter the following information: |
-| |
-| o the name or IP number of your web server |
-| o the directory on that server containing |
-| Red Hat Linux for your architecure |
-| |
-| Web site name: www.example.edu.au_______________________ |
-| Red Hat directory: /redhat/linux/7.1-20020202/en/os/i386____ |
-| |
-| +----+ +------+ |
-| |[[OK]| | Back | |
-| +----+ +------+ |
-| |
-+------------------------------------------------------------------+
-
-
-
-
-
-The following status messages then fly by before the welcome
-screen appears.
-
-
-
-
-
-
-Retrieving base/netstg1.img...
-Loading /mnt/runtime ramdisk...
-Retrieving base/netstg2.img...
-Loading /mnt/runtime/usr ramdisk...
-Running anaconda - please wait...
-Graphical installation not available for http installs. Starting text mode.
-+----------------+ Red Hat Linux +-----------------+
-| |
-| Welcome to Red Hat Linux! |
-| |
-| This installation process is outlined in detail |
-| in the Official Red Hat Linux Installation |
-| Guide available from Red Hat Software. If you |
-| have access to this manual, you should read the |
-| installation section before continuing. |
-| |
-| If you have purchased Official Red Hat Linux, |
-| be sure to register your purchase through our |
-| web site, http://www.redhat.com/. |
-| |
-| +----+ +------+ |
-| |[[OK]| | Back | |
-| +----+ +------+ |
-| |
-+--------------------------------------------------+
-
-
-
-
-
-Select Upgrade Existing
-Installation, although this procedure works fine for
-installations as well.
-
-
-
-
-
-
-+--------------+ Installation Type +--------------+
-| |
-| What type of system would you like to install? |
-| |
-| Workstation |
-| Server System |
-| Laptop |
-| Custom System |
-| [[ Upgrade Existing Installation ] |
-| |
-| +----+ +------+ |
-| | OK | | Back | |
-| +----+ +------+ |
-| |
-+-------------------------------------------------+
-
-
-
-
-
-The upgrade continues. When the LILO
-Configuration screen appears insert the kernel parameters
-recorded from Example C-2. These
-parameters should include
-console=ttyS#8230.
-
-
-
-
-
-
-+---------------------+ LILO Configuration +---------------------+
-| |
-| A few systems will need to pass special options to the kernel |
-| at boot time for the system to function properly. If you need |
-| to pass boot options to the kernel, enter them now. If you |
-| don't need any or aren't sure, leave this blank. |
-| |
-| [[ ] Use linear mode (needed for some SCSI drives) |
-| |
-| console=tty0 console=ttyS0,9600n8r______________ |
-| |
-| +----+ +------+ +------+ |
-| | OK | | Skip | | Back | |
-| +----+ +------+ +------+ |
-| |
-+----------------------------------------------------------------+
-
-
-
-
-
-
-
-
-+-------------+ LILO Configuration +--------------+
-| |
-| Where do you want to install the bootloader? |
-| |
-|[[/dev/hda Master Boot Record (MBR) ]|
-| /dev/hda1 First sector of boot partition |
-| |
-| +----+ +------+ |
-| | OK | | Back | |
-| +----+ +------+ |
-| |
-+-------------------------------------------------+
-
-
-
-
-
-
-
-
-+----------------------+ LILO Configuration +-----------------------+
-| |
-| The boot manager Red Hat uses can boot other operating systems |
-| as well. You need to tell me what partitions you would like to |
-| be able to boot and what label you want to use for each of them. |
-| |
-| Device Partition type Default Boot label |
-|[[/dev/hda6 Linux Native * linux ] : |
-| : |
-| : |
-| : |
-| : |
-| |
-| +----+ +------+ +------+ |
-| | Ok | | Edit | | Back | |
-| +----+ +------+ +------+ |
-| |
-| |
-+-------------------------------------------------------------------+
-
-
-
-
-
-The upgrade continues. As installing the packages may take a
-few hours, you can disconnect.
-
-
-
-
-
-
-+-------------+ Package Installation +--------------+
-| |
-| Name : |
-| Size : |
-| Summary: |
-| |
-| Packages Bytes Time |
-| Total : 0 0M |
-| Completed: 0 0M |
-| Remaining: 0 0M |
-| |
-| |
-+---------------------------------------------------+
-
-
-
-
-
-If you disconnected, then when reconnecting it is best to
-press __Tab__ rather than pressing
-__Return__.
-
-
-
-Pressing __Return__ on the
-Bootdisk screen writes a boot disk. This will
-overwrite the upgrade disk.
-
-
-
-You may wish to deliberately create a boot disk if you cannot
-alter the BIOS parameters to boot from the hard
-disk, or if you cannot wait for someone to eject the floppy disk
-before rebooting.
-
-
-
-
-
-
-+------------------+ Bootdisk +-------------------+
-| |
-| A custom boot disk provides a way of booting |
-| into your Linux system without depending on |
-| the normal bootloader. This is useful if you |
-| don't want to install lilo on your system, |
-| another operating system removes lilo, or lilo |
-| doesn't work with your hardware configuration. |
-| A custom boot disk can also be used with the |
-| Red Hat rescue image, making it much easier to |
-| recover from severe system failures. |
-| |
-| Would you like to create a boot disk for your |
-| system? |
-| |
-| +-----+ +----+ |
-| |[[Yes]| | No | |
-| +-----+ +----+ |
-| |
-+-------------------------------------------------+
-
-
-
-
-
-When the Complete screen appears prepare
-to reboot into Linux. If you have a serial BIOS
-be prepared to alter the BIOS parameters to boot
-from the hard disk first. If you do not have a serial
-BIOS ask someone to eject the floppy disk.
-
-
-
-
-
-
-+-----------------+ Complete +------------------+
-| |
-| Congratulations, installation is complete. # |
-| : |
-| Press return to reboot, and be sure to : |
-| remove your boot medium after the system : |
-| reboots, or your system will rerun the : |
-| install. For information on fixes which : |
-| are available for this release of Red Hat : |
-| Linux, consult the Errata available from : |
-| http://www.redhat.com/errata. : |
-| : |
-| Information on configuring and using your : |
-| Red Hat Linux system is contained in the : |
-| |
-| +----+ |
-| |[[OK]| |
-| +----+ |
-| |
-+-----------------------------------------------+
-sending termination signals...done
-sending kill signals...done
-disabling swap...
-/tmp/swap/hda5
-unmounting filesystems...
-/mnt/sysimage/var/www/html
-/mnt/sysimage/boot
-/mnt/sysimage/proc
-/mnt/runtime/usr
-/mnt/sysimage
-/proc/bus/usb
-/mnt/runtime
-/dev/pts
-/proc
-rebooting system
-Restarting system.
-LILO
-Loading linux......................
-Linux version 2.4.3-12 (root@porky.devel.redhat.com) (gcc version 2.96 20000731 (Red Hat Linux 7.1 2.96-85)) #1 Fri Jun 8 15:05:56 EDT 2001
-
-
-
-----
-!!!C.9. Create boot disk for serial console
-
-Once the upgrade has been sucessfully done create a boot
-floppy which has serial console support. This is most simply done
-by creating a boot disk, as done by the
-anaconda installer or as described in
-Section 2.1; modifying the configuration
-file \SYSLINUX.CFG to configure the boot
-loader to use the serial console, as described in Section 4.3; and finally configuring
-the kernel to use the serial console, as described in Section 5.3.
-
-
-
-An alternative is to create your own
-mkbootdisk RPM
-package containing a modified copy of the shell script
-/sbin/mkbootdisk.
-
-
-
-The \SYSLINUX.CFG file on the boot
-floppy is written by __mkbootdisk__ using the code
-in Figure C-3. We alter this
-code to use the serial console; the result is shown in Figure C-4.
-
-
-
-__Figure C-3. Extract from Red Hat Linux 7.2
-mkbootdisk which creates
-SYSLINUX.CFG__
-
-
-cat b $MOUNTDIR/syslinux.cfg ``EOF
-default linux
-prompt 1
-display boot.msg
-timeout 100
-label linux
-kernel vmlinuz
-append $INITRDARG root=$rootdev
-EOF
-
-__Figure C-4. Altered extract from mkbootdisk, which
-creates a SYSLINUX.CFG that uses a serial
-console__
-
-
-cat b $MOUNTDIR/syslinux.cfg ``EOF
-serial 0 9600
-default linux
-prompt 1
-display boot.msg
-timeout 100
-label linux
-kernel vmlinuz
-append $INITRDARG root=$rootdev console=tty0 console=ttyS0,9600n8r
-EOF
-
-Created boot floppies will now use the serial console.
-
-
-
-By far the best alternative would be the addition of
-parameters to __mkbootdisk__ to allow the kernel
-parameters and serial port, speed and flow control to be given when
-the boot floppy is created. For this enhancement request see Red
-Hat Bugzilla entry 59351.
-
-----
-!!!C.10. Further references
-
-Sometimes the kernel on the installation
-CD won't boot on the machine to be upgraded, or
-the filesystem requires modules that are not present. In this case
-you will need to build a new kernel and rebuild the installation
-disk to use the new kernel. This is documented in the ''RedHat7
-CDs mini-!HowTo''. This is an informal HOWTO not
-available through the Linux Documentation Project.
-
-
-
-An older document that more fully describes an older Red Hat
-distribution build process is ''Burning
-a !RedHat CD HOWTO''.
-
-----
-!!!Appendix D. Terminal server configuration
-
-Terminal servers were originally designed for connecting
-terminals to minicomputers. Each terminal would have an
-RS-232 port. The connection to the minicomputer
-usually used an ethernet port. Connecting terminals would be
-connected to a command line interface where they could select from a
-list of predefined machines. A Telnet
-session would then be started to that machine.
-
-
-
-Over time terminal servers gained more features. For example,
-modems could be connected. These initially allowed people to dial
-in to the minicomputer but grew in features until most terminal
-servers became routers with a great number of serial ports.
-
-
-
-As well as allowing the connection of many console to a single
-terminal, the terminal server can be configured with user accounts
-and passwords, preventing unauthenticated access to the console
-whilst still allowing the console to be reached from any
-modem.
-
-
-
-This remainder of this section lists the considerations when
-purchasing terminal servers and the cabling pinouts and basic
-software configuration needed for differing types of terminal
-servers.
-
-
-
-Further contributions are welcome and should be e-mailed to
-the maintainer of this ''HOWTO''.
-
-----
-!!!D.1. Considerations when buying second-hand terminal
-servers
-
-Internet Service Providers have been large users of terminal
-servers in the past. Each modem would be connected to a terminal
-server port and incoming users would be permitted to send
-IP packets anywhere, not just to some predefined
-minicomputer. Manufacturers renamed the equipment to #8216access
-servers#8217 or #8216modem servers#8217 to reflect this new
-use.
-
-
-
-These access servers have been superseded by a new generation
-which allows telephone trunks to be plugged directly into the
-ISP's router. There are no discrete modems; the
-modem tones are decoded by digital signal processing chips within
-the router. As a result terminal servers are currently readily
-available on the second-hand market.
-
-
-
-When purchasing a second-hand terminal server ensure that you
-are also buying the rights to the software. Some companies license
-their software and this license cannot be resold, but has to be
-repurchased from the company if the terminal server changes hands.
-Many companies require a currently maintenance contract to obtain
-software updates. These maintenance agreements can be expensive, a
-common figure is 15% of the retail price per annum. You may be
-able to source a cheaper software updates from a third-party
-maintenance supplier.
-
-
-
-Many older terminal servers are no longer sold or supported
-by their vendors. Search the vendor's web site for "end of
-life".
-
-
-
-Vendor support can be a particular issue when the most
-recently available software does not operating within the
-RAM or flash memory contraints of the terminal
-server you have purchased. You should check this before purchasing
-a seond-hand terminal server. Upgrading flash memory can be
-particularly difficult, as the ROM on the
-motherboard may also need to be replaced with one aware of the
-flash memory's characteristics.[[9]
-
-
-
-Third-party parts suppliers such as Kingston or MemoryX can usually provide
-dynamic RAM and flash memory. They usually
-cannot supply ROMs or static
-RAM.
-
-
-
-Most old terminal servers will not support
-Secure Shell. In this is the case
-accessing the terminal server by its ethernet port is a poor idea:
-when you login to the console you password will travel across the
-Internet in clear text. Either dial in to the terminal server or
-use a one-time password system such as the
-RADIUS protocol with
-S/KEY authentication.
-
-
-
-An alternative to using a terminal server is to use a
-multiport serial card in another Linux system.
-
-----
-!!!D.2. Cisco 2511
-
-The basic configuration for a Cisco 2511 access server is
-shown in Figure D-1. A similar
-configuration will work for other Cisco access servers. Cisco has
-excellent documentation at its web site; start by finding the
-correct ''Configuration guide''.
-
-
-
-A current maintenance contract with Cisco or a reseller is
-required to download software updates. This contract also includes
-the provision of ROMs required for flash memory
-upgrades. In most jurisdictions Cisco software licenses are not
-transferrable, so if you purcashed the access server on the
-second-hand market you will need to purchase a software license
-from Cisco or a reseller.
-
-
-
-__Figure D-1. Basic configuration for Cisco
-2511 terminal server to Linux PC__
-
-
-interface Async1
-description To Linux computer
-ip unnumbered Loopback0
-async mode interactive
-no peer default ip address
-line 1
-location To Linux PC
-session-timeout 30
-no exec
-login
-modem !InOut
-terminal-type vt100
-special-character-bits 8
-transport preferred none
-transport input telnet
-telnet break-on-ip
-telnet ip-on-break
-stopbits 1
-flowcontrol hardware
-line vty 0 4
-location Network
-password ''PASSWORD''
-login local
-terminal-type vt100
-transport preferred none
-transport output telnet
-
-There is a port of
-Linux to the Cisco 2500 series of
-routers. At the time of writing it did did not support the
-asycnhronous ports on the Cisco 2511.
-The attractiveness of running Linux
-instead of running Cisco's IOS is that
-Linux can support SSH. At the time of writing Cisco were
-yet to release SSH on the
-Cisco 2500 series of routers, although a
-unofficial beta version has been seen.
-
-----
-!!!D.3. Xyplex/iTouch MAXserver
-1600
-
-A good site for information on Xyplex terminal servers is
-http://www.gno.org/~gdr/xyplex/. Cabling is
-discussed at http://www.conserver.com/consoles/xyplexcons.html.
-
-
-
-The Xyplex terminal servers are now manufacturered by iTouch Communications. A
-current maintenance contract with iTouch is required to download
-software updates.
-
-----
-!!!D.4. Xylogics/Bay/Nortel Annex
-
-A good site for information on
-Annex terminal servers is http://www.ofb.net/~jheiss/annex/.
-
-----
-!!!Appendix E. Gratuitous advice for developers
-!!!E.1. Advice for boot loader authors
-
-Serial console support in a boot loader is very useful.
-Thank you for supporting it.
-
-
-
-The boot loader should support the
-8250A UART and its
-programming-compatible 82510,
-16450,
-16550 and
-16750 descendants. The serial chip
-used in the IBM PC/XT, the
-8250 (no A), and its
-8250B descendant need not be
-supported. The 8250A data sheet is
-''82C50A
-CMOS Asynchronous Communications
-Element'' and is updated by Intel's
-errata ''82510
-PC Software Compatibility''. The
-16550 data sheet is ''PC16550D
-Universal Asynchronous Receiver/Transmitter with
-FIFOs''.
-
-
-
-To set the serial port and serial parameters, most
-Linux boot loaders use a syntax modeled upon the
-kernel's console parameter. It would be nice to
-retain this consistency, since the user needs to learn the kernel
-syntax in any case.
-
-
-
-The default value should be 9600bps, 8 data
-bits, no parity, 1 stop bit and
-CTS/RTS flow control. This
-gives the maximum interoperability with the other programs that use
-the serial console.
-
-
-
-Please do not ignore the lower speeds, as remote serial
-console is at its most valuable when the computer is located three
-days walk up a mountain in the New Guinea highlands. It is
-difficult to get more than 75bps from
-HF radio under adverse sky conditions.
-
-
-
-Be conservative in your use of the modem status lines. Even
-if you are ignoring incoming status (DSR,
-DCD) and handshaking lines (RTS)
-at least assert the outgoing status (DTR) and
-handshaking (CTS) lines. Correctly configured
-modems will not receive calls with DTR low, and
-dropping DTR will cause the modem to hang
-up.
-
-
-
-Consider that the BIOS may have already
-initialised the UART and provide a configuration
-option to allow the boot loader to be informed of that. When the
-boot loader initialises the UART,
-DTR will fall and the line will hang up. In some
-scenarios each hang up requires the satelite circuit to be
-re-booked before another call can be placed.
-
-
-
-Cater for line noise. Imagine the boot loader starting and
-then being sent nonsensical characters every few seconds. Although
-this is certainly wrong, a fault in a modem is difficult to
-remotely diagnose and correct if the machine is left stranded at
-the boot loader prompt. A solution is to boot the default image
-upon the expiry of a timer; the boot occurring even if the user (or
-line noise) has started to type. For example the boot loader
-configuration could say:
-
-
-
-
-
-
-# Start the machine regardless after 30 minutes
-# 30 * 60 seconds per minute * units of tenths of seconds
-__lifetime 18000__
-
-
-
-
-
-The default should be no life timer. The timer is also
-useful in high availability applications: when a machine is used in
-environments with an planned availability of 99.999% the lifetime
-value should be configured to three minutes or less.
-
-
-
-Check information read from the BIOS for reasonablness. For
-example, if the BIOS's Extended Data Area suggests 0x000 as the
-address for the serial port's registers then don't try to
-initialise the registers.
-
-----
-!!!E.2. Advice for BIOS authors
-
-Thank you for adding support for remote operations to your
-BIOS. A few points will maximize the benefits of
-that support, most of them are listed in Section E.1.
-
-
-
-
-
-
-*
-
-Keep the user interface simple. There is no need for fancy
-cursor-addressed terminal support. Fancy features simply limit
-the number of client terminal emulators that can be used. A
-surprising number of these have very buggy DEC
-VT100 implementations.
-
-
-
-In addition to supporting lower speeds, also test your user
-interface at low data rates.
-
-
-*
-*
-
-Don't do too much. In Linux the
-boot loader and operating system both have explicit support for a
-serial console. So all the BIOS need do is to
-support the a serial interface for itself.
-Linux has no need for a generic serial
-redirection facility. If you do provide such a facility for
-other operating systems, please allow it to be disabled after
-system boot.
-
-
-*
-*
-
-Don't allow line noise to prevent the computer from
-booting. Don't require just one key to enter the
-BIOS configuration, make your users and your
-marketing people happy by using a phrase like
-dell, hp or
-ibm. Copy the lifetime idea
-from Section E.1.
-
-
-*
-*
-
-Present a consistent prompt. Imagine a user with a
-supercomputer array of five hundred PCs. You
-want to change a BIOS parameter. Make it easy
-for Expect to set
-those parameters.
-
-
-*
-*
-
-Make sure the Linux utilities
-work. Check that the Linux
-nvram device driver returns the full
-contents of CMOS. This makes it simple to set
-the same CMOS settings on a large number of
-machines. The commands in Figure E-2
-and Figure E-3 should work to copy the
-BIOS settings from one machine to another, where
-the make, model and BIOS versions of the
-machines are the same.
-
-
-
-__Figure E-1. Configuring /dev/nvram to access the
-CMOS configuration__
-
-
-bash# __/dev/MAKEDEV nvram__
-bash# __vi /etc/modules.conf__
-alias char-major-10-144 nvram
-bash# __depmod -a__
-
-__Figure E-2. Getting the CMOS configuration__
-
-
-bash# __cat /dev/nvram b /etc/nvram.bin__
-
-__Figure E-3. Setting the CMOS configuration__
-
-
-bash# __cat /etc/nvram.bin b /dev/nvram__
-
-Have a flash BIOS upgrade program that
-works from Linux. Make the source
-code to this available. Or publish the specifications so that
-one can be written.
-
-
-*
-*
-
-Be clear about what you are providing. Some
-BIOSs with a #8216serial redirection#8217
-feature don't allow the BIOS to be redirected
-to a plain text terminal, but instead use a proprietary protocol.
-This isn't of much use to Linux serial console users.
-
-
-*----
-!!!Appendix F. About this ''HOWTO''
-!!!F.1. Copyright
-
-The first edition of this document is copyright © 2001
-Mark F. Komarinski and is distributed under the terms of the
-''Linux Documentation Project (LDP) License'',
-see Section F.1.1.
-
-
-
-The revisions to this document for the second edition are
-copyright © AARNet Pty Ltd (Australian Company Number 084 540
-518), 2001-2002. These parts were written by Glen Turner.
-He asserts his moral rights to be identified as one of the authors
-of this work under the ''Copyright Act 1968 (Commonwealth
-of Australia)''. The Australian Academic and Research
-Network and Glen Turner distribute these parts under the terms of
-the ''Linux Documentation Project (LDP)
-License'', see Section F.1.1.
-
-----
-!!F.1.1. Linux Documentation Project
-License
-
-Unless otherwise stated, Linux ''HOWTO''
-documents are copyrighted by their respective authors. Linux ''HOWTO''
-documents may be reproduced and distributed in whole or in part,
-in any medium physical or electronic, as long as this copyright
-notice is retained on all copies. Commercial redistribution is
-allowed and encouraged; however, the author would like to be
-notified of any such distributions.
-
-
-
-All translations, derivative works, or aggregate works
-incorporating any Linux
-''HOWTO'' documents must be covered under this
-copyright notice. That is, you may not produce a derivative work
-from a ''HOWTO'' and impose additional
-restrictions on its distribution. Exceptions to these rules may be
-granted under certain conditions; please contact the Linux ''HOWTO''
-coordinator at the address given below.
-
-
-
-In short, we wish to promote dissemination of this
-information through as many channels as possible. However, we do
-wish to retain copyright on the ''HOWTO''
-documents, and would like to be notified of any plans to
-redistribute the ''HOWTO''s.
-
-
-
-If you have any questions, please contact
-`linux-howto@metalab.unc.edub.
-
-----
-!!!F.2. Disclaimer
-
-No liability for the contents of this documents can be
-accepted. Use the concepts, examples and other content at your own
-risk. As this is a new edition of this document, there may be
-errors and inaccuracies, that may of course be damaging to your
-system. Proceed with caution, and although this is highly
-unlikely, the author(s) do not take any responsibility for
-that.
-
-
-
-All copyrights are held by their by their respective owners,
-unless specifically noted otherwise. Use of a term in this
-document should not be regarded as affecting the validity of any
-trademark or service mark.
-
-
-
-Naming of particular products or brands should not be seen as
-endorsements.
-
-
-
-You are strongly recommended to take a backup of your system
-before major installation and backups at regular intervals.
-
-----
-!!!F.3. Acknowledgments
-
-The first edition of this ''HOWTO'' was
-written by Mark Komarinski. It was based upon
-/usr/src/linux/Documentation/serial-console.txt,
-which was written by Miquel van Smoorenburg.
-
-
-
-The second edition of this ''HOWTO'' was
-written by the staff of the Australian Academic and Research
-Network, mainly Glen Turner and David Vu.
-
-
-
-The following people have contributed to this
-''HOWTO''. They are listed in no particular
-order.
-
-
-
-
-
-; LinuxSA mailing list:
-
-Proof reading of the Second Edition. LinuxSA is a
-Linux user group based
-in South Australia.
-
-; David Lawyer:
-
-Technical review of the Second Edition and recommending
-the updated ''HOWTO'' to the Linux
-Documentation Project. David is author of the ''Text-Terminal-HOWTO''.
-
-; Devin Reade:
-
-Xyplex terminal server information. Devin maintains
-information about Xyplex terminal servers at http://www.gno.org/~gdr/xyplex/.
-
-; Michael Brown, Marc Mondragon and other members of the
-Linux on Dell !PowerEdge mailing list:
-
-Technically described how the BIOS redirects characters to
-the serial port. The Linux on Dell !PowerEdge list can be
-subscribed to by sending a message containing subscribe
-linux-poweredge to
-`linux-poweredge-request@dell.comb.
-
-; Thomas Lunde:
-
-For noticing errors of grammar and typography.
-
-----
-!!!F.4. Comments and corrections
-
-The current maintainer of this ''HOWTO''
-is Glen Turner. Please send corrections,
-additions, comments and criticisms to
-`glen.turner+howto@aarnet.edu.aub.
-
-
-
-Linux is continually
-improving, so please also send those small alterations required for
-your latest version of your Linux distribution. The
-''HOWTO'''s author is not a professional, so if
-you find some text difficult to comprehend then let the maintainer
-know.
-
-----
-!!!Colophon
-
-Written in !DocBook 4.1 SGML.
-XEmacs and the
-PSGML package were
-used to create the SGML source file. The
-HTML, !PostScript and
-PDF output was
-generated from the !DocBook source by the Linux Documentation
-Project.
-
-
-
-It appears that some character entities, such as quotes and
-ellipses, do not appear correctly in the
-PDF generated by the
-Linux Documentation Project. In this case you may wish to download
-the !PostScript file and use
-!GhostScript to convert the
-!PostScript file to
-PDF with the
-command:
-
-
-bash$ __gs -q -dNOPAUSE -dBATCH -dSAFER \
--sPAPERSIZE=a4 -sDEVICE=pdfwrite -sOutputFile=Remote-Serial-Console-HOWTO.pdf \
--c .setpdfwrite -f Remote-Serial-Console-HOWTO.ps__
-!Notes
-[[1]
-
-The Linux
-2.4 kernel also supports the
-output of console messages to
-Centronics or
-''IEEE 1284-2000''
-parallel printer interfaces.
-
-[[2]
-
-The craft interface was originally specified in
-Telcordia's ''LATA Switching
-Systems Generic Requirements''. The wide variation
-in craft interfaces can be attributed to this document costing
-US$17,500 (in April
-2002).
-
-[[3]
-
-A ''bit-time'' is the time taken to
-transmit one bit. The distinction between
-''bit-times'' of signal and
-''bits'' of data is apparent when you
-consider that 1.5 bit-times of signal is possible but that 1.5
-bits of data is impossible.
-
-[[4]
-
-As usual with IBM
-PC/AT hardware "loads a boot loader
-from the MBR of the first hard disk" is a
-simplification. BIOS settings permitting, the
-MBR can be loaded from the first two detected
-hard disks of any particular disk technology. Thus the
-MBR can be loaded from one of the first two
-detected IDE disks and one of the first two
-detected SCSI disks.
-
-[[5]
-
-Another simplification. A 512 byte MBR
-is too small to contain a program big enough to load a complex
-operating system. Thus most boot loaders have two stages, the
-first stage is located in the MBR and is only
-able to load the second stage of the boot loader from somewhere on
-a disk (such as the boot sector of the first partition). The
-second stage of the boot loader presents the user interface and
-loads the operating system.
-
-[[6]
-
-A serial console attached to a USB dongle
-is only available in Linux kernel version 2.5.7 and later. The
-2.5 series of kernels are developer's kernels and are not ready
-for production use.
-
-[[7]
-
-This is not as inefficient as it may appear. The last 5%
-of a disk formatted with a general purpose filesystem always
-performs poorly and is best left empty.
-
-[[8]
-
-But don't submit your proposed password to a search engine!
-Sending passwords in plain text across the Internet isn't good,
-nor the possibility of having them appear in the logs of a search
-engine.
-
-[[9]
-
-This is a fault with the design of flash memory. It
-identifies itself with a model designator rather than with the
-timings required to read and write the memory. So to load
-software from flash memory the boot ROM must
-have a table of flash memory models and
-timings
.
+Describe
[HowToRemoteSerialConsoleHOWTO
] here.