Tải bản đầy đủ (.pdf) (717 trang)

suse linux 9 bible

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (17.72 MB, 717 trang )

SUSE

Linux
®
9 Bible
Justin Davies, Roger Whittaker, and William von Hagen
01_577395 ffirs.qxd 12/14/04 11:56 PM Page iii
01_577395 ffirs.qxd 12/14/04 11:56 PM Page ii
SUSE

Linux
®
9 Bible
01_577395 ffirs.qxd 12/14/04 11:56 PM Page i
01_577395 ffirs.qxd 12/14/04 11:56 PM Page ii
SUSE

Linux
®
9 Bible
Justin Davies, Roger Whittaker, and William von Hagen
01_577395 ffirs.qxd 12/14/04 11:56 PM Page iii
LIMIT OF LIABILITY/DISCLAIMER OF WARRANTY: THE PUBLISHER AND THE AUTHOR MAKE NO REPRESENTATIONS
OR WARRANTIES WITH RESPECT TO THE ACCURACY OR COMPLETENESS OF THE CONTENTS OF THIS WORK AND
SPECIFICALLY DISCLAIM ALL WARRANTIES, INCLUDING WITHOUT LIMITATION WARRANTIES OF FITNESS FOR A
PARTICULAR PURPOSE. NO WARRANTY MAY BE CREATED OR EXTENDED BY SALES OR PROMOTIONAL MATERIALS.
THE ADVICE AND STRATEGIES CONTAINED HEREIN MAY NOT BE SUITABLE FOR EVERY SITUATION. THIS WORK IS
SOLD WITH THE UNDERSTANDING THAT THE PUBLISHER IS NOT ENGAGED IN RENDERING LEGAL, ACCOUNTING,
OR OTHER PROFESSIONAL SERVICES. IF PROFESSIONAL ASSISTANCE IS REQUIRED, THE SERVICES OF A COMPETENT
PROFESSIONAL PERSON SHOULD BE SOUGHT. NEITHER THE PUBLISHER NOR THE AUTHOR SHALL BE LIABLE FOR


DAMAGES ARISING HEREFROM. THE FACT THAT AN ORGANIZATION OR WEBSITE IS REFERRED TO IN THIS WORK
AS A CITATION AND/OR A POTENTIAL SOURCE OF FURTHER INFORMATION DOES NOT MEAN THAT THE AUTHOR
OR THE PUBLISHER ENDORSES THE INFORMATION THE ORGANIZATION OR WEBSITE MAY PROVIDE OR
RECOMMENDATIONS IT MAY MAKE. FURTHER, READERS SHOULD BE AWARE THAT INTERNET WEBSITES LISTED IN
THIS WORK MAY HAVE CHANGED OR DISAPPEARED BETWEEN WHEN THIS WORK WAS WRITTEN AND WHEN IT IS
READ.
SUSE

Linux
®
9 Bible
Published by
Wiley Publishing, Inc.
10475 Crosspoint Boulevard
Indianapolis, IN 46256
www.wiley.com
Copyright © 2005 by Wiley Publishing, Inc., Indianapolis, Indiana
Published simultaneously in Canada
ISBN: 0-7645-7739-5
Manufactured in the United States of America
10 9 8 7 6 5 4 3 2 1
1O/QW/QR/QV/IN
No part of this publication may be reproduced, stored in a retrieval system or transmitted in any form or by any means,
electronic, mechanical, photocopying, recording, scanning or otherwise, except as permitted under Sections 107 or 108 of
the 1976 United States Copyright Act, without either the prior written permission of the Publisher, or authorization through
payment of the appropriate per-copy fee to the Copyright Clearance Center, 222 Rosewood Drive, Danvers, MA 01923,
(978)750-8400, fax (978) 646-8600. Requests to the Publisher for permission should be addressed to the Legal Department,
Wiley Publishing, Inc., 10475 Crosspoint Blvd., Indianapolis, IN 46256, (317) 572-3447, fax (317) 572-4355, e-mail:

For general information on our other products and services or to obtain technical support, please contact our Customer

