Questions and answers

1. Troubleshooting

1.1.

Which methods (2) are in use by which it is possible to load the kernel?

Firstly by using the kernelcode itself and secondly by using a bootstrap loader.

Kernel loading

1.2.

What is the final step as part of kernel loading after the kernel has initialized its internal data structures and device drivers?

The kernel will consult the contents of the ramdisk word, which specifies where the kernel can find the filesystem that will be mounted as root.

The RAMdisk word

1.3.

The fourth and final stage during boot is starting up the init program which uses a configuration file to determine which program(s) to start next. Depending on the initdefault entry init wil execute a group of commands. What is the name of such a group of commands?

Such a group of commands is called a runlevel and each one defines a set of processes that need to be run in order to get the system in a certain state.

Deamon initialization

1.4.

While booting from the network (BOOTP or DHCP), how can the client address the bootserver?

In most cases the client cannot and will instead broadcast an UDP packet over the network. Any bootserver that has information about the client (based on its MAC address) will answer.

Booting from network

1.5.

In order to enable Linux and Windows NT to run on the same computer, could you install LILO on the MBR?

No, as Windows NT requires its own loader in the MBR. You have to install LILO in the Linux partition as a secondary boot loader.

The LILO install locations

1.6.

If your system no longer boots, what could you try otherwise in order to gain access?

In order to boot and get the kernel to load you could try a rescue floppy or disk to boot a kernel that has the root filesystem set to your hard disk. Or otherwise try a special tiny Linux distribution and mount the root filesystem by hand.

Resolving initial boot problems

1.7.

What would you do when you expect (or suspect) IRQ conflicts?

Use dmesg to see which interrupts were required by the drivers and compare this with the contents of /proc/interrupts or the output of lsdev to determine conflicts.

Resolving IRQ/DMA conflicts

1.8.

What is the meaning of the commonly used environment variable IFS?

Input File Separator (IFS) contains the list of separators that the shell recognizes.

Core system variables

1.9.

How would you prevent a certain user from logging in?

Adding a user to the system requires an entry in /etc/passwd. which in turn requires a valid login shell. However, specify /bin/false as the login shell to actually prevent the user from logging in.

Login shells

1.10.

What does /etc/login.defs define?

This file defines the behaviour of login on a system that uses shadow passwords.

Shell startup environment

1.11.

What is an alternative for the command sysctl dev.cdrom.info?

An alternative is using cat /proc/sys/dev/cdrom/info.

Setting kernel parameters

1.12.

What is the advantage of using shared libraries instead of static libraries?

The binary just contains a reference to the library not the code itself. That means that a library is available once and needs one-time recompilation if the library is updated.

Shared libraries

1.13.

What is a linkname?

The linkname is the soname without any versioning information.

Naming schemes for shared objects

1.14.

Where would you change the behavior of CTRL+ALT+DEL?

It can be changed using the file /etc/inittab.

Troubleshooting /etc/inittab and /sbin/init

Copyright Snow B.V. The Netherlands