Errata

LPI Linux Certification in a Nutshell

Errata for LPI Linux Certification in a Nutshell

Submit your own errata for this product.

The errata list is a list of errors and their corrections that were found after the product was released. If the error was corrected in a later version or reprint the date of the correction will be displayed in the column titled "Date Corrected".

The following errata were submitted by our customers and approved as valid errors by the author or editor.

Color key: Serious technical mistake Minor technical mistake Language or formatting error Typo Question Note Update

Version Location Description Submitted By Date submitted Date corrected
Printed, PDF, , Other Digital Version
Page 13 printed, 27 epub
Complete Page

In the epub version, the command lsmod is explained on page 27, and is also explained on page 31. On page 31 the command is shown as taking no options. It is unclear if the book is trying to show two different versions of the command or it could be that the newer command takes no arguments. In either case one of the pages can be removed.

Note from the Author or Editor:
Wow, can't believe I missed that one. Please remove the 'lsmod' section from page 13 of the printed edition, because it's repeated on page 15.

Sounds like the same thing is in the epub version, so you should remove the lsmod section from page 27 of that version.

timothy bounds  Oct 12, 2010  Aug 12, 2011
Printed
Page 15
lsmod-Example

The example paragraph states that modules for "filesystem (vfat, fat), networking (3c59x)" are shown. But the example output contains nothing of them, only some sound modules are listed.

Note from the Author or Editor:
Please change the text under 'Example' on page 15 to read:

Here, lsmod shows that quite a few kernel modules are loaded, including filesystem (ext3), networking (e100) and sound (ac97_codec, sound, soundcore) modules, among others:

Karl-Wilhelm Rips  Dec 01, 2010  Aug 12, 2011
Printed
Page 16, 17
rmmod-Syntax

Syntax should be

rmmod [options] [modules]

because "rmmod -a" doesn't require any module name.

Furthermore, in current Linux distributions (kernel 2.6) rmmod doesn't support "-a".

Note from the Author or Editor:
Please change the 'Syntax' for rmmod on page 16 to:

rmmod [options] [modules]

and change the description for '-a' at the top of page 17 to:

Remove all unused modules (kernel 2.4 or earlier).

Karl-Wilhelm Rips  Dec 01, 2010  Aug 12, 2011
Printed
Page 17
2nd paragraph under rmmod example

Here is a reproduction of the affected text, in it, rmmod is used to remove the fat module and fails. The next line claims the lsmod command failed because the msdos module is dependent on fat then proceeds to rmmod in correct order. "the lsmod command fails" should read "the rmmod command fails"


Starting with both the fat and msdos modules loaded, remove the fat module (which is used by the msdos module):

# lsmod
Module Size Used by
msdos 8348 0 (unused)
fat 25856 0 (unused)

# rmmod fat
rmmod: fat is in use


In this example, the lsmod command fails because the msdos module is dependent on the fat module. So, to unload the fat module, the msdos module must be unloaded first:
# rmmod msdos
# rmmod fat

Note from the Author or Editor:
At the top of page 17, please change this line:

In this example, the lsmod command fails because the msdos module is dependent on the fat module.

to:

In this example, the rmmod command fails because the msdos module is dependent on the fat module.

Paul Trost  Jul 21, 2010  Aug 12, 2011
Printed, PDF
Page 19
modprobe -c

module configuration directives are now located under /etc/modprobe.d/ or /etc/modprobe.conf

Note from the Author or Editor:
Change the decription for the '-c' option at the top of page 19 to:

Display a complete module configuration, including defaults and directives found in /etc/modules.conf (for 2.4 kernels) or /etc/modprobe.conf (for 2.6 and higher kernels). The -c option is not used with any other options.

Ghe Rivero  Mar 07, 2011  Aug 12, 2011
Printed
Page 26
/etc/rc.local

Many administrators prefer to avoid changing rc.sysint because...

rc.sysint --> rc.sysinit

Note from the Author or Editor:
Please change the reference to 'rc.sysint' on page 26 to 'rc.sysinit'

Karl-Wilhelm Rips  Dec 02, 2010  Aug 12, 2011
PDF
Page 26
/etc/rc.local

/etc/rc.local
Not used on Debian-based systems.