Care Department within the U.S. at (800) 762-2974, outside the U.S. at (317) 572-3993 or fax (317) 572-4002.
Wiley also publishes its books in a variety of electronic formats. Some content that appears in print may not be available in
electronic books.
Library of Congress Cataloging-in-Publication Data
Davies, Justin, 1979-
SUSE(tm) Linux(r) 9 Bible / Justin Davies, Roger Whittaker, and William von Hagen.
p. cm.
Includes index.
ISBN 0-7645-7739-5 (paper/dvd)
1. Linux. 2. Operating systems (Computers) I. Whittaker, Roger, 1955- II. Von Hagen, William. III. Title.
QA76.76.O63D3499 2005
005.4'32 dc22
2004024105
Trademarks: Wiley, the Wiley Publishing logo and related trade dress are trademarks or registered trademarks of John Wiley &
Sons, Inc. and/or its affiliates, in the United States and other countries, and may not be used without written permission. SUSE
is a trademark of SUSE Linux AG. Linux is a registered trademark of Linus Torvalds. All other trademarks are the property
of their respective owners. Wiley Publishing, Inc., is not associated with any product or vendor mentioned in this book.
01_577395 ffirs.qxd 12/14/04 11:56 PM Page iv
About the Authors
Justin Davies has been a Linux user since the age of 15, after getting frustrated at the (lack
of) features in DOS. After University, he became a technical consultant at SUSE Linux, where
he became very interested in Linux on non-Intel architecture. After a stint as a Unix adminis-
trator post-SUSE, he joined the world of the value-added reseller and now works for SCC as
an enterprise solutions architect, helping organizations realize that Linux is a viable business
solution.
After working as a teacher of mathematics and as deputy head of an independent school in
London, Roger Whittaker discovered Linux in 1996 and became increasingly interested
(some would say obsessed). When SUSE Linux opened its U.K. office in 1999, he changed
careers and worked as a technical and training consultant until early 2004, when he moved to
a position in London as a Linux consultant at CSF, a leading supplier of enterprise information

technology solutions. He is a Council member of UKUUG, the U.K.’s Unix and Open Systems
user group.
William von Hagen has been a Unix system administrator for over 20 years and a Linux
fanatic since the early 1990s. He has worked as a systems programmer, system administrator,
writer, application developer, programmer, drummer, and content manager. Bill has written
books on such topics as Linux filesystems, Red Hat Linux, GCC, SGML, Mac OS X, and hacking
the TiVo. He has written numerous articles on Linux, Unix, and open source topics for publi-
cations including Linux Magazine, Linux Format, and Mac Format. An avid computer collector
specializing in workstations, he owns more than 200 computer systems.
01_577395 ffirs.qxd 12/14/04 11:56 PM Page v
Credits
Acquisitions Editor
Debra Williams Cauley
Contributor
Paul Weinstein
Senior Development Editor
Kevin Kent
Technical Editors
Henne Vogelsang
Jono Bacon
Wido Depping
Lenz Grimmer
Pete Prior
Copy Editor
Nancy Rapoport
Editorial Manager
Mary Beth Wakefield
Vice President and Executive
Group Publisher
Richard Swadley

Vice President and Publisher
Joseph B. Wikert
Project Coordinator
April Farling
Graphics and Production Specialists
Denny Hager
Joyce Haughey
Barry Offringa
Heather Pope
Heather Ryan
Quality Control Technicians
Susan Moritz
Carl William Pierce
Permissions Editor
Laura Moss
Media Development Specialist
Travis Silvers
Proofreader
Laura L. Bowman
Indexing
TECHBOOKS Production Services
01_577395 ffirs.qxd 12/14/04 11:56 PM Page vi
To my wife, Aimee—Justin Davies
To Shekufeh and Golnaz, who tolerate all this—Roger Whittaker
01_577395 ffirs.qxd 12/14/04 11:56 PM Page vii
01_577395 ffirs.qxd 12/14/04 11:56 PM Page viii
Foreword
My Brothers and Sisters,
Should we accept that this book is indeed a Bible? Let us use a dictionary to see what the def-
inition of a Bible is.

