(UNIX line-continuation character), 119
“A Non-Technical Look Inside the EXT2 File System” website, 259
Abatron website, 410
access rights, 26
add-symbol-file command, 403
addr2line utility, 361
adduser BusyBox command, 562
adjtimex BusyBox command, 562
Almesberger, Werner, 157
AltiVec, 41
AMCC
Power Architecture processors, 50–53
Yosemite board kernel debugging example, 381–382
announcement of Linux, 64
applications, multithreaded, 438–441
ar BusyBox command, 562
architecture
device drivers, 204
embedded systems, 12
init user space process, 19
kernel, booting, 16–18
kernel initialization, 18–19
setup, 13–14
target boards, starting, 15–16
setup routine, 114
specific targets, 193
ARM
Corporate Backgrounder website, 56
processors, 55
additional companies, 59
Freescale, 58–59
TI, 56–57
website, 59
arp BusyBox command, 562
arping BusyBox command, 562
ash BusyBox command, 562
ATCA hardware platforms, 60–61
autoconf.h file, 82–83
automating root file system builds, 137
autotools.bbclass class, 461
backtrace command, 330
basename BusyBox command, 562
bbconfig BusyBox command, 562
bbsh BusyBox command, 562
BDI-2000 configuration file sample, 586–592
big kernel locks (BKLs), 473
binary tools
addr2line, 361
ldd, 362–363
nm, 363–364
objcopy, 360–361
objdump, 359
prelink, 364
readelf, 355–359
resources, 365
strings, 362
strip, 361
BIOS, 11
BitBake Hello World recipe processing, 458–459
BitBake (OpenEmbedded), 137, 456
BKLs (big kernel locks), 473
blkid BusyBox command, 562
board-specific initialization, 181–184
boot blocks, 21–22
booting
from disks, 174
kernel, 16–18
KGDB enabled with U-Boot, 373–374
messages, 106–109
troubleshooting, 417–420
“Booting Linux: The History and the Future,” 157
bootloaders, 11
challenges
DRAM controllers, 161–162
execution context, 165
image complexity, 162–165
storage, 162
debugging, 441
GRUB, 195–196
initial serial output, 15
initrd support, 148–150
Lilo, 194–195
Micromonitor, 197
Redboot, 197
roles, 160–161
selecting, 197
startup tasks, 11
U-Boot
booting from disks, 174
BOOTP client/server handshakes, 171
commands, 169–170
configuring, 167–169
DHCP target identification, 172–173
DTBs on boot sequence, 187–188
Ethernet interface support, 170
finding, 166
image formats, 185–186
porting, 174–185
reference website, 198
storage subsystems, 173
website, 166
bootm command, 17
BOOTP (Bootstrap Protocol), 171
servers, configuring, 313–316
U-Boot bootloader support, 171
bootstrap loaders, 105–106
bottom-half processing, 468
brctl BusyBox command, 562
breakpoints
KGDB, 376
target memory, 383
Broadcom SiByte processors, 54–55
building
file systems, 256–257
JFFS2 images, 240–242
UBIFS images, 284–287
build numbers, 109
configuring, 451–452
installing, 451
output, 452–454
website, 464
build systems
benefits, 446–447
Buildroot, 451–454
kernel
autoconf.h file, 82–83
configuration editors, 80–82
custom configuration options, 91–94
dot-config file, 78–80
final sequence example, 101
Kconfig files, 89–91
makefiles, 95
makefile targets, 83–89
OpenEmbedded, 454–463
Scratchbox, 447–450
bunzip2 BusyBox command, 562
BusyBox
applets, 302–303
commands, listing of, 563–570
configuring, 291–293
cross-compiling, 293
default startup, 298
description, 295
launching, 293
mdev, 545–547
output example, 294–295
overview, 290–291
rcs initialization script, 299–300
symlinks, 300–302
system initialization, 297–299
target directory structure, 295
toolkit, 135
website, 304
busybox command, 562
bzcat BusyBox command, 562
bzImage targets, 83
bzip2 BusyBox command, 562
C function with local variables listing, 163
cable assemblies (USB), 494
cal BusyBox command, 562
carrier-grade, 6
cat BusyBox command, 562
catv BusyBox command, 562
cbrowser utility, 335–336, 365
CDC (Communications Device Class) drivers, 512–515
cell write lifetimes (Flash memory), 22
CFI (Common Flash Interface), 270
chat BusyBox command, 562
chattr BusyBox command, 562
chcon BusyBox command, 562
checking file system integrity, 233–235
chgrp BusyBox command, 562
chipsets, 41–43
chmod BusyBox command, 562
chown BusyBox command, 562
chpasswd BusyBox command, 562
chpst BusyBox command, 562
chroot BusyBox command, 562
chrt BusyBox command, 563
chvt BusyBox command, 563
cksum BusyBox command, 563
classes (OpenEmbedded metadata), 461–462
clear BusyBox command, 563
clocks, configuring, 574–575
cmp BusyBox command, 563
coldplug processing (udev), 537–538
command-line
options, 341–342
partitions, 273–274
processing, 115–116
code listing, 119–121
parameters, 115–116
setup macro, 116–118
commands. See also utilities
add-symbol-file, 403
backtrace, 330
bootm, 17
BusyBox, listing of, 563–570
connect, 393
continue, 382
dd, 257
detach, 443
e2fsck, 233–235
GDB user-defined, 392–393
git, 166
i shared, 432
iminfo, 186
kgdboc, 380
kgdbwait, 380
make distclean, 78
make gconfig, 81
make menuconfig, 291
mkcramfs, 242
mkfs.ext2, 257
mkfs.jffs2, 241
modinfo, 539
modprobe, 532–533
mount, 232
shutdown, 156
stop-on-solib-events, 432
tftp, 17
ubiformat, 286
U-Boot bootloader supported, 169–170
U-Boot configurable, 558–560
commBusyBox command, 563
commercial distributions, 33
Common Flash Interface (CFI), 270
Common Flash Memory Interface Specification, 288
Communications Device Class (CDC), 512–515
CompactPCI hardware platform, 60
companion chipsets, 41–43
compiling
DTBs, 192–193
dtc, 192–193
kernel, 70–72
native compilation, 30
components required, 97
composite kernel image
architecture objects, 104
boot messages, 106–109
bootstrap loaders, 105–106
constructing, 100–102
final build sequence example, 101
Image object, 103
piggy assembly file, 104
configuration descriptors, 491
configuration editors, 80–82
configuring
board-specific MTD partitions, 276–278
BOOTP servers, 313–316
Buildroot, 451–452
BusyBox, 291–293
busybox mdev, 547
clocks, 574–575
device drivers, 205–208
ARM system example, 208
directory, creating, 206
makefile, editing, 208
menu items, adding, 206–207
output, 208
DHCP servers, 313–316
DRAM controllers, 161–162
inittab file, 143–144
KGDB
kernel, 371
runtime, 380–381
NFS kernel support, 247
NFS servers, 316–318
OpenEmbedded, 462–463
Scratchbox environment, 449
SDRAM controllers, 575–579
memory bank control register, 578
timing requirements, 578–579
U-Boot sdram_init() function, 576–577
TFTP servers, 312–313
UBIFS, 284
U-Boot
bootloader, 167–169
build tree, 177–178
makefile targets, 176–177
udev rules, 533–535
USB, 495–497
core makefile, 496–497
Freescale Semiconductor iMX31 Applications Processor example, 496
volume of options, 495
connect command, 393
connections
Ethernet, 512–515
KGDB, 374–375
connectors (USB), 492–493
contexts (execution), 26
continue command, 382
controllers (SDRAM), configuring, 575–579
core dumps, debugging, 327–329
cp BusyBox command, 563
cpio BusyBox command, 563
cpp search directories, 309
cramfs file system, 242–244
cramfs project README file website, 259
crond BusyBox command, 563
crontab BusyBox command, 563
cross-compiling
BusyBox, 293
targets, 448–450
cross debugging, 424
cross-development environments, 30–31
default cross-search directories, 310
flexibility, 307
Hello World program, 307–309
hosts, 306
layout, 307
overview, 306
targets, 306
cross-strip utility, 426–427
cross tools, distributions, 33
cryptpw BusyBox command, 563
cttyhack BusyBox command, 563
customizing
initramfs, 154–155
udev, 540
Das U-Boot. See U-Boot bootloader
dateBusyBox command, 563
dc BusyBox command, 563
dd BusyBox command, 563
dd command, 257
DDD (Data Display Debugger), 333–335
debug session, 335
invoking, 334
resources, 365
deallocvt BusyBox command, 563
debugging
booting, 417
early serial debug output, 417
KGDB trapping crashes on panic, 420
printk log buffer, dumping, 417–419
bootloaders, 441
core dumps, 327–329
cross, 424
dmalloc, 365
Flash code, 441
GDB, 326
backtrace command, 330
core dumps, 327–329
debug sessions, 331–333
invoking, 329–331
resources, 365
sessions, 331–333
stack frames, 330
website, 422
hardware-assisted. See JTAG probes
with JTAG probes, 413–417
kernel. See kernel debugging
multiple processes, 435–438
multithreaded applications, 438–441
real time kernel patch, 473–475
features, 475–476
O(1) scheduler, 476
preemption modes, 474–475
real-time processes, creating, 477
remote. See remote debugging
shared libraries, 429
events, 431–434
finding, 433
initial target memory segment mapping, 430–431
invoking ldd command, 432–433
locations, 433
</proc/pid>/maps memory segments, 434
requirements, 430
viewing, 432
target, 424
USB, 516–518
device driver support, 518
Ethernet dongle insertion debug output example, 516
platform-specific options, 517
usbmon utility, 517–518
delgroup BusyBox command, 563
deluser BusyBox command, 563
Denx, Wolfgang, 166
depmod BusyBox command, 563
depmod utility, 214–215
“Design and Implementation of the Second Extended Filesystem” website, 259
detach command, 443
/dev directory, 522
development
cross-development environments. See cross-development environments
hosts
BOOTP/DHCP servers, configuring, 313–316
NFS servers, configuring, 316–318
requirements, 311–312
target NFS root mount, 318–321
TFTP servers, configuring, 312–313
setup, 13–14
device drivers
architecture, 204
build configuration, 205–208
debugging, 402–406
init code, 406–407
initializing, 403–404
loopback breakpoints, 405
sessions, initiating, 404–405
symbolic debug information, accessing, 402
dependencies, 214–215
dynamic, 80
ext3 and jbd relationship, 213–214
GPL, 224
information, viewing, 216
installing, 209–210
listing of, viewing, 213
loading/unloading, 203, 210, 528
methods
device nodes, 220–221
file system operations, 217–220
numbers, allocating, 220
minimal example, 204–205
out-of-tree, 223–224
parameters, 211–212
platform, loading, 538–539
removing from kernels, 215–216
resources, 226
running kernels, adding, 212
USB support, debugging, 518
user space application example, 222–223
utilities
depmod, 214–215
insmod, 212
lsmod, 213
modinfo, 216
modprobe, 213–214
rmmod, 215–216
devices
descriptors, 490
discovery, 523–524
loopback, 256
persistent naming, 541–545
trees
blobs. See DTBs
compiler, 192–193
loading, 17
source, 189–192
website, 199
devmem BusyBox command, 563
df BusyBox command, 563
DHCP (Dynamic Host Configuration Protocol), 171
servers, configuring, 313–316
U-Boot bootloader support, 172–173
website, 198
dhcprelay BusyBox command, 563
diff BusyBox command, 563
directories
/dev, 522
root file systems, 134
runlevels, 142
top-level kernel source, 69
dirname BusyBox command, 563
disassembled object code, viewing, 359
discovering devices, 523–524
distributions
commercial, 33
components, 97
cross tools, 33
defined, 32
do-it-yourself, 33–34
file sizes, 239
installing, 33
packages, 32
targets, 33
dmalloc utility, 350–353
libraries, generating, 350
log output example, 351–352
requirements, 350
resources, 365
dmesg BusyBox command, 563
dnsd BusyBox command, 563
do-it-yourself distributions, 33–34
dongles, 515
dos2unix BusyBox command, 563
dot-config file, 78
code snippet listing, 79–80
customizations, 93–94
deleting, 78
hidden, 78
downloading kernel, 68
dpkg BusyBox command, 563
dpkg-deb BusyBox command, 563
DRAM (Dynamic Random Access Memory), 161–162, 198
drivers
device. See device drivers
Flash chips, 276
g_ether, 513
KGDB I/O, 379–380
mapping, 274–276
platform device, loading, 538–539
sd-mod, adding, 509
USB
CDC, 512–515
HID class support, 511
host controller, installing, 498
usb_storage, 508
DTBs (device tree blobs), 187
architecture-specific targets, 193
boot sequence role, 187–188
compiling, 192–193
device tree source, 189–192
dtc (device tree compiler), 192–193
DTS (device tree source), 189–192
du BusyBox command, 563
dumpkmap BusyBox command, 563
dumpleases BusyBox command, 563
dynamically loadable modules, 80
Dynamic Host Configuration Protocol. See DHCP
Dynamic Random Access Memory (DRAM), 161–162, 198
e2fsck BusyBox command, 563
e2fsck command, 233–235
echo BusyBox command, 563
Eclipse Project website, 365
ed BusyBox command, 563
EHCI (Enhanced Host Controller Interface), 498, 519
ELF files, 356–359
embedded systems
architecture, 12
init user space process, 19
kernel, booting, 16–18
kernel initialization, 18–19
setup, 13–14
target boards, starting, 15–16
characteristics, 10–11
endpoints, 489–491
Enhanced Host Controller Interface (EHCI), 498, 519
env BusyBox command, 563
envdir BusyBox command, 563
envuidgid BusyBox command, 564
EP405 U-Boot port, 175–176
erase blocks, 21
Ethernet
connectivity (USB), 512–515
interfaces, 170
ether-wake BusyBox command, 564
events
locations, 433
shared library, 431–434
exbibytes, 237
execution contexts, 26
expand BusyBox command, 564
expr BusyBox command, 564
ext2 file systems, 257
ext3 file systems, 235–237
ext4 file systems, 237
external bus controller initialization listing, 181–182
fakeidentd BusyBox command, 564
FALSE BusyBox command, 564
fbset BusyBox command, 564
fbsplash BusyBox command, 564
fdflush BusyBox command, 564
fdformat BusyBox command, 564
fdisk BusyBox command, 564
fdisk utility, 229–230
fgrep BusyBox command, 564
FHS (File System Hierarchy Standard), 133, 226
File System Hierarchy Standard (FHS), 133, 226
“File System Performance: The Solaris OS, UFS, Linux ext3, and Reiser FS” website, 259
autoconf.h, 82–83
BDI-2000 configuration, 586–592
device trees, loading, 17
dot-config file, 78
code snippet listing, 79–80
customizations, 93–94
deleting, 78
hidden, 78
ELF, 356–359
GDB initialization, 393
GRUB configuration, 196
inittab, configuring, 143–144
Kconfig, 89–92
kernel-parameters.txt, 115
linuxrc, 150–151
main.c, 113–114
makefiles
targets, 83–89
U-Boot configuration target, 176–177
uImage target wrapper script, 185
USB core, 496–497
Vega and Constellation example, 95
object
formats, converting, 360
symbols, viewing, 363–364
piggy assembly, 104
size distribution, 239
system.map, 70
systems
building, 256–257
cramfs, 242–244
ext2, 257
ext3, 235–237
ext4, 237
Flash, 24
integrity, checking, 233–235
JFFS2. See JFFS2
journaling, 235
mounting, 232–233
NFS, 244–248
partition relationship, 229
pseudo. See /proc file system; sysfs file system
ramfs, 255–256
ReiserFS, 238
resources, 259
root. See root file systems
tmpfs, 256
UBI, 284
USBFS, 502–504
ubinize configuration, 285
versions, 109
vmlinux, 70–72
image components, 73–76
listing, 72–73
find_next_task macro, 400
find_task macro, 394–395
findfs BusyBox command, 564
finding
kernels, 96
shared libraries, 433
U-Boot bootloader, 166
Flash, 24
chip drivers, 276
code, debugging, 441
device listing, 232
memory. See memory, Flash
flash_erase utility, 280
flashcp utility, 280
flashing, 280
flat device tree websites
references, 199
syntax, 192
flow of control, 109–111
architecture setup, 114
head.o module, 111–113
startup file, 113–114
fold BusyBox command, 564
fork() function, 435–437
founder of Linux, 6
free BusyBox command, 564
freedom versus free, 4–5
freeramdisk BusyBox command, 564
Freescale processors
ARM, 58–59
MPC7448, 40–41
Power Architecture, 44–48
PowerQUICC I, 45–46
PowerQUICC II, 46–47
PowerQUICC II Pro, 47
PowerQUICC III, 48
QorIQ, 48–50
Semiconductor iMX31 Applications Processor USB example, 496
bus topology, 507
configuration options, 496
device node, creating, 510
host controller drivers, installing, 498
partition, mounting, 510
sysfs file system output, 500–502
usbview output, 504–507
website, 62
free versus freedom, 4–5
fsck BusyBox command, 564
fsck.minix BusyBox command, 564
ftpget BusyBox command, 564
ftpput BusyBox command, 564
Ftrace utility
interrupt off timing measurements, 484
kernel performance analysis, 478–479
preemption off measurements, 479–481
wakeup latency measurements, 481–483
functions. See also methods
fork(), 435–437
gethostbyname(), 432
prepare_namespace, 151
pthread_create(), 438
sdram_init(), 576–577
setup_arch(), 114
start_kernel(), 114
fuser BusyBox command, 564
g_ether driver example, 513
Garzik, Jeff’s git utility website, 68
GCC website, 323
GDB (GNU Debugger), 326. See also KGDB
backtrace command, 330
bootloaders, 441
core dumps, 327–329
cross debugging, 424
debug sessions, 331–333
detach command, 443
Flash code, 441
invoking, 329–331
multiple processes, 435–438
multithreaded applications, 438–441
remote debugging
file stripping, 426–427
gdbserver utility, 427–429
sample program ELF file debug information, 425–426
remote serial protocol, 382–385
shared libraries, 429
events, 431–434
finding, 433
initial target memory segement mapping, 430–431
invoking ldd command, 432–433
locations, 433
</proc/pid>/maps memory segments, 434
requirements, 430
viewing, 432
stack frames, 330
website, 444
gdbserver utility, 427–429
General Public License. See GNU, GPL
getenforce BusyBox command, 564
gethostbyname() function, 432
getsebool BusyBox command, 564
getty BusyBox command, 564
git command
kernel downloads, 68
U-Boot bootloader, 166
GNU
Compiler Collection documentation website, 130
Debugger. See GDB
GPL (General Public License), 3–4, 550
device drivers, 224
exact reproduction, 550–556
website, 550
Press website, 422
grep BusyBox command, 564
growth of embedded Linux, 2
GRUB (Grand Unified Bootloader), 195–196, 199
gunzip BusyBox command, 564
gzip applet, 302
gzip BusyBox command, 564
halt BusyBox command, 564
hard real time, 467
hardware-assisted debugging, 312
hardware-debug probe. See JTAG probes
hardware platforms, 60–61
hd BusyBox command, 564
hdparm BusyBox command, 564
head BusyBox command, 564
head.o module, 111–113
Hello World program, 28–29
cross-development environments, 307–310
cpp search directories, 309
default cross-search directories, 310
listing, 307–308
OpenEmbedded version, 457–459
Scratchbox example, 449
hexdump BusyBox command, 564
HID (Human Input Device), 511–512
hosted BusyBox command, 564
hostname BusyBox command, 564
hosts
controllers, 489
cross-development environments, 306
mode (USB), 494
requirements, 311–312
target boards
BOOTP/DHCP servers, configuring, 313–316
NFS root mount, 318–321
NFS servers, configuring, 316–318
TFTP servers, configuring, 312–313
httpd BusyBox command, 564
hush BusyBox command, 564
i shared command, 432
IBM 970FX processor, 39
id BusyBox command, 564
ifconfig BusyBox command, 565
ifdown BusyBox command, 565
ifenslave BusyBox command, 565
ifup BusyBox command, 565
images, 103
bootloader complexities, 162–165
composite kernel
architecture objects, 104
boot messages, 106–109
bootstrap loaders, 105–106
constructing, 100–102
final build sequence example, 101
Image object, 103
piggy assembly file, 104
initrd, 148
creating, 152–153
decompressing, 151
JFFS2, building, 240–242
OpenEmbedded recipes, 463
U-Boot bootloader format, 185–186
UBIFS, building, 284–287
vmlinux file, 73–76
iminfo command, 186
inetd BusyBox command, 565
init BusyBox command, 565
initcall_debug parameter, 127
initcall macros, 122–126
initialization
board-specific, 181–184
details, viewing, 127
flow of control, 109–111
architecture setup, 114
head.o module, 111–113
startup file, 113–114
inittab file, 143–144
kernel, 18–19
creating, 125–126
details, viewing, 127
final boot steps, 127–129
flow of control, 109–114
initcall macros, 126
user space process, 19
library dependencies, resolving, 139
processors, 178–180
runlevels, 141–142
startup scripts, 144–145
subsystems, 122–124
System V Init. See System V Init
udev setup, 535
coldplug processing, 537–538
default static device nodes, 536
startup script, 535–536
USB, 499–500
host controllers, 498–499
usbcore module, loading, 497
user space process, 19
user-specified, 140
web server startup script example, 145–146
initramfs, 153
customizing, 154–155
file specification, 154
initrd, compared, 153
kernel build directory contents, 153
initrd root file system, 146
booting, 147–148
bootloader support, 148–150
images, 148
creating, 152–153
decompressing, 151
initramfs, compared, 153
linuxrc file, 150–151
mounting, 151
inittab file, configuring, 143–144
inodes, 231
inotifyd BusyBox command, 565
insmod BusyBox command, 565
insmod utility, 212
install BusyBox command, 565
installing
Buildroot, 451
device drivers, 209–210
distributions, 33
Scratchbox, 447–448
integrated SOC processors, 43
AMCC Power Architecture, 50–53
ARM, 55–59
Broadcom SiByte, 54–55
Freescale. See Freescale processors
MIPS, 53–55
Power Architecture, 44
Pentium M, 39–40
XScale website, 62
interfaces
descriptors, 491
Ethernet, 170
interrupt context, 28
interrupt off timing measurements, 483–484
interrupt service routine (ISR), 467
invoking
configuration editors, 81
DDD, 334
GDB, 329–331
ps macro, 395–396
ioctl() method, 217–219
ipaddr BusyBox command, 565
ip BusyBox command, 565
ipcalc BusyBox command, 565
ipcrm BusyBox command, 565
ipcs BusyBox command, 565
iplink BusyBox command, 565
iproute BusyBox command, 565
iprule BusyBox command, 565
iptunnel BusyBox command, 565
ISR (interrupt service routine), 467
JFFS: The Journaling Flash File System website, 259
JFFS2 (Journaling Flash File System 2), 24, 239–240
directory layout, 241
Flash memory limitations, 239–240
images, building, 240–242
mkfs.jffs2 command, 241
mounting on MTD RAM drive, 265–266
journaling, 235
JTAG (Joint Test Action Group) probes, 410
debugging, 413–417
Flash, programming, 411–413
setting up, 411
kbd_mode BusyBox command, 565
Kbuild documentation website, 98
Kconfig files, 89–92
kernel
booting, 16–18
build system
autoconf.h file, 82–83
configuration editors, 80–82
custom configuration options, 91–94
dot-config file, 78–80
final sequence example, 101
Kconfig files, 89–91
makefiles, 95
makefile targets, 83–89
command-line processing, 115–116
code listing, 119–121
parameters, 115–116
setup macro, 116–118
compiling, 70–72
composite image
architecture objects, 104
boot messages, 106–109
bootstrap loaders, 105–106
constructing, 100–102
final build sequence example, 101
Image object, 103
piggy assembly file, 104
debugging. See kernel debugging
documentation, 96
downloading with git utility, 68
final boot
messages, 18
steps, 137–138
finding, 96
GDB. See KGDB
HOWTO website, 98
creating, 125–126
details, viewing, 127
final boot steps, 127–129
flow of control, 109–114
initcall macros, 126
user space process, 19
KGDB configuration, 371
NFS configuration, 247
oops, 353–355
parameters.txt file, 115
preemption, 469
challenges, 469–471
checking for, 471–472
concurrency errors, 470
critical sections, locking, 470
latency sources, 473
models, 471–472
off measurements, 479–481
real time patch modes, 474–475
SMP, 472
real time patch, 473–475
features, 475–476
O(1) scheduler, 476
preemption modes, 474–475
real-time processes, creating, 477
real time performance analysis, 478
Ftrace, 478–479
interrupt off timing measurements, 483–484
preemption off measurements, 479–481
soft lockup detection, 484
wakeup latency measurements, 481–483
source repositories, 65–68
subdirectory, 77–78
subsystem initialization, 122–124
top-level source directory, 69
versions, 66–67
vmlinux file, 72–76
website, 65
kernel debugging, 368–369
JTAG probes, 410
debugging, 413–417
Flash memory, programming, 411–413
setting up, 411
KGDB, 369
booting with U-Boot, 373–374
breakpoints, 376
connections, 374–375
console serial port, sharing, 377–379
debug session in progress, 377
early kernel code support, 379–380
enabling, 372
kernel configuration, 371
loadable modules, 402–406
logic, 372
macros, 393–402
optimized code, 385–392
platform-specific code, 381–382
remote, 382–385
runtime configuration, 380–381
serial ports, 372
setting up, 370
trapping crashes on panic, 420
user-defined commands, 392–393
websites, 422
Magic SysReq key, 409–410
optimized kernel code, 389
printk, 407–409
resources, 422
KERNELRELEASE macro, 67
KGDB (Kernel GDB), 369
booting with U-Boot, 373–374
breakpoints, 376
connections, 374–375
console serial port, sharing, 377–379
debug session in progress, 377
early kernel code support, 379–380
enabling, 372
I/O drivers, 379–380
kernel configuration, 371
loadable modules, 402–406
init code, 406–407
initializing, 403–404
loopback breakpoints, 405
sessions, initiating, 404–405
symbolic debug information, accessing, 402
logic, 372
macros, 393–402
find_next_task, 400
find_task, 394–395
ps, 395–397
task_struct_show, 398–399
optimized code, 385–392
platform-specific code, debugging, 381–382
remote serial protocol, 382–385
runtime configuration, 380–381
serial ports, 372
setting up, 370
trapping crashes on panic, 420
user-defined commands, 392–393
websites, 422
kgdb8250 I/O driver, 379–380
kgdboc command, 380
kgdbwait command, 380
kill BusyBox command, 565
killall BusyBox command, 565
killall5 BusyBox command, 565
klogd BusyBox command, 565
Kroah-Hartman, Greg, 504
ksoftirqd task, promoting, 476
lash BusyBox command, 565
last BusyBox command, 565
latency
interrupt off timing, 483–484
kernel preemption sources, 473
preemption off measurements, 479–481
real time, 467–468
wakeup measurements, 481–483
layout
cross-development environments, 307
root file systems, 133–134
ldd command, 139, 362–363, 432–433
Lehrbaum, Rick, 3
length BusyBox command, 565
lessBusyBox command, 565
Library Optimizer Tool website, 136
Lilo
bootloader, 194–195
website, 199
linker command scripts, 163
linux32BusyBox command, 565
Linux
Allocated Devices website, 548
Documentation Project, 96, 157
Foundation, 6–8
news and developments resources, 583
LinuxDevices.com, 3
linuxrc file, 150–151
listings
architecture-specific targets, 193
autoconf.h file, 82–83
backtrace command, 330
BDI-2000 configuration file, 586–592
booting with DTBs, 187–188
bootloaders, initial serial output, 15
boot messages on IPX425, 106–108
Buildroot output directory, 453
BusyBox
build options, 291
default startup, 298
gzip applet, 302
library dependencies, 292
mdev startup script, 546
output, 294–295
rcs initialization script, 299–300
root file system example, 297
root file system installation, 301
target directory structure, 295
C function with local variables, 163
command-line MTD partitions, 273
cramfs file system, 242–243
device drivers
build configuration, 206–208
file system operations methods, 217–219
loading/unloading, 210
lsmod output, 213
minimal example, 204
modinfo output, 216
modprobe configuration file, 214
parameter example, 211
user space application, 222–223
DHCP
exchange, 314
server configuration, 315
target identification, 172
dmalloc utility, 351–352
dot-config file, 79–80
DTBs, 189–192
ext2 file system, 257
ext3 file system, 236
file system check, 233–234
find_next_task, 400
find_task macro, 394
Flash device, 232
fork(), 435–437
GDB
core dump analysis, 328
debug sessions, initiating, 332
initialization file, 393
stack frames, 330
gdbserver utility
invoking, 429
starting on target board, 427
target board connection, 427–428
GRUB configuration file, 196
cpp search directories, 309
default cross-search directories, 310
init process, 125–126
initcall macros, 123–124
initramfs
build directory, 153
file specification, 154
minimal contents, 155
initrd
boot sequence, 148–150
images, creating, 152
inittab file, 143
JFFS2
booting as root file system, 283
copying to root partition, 282
directory layout, 241
mkfs.jffs2 command, 241
JTAG, 412–414
Kconfig file for ARM architecture, 90
kernel
booting, 16–17
build output, 70–72
command-line processing, 119–121
.config file customizations, 93–94
final boot messages, 18
final boot steps, 127–129
final build sequence example, 101
IXP4xx-specific Kconfig file, 92
loading with TFTP servers, 320
makefiles example, 95
oops, 353
preemption, 470–472
subdirectory, 77–78
top-level ARM Kconfig file, 92
vmlinux file, 72–73
KGDB
booting with U-Boot, 373–374
breakpoints, 376
connecting, 374–375
console serial port, sharing, 378–379
debug session in progress, 377
runtime configuration, 380–381
trapping crashes on panic, 420
Lilo bootloader, 194
linker command script, 163
linuxrc file, 150–151
loadable modules
debug sessions, initiating, 404–405
debugging init code, 406–407
initializing, 403–404
ltrace utility, 343
makefiles
targets, 83–89
U-Boot configuration, 176
minimal root file system, 134–135
mstrace utility, 349
MTD
configuring, 263
JFFS2file system, mounting, 265–266
MTD partitions
board-specific configuration, 276–278
Flash partition mounting, 280
kernel partition list, 279
PQ2FADS Flash mapping driver, 274–276
mtrace utility, 348
multithreaded applications, debugging, 438–439
NFS
exports configuration file, 244, 317
root mount, booting, 320
target example, 246
nm utility output, 363
objdump utility, 359
OpenEmbedded
autotools.bbclass example, 461
BitBake Hello recipe processing, 458–459
recipe example, 457
tasks, 460
optimized kernel code, debugging
code, 385–386
disassemble command, 387–389
local variable output example, 391
source file, 389–390
partitions
formatting, 230–231
information, viewing, 229–230
piggy assembly file, 104
platform-specific kernel debugging, 381–382
preemption off measurements, 480
printk log buffer, dumping, 418–419
/proc file system, 249–251
processes, listing, 345
ps macro, 395–397
ramfs file systems, 255
readelf utility, 356–358
real time, 476–477
Redboot partitions
creating, 272
detecting, 270
Flash partition listing, 269
Flash partitions, 271
new partition list, 272
power-up messages, 269
remote debugging
continue command, 382
ELF file debug information, 425–426
file stripping, 426–427
target memory breakpoints, 384
resetvec source definition, 164
runlevels, 141–142
Scratchbox, 448–449
SDRAM controllers, configuring, 576–577
setup macro, 117–118
shared libraries
debugging, 430–431
event alerts, 431
invoking ldd command, 432–433
</proc/pid>/maps memory segments, 434
startup scripts, 144–145
strace utility
profiling, 341
web demo application example, 337–340
subsystem initialization, 122
sysfs file system, 252–255
task_struct_show, 398–399
TFTP configuration, 313
top utility default configuration, 347
UBIFS images, building, 284–286
U-Boot bootloader
4xx startup code, 179
build tree, configuring, 177
configuration header file, 168–169
EP405 port summary, 184
external bus controller, 181–182
iminfo command, 186
uImage target wrapper script, 185
udev
default static device nodes, 536
device discovery, 523–524
device nodes, creating, 525–526
mouse device example, 529
persistent device naming, 541
platform device driver, loading, 538
rules configuration, 533–535
rules example, 528
startup script, 535–536
udevadm device query, 543–544
uevents emitted on USB mouse insertion, 530–531
uevents for USB interface 1–1:1.0, 531
uevents on four-port hub insertion, 525
USB automounting, 540–541
USB
core makefile, 496–497
device node, creating, 510
direct host and peripheral links, 513
Ethernet dongle insertion debug output, 516
host controllers, 498–499
lsusb utility, 507
partition, mounting, 510
sd-mod driver, adding, 509
sysfs file system output, 500–502
usb-storage module, 509
USBFS directory listing, 502
usbmon utility, 517
usbview utility output, 504–507
wakeup latency measurements, 481–483
web server startup script, 145–146
load_policy BusyBox command, 565
loadable modules. See device drivers
loading
platform device drivers, 538–539
loadkmap BusyBox command, 565
logger BusyBox command, 565
login BusyBox command, 565
logname BusyBox command, 565
logread BusyBox command, 565
loopback devices, 256
losetup BusyBox command, 565
lpd BusyBox command, 565
lpq BusyBox command, 565
lpr BusyBox command, 566
lsattr BusyBox command, 566
LSB (Linux Standard Base), 5, 8
ls BusyBox command, 566
lsmod BusyBox command, 566
lsmod utility, 213
lsusb utility, 507–508
ltrace utility, 343–344
lzmacat BusyBox command, 566
macros
initcall, 122–126
KERNELRELEASE, 67
KGDB, 393–402
find_next_task, 400
find_task, 394–395
ps, 395–397
task_struct_show, 398–399
setup
command-line processing, 116–121
console setup code snippet, 117
family definitions, 118
used, 119
Magic SysReq key, 409–410
mailing list resources, 582
main.c file, 113–114
make distclean command, 78
make gconfig command, 81
make menuconfig command, 291
makedevs BusyBox command, 566
makefiles
targets, 83–89
U-Boot configuration target, 176–177
uImage target wrapper script, 185
USB core, 496–497
Vega and Constellation example, 95
makemine BusyBox command, 566
man BusyBox command, 566
mapping drivers, 274–276
marketplace momentum, 3
mass storage class (USB), 508–511
device node, creating, 510
mounting, 510
partition, mounting, 510
SCSI support, 508
sd-mod driver, adding, 509
usb_storage driver, 508
usb-storage module, 509
matchpathcon BusyBox command, 566
md5sum BusyBox command, 566
mdev BusyBox command, 566
memory
analysis tool. See dmalloc utility
cross-development environments, 30–31
execution contexts, 26
Flash, 20–22
boot blocks, 21–22
cell write lifetimes, 22
erasing, 239
file systems, 24
lifetime, 240
NAND, 22–23
programming, 411–413
typical layouts, 23
writing to/erasing, 20–21
layout, 25–26
leaks, detecting, 349
MMUs, 26
process virtual, 28–30
translation, 26
virtual, 26–30
Memory Management Units (MMUs), 26
Memory Technology Devices (MTD), 262
mesg BusyBox command, 566
methods. See also functions
device drivers
device nodes, 220–221
file system operations, 217–220
numbers, allocating, 220
ioctl(), 217–219
open(), 217–219
release(), 217–219
microcom BusyBox command, 566
Micromonitor bootloader, 197
mini connectors, 493
minimal device driver example, 204–205
minimal root file systems, 134–136
mkcramfs command, 242
mkdir BusyBox command, 566
mke2fs BusyBox command, 566
mkfifo BusyBox command, 566
mkfs.ext2 utility, 230–231, 257
mkfs.jffs2 command, 241
mkfs.minix BusyBox command, 566
mkimage utility, 185
mknod BusyBox command, 566
mkswap BusyBox command, 566
mktemp BusyBox command, 566
MMUs (Memory Management Units), 26
Moblin (Mobile Linux Initiative), 7
MODALIAS field, 532–533
modprobe BusyBox command, 566
modprobe utility, 213–214, 532–533
more BusyBox command, 566
mount BusyBox command, 566
mount command, 232
mounting
dependencies, 249
file systems, 232–233
initrd, 151
root file systems, 18
USB, 510–540-541
USBFS, 502
mountpoint BusyBox command, 566
mouse device udev example, 529
msh BusyBox command, 566
MTD (Memory Technology Device), 262
CFI support, 270
configuring, 263–267
JFFS2 file systems, mounting, 265–266
overview, 262–263
partitions, 267–268
board-specific configuration, 276–278
command-line, 273–274
configuring, 267
Flash chips, 276
kernel partition list, 279
mapping drivers, 274–276
Redboot, 269–273
resources, 288
services, enabling, 263–265
utilities, 279–283
flash_erase, 280
flashcp, 280
JFFS2, 282–283
kernel MTD partition list, 279
MTD Flash partition, mounting, 280
mtrace utility, 348–349
multiple processes, debugging, 435–438
multithreaded applications, debugging, 438–441
mv BusyBox command, 566
nameif BusyBox command, 566
NAND Flash, 22–23
native compilation, 30
nc BusyBox command, 566
netstat BusyBox command, 566
NFS (Network File System), 244–246
configuration file, 244
kernel configuration, 247
mounting workspace on target embedded system, 245–246
restarting, 141–142
root file system, 246–248
servers, configuring, 316–318
targets
example, 246
root mount, 318–321
website, 259
nice BusyBox command, 566
nm utility, 363–364
nmeter BusyBox command, 566
nohup BusyBox command, 566
northbridge chips, 42
nslookup BusyBox command, 566
objcopy utility, 360–361
objdump utility, 359
objects
disassembled code, viewing, 359
formats, converting, 360
Image. See images
piggy, 104
symbols, viewing, 363–364
od BusyBox command, 566
On-The-Go (OTG) USB, 495
open() method, 217–219
open source legal insight website, 583
OpenEmbedded, 454
benefits, 454
BitBake, 456
configuring, 462–463
image recipes, 463
metadata, 456
classes, 461–462
recipes, 456–459
tasks, 460
openvt BusyBox command, 566
optimized kernel code, debugging, 385–392
code example, 385–386
disassemble command, 387–389
local variable output example, 391
source file, 389–390
options. See parameters
OTG (On-The-Go) USB, 495
out-of-tree drivers, 223–224
packages, 32
parameters
command-line, 115–116
device drivers, 211–212
initcall_debug, 127
rdinit=, 155
parse BusyBox command, 566
partitions, 229
file system relationship, 229
formatting, 230–231
information, viewing, 229–230
MTD. See MTD, partitions
passwd BusyBox command, 566
patch BusyBox command, 567
performance, real time analysis, 478
Ftrace, 478–479
interrupt off timing measurements, 483–484
preemption off measurements, 479–481
soft lockup detection, 484
wakeup latency measurements, 481–483
persistent device naming, 541–542
pgrep BusyBox command, 567
pidof BusyBox command, 567
PIDs (process IDs), 250
piggy assembly file, 104
ping BusyBox command, 567
ping6 BusyBox command, 567
pipe_progress BusyBox command, 567
pkill BusyBox command, 567
platforms (hardware), 60–61
device drivers, loading, 538–539
specific kernel debugging, 381–382
popmaildir BusyBox command, 567
populating root file systems, 137
porting U-Boot bootloaders, 174
board-specific initialization, 181–184
build tree, configuring, 177–178
EP405 board, 175–176
makefile configuration targets, 176–177
processor initialization, 178–180
summary, 184–185
Power Architecture processors, 44, 62
Power.org website, 62
poweroff BusyBox command, 567
PowerPC 64-bit architecture reference manual website, 62
PowerQUICC processors, 44
PowerQUICC I processor, 45–46
PowerQUICC II processor, 46–47
PowerQUICC II Pro processor, 47
PowerQUICC III processor, 48
PQ2FADS Flash mapping driver, 274–276
preemption. See kernel, preemption
prelink utility, 364
prepare_namespace() function, 151
printenv BusyBox command, 567
printf BusyBox command, 567
printk debugging, 407–409
printk log buffers, dumping, 417–419
/proc file system, 249–252
common entries, 252
debugging with maps entry, 251
mount dependency, 249
original purpose, 249
process IDs, 250
virtual memory addresses, 251
website, 259
process IDs (PIDs), 250
processes
bottom-half processing, 468
context, 28
init. See initialization
listing, 345
multiple, debugging, 435–438
real-time, creating, 477
user space. See user space, processes
virtual memory, 28–30
processors
initializing, 178–180
integrated SOCs, 43
additional ARM, 59
AMCC Power Architecture, 50–53
ARM, 55
Broadcom SiByte, 54–55
Freescale ARM, 58–59
Freescale Power Architecture, 44–45
Freescale PowerQUICC, 45–48
Freescale QorIQ, 48–50
MIPS, 53–55
TI ARM, 56–57
stand-alone
companion chipsets, 41–43
Freescale MPC7448, 40–41
IBM 970FX, 39
Intel Atom M, 40
Intel Pentium M, 39–40
overview, 38
program dependencies, 32
protocols
BOOTP
servers, configuring, 313–316
U-Boot bootloader support, 171
website, 198
DHCP
servers, configuring, 313–316
U-Boot bootloader support, 172–173
website, 198
gdb remote serial protocol, 382–385
TFTP
servers, configuring, 312–313
website, 198
ps BusyBox command, 567
ps macro, 344–346
invoking, 395–396
output, 396–397
pscan BusyBox command, 567
pseudo file systems. See /proc file system; sysfs file system
pthread_create() function, 438
pwd BusyBox command, 567
QorIQ processors, 45–50
raidautorun BusyBox command, 567
ramfs file system, 255–256
rcs initialization scripts, 299–300
rdate BusyBox command, 567
rdev BusyBox command, 567
rdinit= parameter, 155
readahead BusyBox command, 567
readelf utility, 355–357
ELF file debug information, 357–359
section headers, 356
readlink BusyBox command, 567
readprofile BusyBox command, 567
real time
hard, 467
kernel patch, 473–475
features, 475–476
O(1) scheduler, 476
preemption modes, 474–475
real-time processes, creating, 477
kernel performance analysis, 478
Ftrace, 478–479
interrupt off timing measurements, 483–484
preemption off measurements, 479–481
soft lockup detection, 484
wakeup latency measurements, 481–483
kernel preemption, 469
challenges, 469–471
checking, 471–472
concurrency errors, 470
critical sections, locking, 470
latency sources, 473
models, 471–472
SMP, 472
latency, 467–468
processes, creating, 477
scheduling, 467
soft, 466
realpath BusyBox command, 567
reboot BusyBox command, 567
recipes (OpenEmbedded metadata), 456–459
BitBake Hello World processing, 458–459
Hello World example, 457
images, 463
Red Hat’s New Journaling File System: ext3 website, 259
Redboot
bootloaders, 197
partitions, 269–273
CFI support, 270
creating, 272
detecting, 270
Flash partitions, 269–271
new partition list, 272
power-up messages, 269
user documentation website, 288
reformime BusyBox command, 567
refreshing SDRAM, 573
Reiser4 File System website, 259
ReiserFS file system, 238
release() method, 217–219
remote debugging
file stripping, 426–427
gdbserver utility, 427–429
kernel, 382–385
running processes, connecting, 442–443
sample program ELF file debug information, 425–426
serial ports, 442
renice BusyBox command, 567
requirements
dependencies, 32
development, 13–14
distribution components, 97
hosts, 311–312
reset BusyBox command, 567
resize BusyBox command, 567
resources
binary tools, 365
Buildroot, 464
BusyBox, 304
cbrowser, 365
DDD, 365
device drivers, 226
dmalloc, 365
file systems, 259
kernel debugging, 422
Linux Kernel Development, 3rd Edition, 485
Linux news and developments, 583
mailing lists, 582
MTD, 288
open source legal insight, 583
OpenEmbedded, 464
Scratchbox, 464
SDRAM, 580
source repositories, 582
udev, 548
USB, 519
restorecon BusyBox command, 567
rm BusyBox command, 567
rmdir BusyBox command, 567
rmmod BusyBox command, 567
rmmod utility, 215–216
roles
bootloaders, 160–161
DTBs in boot sequences, 187–188
root file systems
automated build tools, 137
defined, 132
directories, 134
embedded challenges, 136
layout, 133–134
minimal, 134–136
mounting, 18
NFS. See NFS
populating, 137
UBIFS as, 287
root hubs, 489
route BusyBox command, 567
rpm BusyBox command, 567
rpm2cpio BusyBox command, 567
rtcwake BusyBox command, 567
rules (udev), 527–530
configuring, 533–535
cumulative, 534
distribution-specific attributes/actions, 534
event-driven, 535
example, 528
loading device drivers example, 528
MODALIAS field, 532–533
mouse device example, 529
storage location, 527
uevents, USB, 530–531
run-parts BusyBox command, 567
runcon BusyBox command, 567
runlevel BusyBox command, 568
runlevels, 141–142
runsv BusyBox command, 568
runsvdir BusyBox command, 568
Rusty’s Linux Kernel Page website, 226
rx BusyBox command, 568
sb-menu utility, 448
SCCs (Serial Communication Controllers), 45
scheduling real time, 467
Scratchbox, 447
cross-compilation targets, creating, 448–450
environment, configuring, 449
Hello World example, 449
installing, 447–448
menuconfig, 449
remote shell feature, 450
script BusyBox command, 568
scripts
linker command, 163
rcs initialization, 299–300
startup, 144–146
uImage target wrapper, 185
sd-mod driver, adding, 509
SDRAM (Synchronous Dynamic Random Access Memory), 572
clocking, 574–575
controllers, configuring, 575–579
memory bank control register, 578
timing requirements, 578–579
U-Boot sdram_init() function, 576–577
operation basics, 572–573
refresh, 573
resources, 580
sdram_init() function, 576–577
sed BusyBox command, 568
selinuxenabled BusyBox command, 568
seq BusyBox command, 568
Serial Communication Controllers (SCCs), 45
Serial Management Controllers (SMCs), 45
serial ports
KGDB, 372
remote debugging, 442
sharing console with KGDB, 377–379
servers
BOOTP, 313–316
DHCP, 313–316
NFS
configuring, 316–318
target root mount, 318–321
TFTP, 312–313
Service Availability Forum, 7
services
MTD, enabling, 263–265
NFS, restarting, 141–142
sestatus BusyBox command, 568
setarch BusyBox command, 568
setconsole BusyBox command, 568
setenforce BusyBox command, 568
setfont BusyBox command, 568
setkeycodes BusyBox command, 568
setlogcons BusyBox command, 568
setsebool BusyBox command, 568
setsid BusyBox command, 568
setuidgid BusyBox command, 568
setup_arch() function, 114
setup macro, command-line processing, 116–118
code listing, 119–121
console setup code, 117
family definitions, 118
sh BusyBox command, 568
shared libraries
debugging with, 429
events, 431–434
initial target memory segment mapping, 430–431
invoking ldd command, 432–433
locations, 433
</proc/pid>/maps memory segments, 434
requirements, 430
finding, 433
viewing, 432
showkey BusyBox command, 568
shutdown command, 156
shutting down, 156
slattach BusyBox command, 568
sleep BusyBox command, 568
SMCs (Serial Management Controllers), 45
SMP (Symmetric multiprocessing), 472
SOCs (system on chips), 43
AMCC Power Architecture, 50–53
ARM, 55
additional companies, 59
Freescale, 58–59
TI, 56–57
Broadcom SiByte, 54–55
Freescale Power Architecture, 44–45
PowerQUICC I, 45–46
PowerQUICC II, 46–47
PowerQUICC II Pro, 47
PowerQUICC III, 48
Freescale QorIQ, 48–50
MIPS, 53–55
soft lockup detection, 484
soft real time, 466
softlimit BusyBox command, 568
sort BusyBox command, 568
source repositories, 67–68, 582
southbridge chips, 42
split BusyBox command, 568
stack frames (GDB), 330
stand-alone processors
companion chipsets, 41–43
Freescale MPC7448, 40–41
IBM 970FX, 39
Intel, 39–40
overview, 38
standards
carrier-grade, 6
Linux Foundation, 6–7
LSB, 5
Moblin, 7
Service Availability Forum, 7
start_kernel() function, 114
startup
scripts, 144–146
tasks, 11
stat BusyBox command, 568
stop-on-solib-event command, 432
storage
bootloaders, 162
cross-development environments, 30–31
execution contexts, 26
memory. See memory
MMUs, 26
U-Boot bootloader support, 173
udev rules, 527
strace utility, 337
command-line options, 341–342
profiling, 341
web demo application example, 337–340
strings BusyBox command, 568
strings utility, 362
strip utility, 361
stty BusyBox command, 568
subdirectories (kernel), 77–78
su BusyBox command, 568
subsystems (USB), 508
CDC (Communications Device Class) drivers, 512–515
HID (Human Input Device), 511–512
initializing, 122–124
mass storage, 508–511
device node, creating, 510
mounting, 510
partition, mounting, 510
SCSI support, 508
sd-mod driver, adding, 509
usb_storage driver, 508
usb-storage module, 509
sulogin BusyBox command, 568
sum BusyBox command, 568
sv BusyBox command, 568
svlogd BusyBox command, 568
swapoff BusyBox command, 568
swapon BusyBox command, 568
switch_root BusyBox command, 569
symlinks, 300–302
Symmetric multiprocessing (SMP), 472
sync BusyBox command, 569
Synchronous Dynamic Random Access Memory. See SDRAM
syntax
command-line parameters, 116
flat device tree, 192
sysctl BusyBox command, 569
sysfs file system, 252–255
browsing, 253
directory structure, 252–253
systool output example, 253–255
USB devices, 500–502
syslogd BusyBox command, 569
system initialization, 297–299
system.map file, 70
system on chips. See SOCs
System V Init, 140
inittab file, 143–144
runlevels, 141–142
startup scripts, 144–145
web server startup script example, 145–146
website, 157
systool utility, 253
tac BusyBox command, 569
tail BusyBox command, 569
tar BusyBox command, 569
target boards
BOOTP/DHCP servers, configuring, 313–316
NFS
root mount, 318–321
servers, configuring, 316–318
starting, 15–16
TFTP servers, configuring, 312–313
targets
architecture-specific, 193
bzImage, 83
cross-compilation, 448–450
cross-development environments, 306
debugging, 424
DHCP identification, 172–173
distributions, 33
makefile, 83–89
memory breakpoints, 383
U-Boot makefiles, 176–177
zImage, 83
task_struct_show macro, 398–399
tasks
ksoftirqd, 476
OpenEmbedded metadata, 460
startup, 11
taskset BusyBox command, 569
tc BusyBox command, 569
tcpsvd BusyBox command, 569
tee BusyBox command, 569
telnet BusyBox command, 569
telnetd BusyBox command, 569
test BusyBox command, 569
Texas Instruments (TI) ARM processors, 56–57
TFTP (Trivial File transfer Protocol), 171
servers, configuring, 312–313
tftp BusyBox command, 569
tftp command, 17
tftpd BusyBox command, 569
time BusyBox command, 569
TI (Texas Instruments) ARM processors, 56–57
tmpfs file system, 256
Tool Interface Standard (TIS) Executable and Linking Format, 98
tools. See utilities
top BusyBox command, 569
top-level kernel source directory, 69
topologies (USB)
logical, 490–491
physical, 488–490
top utility, 346–348
touch BusyBox command, 569
tr BusyBox command, 569
traceroute BusyBox command, 569
tracing and profiling tools
dmalloc, 350–353
kernel oops, 353–355
ltrace, 343–344
mtrace, 348–349
ps, 344–346
strace, 337
command-line options, 341–342
profiling, 341
web demo application example, 337–340
top, 346–348
Trivial File Transfer Protocol. See TFTP
troubleshooting. See debugging
TRUE BusyBox command, 569
tty BusyBox command, 569
ttysize BusyBox command, 569
Tundra chip, 42
tune2fs BusyBox command, 569
U-Boot bootloader
booting from disks, 174
configuring, 167–169
debugging with JTAG probes, 414
DTBs on boot sequence, 187–188
finding, 166
image formats, 185–186
KGDB enabled booting, 373–374
network support
BOOTP client/server, 171
DHCP target, 172–173
Ethernet interfaces, 170
NFS root mount example, 320–321
porting, 174
board-specific initialization, 181–184
build tree, configuring, 177–178
EP405 board, 175–176
makefile configuration targets, 176–177
processor initialization, 178–180
summary, 184–185
reference website, 198
storage subsystems, 173
website, 166
ubiformat command, 286
UBIFS (Unsorted Block Image File System), 284
as root file system, 287
configuring, 284
images, building, 284–287
ubinize configuration file, 285
udev
busybox mdev, 545–547
customizing, 540
devices
discovery, 523–524
nodes, creating, 525–526
initial system setup, 535
coldplug processing, 537–538
default static device nodes, 536
startup script, 535–536
persistent device naming, 541–542
/dev directory contents, 541
helper utilities, 542–545
platform device drivers, loading, 538–539
resources, 548
rules, 527–530
configuring, 533–535
cumulative, 534
distribution-specific attributes/actions, 534
event-driven, 535
example, 528
loading device drivers example, 528
MODALIAS field, 532–533
mouse device example, 529
storage location, 527
uevents emitted on USB mouse insertion, 530–531
uevents for USB interface 1–1:1.0, 531
uevents on four-port hub insertion, 525
USB automounting, 540–541
“Udev: A Userspace Implementation of devfs” website, 548
udevadm command, 523–524
udevadm info command, 543–544
udhcpc BusyBox command, 569
udhcpd BusyBox command, 569
udpscd BusyBox command, 569
uevents, 523–524
device discovery, 523
four-port hub insertion, 525
USB, 530–531
umount BusyBox command, 569
uname BusyBox command, 569
uncompress BusyBox command, 569
unexpand BusyBox command, 569
uniq BusyBox command, 569
Universal Serial Bus. See USB
unix2dos BusyBox command, 569
UNIX line-continuation character (), 119
unlzma BusyBox command, 569
Unsorted Block Image File System. See UBIFS
unzip BusyBox command, 569
uptime BusyBox command, 569
USB (Universal Serial Bus), 488
automounting, 540–541
bus topology, 507
cable assemblies, 494
configuring, 495–497
core makefile, 496–497
descriptors, 491
volume of options, 495
connectors, 492–493
debugging, 516
device driver support, 518
Ethernet dongle insertion debug output example, 516
platform-specific options, 517
usbmon utility, 517–518
device descriptors, 490
EHCI, 498
endpoints, 491
Ethernet connectivity, 513–515
file system, 502–504
Freescale Semiconductor iMX31 Applications Processor example. See Freescale processors, Semiconductor iMX31 Applications Processor USB example
initializing, 499–500
host controllers, 498–499
usbcore module, loading, 497
interface descriptors, 491
modes, 494–495
resources, 519
revisions, 491
subsystems, 508
CDC drivers, 512–514
HID, 511–512
mass storage, 508–511
sysfs file system, 500–502
tools
lsusb utility, 507–508
USBFS, 502–504
usbview utility, 504–507
topologies
logical, 490–491
physical, 488–490
usbfs, viewing, 504
usb_id utility, 542–543
usb_storage driver, 508–509
USB-USB direct networking example, 513
usbcore module, loading, 497
USBFS (USB File System), 502–504
usbmon utility, 517–518
usbview utility, 504–507
used macro, 119
user space
context, 26
processes
dependencies, resolving, 139–140
first user space program, 139
initial RAM disk method. See initrd
initramfs, 153–155
usleep BusyBox command, 570
utilities. See also commands
addr2line, 361
automated root file system builds, 137
bitbake, 137
buildroot, 137
busybox, 135
cross, 33
cross-strip, 426–427
depmod, 214–215
dmalloc, 350–353
libraries, generating, 350
log output example, 351–352
requirements, 350
resources, 365
fdisk, 229–230
Ftrace
interrupt off timing measurements, 484
kernel performance analysis, 478–479
preemption off measurements, 479–481
wakeup measurements, 481–483
GDB, 326
backtrace command, 330
core dumps, 327–329
debug sessions, 331–333
invoking, 329–331
resources, 365
stack frames, 330
gdbserver, 427–429
git, 68
insmod, 212
kernel oops, 353–355
Library Optimizer, 136
lsmod, 213
lsusb, 507–508
ltrace, 343–344
Magic SysReq key, 409–410
mkfs.ext2, 230–231
mkiage, 185
modinfo, 216
modprobe, 213–214
MTD, 279–283
flash_erase, 280
flashcp, 280
JFFS2 as root file system, 283
JFFS2 images, copying, 282
kernel MTD partition list, 279
MTD Flash partition, mounting, 280
mtrace, 348–349
nm, 363–364
objcopy, 360–361
objdump, 359
prelink, 364
printk, 407–409
ps, 344–346
readelf, 355–357
rmmod, 215–216
sb-menu, 448
strace, 337
command-line options, 341–342
profiling, 341
web demo application example, 337–340
strings, 362
strip, 361
systool, 253
top, 346–348
udev helper, 542–545
USB
lsusb utility, 507–508
USBFS, 502–504
usb_id, 542–543
usbmon, 517–518
usbview, 504–507
uudecode BusyBox command, 570
uuencode BusyBox command, 570
vconfig BusyBox command, 570
versions (kernel), 66–67
vi BusyBox command, 570
viewing
disassembled object code, 359
kernel initialization details, 127
.modinfo sections, 539
shared libraries, 432
virtual memory, 26–30
vlock BusyBox command, 570
vmlinux file, 70–72
image components, 73–76
listing, 72–73
wakeup measurements, 481–483
watch BusyBox command, 570
watchdog BusyBox command, 570
wc BusyBox command, 570
wear leveling, 240
web demo application, 337–340
websites
A Non-Technical Look Inside the EXT2 File System, 259
Abatron, 410
BeagleBoard, 62
binary tool resources, 365
Booting Linux: The History and the Future, 157
BusyBox, 304
cbrowser utility, 365
Common Flash Memory Interface Specification, 288
CompactPCI, 60
cramfs project README, 259
DDD resources, 365
Debugging with GDB, 422
“Design and Implementation of the Second Extended Filesystem,” 259
device trees, 199
DHCP protocol, 198
dmalloc utility, 365
DRAM, 198
dtc compiler, 189
Dynamic Host Configuration, 323
Eclipse Project, 365
EHCI, 519
“File System Performance: The Solaris OS, UFS, Linux ext3, and Reiser FS,” 259
Filesystem Hierarchy Standard, 226
flat device trees
references, 199
syntax, 192
Freescale Semiconductor, 62
FSH, 157
Garzik, Jeff’s git utility, 68
GCC, 323
GDB: The GNU Project Debugger, 444
GDB resources, 365
GNU
Compiler Collection documentation, 130
linker, 130–198
Press, 422
GPL, 550
GRUB, 199
Intel, 62
JFFS: The Journaling Flash File System, 259
Kbuild, 98
kernel, 65
debugging resources, 422
HOWTO, 98
KGDB, 422
Library Optimizer Tool, 136
Lilo, 199
Linux
Documentation Project, 96, 157
Foundation, 8
news and developments, 583
Standard Base Project, 8
LinuxDevices.com, 3
mailing lists, 582
MIPS architecture, 67
Moblin, 7
MTD resources, 288
NFS, 259
open source legal insight, 583
Power Architecture, 62
Power.org, 62
PowerPC 64-bit architecture reference manual, 62
/proc file system, 259
“Red Hat’s New Journaling File System: ext3,” 259
Redboot user documentation, 288
Reiser4 File System, 259
Rusty’s Linux Kernel Page, 226
SDRAM resources, 580
Service Availability Forum, 7
source repositories, 582
System V init, 157
Tool Interface Standard (TIS) Executable and, 98
udev, 548
USB resources, 519
wget BusyBox command, 570
which BusyBox command, 570
who BusyBox command, 570
whoami BusyBox command, 570
wrapper script, 185
“Writing udev Rules” website, 548
xargs BusyBox command, 570
yes BusyBox command, 570
zcat BusyBox command, 570
zcip BusyBox command, 570
zImage targets, 83
18.223.209.98