At least Debian 6.0 used it now.

Note from the Author or Editor:
Let's make this a little more generic, since we can't control what distributions change things and when.

Change the first sentences in the paragraph below "/etc/rc.local" on page 26 from:

Not used on Debian-based systems. On Red Hat-based systems, this file is a script that is called after all other init scripts (after all system daemons are started).

to:

This file is a script that is called after all other init scripts (after all system daemons are started).

and then add this sentence at the end of the paragraph:

This file might not exist on all distributions.

Ghe Rivero  Mar 14, 2011  Aug 12, 2011
Printed, PDF
Page 37
3rd paragraph and 1st code example

reads "of=/dev/hyd" for destination device. To follow standard Linux device names (since there is no hy?), the example should read "of=/dev/hdy"

Note from the Author or Editor:
You're right, this is a typo. The line should read:
dd if=/dev/hdx of=/dev/hdy

Paul Trost  Jul 21, 2010  Aug 12, 2011
Printed, PDF,
Page 42
Header

Starting on page 41, the boot loader subject has switched to GRUB instead of lilo. Pages 42 and 43 still show 'lilo' on the first line.

Very minor, but I noticed...

Note from the Author or Editor:
Looks like a formatting or typesetting problem. Ideally the headers for pages 41-43 should say 'grub' instead of 'lilo'.

Bobby Matthis  Jul 07, 2010 
Printed
Page 59
Header

...again...extremely minor.

Starting on page 59, the subject matter has shifted to the yum command. Header still mentions 'rpm' command through page 62.

Note from the Author or Editor:
This looks like a formatting or typesetting problem. I'm not sure what headers in the text the typesetters are keying off of to create the page headers, but ideally pages 58-62 should have 'yum' as a header instead of 'rpm'

Bobby Matthis  Jul 09, 2010 
Printed
Page 67
6th Paragraph, 2nd Sentence

"of list of" instead of "a list of"

Note from the Author or Editor:
Please change this sentence on page 67:

The command set with no arguments will display of list of currently set environment variables.

to:

The command set with no arguments will display a list of currently set environment variables.

Bobby Matthis  Jul 10, 2010  Aug 12, 2011
Printed
Page 78
Syntax Section of 'cat' command

Example syntax shows 'cut' command instead of 'cat' command.

Note from the Author or Editor:
Verified. The line at the top of the page, under the 'cat' header, should read:
cat options [files]

Bobby Matthis  Jul 10, 2010  Aug 12, 2011
Printed
Page 89
Syntax Section of 'unexpand' command

Missing closing bracket. '[files' instead of '[files]'.

Note from the Author or Editor:
Verified. Line should be:
unexpand [options] [files]

Bobby Matthis  Jul 10, 2010  Aug 12, 2011
Printed
Page 95
1

In these options of dd dashes will not work!

-if=file
Read from file instead of standard input.
-of=file
Output to file instead of standard output.
-ibs=n
Read n bytes at a time.
-obs=n
Write n bytes at a time.
-conv=list
Perform the conversions defined in list.

Note from the Author or Editor:
You're right, dd doesn't take dashes before it's options. The examples are correct, but the list of options has each proceeded by a dash, which is incorrect.

Anonymous  Jul 19, 2010  Aug 12, 2011
Printed
Page 117
1st Example of 'kill' command

'$ kill -9 1000 1001s' instead of '$ kill -9 1000 1001'

Note from the Author or Editor:
Typo, that s shouldn't be there. Line should read:
$ kill -9 1000 1001

Bobby Matthis  Jul 14, 2010  Aug 12, 2011
Printed
Page 131
Anchors Examples

Examples 1 and 2 are provided a header. Examples 3 and 4 are not.

Note from the Author or Editor:
Verified. For consistency, each of the 4 examples at the top of page 131 should have a header that says "Example X"

Bobby Matthis  Jul 16, 2010  Aug 12, 2011
Printed
Page 131
Groups and ranges Examples

Example 4 noted within the 'Groups and ranges' section is primarily detailing how word boundaries work. Word boundaries were in table 6-8 tied to 'Anchors', therefore word boundaries should be in the 'Anchors' examples.