The first definition is marked obsolete, and just means “a book.” I think everyone would agree
that this tome is a Bible by that definition.
The second definition is the one that most know, “The Book by way of eminence . . . accepted
as of divine authority and origin.” Well, Linux has long been known for its gurus who hand out
small snippets of sage advice. Sometimes that sage advice is in many books, and beginners
are often told RTFM (Read The Freaking Manual). Easy enough for the guru to say, but when
there are so many manuals, HOWTOs, and other pieces of information scattered about, how
do you put it all together?
Therefore, a Bible is necessary. The hope is that it carries information pertinent to your own
religion, or in this case distribution. If the Bible tries to cover the information in every distri-
bution, the reader may become lost. That is why this is SUSE Linux 9 Bible, and not some
other brand of Linux.
Some people say that Linux and Free and Open Source (FOSS) are a religion and that the
people who support it are religious zealots. I don’t think that is true, for the people I know in
FOSS are multifaceted. But when it comes to programming, we believe that Linux and FOSS
offer education, government, and business the most flexible, powerful, and lowest-cost solu-
tion. All you have to do is reach out and accept that fact.
As with any good religion, you have to practice it, study it, and really understand what is
being said to you. You also have to apply it to your life. Look for ways in your life that this
software can help you, whether to organize your life or your business better.
Many people think that Total Cost of Ownership (TCO) is simply made up of the cost of the
hardware, software, and services of the solution you pick. How naive. Total Cost of Ownership
is also made up of the cost of not picking a better solution, one that is flexible enough to solve
99 percent of your problems instead of 80 percent of your problems. How much does it cost
you not to be able to solve that 19 to 20 percent?
The freedom that you get when you use FOSS is the key to this savings, or (in reverse) the
additional earning power. To be able to fully tailor the software to meet your needs is the
greatest value of FOSS. But you can’t do this without knowledge.
That is where this Bible comes in, to give you the knowledge to go out and explore further.
So, my brothers and sisters, throw off the shackles of proprietary software and learn how to

make software do what you want it to do. Open the pages of this Bible and see your life change.
Welcome to the bright side of “The Force.”
Carpe diem!
Jon ‘maddog’ Hall
President, Linux International
01_577395 ffirs.qxd 12/14/04 11:56 PM Page ix
01_577395 ffirs.qxd 12/14/04 11:56 PM Page x
Preface
W
elcome to SUSE Linux 9 Bible! This book is for anyone who is interested in running a
SUSE Linux system — at home or at work, “for fun or for profit.” It covers all the cur-
rently available versions from SUSE: The “9” in the title refers both to Enterprise Server 9 and
SUSE Professional and Personal 9.x. Most of the content applies equally to previous versions
also, however. We shall also describe SUSE’s two other business products: the OpenExchange
Server and the SUSE Linux Desktop.
The book aims to supplement the documentation provided by SUSE and to show the reader how
best to carry out a particular task on a SUSE system, making full use of SUSE’s configuration
utilities. Many Linux books and “howto” documents provide generic instructions for carrying
out particular tasks; however, it often turns out that these are either incorrect in details or
unnecessarily complicated when applied to a particular distribution. In this book we aim to
describe the best ways of working with SUSE in a wide variety of situations, making full use of
SUSE’s specific configuration tools.
Too often, computer books are written only from the standpoint of “how to” perform a task
and fail to provide a real understanding of the underlying principles. Our aim in this book
is to combine a description of the steps necessary to perform a particular task with a real
understanding of what is being done.
While we discuss the use of SUSE Linux in enterprise applications, with examples based on
our own consulting experience, the book is also for home users coming to grips with Linux
for the first time. In short, we aim for SUSE Linux 9 Bible to be what you need to run your
SUSE Linux system, whatever your situation might be.

How This Book Is Structured
We’ve organized this book into five parts:
✦ Part I: SUSE Linux Basics — This part introduces SUSE Linux by describing the installa-
tion of a SUSE system and discusses the fundamental concepts of Linux.
✦ Part II: The SUSE System — This part describes the use of YaST for system configura-
tion, explains Linux networking, system logs and the X Window system, and helps you
to find further documentation.
✦ Part III: Using the Command Line in SUSE Linux — This part covers the power of the
Linux command line, with chapters covering text editing and tools for manipulating
text files, as well as package maintenance and advanced networking.
✦ Part IV: Implementing Network Services in SUSE Linux — This part describes the
setup of the major network services on a SUSE system, including setting up web
servers, mail servers, and file and print servers.
02_577395 fpref.qxd 12/14/04 11:58 PM Page xi
xii
Preface
✦ Part V: SUSE Linux in the Enterprise — This part describes the place of SUSE Linux
in the modern enterprise and covers the use of storage area networks (SANs). The
configuration of the kernel is also covered. The SUSE Linux Standard Server and the
OpenExchange Server are explained in detail.
Conventions Used in This Book
Throughout the book, monospace type indicates code or commands:
This is how code looks.
Additionally, the following icons are used to call your attention to points that are particularly
important.
A Caution warns you to be careful when executing a procedure or you could damage your
computer hardware or software.
A Cross-Reference refers you to further information on a subject that you can find outside
the current chapter.
A Note provides extra information to which you need to pay special attention.

