Index

Symbol

(UNIX line-continuation character), 119

A

“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

B

backtrace command, 330

basename BusyBox command, 562

bbconfig BusyBox command, 562

bbsh BusyBox command, 562

BDI-2000 configuration file sample, 586–592

BeagleBoard, 57, 62, 513

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

website, 198, 323

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

Buildroot, 137, 451

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

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

ldd, 139, 362–363, 432–433

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

udevadm, 523–524, 543–544

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

MTD, 263, 267

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

D

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

cbrowser, 335–336, 365

core dumps, 327–329

cross, 424

DDD, 333–335, 365

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

nodes, 220–221, 522

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

E

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

F

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

files

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

sysfs, 252–255, 500–502

tmpfs, 256

UBI, 284

UBIFS, 284–287, 500–502

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

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

resources, 365, 444

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

linker website, 130, 198

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

H

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

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

Intel processors

Atom, 40, 62

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

J

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

K

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

context, 19, 26

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

initialization, 18–19, 125

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

L

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

Standard Base, 5, 8

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

Hello World, 28–29, 307–308

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

device drivers, 210, 528

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

M

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

DRAM, 161–162, 198

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

MIPS processors, 53–55, 67

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

modinfo utility, 216, 539

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

mount points, 151, 232

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

N

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

O

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

website, 137, 454, 464

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

P

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

Q – R

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

GDB, 365, 444

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

FHS, 133, 226

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

S

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

website, 449, 464

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

T

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

website, 198, 323

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

Torvalds, Linus, 6, 64

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

U-Boot bootloader

booting from disks, 174

commands, 169–170, 558–560

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

init, 19, 140

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

cbrowser, 335–336, 365

cross, 33

cross-strip, 426–427

DDD, 333–335, 365

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

ldd, 139, 362–363

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

V

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

W

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

ARM Technologies, 56, 59

BeagleBoard, 62

binary tool resources, 365

Booting Linux: The History and the Future, 157

BOOTP, 198, 323

buildroot utility, 137, 464

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

OpenEmbedded, 137, 454, 464

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

Scratchbox, 449, 464

SDRAM resources, 580

Service Availability Forum, 7

source repositories, 582

System V init, 157

TFTP protocol, 198, 323

Tool Interface Standard (TIS) Executable and, 98

U-Boot, 166, 198

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

X–Z

xargs BusyBox command, 570

yes BusyBox command, 570

zcat BusyBox command, 570

zcip BusyBox command, 570

zImage targets, 83

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
18.223.209.98