Note from the Author or Editor:
On page 131, move Example 4 under 'Groups and ranges' to the previous section, 'Anchors', making it example #3. Do not change it; it's just in the wrong place. Then renumber examples 5,6 and 7 under 'Groups and ranges' so they becomes examples 4,5 and 6, respectively.

Bobby Matthis  Jul 16, 2010  Aug 12, 2011
Printed
Page 148
Continuation of Example 2 from Page 147

After creating the partitions, the example enters 'p' to display the newly created partition table, which displays the swap partition as existing on /dev/hda5. According to both the explanation of Example 2 and the commands executed, the swap partition should be on /dev/hda6.

Please correct me if I am wrong, or missed some fundamental component of the lesson.

Thanks,
David

Note from the Author or Editor:
This does appear to be a typo. At the top of page 148, in the partition layout, the 'Linux swap' should be moved down 1 line. So the partition lines that start with /dev/hda5 and /dev/hda6 should look like this:

/dev/hda5 40 65 208813+ 83 Linux
/dev/hda6 66 82 136521 82 Linux Swap

David Dawson  Aug 01, 2011  Aug 12, 2011
Printed
Page 170
middle

Turn on user quotas only on the /home filesystem: <== Here it should say
"group quotas only"
# quotaon -gv /home
/dev/sda9: group quotas turned on

Note from the Author or Editor:
At the bottom of page 170, change this line:

Turn on user quotas only on the /home filesystem

to:

Turn on group quotas only on the /home filesystem

Anonymous  Jul 19, 2010  Aug 12, 2011
PDF
Page 180
Last paragraph

A directory with mode 1774 would have this equivalent string:

rwxr-xr-T <== this should be rwxrwxr-T for mode = 1774

Note from the Author or Editor:
Please change the directory permissions on the bottom of page 180 from:

rwxr-xr-T

to

rwxrwxr-T

Theodotos Andreou  Jul 21, 2010  Aug 12, 2011
PDF
Page 212
Exercise 6

The text says run as root, the example shows '$' instead of '#'.

Note from the Author or Editor:
You're correct, the prompt should be # here, not $

Bobby Matthis  Jul 27, 2010  Aug 12, 2011
PDF
Page 217
Question 9

9. If you have created your own script that you wish to run every time your system boots, but it must run after all other processes have completed, where is the best place to reference it?
a. /etc/inittab
b. /etc/rc.d/rc.sysinit
c. A symlink beginning with S in /etc/rc.d/rc5.d/
d. /etc/rc.d/rc.local
e. A symlink beginning with K in /etc/rc.d/rc5.d/

The answer provided on Page 226 is a (in fact the author means b) and d. But both answer are not strictly correct.

In choice c, the script is only run in runlevel 5, not "every time your system boots". And choice d, rc.local is run "at the end of each multiuser runlevel". This is from Debian (using sysv-rc) and Ubuntu (using upstart) /etc/rc.local, though the location is different from "/etc/rc.d/rc.local" in choice d.

I think either the question or the answer needs change to be more accurate.

Note from the Author or Editor:
I agree, we need to change both the question and the answer here. Further comments are reminding me that it's a bad idea to modify /etc/rc.d/rc.local (or /etc/rc.local, depending upon your distro) because it may get overwritten by a package upgrade. So really the best answer is to create a S symlink in your default runlevel directory. Please change question #9 on page 217 to:

9. If you have created your own script that you wish to run every time your system boots to your default runlevel, but it must run after all other startup processes have completed, where is the best place to reference it? Assume your default runlevel is 5. Select the best answer.

and change the answer on page 226 to:

9. A symlink beginning with S in /etc/rc.d/rc5.d/

Peter Pan  Mar 24, 2011  Aug 12, 2011
Printed, PDF, , Other Digital Version
Page 218
in the answers section, answer 14

The question says "What file contains a list of directories that are searched to find shared libraries when a binary program is executed". According to the chapter 5 in the textbook this is the binary /etc/ld.so.cache. The /etc/ld.so.cache is a text file which is used to update the /etc/ld.so.cache file (page 45)

Note from the Author or Editor:
Please change question #14 on page 218 to read:

14. What text file contains a list of directories that are searched to find shared libraries when a binary program is executed?