A Tip shows a special way of performing a particular task or introduces a shortcut to ease
your way.
We hope you enjoy working with your SUSE Linux system as much as we enjoy working with
ours, and we know that SUSE Linux 9 Bible will be an invaluable tool to help you get the most
out of it.
DVD and Web Site
This book comes with a DVD containing the SUSE Linux 9.1 Professional distribution. To
download the complete source code for the SUSE Linux Professional Edition version 9.1, go
to
www.wiley.com/go/suselinux9source. Additionally, check out this book’s web site at
www.wiley.com/go/suselinux9bible periodically for additional and updated content. For
more great books on Linux from Wiley, you can point your browser to
www.wiley.com or
www.wrox.com.
Tip
Note
Cross-
Reference
Caution
02_577395 fpref.qxd 12/14/04 11:58 PM Page xii
Acknowledgments
I
thank my wife, Aimee, for her unfaltering support during late-night writing sessions; Henne
Vogelsang, Jono Bacon, Wido Depping, Lenz Grimmer, and Pete Prior for their excellent
technical editorial skills; and Paul Weinstein for contributing the Apache chapter. Finally, I
thank my coauthor, Roger Whittaker, for agreeing that this idea would work!—Justin Davies
03_577395 fbetw.qxd 12/14/04 11:55 PM Page xiii
Contents at a Glance
Foreword . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix
Preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi

Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxxi
Part I: SUSE Linux Basics. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Chapter 1: Installing SUSE 9.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Chapter 2: Linux Fundamentals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Chapter 3: Partitions, Filesystems, and Files . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Part II: The SUSE System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Chapter 4: Booting the System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
Chapter 5: Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
Chapter 6: Understanding Your Linux Network . . . . . . . . . . . . . . . . . . . . . . . . . 135
Chapter 7: Logging. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
Chapter 8: The X Window System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
Chapter 9: Configuring the System with YaST . . . . . . . . . . . . . . . . . . . . . . . . . . 189
Part III: Using the Command Line in SUSE Linux . . . . . . . . . . . . . . . . 229
Chapter 10: Text Manipulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
Chapter 11: Text Editors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
Chapter 12: Working with Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
Chapter 13: Working with Files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
Chapter 14: Working with the System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
Chapter 15: Linux Networking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
Part IV: Implementing Network Services in SUSE Linux . . . . . . . . . . . . 375
Chapter 16: Setting Up a Web Site with the Apache Web Server . . . . . . . . . . . . . . . . 377
Chapter 17: Mail Servers— Postfix, Qpopper, and Cyrus . . . . . . . . . . . . . . . . . . . . 391
Chapter 18: Setting Up Windows Interoperability with Samba. . . . . . . . . . . . . . . . . 413
Chapter 19: Using DHCP Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443
Chapter 20: Configuring a DNS Server. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449
Chapter 21: Working with NFS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461
Chapter 22: Running an FTP Server on SUSE . . . . . . . . . . . . . . . . . . . . . . . . . . . 471
Chapter 23: Implementing Firewalls in SUSE Linux . . . . . . . . . . . . . . . . . . . . . . . 481
Chapter 24: Working with LDAP in SUSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 501

Chapter 25: Setting Up a Web Proxy with Squid . . . . . . . . . . . . . . . . . . . . . . . . . 519
04_577395 ftoc.qxd 12/14/04 11:57 PM Page xiv
Part V: SUSE Linux in the Enterprise . . . . . . . . . . . . . . . . . . . . . . . 529
Chapter 26: Enterprise Architecture. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531
Chapter 27: The Kernel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 551
Chapter 28: The SUSE Linux Standard Server . . . . . . . . . . . . . . . . . . . . . . . . . . 565
Chapter 29: SUSE Linux OpenExchange Server . . . . . . . . . . . . . . . . . . . . . . . . . 581
Appendix A: What’s on the DVD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625
Appendix B: About SUSE Linux Professional Version 9.2 . . . . . . . . . . . . . . . . . . . . 627
Index. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 629
GNU General Public License . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 667
04_577395 ftoc.qxd 12/14/04 11:57 PM Page xv
04_577395 ftoc.qxd 12/14/04 11:57 PM Page xvi
Contents
Foreword . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix
Preface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi
Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxxi
Part I: SUSE Linux Basics 1
Chapter 1: Installing SUSE 9.1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Selecting Your Installation Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Starting Your Installation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Selecting boot options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Configuring language settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Selecting and Customizing Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Partitioning your disks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Resizing existing operating system partitions . . . . . . . . . . . . . . . . . . . 13
Primary and extended partitions. . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Defining filesystems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Selecting software for installation . . . . . . . . . . . . . . . . . . . . . . . . . . 19

