SlideShare une entreprise Scribd logo
1  sur  19
101 System Architecture
101.1 Determine and Configure Hardware Settings
* Enable and Disable integrated Peripherals
It is under the BIOS configuration console that you can:
enable or disable devices, allocate resources such as IRQ and IO addresses, select boot order.
Most BIOS consoles allow one to disable integrated peripherals such as COM ports, video or network cards
* Configure systems with or without external peripherals such as keyboards
under the BIOS disable system checks for peripherals such as a keyboard or a mouse which, although necessary for the
proper operation of desktop machines, are often not present for servers. Machines without keyboards, mouse or monitors are
referred to as “headless” systems. Some BIOSes will refuse to boot if these devices are not present unless these system checks
are disabled
* Differentiate between the various types of mass storage devices
http://en.wikibooks.org/wiki/Ict-innovation/LPI/101.1#Mass_Storage_Devices
PATA – Parallel Advanced Technology Attachment – also known as IDE
PATA ( 16 bit MLM, RLL and ISE ) disk drives are names with /dev/hd[a-z] names.
PATA - The last letter determines master /slave & number determines partition
SATA and SCSI disk devices are named with /dev/sd* names
SATA – Serial Advanced Technology Attachment
SATA – only one disk per cable; are hotswappable; use AHCI
SATA – Linux treats SATA as if SCSI
SCSI – Small Computer system interface
SCSI – Supports 8 or 16 devices per bus, one is the SCSI host adaptor
SCSI – x86 BIOS wont detect SCSI, if SCSI adaptor has its own Bios that support booting then ok
SCSI disk devices are named with /dev/sd* (where * is a letter) names
SCSI tape drivers are named with /dev/st* (where * is a number) and /de/nst*
SCSI DVD ROMS are /dev/scd* or /dev/sr*
SCSI devices are identified using a set of three numbers called SCSI ID
1, the SCSI channel – each adaptor supports on data channel, starting number 0
2 the Device ID number – unique number that can be used by setting jumpers on a disk
3 Logical Unit Number – differentiate between devices with in a SCSI target number
SCSI All detected devices are in the /proc/scsi/scsi file
All documented in usr/src/linux/Documentation/Devices.txt
* Set the Correct Hardware ID for different devices, especially boot device
http://www.dedoimedo.com/computers/grub.html#mozTocId616834
http://www.ibm.com/developerworks/linux/library/l-boot-rootfs/index.html
http://www.tuxradar.com/content/how-fix-linux-boot-problems
Boot Sector is always at track 0, cylinder 0, head 0 of the boot device, This sector contains LILO or GRUB. Next stage reads the Grub
configuration file (usually /boot/grub/menu.lst or /boot/grub/grub.conf), an entry looks like this:
title openSUSE 10.2
root (hd0,0)
kernel /boot/vmlinuz-2.6.18.2-34-default root=/dev/hda1 vga=0x317 showopts
initrd /boot/initrd-2.6.18.2-34-default
In Grub-speak, hd0 refers to the first drive - on a typical PC with IDE drives this corresponds to the Linux device name /dev/hda, or, in
some of the more recent distros, /dev/sda. In Grub-speak, (hd0,0) refers to the first partition on that drive. Linux would call this
/dev/hda1 or /dev/sda1
The kernel line specifies the file that Grub will load as the Linux kernel; at the end of this line you may see some additional boot parameters
that are passed to the kernel.
The initrd line specifies the file that contains the 'initial RAM Disk' - a file system image that will be used by the kernel as it boots. Grub is also
responsible for loading this file into memory. If Grub fails to find the kernel or the ramdisk images it will report Error 15: File not found, and halt
* Know differences between hotplug and coldplug devices
Typical hot plug devices are USB data sticks, mice or keyboards and some SATA drives, while cold plug devices include video
cards, network cards and CPUs, although in high end server machines even these components can be hot pluggable
When a hotplug device is inserted or removed the kernel updates the sys virtual filesystem and udev receives an event
notification. Udev will create the device node under /dev and fire notifications to HAL which in turn will notify D-Bus of the
changes.
Several utilities help in managing hot plug devices:
sysfs virtual file system, mounted at /sys, exports info about devices so that user space utilites can access.
udev a virtual files system, mounted at /dev, creates dynamic device files as drivers are loaded and unloaded, you can
configure udev through files /etc/udev
hald – user space programs that runs at all times that provides other user space programs with info about avail
hardware
D-bus – enables processes to communicate with each other as wellas ti be notified over events, both by processes and
hardware, such as new USB device avail
* Determine Hardware resources for Devices
The /proc file system is a virtual or pseudo file system – the kernel sets up the /proc file system to export information about the
running kernel, user process and hardware devices that have been configured.
When the CPU and Peripheral devices need to communicate; they do so via i/o addresses by reading and writing data to the i/o
address of the device. IO addresses are regions of memory mapped to devices where the CPU can write information of the
devices attention and read from the devices as well.
The allocation of io ports can be viewed in the /proc/ioports file
DMA devices can write directly to memory, by passing CPU
Can be viewed /proc/dma
When an event occurs on a device, such as a mouse movement or data arriving from a USB connected drive, the device signals
to the CPU that it has data which it needs to handle by generating an interrupt on the bus. “plug and play” technology was
introduced which allows devices to share interrupt lines. (APIC) architecture there are now usually 24 interrupt lines available
that can accommodate up to 255 devices. IRQs are the mechanism by which peripherals tell the CPU to suspend its current
activity and to handle its event such as a key press or a disk read.
In order to see allocation of IRQs on Linux, see /proc/interrupts file
IRQ
No.
Hardware
Assignment
IRQ
No.
Hardware
Assignment
IRQ
No.
Hardware
Assignment
IRQ
No.
Hardware
Assignment
0 System timer 4 COM1 8 Real Time Clock 12 PS2 Mouse
1 Keyboard 5 LPT2 / Sound Card 9 Available 13 Floating Point Proc
2 Handles IRQ 8 - 15 6 Floppy Controller 10 Available 14 Primary IDE
3 COM2 7 Parallel Port 11 Available 15 Secondary IDE
* Tools and utilites to list various hardware information (lsusb, lspci and others)
Once a USB device is plugged into a PC we list devices with lsusb
In particular, USB device information is accessible from /proc/bus/usb.
Two commands used to query PCI devices are the lspci and setpci commands. The lspci utility can provide verbose
information on devices using the PCI bus, depending on which parameters you use. “lspci -vv” provides detailed output
on PCI devices
All PCI devices are identified by a unique ID. This ID is made up of a unique vendor ID, device ID with potentially a sub-
system vendor ID and sub-system device ID. When “lspci” is run the PCI ID is looked up in the systems ID database and
translated into a human readable format, showing the vendor name and device. The PIC ID database is found at
/usr/share/misc/pci.ids on Ubuntu and on RedHat
Linux loads the modules it needs when it boots, but you may need to load additional
modules yourself. You can learn about the modules that are currently loaded on your system by using
lsmod
Linux enables you to load kernel modules with two programs: insmod and modprobe. The insmod program inserts a
single module into the kerne l The modprobe program,by contrast, automatically loads any depended-on modules and
so is generally the preferred way to do the job.
* Conceptual understanding of sysfs, udev, hald, and dbus
Sysfs –All Bus’s and hardware info in the kernel become objects when the PC boots, these objects, hardware
information is exported to a virtual file system, sysfs which is mounted at the sys directory. sysfs virtual file system,
mounted at /sys, exports info about devices so that user space utilities can access.
Objects -> folders
Attributes- > Names
Attirbute values -> File contents
udev
One of these user space applications is the kernel device manager, udev, which creates a device node under the /dev
directory to allow user space application access to the device. The name of the device node or file is determined by
the device drivers naming convention or by user defined rules in /etc/udev/rules.d/. It is through the entries under
/dev that user space application can interact with the device driver. The udev daemon is also responsible for
informing other user land applications of changes
HAL & DBUS
The applications that are most important here are the HAL (hardware abstraction layer) daemon, and D-Bus (desktop
bus). These applications are mainly used by desktop environment to carry out tasks when an event occurs such as
open the file browser when a USB drive is inserted or image application when a camera is inserted.
HAL
While udev creates the relevant entries under the /dev file system, if anything useful needs to happen when the event
occurs, HAL and D-Bus are needed. (Note: HAL is now deprecated as it is being merged into udev). HAL is a single
daemon responsible for discovering, enumerating and mediating access to most of the hardware on the host
computer for desktop applications to which it provides a hardware abstraction layer.
DBuS
Applications register with the D-Bus daemon to receive notifications of events and also post event notifications that
other applications may be interested in. D-Bus is used for example to launch media players when a audio CD is inserted
and to notify other applications of the currently playing song for example.
101.2 Boot the system
Provide common commands to the Bootloader and options to the kernel at
Boot time
master boot record (MBR) contains the MBR partition table and a boot loader (also sometimes called a boot manager).
Both GRUB and LILO are broken into two stages; first stage is small code on the MBR – it’s one job is to locate the 2nd
stage bootloader. . the 2nd
stage bootloader then locates and loads the linux kernel; passing in any parameters which it
has been provided. Common parameters are:
Init – overrides the process that is run by the kernel after it has finished loading “init=/bin/bash” is used to bypass the
login promprt in cases where the root password is forgotten.
Root – informs the kernel which device to use as the root filesystem. Often used when t-shooting an incorrect
bootloader. Example: root= /dev/hda1 tells the kernel to use /dev/hda1/ as the root device filesystem.
Noapic/nolapic – tells the kernel not to use the advanced programmable interupt controller or local advanced
programmable interupt controller for assigning IRQ and resources – this turns off plug and play
Demonstrate knowledge of the boot sequence from BIOS to boot completion
1. Power on - CPU loads BIOS
2. BIOS locates BOOT device
3. BIOS loads MBR of boot device [ MBR is 1st
sector, 512 bytes and contains 1st
stage boot loader with partition table ]
4. 1st
Stage bootloader locates 2nd
stage bootloader, [ due to the limited size of the MBR [512 bytes ], the partition
table only carries the names of the primary partition, which requires the 2nd
stage bootloader to be on a primary
partition. The 1st stage boot loader locates the partition of the 2nd stage boot loader by looking at the boot sectors of
the partition marked as active/bootable.
5. 2ND
Stage loader { LILO, GRUB ] presents user with a menu {options to select a kernel}, then loads the kernel and
passes control over to it.
6. Kernel starts and configures the CPU type, IRQ handling,, mem mgmt, drivers, etc.
7. Kernel loads an initial RAM disk image and mounts it as a temp file sysytem in RAM. The initial RAM DISK
(initrd) contains an image sys config files and modules the kernel will need to access hardware.
8. Temp root files system is later swapped for real root file system once kernel has access to it.
9. Once Kernel is fully operational, it starts a program /sbin/init.
10. init sets up user space and starts login shells and GUI login .
Check boot events in the log file
During boot – boot messages are logged to a circular[ ring ] buffer . Most Linux write ring buffer entires to
/var/log/dmesg,
/var/log/messages
/var/log/syslog
Log buffer can be read with dmesg
101. 3 Change runlevels and shutdown or reboot the system
Linux has 7 run levels, numbered 0-6
0. HALT the system
1. Single user mode
2. Multi-user, no network
3. Multi-user text mode, network & server
4. Multi user, gui mode, no server
5. Multi user, gui, mode, server
6. Reboot the system
What services and hardware is configured for the different runlevels is determined by a set of scripts configured for
each level. Runlevel specific scripts are stored under /etc/rc.d/rc?.d, /etc/init.d/rc?.d or /etc/rc?.d or similar location
where the ? Is the number of the runlevel
Set the default Run Level
During the boot process for Fedora and RH systems; init opens the /etc/inittab to decide what runlevel the system
should be booted to.
The relavent section of a sample /etc/inittab file is as follows:
# Default runlevel. The runlevels used by RHS are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
#
id:3:initdefault:
The key line in the example above is:
id:3:initdefault:
If your system does not have inittab, create one and add only the above line.
Change between runlevels including single user mode
# runlevel < - will show your current runlevel
N 2
The first character is the previous run level, when ‘ N’ – this means the sytem has not switched run levels since
booting. The second charater is your current run level.
ntsysv < - RedHAt distro’s can change run levels ex.. ntsysv –level 1
Runlevels are be change be invoking the the init number. Init / Telinit are used to chage the state of the computer without
rebooting it.
Example, init 6 will reboot the machine.
Telinit 1 < - changes computer to single user mode. Telinit is special because it can also take a ‘q’ option and have the tool
reread etc/inittab and implement any changes it find there
Shutdown and reboot from the command line
Shutdown –h now – halt the system immediately.
Shutdown –r now – reboot the system immediately.
Shutdown –h +10 shutdown in ten minutes
Shutdown –c cancels the current shutdown
reboot
Halt
Poweroff
Alert users before switching runlevels or other major system events
Wall<file> <- this command send a messages to all users
Shutdown –h +10 “System is going to go down”
Properly terminate processes
Envoke start-up script directly
Ubuntu:
# /etc/init.d/apache2 stop
# /etc/init.d/apache2 start
RedHat:
# service httpd start
# service httpd stop
Kill - < -list signals
Kill –s <SIGNAL PID>
1- SIGHUP < - terminates interactive programs, causes many daemons to reload configuration file
9 - SIGKILL < - Sent to a process to terminate it immediately, without preforming routine shutdown tasks
15 – SIGTERM (default) allows process to perform nice termination, releasing resources
102 Linux installation and Package Management
102.1 Design hard disk layout
Allocate file systems and swap spaces to separate partitions or disks
In Linux Primary partitions are assigned 1-4, the EXTENDED partition, of which there can be only one is assigned the
number 4, with logical paritions being assigned numbers greater than 4
Linux kernel needs a special partition for swap space [swap] for virtual mem management
Extra partitions are needed for preventing log files and temp files from consuming too much space
Splitting reads and writes across partitions
Planning for disk expansions
Tailor the design to the intended use of the system
Smaller systems Partition plan:
/boot partition < - 50 -100 MB, usually the 1st
partition
/swap < - 1 gig is recommended
/root
Larger systems
/boot partition
/swap
/home < - eaiser back up; and protects kernel is space fills up
/usr < - on ly applications
/var < - var directory contains log files, separate partition protects system
/tmp < - over time this can fill up
/ < - remainder of file system
Swap space:
Swap space does not contrain a file system, but is access in raw mode my linux kernel; after creating partition for swap,
you can activate by:
#swapon [ device ] (example #swapon /dev/sda2)
#swapon –s <-display swap space
Ensure the /boot partition conforms to the hardware architecture requirements for booting
/boot should always be on a regular partition. Not on LV. Boot Sector is always at track 0, cylinder 0, head 0 of the boot device
Common practice when using LV is to make a small EXT2 partition for boot. On old systems due to bios contraints, /boot
must be within the first 1024 sectors of the drive.
102.2 Install a Boot Manager
Providing alternative boot locations and backup boot options
Both LILO and GRUB can be installed to a floppy disk as well as to a hard disk
Install and configure a boot loader such as GRUB
Grub can be installed, either by editing the grub configuration file located at:
/boot/grub/grub.conf or
/boot/grub/menu.lst and
main sections of the grub.conf/menu.lst file are:
default - > image that will boot by default (the first entry is 0)
timeout -> prompt timeout in seconds
title ->name of the image
root ->where the 2nd
stage bootloader and kernel are e.g (hd0,0) is /dev/hda1
kernel -> path for the kernel starting from the previous root e.g /vmlinuz
ro -> read-only
root >-the filesystem root
initrd -> path to the initial root disk
Running # grub-install or by invoking the grub shell
To install the first stage MBR loader on /dev/hda with grub-install you would run the command grub-install
(hd0).Alternatively grub can be installed through the grub shell but still requires the grub.conf/menu.lst file. The grub
shell can be entered by typing grub. To install the boot loader you need to run the following commands in the shell:
root (hd0,0)
setup (hd0)
Interact with the Bootloader
configure LILO using the /etc/lilo.conf file.
grub configuration file located at:
/boot/grub/grub.conf or
/boot/grub/menu.lst and
Superblock
superblock describes basic filesystem features, such as the filesystem’s size and status The debugfs
and dumpe2fs commands provide some basic superblock information
102.3 Manage Shared Libraries
Identify shared libraries
A library is a set of functions that programs can use to implement their functionalities. When building (linking) a program,
those libraries can be statically or dynamically linked to an executable. Static link means that the final program will contain the
library function within its file. (lib.a) Dynamic link means that the needed libraries are loaded into RAM when the program
executes (lib.so).
Identify the typical locations of system libraries
By default Linux looks in the following trusted locations for library files
/lib < - used mainly by /bin programs
/user/lib < - used mainly by user/bin programs
/etc/ld.so < - other programs
/etc/ld.so.conf
Load shared libraries
In order to optimise library location and loading, the directories in the ld.so.conf file and the trusted directories are
parsed by the ldconfig command to create a fast caches at /etc/ld.so.cache.
ldconfig creates, updates and removes the necesscary links and cache to the most recent shared libraries on the
command line /etc/ld.so.conf and in trusted directories /user/lib and /lib. Ldconfig checks the header and files names
of the libraries it encounters when determining which versions should have their links removed.
When an application is launched the dynamic loader uses the cached information from ld.so.cache to locate files. Any
changes to the ld.so.conf files requires the ldconfig command to be run to update the /etc/ld.so.cache file
ldd command- print shared libraries If you wish to know whether an application is statically linked, or what the
dependencies for a dynamically linked application are you can use the ldd command. For example ldd
/usr/sbin/apache
LD_LIBRARY_PATH- Sometime you may need to override the default search path for dynamic libraries. This can be
for applications you have installed from source, for testing out latest version of a library or if the application relies on
an older version of a library that you already have installed on your machine.
To add libraries to the search path you will need to define and export the LD_LIBRARY_PATH variable as follows:
# export LD_LIBRARY_PATH=/usr/lib/:/opt/someapp/lib;
LD_LIBRARY_PATH is a colon-separated list of directories that is searched before the system ones specified in
ld.so.cache. This allows for the temporary overriding of libraries defined in the ld.so.cache and in the trusted
directories.
102.4 Use Debian package management
distributions derived from Redhat use the rpm package manager, while those that are derived from Debian use the dpkg
manager
Install, upgrade and uninstall Debian binary packages
To install a package from a .deb file, you could use dpkg as follows:
dpkg [options][action] [package-files|package-name]
-i or --install Installs a package
--configure Reconfigures an installed package: runs the postinstallation
script to set site-specific options
-r or --remove Removes a package, but leaves configuration files intact
-P or --purge Removes a package, including configuration files
-p or --print-avail Displays information about an installed package
-I or --info Displays information about an uninstalled package file (CAP I )
-l pattern or --list pattern Lists all installed packages whose names match pattern ( lowercase el )
dpkg Examples
# dpkg –i hello_2.1.1-4_i386.deb OR
# dpkg --unpack hello_2.1.1-4_i386.deb
# dpkg --configure hello
To reconfigure a package which has already been configured, try the dpkg-reconfigure, this will avoid having
to re-install
Find packages containing specific files or libraries which may or may not be installed
APT is one of the strengths of dpkg, and provides an easy way of installing and updating a system, It is controlled by two files
/etc/apt/apt.conf < - Contains general configuration options for APT, such as which release of Debian to install, whether/which proxy settings to use, etc
/etc/apt/sources <- Lists sources of Debian files, which may be on CDs, or on the network OR
/etc/apt/source.list < - file. This defines the repositories apt should use for installing new software or for updating existing applications
apt-get Commands
Command Description
update - Obtains updated information about packages available from the installation sources listed in /etc/apt/sources.list
upgrade - Upgrades all installed packages to the newest versions available,based on locally stored information about available
packages
dselect-upgrade - Performs any changes in package status (installation, removal, and so on) left undone after running dselect
dist-upgrade - Similar to upgrade, but performs “smart” conflict resolution to avoid upgrading a package if doing so would break
a dependency
install - Installs a package by package name (not by package filename), obtaining the package from the source that contains
the most up-todate version
remove - Removes a specified package by package name
source - Retrieves the newest available source package file by package filename using information about available packages
and installation archives listed in /etc/apt/sources.list
apt-cache Commands
Display package information Using the showpkg subcommand, as in apt-cache showpkg <pkg>, displays information about
the package.
Display package statistics You can learn how many packages you’ve installed, how many dependencies are recorded, ,
bypassing the stats subcommand, as in apt-cache stats.
Find unmet dependencies If a program is reporting missing libraries or fi les, typing aptcache unmet
Locate all packages The pkgnames subcommand displays the names of all the packages installed on the system. If you
include a second parameter, as in apt-cache pkgnames sa, the program returns only those packages that begin with the
specified string.
Obtain Package information like version, content, dependencies, package integrity and
installation status ( whether or not package is installed)
# dpkg –s hello <- -s Shows the status and information about particular installed package(s)
Display dependencies Using the depends subcommand, as in apt-cache depends <pkg>, shows all of the specified
package’s dependencies
text-based Debian package manager is aptitude.
pass various commands to aptitude on the command line, as in aptitude search samba
aptitude update - update package lists from the APT repositories
For instance, typing
aptitude install zsh installs the zsh package,
but typing aptitude install zsh- and aptitude remove zsh both uninstall zsh.
102.4 Use RPM and YUM package management
Install, re-install, upgrade and remove packages using YUM and RPM
RPM - “Red Hat Package Manager
rpm [operation][options] [package-files|package-names]
These are the major mode options for rpm.
Short Long Description
-i –install Installs the package
-U –update Updates or installs a package
-F --freshen Updates only installed package
-V --verify file size, MD5, permissions, type ...
-q --query Queries installed/uninstalled packages, and files
-e --erase Uninstall package
These are the minor mode options for rpm.
Short Description
a applies to all installed packages
c together with q lists configuration files
d together with q lists documentation files
f together with q queries which package installed a given file
h adds hashes while processing
i together with q lists information about a package
l together with q lists all files and directories in a package
p together with q specifies that the query is performed on the package file
v verbose
# rpm -Uvh samba-server-3.0.25b-4.5mdv2008.0.x86_64.rpm
You can also use rpm -ivh in place of rpm -Uvh if you don’t already have a sambaserver
package installed.
# rpm -ivh samba-server-3.0.25b-4.5mdv2008.0.x86_64.rpm
RPM Special Options
--nodepsInstall a package regardless of dependencies
--force force an upgrade
--testdoesn’t actually install or upgrade, just prints to stdout
--requires PACKAGEtogether with q lists capabilities required by a package
--whatrequires CAPABILITYtogether with q lists packages which require the capability
YUM Package Manager -“YellowDog Update Manager”
Yum is the default package manager for many rpm based distributions that allows for the installing, updating and removing of
rpm packages without having to worry about resolving dependencies yourself. Yum uses external repositories to provide the
meta-data, in the form of index files, about what packages are available and their dependencies as well as to store the rpm
packages that will be automatically downloaded to fulfil an installation request
The configuration file for yum and related utilities is located at /etc/yum.conf. This file contains one mandatory [main] section,
which allows you to set Yum options that have global effect, and can also contain one or more [repository] sections, which
allow you to set repository-specific options. However, it is recommended to define individual repositories in new or existing .repo
files in the /etc/yum.repos.d/directory. The values you define in the [main] section of the /etc/yum.conf file can override values
set in individual [repository] sections.
https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Deployment_Guide/sec-
Configuring_Yum_and_Yum_Repositories.html
install – install a package, automatically resolving and installing dependencies. The command below would install the tsclient
package with its dependencies.
# yum install tsclient
This comand will install all software packages in the “mysql database group”, which will include the mysql server as well as
admin and management tools
# yum groupinstall “mysql database”
update – update the list of available packages and will update all installed packages on your system to the latest available
versions.
# yum update
search – search the list of available rpm packages. The command below will search for a package by name.
# yum list tsclient
If you do not know the name of the package, which is often the case, you can search for a package by keyword. The search
command can also accepts wildcards in its search criteria.
# yum search PalmPilot
erase/remove – delete a package from your system. Erase is a safer option to use as remove may delete dependencies that
are needed by other packages. Below we remove he tsclient package
# yum remove tsclient
We can also remove all packages in a group.
# yum groupremove “mysql database”
yumdownloader is a program for downloading RPMs from Yum repositories.
Download the kernel RPM to /var/tmp:
yumdownloader --destdir /var/tmp kernel
List the URL for the kernel and kernel-smp RPMs:
yumdownloader --urls kernel kernel-smp
Extracting Data from RPMs
RPM files are actually modifi ed cpio archives. Thus, converting the fi les into cpio fi lesis relatively straightforward, whereupon
you can use cpio to retrieve the individual files. To do this job, you need to use the rpm2cpio program,
$ rpm2cpio samba-server-3.0.25b-4.5mdv2008.0.src.rpm > samba-server-3.0.25b-4.5mdv2008.0.cpio
You can then extract the data using cpio, which takes the -i option to extract an
archive and --make-directories to create directories:
$ cpio -i --make-directories < samba-server-3.0.25b-4.5mdv2008.0.cpio
Alternatively, you can use a pipe to link these two commands together without creating
an intermediary file:
$ rpm2cpio samba-server-3.0.25b-4.5mdv2008.0.src.rpm | cpio -i --make-directories
Obtain information on RPM packages such as version, status, dependencies, integrity and
signatures
RPM query types:
Three query types: uninstalled packages, installed packages and files
Query Type Option
Package file -qp
Installed package -q
File -qf
Package SignaturesYou can check the signature of each package that is distributed as part of a project. For example to load
the keys of all the developers involved with the Fedora project do the following (just once):
# rpm –-import /usr/share/rhn/RPM-GPG-KEY-fedora
You can now download any package from an FTP site which mirrors the project's RPMs. For example we downloaded zlib-1.2.1.1-2.1.i386.rpm from
ftp.mirror.ac.uk in the Fedora subdirectory. We next check the authenticity of the file:
# rpm --checksig /home/adrian/zlib-1.2.1.1-2.1.i386.rpm
# /home/adrian/zlib-1.2.1.1-2.1.i386.rpm: (sha1) dsa sha1 md5 gpg OK
Package Integrity
The next command checks the integrity of the package bash:
# rpm –V bash
This returns nothing. We next do the following as user root:
# chown bin /bin/bash
# chmod 775 /bin/bash
If we check the integrity of bash again this time we get:
# rpm –V bash
.M...U.. /bin/bash
The package manager has compared the current status of all files which are part of the bash package with the known original
state of these files stored in a database. The changes made to /bin/bash have been identified.
It is possible to verify the integrity of all packages installed on the system by adding the 'a' (--all) option after 'V' (--verify)
The –verify option performs a number of tests on each file; when a test is positive a number of characters (listed below) are used
to identify the errors:
Returned character Error description
. the test was successful
? the test couldn't be performed
S file size has changed
M permission mode or file type has changed
5 the file's MD5 sum has changed
D device major/minor number miss-match
L broken symbolic link
U the user owner of the file has changed
G the group owner of the file has changed
T the mtime (modified time) has changed
Determine what files a package provides, as well as find which package a specific file
comes from
find which package a specific file comes from
You can search for a filename from installed packages using dpkg -S command. For example, find out package name for /bin/ls,
enter:
$ dpkg -S /bin/ls or dpkg -S /path/to/file
coreutils: /bin/ls < ‘coreutils’ is package>
apt-file is a command line tool for searching packages in Debian/Ubuntu repositories.
Unlike apt-cache search, apt-file can find files in uninstalled or can list the content of uninstalled packages
apt-file search FindKDE4Internal.cmake
kdelibs5-dev: /usr/share/kde4/apps/cmake/modules/FindKDE4Internal.cmakeIn other words, the file I
needed was in the package “kdelibs5-dev”, which I installed from the command line:
sudo apt-get install kdelibs5-dev
rpm -qf /bin/ls <- For RPM
Determine what files a package provides
$ dpkg –L <pkg>
$ rpm –ql <pkg>
For YUM - There is a package called yum-utils that builds on YUM and contains a tool called repoquery
repoquery -lq <pkg>
103 GNU and Unix Commands
103.1 Work on the Command Line
Use single shell commands and one line command sequences to perform basic tasks on the
command line
The fi le /bin/sh is a symbolic link to the system’s default shell—normally /bin/bash for Linux.
~/.bashrc and ~/.profile files are the main user configuration files for bash, and /etc/bash.bashrc and /etc/profile are the main global
configuration files.
pwd
ls -ld or ls -l -d or ls -d -l
rm -r /tmp/toto
cat ../readme helpme > save
more /etc/passwd /etc/hosts /etc/group
find . -name *.[ch] -print
date "+day is %a"
Invoke an editor You can launch a full-fledged editor to edit a command by pressing Ctrl+X followed by Ctrl+E.
Use and modify the shell environment including defining, referencing and exporting environment
variables
Export, Set and Env
Shell variables
All local variables to the bash session can be viewed with set.
To declare a local variable, do:
VARNAME=foo
To unset a variable, do:
unset VARNAME
All the environment variables can be viewed with env. To declare a variable that will be seen by other shells use
export.
export VARNAME=foo
or
VARNAME=foo
export VARNAME
List of common predefined variables
PREDEFINED
VARIABLES
MEANING
DISPLAY Used by X to identify where to run a client application
HISTFILE Path to the user's .bash_history file
HOME The path to the user's home
LOGNAME The name used by the user to log in
PATH
List of directories searched by the shell for programs to be executed when a command is
entered without a path.
PWD The current working directory
SHELL The shell used (bash in most Linux distributions)
TERM The current terminal emulation
Use and edit command history
To view the list of previously typed commands you can use the bash built-in command history
Emacs Key Bindings for Editing the Command History
Ctrl+P Previous line (same as Up-arrow)
Ctrl+n Next line (same as Down-arrow)
Ctrl+b Go back one character on the line (same as Left-Arrow)
Ctrl+f Go forward one character on the line (Same as Right-Arrow)
Ctrl+a Go to the beginning of the line (Same as <Home>)
Ctrl+e Go to the end of the line (Same as <End>)
Ctrl + D deletes text
The history of commands typed from the bash shell are stored in ~/.bash_history
Invoke commands inside and outside the defined path
Even when external commands are installed, the internal command takes precedence unless you provide
the complete path to the external command on the command line, as in typing /bin/pwd rather than pwd.
You can run programs that aren’t on the path by providing a complete path on the command line. For instance, typing ./myprog
runs the myprog program in the current directory, and /home/arthur/thisprog runs the thisprog program in the /home/arthur
directory.
Bash, echo env exec export pwd set unset man uname history
103.2 Process text streams using filters
Send text files and output streams through text utility filters to modify the output using standard
UNIX commands found in the GNU textutils package;
cat cut expand fmt head od join nl paste pr sed sort split tail tr unexapnd uniq wc
103.3 Perform basic File Management
Copy and remove files and directories individually
Copy multiple files and directories recursively
Use simple and advanced wildcard specs in commands
Use find to locate and act on files based on type, size or time
Usage or tar, cpio and dd
Cp, find, mkdir, mv, ls, rm

Contenu connexe

Tendances

System unit & its components
System unit & its componentsSystem unit & its components
System unit & its components
adpafit
 
Chapter04 system unit
Chapter04 system unitChapter04 system unit
Chapter04 system unit
Frya Lora
 
Chapter 4 The System Unit
Chapter 4 The System UnitChapter 4 The System Unit
Chapter 4 The System Unit
Patty Ramsey
 
20 the components of the system unit
20 the components of the system unit20 the components of the system unit
20 the components of the system unit
MrQaz996
 
The Components of the System Unit
The Components of the System Unit The Components of the System Unit
The Components of the System Unit
Nurul Atikah
 
Personal computer-hardware
Personal computer-hardwarePersonal computer-hardware
Personal computer-hardware
Santosh Kulkarni
 
IT Book of Knowledge
IT Book of KnowledgeIT Book of Knowledge
IT Book of Knowledge
Phil Primeau
 
Parts of system unit
Parts of system unitParts of system unit
Parts of system unit
kapitanbasa
 

Tendances (20)

System unit & its components
System unit & its componentsSystem unit & its components
System unit & its components
 
Chapter04 system unit
Chapter04 system unitChapter04 system unit
Chapter04 system unit
 
Chapter 4 The System Unit
Chapter 4 The System UnitChapter 4 The System Unit
Chapter 4 The System Unit
 
File000124
File000124File000124
File000124
 
Parts of System Unit
Parts of System UnitParts of System Unit
Parts of System Unit
 
20 the components of the system unit
20 the components of the system unit20 the components of the system unit
20 the components of the system unit
 
The Components of the System Unit
The Components of the System Unit The Components of the System Unit
The Components of the System Unit
 
18. the components of the system unit
18. the components of the system unit18. the components of the system unit
18. the components of the system unit
 
Personal computer-hardware
Personal computer-hardwarePersonal computer-hardware
Personal computer-hardware
 
Computer Hardware
Computer HardwareComputer Hardware
Computer Hardware
 
IT Book of Knowledge
IT Book of KnowledgeIT Book of Knowledge
IT Book of Knowledge
 
Parts of system unit
Parts of system unitParts of system unit
Parts of system unit
 
Lecture 2.5 hardware
Lecture 2.5 hardwareLecture 2.5 hardware
Lecture 2.5 hardware
 
Computer Components مكونات الحاسب الآلي
Computer Components مكونات الحاسب الآليComputer Components مكونات الحاسب الآلي
Computer Components مكونات الحاسب الآلي
 
System unit components
System unit componentsSystem unit components
System unit components
 
PC techniques software and Hardware
PC techniques software and HardwarePC techniques software and Hardware
PC techniques software and Hardware
 
File000122
File000122File000122
File000122
 
Computer hardware components by ni3
Computer hardware components by ni3Computer hardware components by ni3
Computer hardware components by ni3
 
PC Hardware Overview
PC Hardware OverviewPC Hardware Overview
PC Hardware Overview
 
INFORMATION TECHNOLOGY
INFORMATION TECHNOLOGYINFORMATION TECHNOLOGY
INFORMATION TECHNOLOGY
 

Similaire à Notes for LX0-101 Linux

Similaire à Notes for LX0-101 Linux (20)

Ch07 system administration
Ch07 system administration Ch07 system administration
Ch07 system administration
 
EMBEDDED SYSTEMS -UNIT-III-TSK-PROF.ECE-ACET.ppt
EMBEDDED SYSTEMS -UNIT-III-TSK-PROF.ECE-ACET.pptEMBEDDED SYSTEMS -UNIT-III-TSK-PROF.ECE-ACET.ppt
EMBEDDED SYSTEMS -UNIT-III-TSK-PROF.ECE-ACET.ppt
 
EMBEDDED SYSTEMS -UNIT-III-TSK-PROF.ECE-ACET.ppt
EMBEDDED SYSTEMS -UNIT-III-TSK-PROF.ECE-ACET.pptEMBEDDED SYSTEMS -UNIT-III-TSK-PROF.ECE-ACET.ppt
EMBEDDED SYSTEMS -UNIT-III-TSK-PROF.ECE-ACET.ppt
 
Device drivers and their applications
Device drivers and their applicationsDevice drivers and their applications
Device drivers and their applications
 
Udev
UdevUdev
Udev
 
101 1.1 hardware settings
101 1.1 hardware settings101 1.1 hardware settings
101 1.1 hardware settings
 
Linux fundamentals Training
Linux fundamentals TrainingLinux fundamentals Training
Linux fundamentals Training
 
Basic Linux Internals
Basic Linux InternalsBasic Linux Internals
Basic Linux Internals
 
Writing Character driver (loadable module) in linux
Writing Character driver (loadable module) in linuxWriting Character driver (loadable module) in linux
Writing Character driver (loadable module) in linux
 
Operating System Case Study and I/O System
Operating System Case Study and I/O SystemOperating System Case Study and I/O System
Operating System Case Study and I/O System
 
Linux filesystemhierarchy
Linux filesystemhierarchyLinux filesystemhierarchy
Linux filesystemhierarchy
 
COMPUTER HARDWARE - SHORT NOTES
COMPUTER HARDWARE - SHORT NOTESCOMPUTER HARDWARE - SHORT NOTES
COMPUTER HARDWARE - SHORT NOTES
 
Device Drivers
Device DriversDevice Drivers
Device Drivers
 
Ducky USB - Indicators of Compromise (IOCs)
Ducky USB - Indicators of Compromise (IOCs)Ducky USB - Indicators of Compromise (IOCs)
Ducky USB - Indicators of Compromise (IOCs)
 
Linux admin course
Linux admin courseLinux admin course
Linux admin course
 
Device Tree for Dummies (ELC 2014)
Device Tree for Dummies (ELC 2014)Device Tree for Dummies (ELC 2014)
Device Tree for Dummies (ELC 2014)
 
Hardware software
Hardware softwareHardware software
Hardware software
 
Device drivers by prabu m
Device drivers by prabu mDevice drivers by prabu m
Device drivers by prabu m
 
Introduction to char device driver
Introduction to char device driverIntroduction to char device driver
Introduction to char device driver
 
Computer Hardware and Networking Tutorial for beginners
Computer Hardware and Networking Tutorial for beginnersComputer Hardware and Networking Tutorial for beginners
Computer Hardware and Networking Tutorial for beginners
 

Dernier

Dernier (20)

How to Manage Global Discount in Odoo 17 POS
How to Manage Global Discount in Odoo 17 POSHow to Manage Global Discount in Odoo 17 POS
How to Manage Global Discount in Odoo 17 POS
 
Understanding Accommodations and Modifications
Understanding  Accommodations and ModificationsUnderstanding  Accommodations and Modifications
Understanding Accommodations and Modifications
 
Google Gemini An AI Revolution in Education.pptx
Google Gemini An AI Revolution in Education.pptxGoogle Gemini An AI Revolution in Education.pptx
Google Gemini An AI Revolution in Education.pptx
 
Beyond_Borders_Understanding_Anime_and_Manga_Fandom_A_Comprehensive_Audience_...
Beyond_Borders_Understanding_Anime_and_Manga_Fandom_A_Comprehensive_Audience_...Beyond_Borders_Understanding_Anime_and_Manga_Fandom_A_Comprehensive_Audience_...
Beyond_Borders_Understanding_Anime_and_Manga_Fandom_A_Comprehensive_Audience_...
 
How to Add New Custom Addons Path in Odoo 17
How to Add New Custom Addons Path in Odoo 17How to Add New Custom Addons Path in Odoo 17
How to Add New Custom Addons Path in Odoo 17
 
Holdier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdfHoldier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdf
 
REMIFENTANIL: An Ultra short acting opioid.pptx
REMIFENTANIL: An Ultra short acting opioid.pptxREMIFENTANIL: An Ultra short acting opioid.pptx
REMIFENTANIL: An Ultra short acting opioid.pptx
 
Accessible Digital Futures project (20/03/2024)
Accessible Digital Futures project (20/03/2024)Accessible Digital Futures project (20/03/2024)
Accessible Digital Futures project (20/03/2024)
 
Application orientated numerical on hev.ppt
Application orientated numerical on hev.pptApplication orientated numerical on hev.ppt
Application orientated numerical on hev.ppt
 
COMMUNICATING NEGATIVE NEWS - APPROACHES .pptx
COMMUNICATING NEGATIVE NEWS - APPROACHES .pptxCOMMUNICATING NEGATIVE NEWS - APPROACHES .pptx
COMMUNICATING NEGATIVE NEWS - APPROACHES .pptx
 
80 ĐỀ THI THỬ TUYỂN SINH TIẾNG ANH VÀO 10 SỞ GD – ĐT THÀNH PHỐ HỒ CHÍ MINH NĂ...
80 ĐỀ THI THỬ TUYỂN SINH TIẾNG ANH VÀO 10 SỞ GD – ĐT THÀNH PHỐ HỒ CHÍ MINH NĂ...80 ĐỀ THI THỬ TUYỂN SINH TIẾNG ANH VÀO 10 SỞ GD – ĐT THÀNH PHỐ HỒ CHÍ MINH NĂ...
80 ĐỀ THI THỬ TUYỂN SINH TIẾNG ANH VÀO 10 SỞ GD – ĐT THÀNH PHỐ HỒ CHÍ MINH NĂ...
 
NO1 Top Black Magic Specialist In Lahore Black magic In Pakistan Kala Ilam Ex...
NO1 Top Black Magic Specialist In Lahore Black magic In Pakistan Kala Ilam Ex...NO1 Top Black Magic Specialist In Lahore Black magic In Pakistan Kala Ilam Ex...
NO1 Top Black Magic Specialist In Lahore Black magic In Pakistan Kala Ilam Ex...
 
Mehran University Newsletter Vol-X, Issue-I, 2024
Mehran University Newsletter Vol-X, Issue-I, 2024Mehran University Newsletter Vol-X, Issue-I, 2024
Mehran University Newsletter Vol-X, Issue-I, 2024
 
Interdisciplinary_Insights_Data_Collection_Methods.pptx
Interdisciplinary_Insights_Data_Collection_Methods.pptxInterdisciplinary_Insights_Data_Collection_Methods.pptx
Interdisciplinary_Insights_Data_Collection_Methods.pptx
 
ICT role in 21st century education and it's challenges.
ICT role in 21st century education and it's challenges.ICT role in 21st century education and it's challenges.
ICT role in 21st century education and it's challenges.
 
Python Notes for mca i year students osmania university.docx
Python Notes for mca i year students osmania university.docxPython Notes for mca i year students osmania university.docx
Python Notes for mca i year students osmania university.docx
 
HMCS Max Bernays Pre-Deployment Brief (May 2024).pptx
HMCS Max Bernays Pre-Deployment Brief (May 2024).pptxHMCS Max Bernays Pre-Deployment Brief (May 2024).pptx
HMCS Max Bernays Pre-Deployment Brief (May 2024).pptx
 
Wellbeing inclusion and digital dystopias.pptx
Wellbeing inclusion and digital dystopias.pptxWellbeing inclusion and digital dystopias.pptx
Wellbeing inclusion and digital dystopias.pptx
 
FSB Advising Checklist - Orientation 2024
FSB Advising Checklist - Orientation 2024FSB Advising Checklist - Orientation 2024
FSB Advising Checklist - Orientation 2024
 
Graduate Outcomes Presentation Slides - English
Graduate Outcomes Presentation Slides - EnglishGraduate Outcomes Presentation Slides - English
Graduate Outcomes Presentation Slides - English
 

Notes for LX0-101 Linux

  • 1. 101 System Architecture 101.1 Determine and Configure Hardware Settings * Enable and Disable integrated Peripherals It is under the BIOS configuration console that you can: enable or disable devices, allocate resources such as IRQ and IO addresses, select boot order. Most BIOS consoles allow one to disable integrated peripherals such as COM ports, video or network cards * Configure systems with or without external peripherals such as keyboards under the BIOS disable system checks for peripherals such as a keyboard or a mouse which, although necessary for the proper operation of desktop machines, are often not present for servers. Machines without keyboards, mouse or monitors are referred to as “headless” systems. Some BIOSes will refuse to boot if these devices are not present unless these system checks are disabled * Differentiate between the various types of mass storage devices http://en.wikibooks.org/wiki/Ict-innovation/LPI/101.1#Mass_Storage_Devices PATA – Parallel Advanced Technology Attachment – also known as IDE PATA ( 16 bit MLM, RLL and ISE ) disk drives are names with /dev/hd[a-z] names. PATA - The last letter determines master /slave & number determines partition SATA and SCSI disk devices are named with /dev/sd* names SATA – Serial Advanced Technology Attachment SATA – only one disk per cable; are hotswappable; use AHCI SATA – Linux treats SATA as if SCSI SCSI – Small Computer system interface SCSI – Supports 8 or 16 devices per bus, one is the SCSI host adaptor SCSI – x86 BIOS wont detect SCSI, if SCSI adaptor has its own Bios that support booting then ok SCSI disk devices are named with /dev/sd* (where * is a letter) names SCSI tape drivers are named with /dev/st* (where * is a number) and /de/nst* SCSI DVD ROMS are /dev/scd* or /dev/sr* SCSI devices are identified using a set of three numbers called SCSI ID 1, the SCSI channel – each adaptor supports on data channel, starting number 0 2 the Device ID number – unique number that can be used by setting jumpers on a disk 3 Logical Unit Number – differentiate between devices with in a SCSI target number SCSI All detected devices are in the /proc/scsi/scsi file All documented in usr/src/linux/Documentation/Devices.txt
  • 2. * Set the Correct Hardware ID for different devices, especially boot device http://www.dedoimedo.com/computers/grub.html#mozTocId616834 http://www.ibm.com/developerworks/linux/library/l-boot-rootfs/index.html http://www.tuxradar.com/content/how-fix-linux-boot-problems Boot Sector is always at track 0, cylinder 0, head 0 of the boot device, This sector contains LILO or GRUB. Next stage reads the Grub configuration file (usually /boot/grub/menu.lst or /boot/grub/grub.conf), an entry looks like this: title openSUSE 10.2 root (hd0,0) kernel /boot/vmlinuz-2.6.18.2-34-default root=/dev/hda1 vga=0x317 showopts initrd /boot/initrd-2.6.18.2-34-default In Grub-speak, hd0 refers to the first drive - on a typical PC with IDE drives this corresponds to the Linux device name /dev/hda, or, in some of the more recent distros, /dev/sda. In Grub-speak, (hd0,0) refers to the first partition on that drive. Linux would call this /dev/hda1 or /dev/sda1 The kernel line specifies the file that Grub will load as the Linux kernel; at the end of this line you may see some additional boot parameters that are passed to the kernel. The initrd line specifies the file that contains the 'initial RAM Disk' - a file system image that will be used by the kernel as it boots. Grub is also responsible for loading this file into memory. If Grub fails to find the kernel or the ramdisk images it will report Error 15: File not found, and halt * Know differences between hotplug and coldplug devices Typical hot plug devices are USB data sticks, mice or keyboards and some SATA drives, while cold plug devices include video cards, network cards and CPUs, although in high end server machines even these components can be hot pluggable When a hotplug device is inserted or removed the kernel updates the sys virtual filesystem and udev receives an event notification. Udev will create the device node under /dev and fire notifications to HAL which in turn will notify D-Bus of the changes. Several utilities help in managing hot plug devices: sysfs virtual file system, mounted at /sys, exports info about devices so that user space utilites can access. udev a virtual files system, mounted at /dev, creates dynamic device files as drivers are loaded and unloaded, you can configure udev through files /etc/udev hald – user space programs that runs at all times that provides other user space programs with info about avail hardware D-bus – enables processes to communicate with each other as wellas ti be notified over events, both by processes and hardware, such as new USB device avail
  • 3. * Determine Hardware resources for Devices The /proc file system is a virtual or pseudo file system – the kernel sets up the /proc file system to export information about the running kernel, user process and hardware devices that have been configured. When the CPU and Peripheral devices need to communicate; they do so via i/o addresses by reading and writing data to the i/o address of the device. IO addresses are regions of memory mapped to devices where the CPU can write information of the devices attention and read from the devices as well. The allocation of io ports can be viewed in the /proc/ioports file DMA devices can write directly to memory, by passing CPU Can be viewed /proc/dma When an event occurs on a device, such as a mouse movement or data arriving from a USB connected drive, the device signals to the CPU that it has data which it needs to handle by generating an interrupt on the bus. “plug and play” technology was introduced which allows devices to share interrupt lines. (APIC) architecture there are now usually 24 interrupt lines available that can accommodate up to 255 devices. IRQs are the mechanism by which peripherals tell the CPU to suspend its current activity and to handle its event such as a key press or a disk read. In order to see allocation of IRQs on Linux, see /proc/interrupts file IRQ No. Hardware Assignment IRQ No. Hardware Assignment IRQ No. Hardware Assignment IRQ No. Hardware Assignment 0 System timer 4 COM1 8 Real Time Clock 12 PS2 Mouse 1 Keyboard 5 LPT2 / Sound Card 9 Available 13 Floating Point Proc 2 Handles IRQ 8 - 15 6 Floppy Controller 10 Available 14 Primary IDE 3 COM2 7 Parallel Port 11 Available 15 Secondary IDE * Tools and utilites to list various hardware information (lsusb, lspci and others) Once a USB device is plugged into a PC we list devices with lsusb In particular, USB device information is accessible from /proc/bus/usb. Two commands used to query PCI devices are the lspci and setpci commands. The lspci utility can provide verbose information on devices using the PCI bus, depending on which parameters you use. “lspci -vv” provides detailed output on PCI devices All PCI devices are identified by a unique ID. This ID is made up of a unique vendor ID, device ID with potentially a sub- system vendor ID and sub-system device ID. When “lspci” is run the PCI ID is looked up in the systems ID database and translated into a human readable format, showing the vendor name and device. The PIC ID database is found at /usr/share/misc/pci.ids on Ubuntu and on RedHat Linux loads the modules it needs when it boots, but you may need to load additional
  • 4. modules yourself. You can learn about the modules that are currently loaded on your system by using lsmod Linux enables you to load kernel modules with two programs: insmod and modprobe. The insmod program inserts a single module into the kerne l The modprobe program,by contrast, automatically loads any depended-on modules and so is generally the preferred way to do the job. * Conceptual understanding of sysfs, udev, hald, and dbus Sysfs –All Bus’s and hardware info in the kernel become objects when the PC boots, these objects, hardware information is exported to a virtual file system, sysfs which is mounted at the sys directory. sysfs virtual file system, mounted at /sys, exports info about devices so that user space utilities can access. Objects -> folders Attributes- > Names Attirbute values -> File contents udev One of these user space applications is the kernel device manager, udev, which creates a device node under the /dev directory to allow user space application access to the device. The name of the device node or file is determined by the device drivers naming convention or by user defined rules in /etc/udev/rules.d/. It is through the entries under /dev that user space application can interact with the device driver. The udev daemon is also responsible for informing other user land applications of changes HAL & DBUS The applications that are most important here are the HAL (hardware abstraction layer) daemon, and D-Bus (desktop bus). These applications are mainly used by desktop environment to carry out tasks when an event occurs such as open the file browser when a USB drive is inserted or image application when a camera is inserted. HAL While udev creates the relevant entries under the /dev file system, if anything useful needs to happen when the event occurs, HAL and D-Bus are needed. (Note: HAL is now deprecated as it is being merged into udev). HAL is a single daemon responsible for discovering, enumerating and mediating access to most of the hardware on the host computer for desktop applications to which it provides a hardware abstraction layer. DBuS Applications register with the D-Bus daemon to receive notifications of events and also post event notifications that other applications may be interested in. D-Bus is used for example to launch media players when a audio CD is inserted and to notify other applications of the currently playing song for example. 101.2 Boot the system
  • 5. Provide common commands to the Bootloader and options to the kernel at Boot time master boot record (MBR) contains the MBR partition table and a boot loader (also sometimes called a boot manager). Both GRUB and LILO are broken into two stages; first stage is small code on the MBR – it’s one job is to locate the 2nd stage bootloader. . the 2nd stage bootloader then locates and loads the linux kernel; passing in any parameters which it has been provided. Common parameters are: Init – overrides the process that is run by the kernel after it has finished loading “init=/bin/bash” is used to bypass the login promprt in cases where the root password is forgotten. Root – informs the kernel which device to use as the root filesystem. Often used when t-shooting an incorrect bootloader. Example: root= /dev/hda1 tells the kernel to use /dev/hda1/ as the root device filesystem. Noapic/nolapic – tells the kernel not to use the advanced programmable interupt controller or local advanced programmable interupt controller for assigning IRQ and resources – this turns off plug and play Demonstrate knowledge of the boot sequence from BIOS to boot completion 1. Power on - CPU loads BIOS 2. BIOS locates BOOT device 3. BIOS loads MBR of boot device [ MBR is 1st sector, 512 bytes and contains 1st stage boot loader with partition table ] 4. 1st Stage bootloader locates 2nd stage bootloader, [ due to the limited size of the MBR [512 bytes ], the partition table only carries the names of the primary partition, which requires the 2nd stage bootloader to be on a primary partition. The 1st stage boot loader locates the partition of the 2nd stage boot loader by looking at the boot sectors of the partition marked as active/bootable. 5. 2ND Stage loader { LILO, GRUB ] presents user with a menu {options to select a kernel}, then loads the kernel and passes control over to it. 6. Kernel starts and configures the CPU type, IRQ handling,, mem mgmt, drivers, etc. 7. Kernel loads an initial RAM disk image and mounts it as a temp file sysytem in RAM. The initial RAM DISK (initrd) contains an image sys config files and modules the kernel will need to access hardware. 8. Temp root files system is later swapped for real root file system once kernel has access to it. 9. Once Kernel is fully operational, it starts a program /sbin/init. 10. init sets up user space and starts login shells and GUI login . Check boot events in the log file
  • 6. During boot – boot messages are logged to a circular[ ring ] buffer . Most Linux write ring buffer entires to /var/log/dmesg, /var/log/messages /var/log/syslog Log buffer can be read with dmesg 101. 3 Change runlevels and shutdown or reboot the system Linux has 7 run levels, numbered 0-6 0. HALT the system 1. Single user mode 2. Multi-user, no network 3. Multi-user text mode, network & server 4. Multi user, gui mode, no server 5. Multi user, gui, mode, server 6. Reboot the system What services and hardware is configured for the different runlevels is determined by a set of scripts configured for each level. Runlevel specific scripts are stored under /etc/rc.d/rc?.d, /etc/init.d/rc?.d or /etc/rc?.d or similar location where the ? Is the number of the runlevel Set the default Run Level During the boot process for Fedora and RH systems; init opens the /etc/inittab to decide what runlevel the system should be booted to. The relavent section of a sample /etc/inittab file is as follows: # Default runlevel. The runlevels used by RHS are: # 0 - halt (Do NOT set initdefault to this) # 1 - Single user mode # 2 - Multiuser, without NFS (The same as 3, if you do not have networking) # 3 - Full multiuser mode # 4 - unused # 5 - X11 # 6 - reboot (Do NOT set initdefault to this) # id:3:initdefault: The key line in the example above is: id:3:initdefault: If your system does not have inittab, create one and add only the above line. Change between runlevels including single user mode
  • 7. # runlevel < - will show your current runlevel N 2 The first character is the previous run level, when ‘ N’ – this means the sytem has not switched run levels since booting. The second charater is your current run level. ntsysv < - RedHAt distro’s can change run levels ex.. ntsysv –level 1 Runlevels are be change be invoking the the init number. Init / Telinit are used to chage the state of the computer without rebooting it. Example, init 6 will reboot the machine. Telinit 1 < - changes computer to single user mode. Telinit is special because it can also take a ‘q’ option and have the tool reread etc/inittab and implement any changes it find there Shutdown and reboot from the command line Shutdown –h now – halt the system immediately. Shutdown –r now – reboot the system immediately. Shutdown –h +10 shutdown in ten minutes Shutdown –c cancels the current shutdown reboot Halt Poweroff Alert users before switching runlevels or other major system events Wall<file> <- this command send a messages to all users Shutdown –h +10 “System is going to go down” Properly terminate processes Envoke start-up script directly Ubuntu: # /etc/init.d/apache2 stop # /etc/init.d/apache2 start RedHat: # service httpd start # service httpd stop Kill - < -list signals Kill –s <SIGNAL PID> 1- SIGHUP < - terminates interactive programs, causes many daemons to reload configuration file 9 - SIGKILL < - Sent to a process to terminate it immediately, without preforming routine shutdown tasks 15 – SIGTERM (default) allows process to perform nice termination, releasing resources 102 Linux installation and Package Management 102.1 Design hard disk layout
  • 8. Allocate file systems and swap spaces to separate partitions or disks In Linux Primary partitions are assigned 1-4, the EXTENDED partition, of which there can be only one is assigned the number 4, with logical paritions being assigned numbers greater than 4 Linux kernel needs a special partition for swap space [swap] for virtual mem management Extra partitions are needed for preventing log files and temp files from consuming too much space Splitting reads and writes across partitions Planning for disk expansions Tailor the design to the intended use of the system Smaller systems Partition plan: /boot partition < - 50 -100 MB, usually the 1st partition /swap < - 1 gig is recommended /root Larger systems /boot partition /swap /home < - eaiser back up; and protects kernel is space fills up /usr < - on ly applications /var < - var directory contains log files, separate partition protects system /tmp < - over time this can fill up / < - remainder of file system Swap space: Swap space does not contrain a file system, but is access in raw mode my linux kernel; after creating partition for swap, you can activate by: #swapon [ device ] (example #swapon /dev/sda2) #swapon –s <-display swap space Ensure the /boot partition conforms to the hardware architecture requirements for booting
  • 9. /boot should always be on a regular partition. Not on LV. Boot Sector is always at track 0, cylinder 0, head 0 of the boot device Common practice when using LV is to make a small EXT2 partition for boot. On old systems due to bios contraints, /boot must be within the first 1024 sectors of the drive. 102.2 Install a Boot Manager Providing alternative boot locations and backup boot options Both LILO and GRUB can be installed to a floppy disk as well as to a hard disk Install and configure a boot loader such as GRUB Grub can be installed, either by editing the grub configuration file located at: /boot/grub/grub.conf or /boot/grub/menu.lst and main sections of the grub.conf/menu.lst file are: default - > image that will boot by default (the first entry is 0) timeout -> prompt timeout in seconds title ->name of the image root ->where the 2nd stage bootloader and kernel are e.g (hd0,0) is /dev/hda1 kernel -> path for the kernel starting from the previous root e.g /vmlinuz ro -> read-only root >-the filesystem root initrd -> path to the initial root disk Running # grub-install or by invoking the grub shell To install the first stage MBR loader on /dev/hda with grub-install you would run the command grub-install (hd0).Alternatively grub can be installed through the grub shell but still requires the grub.conf/menu.lst file. The grub shell can be entered by typing grub. To install the boot loader you need to run the following commands in the shell: root (hd0,0) setup (hd0) Interact with the Bootloader
  • 10. configure LILO using the /etc/lilo.conf file. grub configuration file located at: /boot/grub/grub.conf or /boot/grub/menu.lst and Superblock superblock describes basic filesystem features, such as the filesystem’s size and status The debugfs and dumpe2fs commands provide some basic superblock information 102.3 Manage Shared Libraries Identify shared libraries A library is a set of functions that programs can use to implement their functionalities. When building (linking) a program, those libraries can be statically or dynamically linked to an executable. Static link means that the final program will contain the library function within its file. (lib.a) Dynamic link means that the needed libraries are loaded into RAM when the program executes (lib.so). Identify the typical locations of system libraries By default Linux looks in the following trusted locations for library files /lib < - used mainly by /bin programs /user/lib < - used mainly by user/bin programs /etc/ld.so < - other programs /etc/ld.so.conf Load shared libraries In order to optimise library location and loading, the directories in the ld.so.conf file and the trusted directories are parsed by the ldconfig command to create a fast caches at /etc/ld.so.cache. ldconfig creates, updates and removes the necesscary links and cache to the most recent shared libraries on the command line /etc/ld.so.conf and in trusted directories /user/lib and /lib. Ldconfig checks the header and files names of the libraries it encounters when determining which versions should have their links removed. When an application is launched the dynamic loader uses the cached information from ld.so.cache to locate files. Any changes to the ld.so.conf files requires the ldconfig command to be run to update the /etc/ld.so.cache file ldd command- print shared libraries If you wish to know whether an application is statically linked, or what the dependencies for a dynamically linked application are you can use the ldd command. For example ldd /usr/sbin/apache LD_LIBRARY_PATH- Sometime you may need to override the default search path for dynamic libraries. This can be for applications you have installed from source, for testing out latest version of a library or if the application relies on an older version of a library that you already have installed on your machine.
  • 11. To add libraries to the search path you will need to define and export the LD_LIBRARY_PATH variable as follows: # export LD_LIBRARY_PATH=/usr/lib/:/opt/someapp/lib; LD_LIBRARY_PATH is a colon-separated list of directories that is searched before the system ones specified in ld.so.cache. This allows for the temporary overriding of libraries defined in the ld.so.cache and in the trusted directories. 102.4 Use Debian package management distributions derived from Redhat use the rpm package manager, while those that are derived from Debian use the dpkg manager Install, upgrade and uninstall Debian binary packages To install a package from a .deb file, you could use dpkg as follows: dpkg [options][action] [package-files|package-name] -i or --install Installs a package --configure Reconfigures an installed package: runs the postinstallation script to set site-specific options -r or --remove Removes a package, but leaves configuration files intact -P or --purge Removes a package, including configuration files -p or --print-avail Displays information about an installed package -I or --info Displays information about an uninstalled package file (CAP I ) -l pattern or --list pattern Lists all installed packages whose names match pattern ( lowercase el ) dpkg Examples # dpkg –i hello_2.1.1-4_i386.deb OR # dpkg --unpack hello_2.1.1-4_i386.deb # dpkg --configure hello To reconfigure a package which has already been configured, try the dpkg-reconfigure, this will avoid having to re-install Find packages containing specific files or libraries which may or may not be installed
  • 12. APT is one of the strengths of dpkg, and provides an easy way of installing and updating a system, It is controlled by two files /etc/apt/apt.conf < - Contains general configuration options for APT, such as which release of Debian to install, whether/which proxy settings to use, etc /etc/apt/sources <- Lists sources of Debian files, which may be on CDs, or on the network OR /etc/apt/source.list < - file. This defines the repositories apt should use for installing new software or for updating existing applications apt-get Commands Command Description update - Obtains updated information about packages available from the installation sources listed in /etc/apt/sources.list upgrade - Upgrades all installed packages to the newest versions available,based on locally stored information about available packages dselect-upgrade - Performs any changes in package status (installation, removal, and so on) left undone after running dselect dist-upgrade - Similar to upgrade, but performs “smart” conflict resolution to avoid upgrading a package if doing so would break a dependency install - Installs a package by package name (not by package filename), obtaining the package from the source that contains the most up-todate version remove - Removes a specified package by package name source - Retrieves the newest available source package file by package filename using information about available packages and installation archives listed in /etc/apt/sources.list apt-cache Commands Display package information Using the showpkg subcommand, as in apt-cache showpkg <pkg>, displays information about the package. Display package statistics You can learn how many packages you’ve installed, how many dependencies are recorded, , bypassing the stats subcommand, as in apt-cache stats. Find unmet dependencies If a program is reporting missing libraries or fi les, typing aptcache unmet Locate all packages The pkgnames subcommand displays the names of all the packages installed on the system. If you include a second parameter, as in apt-cache pkgnames sa, the program returns only those packages that begin with the specified string. Obtain Package information like version, content, dependencies, package integrity and installation status ( whether or not package is installed) # dpkg –s hello <- -s Shows the status and information about particular installed package(s) Display dependencies Using the depends subcommand, as in apt-cache depends <pkg>, shows all of the specified package’s dependencies text-based Debian package manager is aptitude. pass various commands to aptitude on the command line, as in aptitude search samba aptitude update - update package lists from the APT repositories For instance, typing aptitude install zsh installs the zsh package, but typing aptitude install zsh- and aptitude remove zsh both uninstall zsh. 102.4 Use RPM and YUM package management Install, re-install, upgrade and remove packages using YUM and RPM
  • 13. RPM - “Red Hat Package Manager rpm [operation][options] [package-files|package-names] These are the major mode options for rpm. Short Long Description -i –install Installs the package -U –update Updates or installs a package -F --freshen Updates only installed package -V --verify file size, MD5, permissions, type ... -q --query Queries installed/uninstalled packages, and files -e --erase Uninstall package These are the minor mode options for rpm. Short Description a applies to all installed packages c together with q lists configuration files d together with q lists documentation files f together with q queries which package installed a given file h adds hashes while processing i together with q lists information about a package l together with q lists all files and directories in a package p together with q specifies that the query is performed on the package file v verbose # rpm -Uvh samba-server-3.0.25b-4.5mdv2008.0.x86_64.rpm You can also use rpm -ivh in place of rpm -Uvh if you don’t already have a sambaserver package installed. # rpm -ivh samba-server-3.0.25b-4.5mdv2008.0.x86_64.rpm RPM Special Options --nodepsInstall a package regardless of dependencies --force force an upgrade --testdoesn’t actually install or upgrade, just prints to stdout --requires PACKAGEtogether with q lists capabilities required by a package --whatrequires CAPABILITYtogether with q lists packages which require the capability YUM Package Manager -“YellowDog Update Manager” Yum is the default package manager for many rpm based distributions that allows for the installing, updating and removing of rpm packages without having to worry about resolving dependencies yourself. Yum uses external repositories to provide the meta-data, in the form of index files, about what packages are available and their dependencies as well as to store the rpm packages that will be automatically downloaded to fulfil an installation request
  • 14. The configuration file for yum and related utilities is located at /etc/yum.conf. This file contains one mandatory [main] section, which allows you to set Yum options that have global effect, and can also contain one or more [repository] sections, which allow you to set repository-specific options. However, it is recommended to define individual repositories in new or existing .repo files in the /etc/yum.repos.d/directory. The values you define in the [main] section of the /etc/yum.conf file can override values set in individual [repository] sections. https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Deployment_Guide/sec- Configuring_Yum_and_Yum_Repositories.html install – install a package, automatically resolving and installing dependencies. The command below would install the tsclient package with its dependencies. # yum install tsclient This comand will install all software packages in the “mysql database group”, which will include the mysql server as well as admin and management tools # yum groupinstall “mysql database” update – update the list of available packages and will update all installed packages on your system to the latest available versions. # yum update search – search the list of available rpm packages. The command below will search for a package by name. # yum list tsclient If you do not know the name of the package, which is often the case, you can search for a package by keyword. The search command can also accepts wildcards in its search criteria. # yum search PalmPilot erase/remove – delete a package from your system. Erase is a safer option to use as remove may delete dependencies that are needed by other packages. Below we remove he tsclient package # yum remove tsclient We can also remove all packages in a group. # yum groupremove “mysql database” yumdownloader is a program for downloading RPMs from Yum repositories. Download the kernel RPM to /var/tmp: yumdownloader --destdir /var/tmp kernel List the URL for the kernel and kernel-smp RPMs: yumdownloader --urls kernel kernel-smp Extracting Data from RPMs
  • 15. RPM files are actually modifi ed cpio archives. Thus, converting the fi les into cpio fi lesis relatively straightforward, whereupon you can use cpio to retrieve the individual files. To do this job, you need to use the rpm2cpio program, $ rpm2cpio samba-server-3.0.25b-4.5mdv2008.0.src.rpm > samba-server-3.0.25b-4.5mdv2008.0.cpio You can then extract the data using cpio, which takes the -i option to extract an archive and --make-directories to create directories: $ cpio -i --make-directories < samba-server-3.0.25b-4.5mdv2008.0.cpio Alternatively, you can use a pipe to link these two commands together without creating an intermediary file: $ rpm2cpio samba-server-3.0.25b-4.5mdv2008.0.src.rpm | cpio -i --make-directories Obtain information on RPM packages such as version, status, dependencies, integrity and signatures RPM query types: Three query types: uninstalled packages, installed packages and files Query Type Option Package file -qp Installed package -q File -qf Package SignaturesYou can check the signature of each package that is distributed as part of a project. For example to load the keys of all the developers involved with the Fedora project do the following (just once): # rpm –-import /usr/share/rhn/RPM-GPG-KEY-fedora You can now download any package from an FTP site which mirrors the project's RPMs. For example we downloaded zlib-1.2.1.1-2.1.i386.rpm from ftp.mirror.ac.uk in the Fedora subdirectory. We next check the authenticity of the file: # rpm --checksig /home/adrian/zlib-1.2.1.1-2.1.i386.rpm # /home/adrian/zlib-1.2.1.1-2.1.i386.rpm: (sha1) dsa sha1 md5 gpg OK Package Integrity The next command checks the integrity of the package bash: # rpm –V bash This returns nothing. We next do the following as user root: # chown bin /bin/bash # chmod 775 /bin/bash If we check the integrity of bash again this time we get: # rpm –V bash .M...U.. /bin/bash The package manager has compared the current status of all files which are part of the bash package with the known original state of these files stored in a database. The changes made to /bin/bash have been identified. It is possible to verify the integrity of all packages installed on the system by adding the 'a' (--all) option after 'V' (--verify) The –verify option performs a number of tests on each file; when a test is positive a number of characters (listed below) are used to identify the errors:
  • 16. Returned character Error description . the test was successful ? the test couldn't be performed S file size has changed M permission mode or file type has changed 5 the file's MD5 sum has changed D device major/minor number miss-match L broken symbolic link U the user owner of the file has changed G the group owner of the file has changed T the mtime (modified time) has changed Determine what files a package provides, as well as find which package a specific file comes from find which package a specific file comes from You can search for a filename from installed packages using dpkg -S command. For example, find out package name for /bin/ls, enter: $ dpkg -S /bin/ls or dpkg -S /path/to/file coreutils: /bin/ls < ‘coreutils’ is package> apt-file is a command line tool for searching packages in Debian/Ubuntu repositories. Unlike apt-cache search, apt-file can find files in uninstalled or can list the content of uninstalled packages apt-file search FindKDE4Internal.cmake kdelibs5-dev: /usr/share/kde4/apps/cmake/modules/FindKDE4Internal.cmakeIn other words, the file I needed was in the package “kdelibs5-dev”, which I installed from the command line: sudo apt-get install kdelibs5-dev rpm -qf /bin/ls <- For RPM Determine what files a package provides $ dpkg –L <pkg> $ rpm –ql <pkg> For YUM - There is a package called yum-utils that builds on YUM and contains a tool called repoquery repoquery -lq <pkg> 103 GNU and Unix Commands 103.1 Work on the Command Line Use single shell commands and one line command sequences to perform basic tasks on the command line The fi le /bin/sh is a symbolic link to the system’s default shell—normally /bin/bash for Linux.
  • 17. ~/.bashrc and ~/.profile files are the main user configuration files for bash, and /etc/bash.bashrc and /etc/profile are the main global configuration files. pwd ls -ld or ls -l -d or ls -d -l rm -r /tmp/toto cat ../readme helpme > save more /etc/passwd /etc/hosts /etc/group find . -name *.[ch] -print date "+day is %a" Invoke an editor You can launch a full-fledged editor to edit a command by pressing Ctrl+X followed by Ctrl+E. Use and modify the shell environment including defining, referencing and exporting environment variables Export, Set and Env Shell variables All local variables to the bash session can be viewed with set. To declare a local variable, do: VARNAME=foo To unset a variable, do: unset VARNAME All the environment variables can be viewed with env. To declare a variable that will be seen by other shells use export. export VARNAME=foo or VARNAME=foo export VARNAME List of common predefined variables PREDEFINED VARIABLES MEANING DISPLAY Used by X to identify where to run a client application HISTFILE Path to the user's .bash_history file HOME The path to the user's home
  • 18. LOGNAME The name used by the user to log in PATH List of directories searched by the shell for programs to be executed when a command is entered without a path. PWD The current working directory SHELL The shell used (bash in most Linux distributions) TERM The current terminal emulation Use and edit command history To view the list of previously typed commands you can use the bash built-in command history Emacs Key Bindings for Editing the Command History Ctrl+P Previous line (same as Up-arrow) Ctrl+n Next line (same as Down-arrow) Ctrl+b Go back one character on the line (same as Left-Arrow) Ctrl+f Go forward one character on the line (Same as Right-Arrow) Ctrl+a Go to the beginning of the line (Same as <Home>) Ctrl+e Go to the end of the line (Same as <End>) Ctrl + D deletes text The history of commands typed from the bash shell are stored in ~/.bash_history Invoke commands inside and outside the defined path Even when external commands are installed, the internal command takes precedence unless you provide the complete path to the external command on the command line, as in typing /bin/pwd rather than pwd. You can run programs that aren’t on the path by providing a complete path on the command line. For instance, typing ./myprog runs the myprog program in the current directory, and /home/arthur/thisprog runs the thisprog program in the /home/arthur directory. Bash, echo env exec export pwd set unset man uname history 103.2 Process text streams using filters Send text files and output streams through text utility filters to modify the output using standard UNIX commands found in the GNU textutils package; cat cut expand fmt head od join nl paste pr sed sort split tail tr unexapnd uniq wc 103.3 Perform basic File Management Copy and remove files and directories individually
  • 19. Copy multiple files and directories recursively Use simple and advanced wildcard specs in commands Use find to locate and act on files based on type, size or time Usage or tar, cpio and dd Cp, find, mkdir, mv, ls, rm