Theodotos  Jul 27, 2010  Aug 12, 2011
PDF
Page 218
Question 16

15. For distributions that use the Debian package management system, what com-mand will download and update all installed packages to the latest available version?

Others also noticed this. To be more accurate, there is not a correct answer provided. The correct way is "apt-get update && apt-get upgrade". Both commands are needed to update to the "latest avaiable version" and install them.

Note from the Author or Editor:
Please change option c on question 15 on page 218 to:

c. apt-get update && apt-get upgrade

and change the answer to #15 on page 226 to:

c. apt-get update && apt-get upgrade

Peter Pan  Mar 24, 2011  Aug 12, 2011
PDF
Page 219
Question 19

19. What option(s) to rpm will instruct rpm to run a verification check on all pack-
ages installed on the system?
a. rpm ?verify ?all
b. rpm ?Va
c. rpm ?qa
d. rpm ?check
e. rpm ?c

The answer told us is a and b. But a is not correct. Long options should be preceded with double slash, the answer should be "rpm --verify --all" not "rpm -verify -all".

Note from the Author or Editor:
This is an unfortunate error due to the font that was used. Option a. should look like this:

a. rpm --verify --all

That's 2 dashes before 'verify' and 'all'. Please make sure that in the book it's obvious that there are 2 dashes and not 1.

Peter Pan  Mar 24, 2011  Aug 12, 2011
PDF
Page 219
Question 21

21. Which file(s) does the bash shell read at login to set environment variables?
a. /etc/bashrc
b. ~/.bashrc
c. ~/.bash_profile
d. All of the above
e. None of the above

The answered provided is d. All of the above. But the correct answer should be c. In choice a and b, bashrc is for interactive shells, while .bash_profile is for login shells. They are different.

And if d is right, a, b, and c can also be right, which causes ambiguous right answers.

Note from the Author or Editor:
Please change question #21 on page 219 to:

21. Which file does the bash shell read at login to set environment variables? Select the best answer.

and change the answer on page 226 to:

21. c. ~/.bash_profile

Peter Pan  Mar 24, 2011  Aug 12, 2011
PDF
Page 219
Question 22

22. What commands can be used to view a list of the last commands typed into the shell?
a. history
b. <Ctrl-R>
c. <up arrow>
d. All of the above
e. None of the above

The answer provided is d All of the above. I think the most relevant asnwer is a history. <Ctrl-R> only allows you to search reversely from the history, it cannot list all the commands typed. <up arrow> can only list a command a time, not a list of commands.

So history is the only correct answer.

Note from the Author or Editor:
I agree, this question was unclear. Please change question #22 on page 219 to:

What command or key combination can be used to access the last commands typed into the current shell? Select the best answer.

Peter Pan  Mar 24, 2011  Aug 12, 2011
PDF
Page 220, 227
question 28

Wrong letter answer.

verbatim page 220:
28. What option can be passed to /bin/ls to display every file in a directory that ends
in .txt?
a. ls +.txt
b. ls *.txt
c. ls * txt
d. ls [txt]
e. ls *txt*

verbatim page 227:

28. c. ls *.txt. Remember that the syntax for file globbing is different from the syntax for regular expressions. In particular, the behavior of the asterisk (*) is vastly different between the two.

Note from the Author or Editor:
The detailed answer is correct (*.txt), but it's references as "c". It should be references as "b".

radiodurans  Jun 18, 2010  Aug 12, 2011
PDF
Page 221
Question 30

30. Which file extensions are common for files or directories that have been con-
catenated with tar and then compressed with bzip2?
a. .tar.bz2
b. .tbz2
c. .tbz
d. All of the above
e. None of the above

Since a, b, and c are all of the above correct answers, d is too. So abc or d are both correct answers. Please make it clear if this is single answer or multiple answer question.

Note from the Author or Editor:
Please add this text after the question:

"Select only one answer"

Peter Pan  Mar 24, 2011  Aug 12, 2011
Printed
Page 223, 228
Question 41

The correct answers should read:
grep "[a-zA-Z]" /tmp/file.txt
grep "[[:alpha:]]" /tmp/file.txt

The regex should not have spaces on either side. In addition, the [:alpha:] set needs an additional pair of brackets, per the grep man page.