Selecting a boot loader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Changing the default runlevel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Running the Installation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Configuring your root password . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Configuring your network access . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Testing your connection and online updates . . . . . . . . . . . . . . . . . . . . 31
Configuring your modem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
ISDN and ADSL connections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Adding a new user . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
SuSEconfig. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Reviewing the release notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Configuring your hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Completing Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Chapter 2: Linux Fundamentals . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Command Line 101: The Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Commonly used shell features . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Advanced shell features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Getting Help for Linux Commands. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
Working with Files and Directories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
Listing files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
Copying files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
Moving and renaming files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
04_577395 ftoc.qxd 12/14/04 11:57 PM Page xvii
xviii
Contents
Deleting files and directories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
Changing directories. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Making directories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Making links to files or directories . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Concatenating files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

Viewing files with more and less . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Viewing the start or end of files . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Searching files with grep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
Finding files with find and locate . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
Editing text with vi and emacs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Common Administrative Tasks. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Basic user and group concepts. . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Creating users and groups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
Working with file ownership and permissions . . . . . . . . . . . . . . . . . . . 59
Configuring user preferences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
Mounting and unmounting filesystems . . . . . . . . . . . . . . . . . . . . . . . 63
Working with Software Packages. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Checking what’s installed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Examining RPM packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
Extracting files from packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Compiling source packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Working with source RPMs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Connecting over the Network . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Backing Up, Restoring, and Archiving Files. . . . . . . . . . . . . . . . . . . . . . . . . 67
Creating and reading simple archives . . . . . . . . . . . . . . . . . . . . . . . . 67
Creating an ISO image to burn to CD. . . . . . . . . . . . . . . . . . . . . . . . . 68
Chapter 3: Partitions, Filesystems, and Files . . . . . . . . . . . . . . . . . . . 69
Partitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Types of partitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Creating partitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
Updating a disk’s partition table . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
Changing partition types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
Filesystems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
EXT2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
EXT3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

ReiserFS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
JFS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
XFS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
VFAT/NTFS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
Creating Filesystems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
Creating an EXT2 filesystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
Creating an EXT3 filesystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Upgrading an EXT2 filesystem to an EXT3 filesystem . . . . . . . . . . . . . . . 83
Creating a ReiserFS filesystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
Filesystem Benchmarks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Mounting Filesystems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
Mount options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
Automatically mounting filesystems. . . . . . . . . . . . . . . . . . . . . . . . . 91
Unmounting Filesystems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
04_577395 ftoc.qxd 12/14/04 11:57 PM Page xviii
xix
Contents
Part II: The SUSE System 95
Chapter 4: Booting the System . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
Booting Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
Runlevels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
Switching runlevels manually . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
Using chkconfig to control runlevels . . . . . . . . . . . . . . . . . . . . . . . . 103
Customizing runlevels for different types of systems . . . . . . . . . . . . . . 104
Boot Managers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
LILO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
GRUB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
Dual Booting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
Installing Windows and Linux on a new system. . . . . . . . . . . . . . . . . . 109
Installing Linux on an existing Windows system . . . . . . . . . . . . . . . . . 109

Manually partitioning an existing Windows system . . . . . . . . . . . . . . . 110
Sharing data on Windows and Linux partitions . . . . . . . . . . . . . . . . . . 112
Troubleshooting Booting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
Fixing boot problems using runlevels . . . . . . . . . . . . . . . . . . . . . . . 113
The SUSE Rescue System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
Chapter 5: Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
Finding Help on Your SUSE System. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
The SUSE manuals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
Man pages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
Info pages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
The SUSE Help Center . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
/usr/share/doc/packages/ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
Other documentation packages. . . . . . . . . . . . . . . . . . . . . . . . . . . 124
Linux Documentation Project Resources . . . . . . . . . . . . . . . . . . . . . . . . . 125
FAQs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
HOWTOs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
Linux Documentation Project Guides . . . . . . . . . . . . . . . . . . . . . . . 126
The SUSE package books. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
Finding Help Online . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
The SUSE Portal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
SUSE public mailing lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
The unofficial SUSE FAQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
Other SUSE documents. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
SUSE Linux OpenExchange Server web sites . . . . . . . . . . . . . . . . . . . 130
Topic-specific sites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
Finding software. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
IBM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
Other distributions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
News sites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
IRC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132