Note from the Author or Editor:
Please change all the answers for question #41 on page 223 so there are no spaces inside the double quotes. For example, a. currently reads:

a. grep " [a-zA-Z] " /tmp/file.txt

while it should read

a. grep "[a-zA-Z]" /tmp/file.txt

Also, please change b. and c. to:

b. grep "[[:alpha:]]" /tmp/file.txt
c. grep "[[:letters:]]" /tmp/file.txt

Finally, change answer #41 on page 228 to:

a. grep "[a-zA-Z]" /tmp/file.txt AND b. grep "[[:alpha:]]" /tmp/file.txt. Become familiar with the sets that are defined with the syntax [[:setname:]]; they are very useful in advanced regular expressions. You can see a complete list of them in the man page for grep.

Anonymous  Aug 30, 2010  Aug 12, 2011
Printed, PDF
Page 225
Question 55

55. Which directory, according to the Filesystem Hierarchy Standard, is designed to hold essential system binaries?
a. /sbin
b. /bin
c. /usr/bin
d. /opt/bin
e. /usr/local/bin

Answer:

a. /sbin

Incorrect, it should be at least a and b.


http://www.pathname.com/fhs/pub/fhs-2.3.html#PURPOSE16

Per the FHS: Utilities used for system administration (and other root-only commands) are stored in /sbin, /usr/sbin, and /usr/local/sbin. ***/sbin contains binaries essential for booting, restoring, recovering, and/or repairing the system in addition to the binaries in /bin.*** [18] Programs executed after /usr is known to be mounted (when there are no problems) are generally placed into /usr/sbin. Locally-installed system administration programs should be placed into /usr/local/sbin.

Note from the Author or Editor:
Please change question #55 on page 225 to:

55. Which directory, according to the Filesystem Hierarchy Standard, is designed to hold essential system binaries used for system administration purposes?

John Harig  Sep 10, 2010  Aug 12, 2011
Printed, PDF
Page 226
in the answers section, answer 9

The question offers the option "/etc/rc.d/rc.local" under "d" but in the answer you have "b". And I am not sure if the "a" answer refers to "/etc/inittab". Is that correct?

Note from the Author or Editor:
You're right, the correct answers should be :
c. A symlink beginning with S in /etc/rc.d/rc5.d
d. /etc/rc.d/rc.local

Theodotos  Jul 27, 2010  Aug 12, 2011
PDF
Page 228
Answer 53

Question stated that User AND Group had read & write, Everybody had read.

is that not a. 002?

answer b is 022.

Note from the Author or Editor:
You're correct, the answer should have been a. umask 002.

Bobby Matthis  Jul 28, 2010  Aug 12, 2011
Printed
Page 238
Table 6-7

The number for TSTP signal is 20, while on page 238 Table 10-6 it is 18. Cannot be both right. Checking my man kill, TSTP does not have a number, neither does CONT.

Note from the Author or Editor:
Please change table 10-6 on page 238 so the last line reads:

TSTP 20 Stop executing.

Reference: /usr/include/asm/signal.h

Yudi Santoso  Dec 11, 2010  Aug 12, 2011
PDF
Page 262
1st paragraph

"~/.bashrc This file is executed automatically when bash starts. This includes login, as well as subsequent interactive and noninteractive invocations of bash."

This is wrong. ~/.bashrc is only executed for interactive non-login shell, thou sometimes ~/.bash_profile or ~/.profile may source ~/.bashrc.

Note from the Author or Editor:
Please change the description for .bashrc to:

This file is executed when a non-interactive bash shell starts, i.e. a new terminal window in X. This file is often referred to in the bash interactive scripts, such as ~/.bash_profile.

Peter Pan  Mar 29, 2011  Aug 12, 2011
Printed
Page 282
First sentence

The description of the "while" loop actually describes the "until" loop.
The description on page 282 of 3rd edition 2010 says:
Execute test-commands (usually a test command), and if the exit status is nonzero (that is, the test fails), perform commands and repeat. Opposite of until.

This is seriously wrong. The while command loops as long as the expression is TRUE. Therefore, the explanation should say:
"Execute test-commands (usually a test command), and if the exit status is *zero* (that is, the test *succeeds*), perform commands and repeat. Opposite of until."


Here is reference link to verify:
http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_09_02.html

Note from the Author or Editor:
You're right, we got these reversed. Please change the 'Description' at the top of page 282 to:

Execute test-commands (usually a test command), and if the exit status is zero (that is, the test succeeded), perform commands and repeat. Opposite of until.

Scott Ortell  Dec 20, 2010  Aug 12, 2011
PDF
Page 355
Object 4

..."and use of the Common Unix Protocol (CUPS)"

CUPS is an acronym for Common Unix Printing System, not Common Unix Protocol.

Note from the Author or Editor:
Please change 'Common Unix Protocol' to 'Common Unix Printing System'.

Peter Pan  Apr 26, 2011  Aug 12, 2011
Printed,
Page 371
Chapter 19: Networking Fundamentals

The IPv6 address is composed of hexadecimal digits representing 4-bit sections separated by a colon.

should be:

The IPv6 address is composed of hexadecimal digits representing 16-bit sections separated by a colon.

Note from the Author or Editor:
Please change the sentence on page 371 to read:

The IPv6 address is composed of hexadecimal digits representing 16-bit sections separated by a colon.

kaiserone  Jan 12, 2011  Aug 12, 2011
413
usermod Syntax

Syntax under usermod shows chage

Note from the Author or Editor:
On page 413, below the 'usermod' header, under the 'Syntax' header, change this line:

chage [OPTIONS] [USERNAME]

to

usermod [OPTIONS] [USERNAME]

Bobby Matthis  Dec 29, 2010  Aug 12, 2011
PDF
Page 458
The X Window System

There are several places in the whole book where "X Window" is mistakenly referred to as "X Windows". This should be corrected.

Note from the Author or Editor:
This is correct. All references to 'X Windows' need to be changed to either 'X Window' or 'the X Window system', whichever makes more sense from a grammar standpoint.

Peter Pan  May 10, 2011  Aug 12, 2011
Printed, PDF, , Other Digital Version
Page 462
Chapter 13. Objective 2, The shell script's environment, 1st paragraph

note : The page number is probably not the good one, as I read it in epub format on mobile device.

You wrote :
"Exported variables in the parent shell are copied into the child's environment; the child shell executes the appropriate shell configuration files (such as .bash_profile)."

But ".bash_profile" will not be sourced executing a child shell. It is sourced only at login.

After some test I notice that .bashrc is not executed when running a command like :
"$ bash test" or "./test" with the shebang /bin/bash. In fact, .bashrc is only sourced in interactive mode.

Note from the Author or Editor:
Please change the paragraph under 'The shell script's environment' on page 270 of the printed book to:

When running a script with #!/bin/bash, a new invocation of bash with its own environment is started to execute the script's command as the parent shell waits. Exported variables in the parent shell are copied into the child's environment and are available to the child.

David Ulrich  Aug 29, 2010  Aug 12, 2011
PDF
Page 472, 474
Question 36

Question 36: What is the system-wide bash configuration file called? Include the entire path.

The answer provided on page 474 is /etc/profile.I think this is not very accurate. /etc/profile is "system-wide .profile file for the Bourne shell (sh(1)) and Bourne compatible shells (bash(1), ksh(1), ash(1), ...)." as in /etc/profile comments.

Profile file is not equal to configuration file, they are only for login shells. On the other hand, /etc/bash.bashrc is system-wide .bashrc file for bash.

The question should specify whether for login shell or intercative shell.

Note from the Author or Editor:
You're right, this answer is incomplete, and it really doesn't have to do with interactive shells or not, because (for example) the /etc/bashrc on my Fedora 14 box has tests to see if it's running under an interactive shell.
Also, the Bash Beginner's Guide at TLDP.org mentions both files and makes little distinction between them, other than that non-bash shells might also use /etc/profile while only bash uses /etc/bashrc. http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_03_01.html

If we're to leave the question mostly alone, then the answer needs to be changed to include both files. Please change question #36 on page 472 to:

36. What are the names of the two system-wide bash configuration files? Include the full path for both.

and change the answer on page 474 to:

36. /etc/profile and /etc/bashrc

Peter Pan  May 03, 2011  Aug 12, 2011