Finding Further Information. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
04_577395 ftoc.qxd 12/14/04 11:57 PM Page xix
xx
Contents
Chapter 6: Understanding Your Linux Network . . . . . . . . . . . . . . . . . 135
Internet 101 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
TCP/IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
The ISO OSI model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
The DoD model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
IP addresses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
Routing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
And Breathe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
Chapter 7: Logging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
Why Log? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
The Files in /var/log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
Logging with syslog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
Logging with syslog-ng. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
The log source. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
The filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
The log destination . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
The log definition — tying it all together . . . . . . . . . . . . . . . . . . . . . . 156
Future Directions for Linux Logging . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
Managing Your Logs with logrotate . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
Analyzing Your Logs with logcheck . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
Using Webalizer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
Reading Log Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
Chapter 8: The X Window System . . . . . . . . . . . . . . . . . . . . . . . . . 165
X Window System Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
Window managers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
KDE and GNOME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167

Configuring X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
Getting hardware information . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
Using sax2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
Framebuffer graphics. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
Accessing framebuffer graphics after installation . . . . . . . . . . . . . . . . 172
If X still doesn’t start . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
Switching resolutions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
Copy and paste in X. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
User preferences in X. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
Using X remotely . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
Diskless X terminals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
KDE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
Konqueror . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
The KDE Control Center . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
KDE applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
GNOME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
Nautilus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
Epiphany . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
Evolution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
Gnucash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
AbiWord . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
Gnumeric. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
04_577395 ftoc.qxd 12/14/04 11:57 PM Page xx
xxi
Contents
Other Window Managers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
MWM and FVWM2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
Blackbox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
IceWM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
XFCE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187

Window Maker. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
FVWM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
Chapter 9: Configuring the System with YaST . . . . . . . . . . . . . . . . . . 189
YaST Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
Configuring Installation Sources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
Creating and Using Boot and Rescue Floppies . . . . . . . . . . . . . . . . . . . . . . 196
Setting Up Proxy Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
Using NTP Time Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
Printer Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
Setting Up a Scanner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
Boot Loader Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
Setting Up SCPM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
Runlevel Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
Configuring DHCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
Users and Groups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
Adding or editing users . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
Adding or editing groups. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
YOU — the YaST Online Update. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
YOU on SUSE Professional and on SLES . . . . . . . . . . . . . . . . . . . . . . 218
susewatcher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
The YaST Online Update module . . . . . . . . . . . . . . . . . . . . . . . . . . 218
YOU dangers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
Autoinstallation — AutoYaST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
Principles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
Mode of operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
The YaST autoinstallation module . . . . . . . . . . . . . . . . . . . . . . . . . 223
Using pre-install, chroot, and post-install scripts. . . . . . . . . . . . . . . . . 226
Further information. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
Part III: Using the Command Line in SUSE Linux 229
Chapter 10: Text Manipulation. . . . . . . . . . . . . . . . . . . . . . . . . . . 231

Reading Lines from Files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
cat. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
tac. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
zcat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
head. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
tail. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
expand . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
nl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
uniq . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
sort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
04_577395 ftoc.qxd 12/14/04 11:57 PM Page xxi
xxii
Contents
Extracting Lines from Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
grep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
zgrep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
grepmail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
sgrep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
split . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
csplit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
Working with Fields from Text Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
cut. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
paste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
join . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
awk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
Getting Statistics about Text Files with wc . . . . . . . . . . . . . . . . . . . . . . . . 245
Replacing Text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
sed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
tr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
dos2unix and unix2dos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248

Formatting Text Files for Viewing and Printing . . . . . . . . . . . . . . . . . . . . . . 249
pr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
fold . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
fmt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
groff -Tascii. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
a2ps. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
enscript. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
Comparing Files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
cmp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
diff and patch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
Getting Text out of Other File Formats. . . . . . . . . . . . . . . . . . . . . . . . . . . 252
antiword . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
ps2ascii. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
ps2pdf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
dvi2tty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
detex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
acroread and xpdf. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
html2text. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
Chapter 11: Text Editors. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
The Politics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
vi/vim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
Using command mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
Moving around the text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
Deleting text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
Copying and pasting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
Inserting and saving files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
Searching and replacing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
Using the vim initialization file . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
Exiting vim . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265

emacs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
What to install . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
Starting emacs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
Controlling emacs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
Using word completion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
04_577395 ftoc.qxd 12/14/04 11:57 PM Page xxii

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×