24
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

Notes for LX0-101 Linux

Embed Size (px)

DESCRIPTION

These are notes I made while I was studying. The Linux community is so friendly and shares so much, so I am uploading my work to give back to the community. You won't find answers to test questions here, but you will find some solid notes around each of the exam points.

Citation preview

Page 1: Notes for LX0-101 Linux

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 deviceshttp://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* namesSATA – Serial Advanced Technology AttachmentSATA – only one disk per cable; are hotswappable; use AHCISATA – Linux treats SATA as if SCSI

SCSI – Small Computer system interfaceSCSI – Supports 8 or 16 devices per bus, one is the SCSI host adaptorSCSI – x86 BIOS wont detect SCSI, if SCSI adaptor has its own Bios that support booting then okSCSI disk devices are named with /dev/sd* (where * is a letter) namesSCSI 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 02 the Device ID number – unique number that can be used by setting jumpers on a disk3 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

Page 2: Notes for LX0-101 Linux

* 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/udevhald – user space programs that runs at all times that provides other user space programs with info about avail hardwareD-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

Page 3: Notes for LX0-101 Linux

* 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 CPUCan 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 lsusbIn 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 additionalmodules yourself. You can learn about the modules that are currently loaded on your system by using

Page 4: Notes for LX0-101 Linux

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 -> foldersAttributes- > NamesAttirbute values -> File contents

udevOne 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 & DBUSThe 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.

HALWhile 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.

DBuSApplications 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

Page 5: Notes for LX0-101 Linux

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 BIOS2. BIOS locates BOOT device3. 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

Page 6: Notes for LX0-101 Linux

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 systemLinux has 7 run levels, numbered 0-6 0. HALT the system1. Single user mode2. Multi-user, no network3. Multi-user text mode, network & server4. Multi user, gui mode, no server5. Multi user, gui, mode, server6. 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

Page 7: Notes for LX0-101 Linux

# runlevel < - will show your current runlevelN 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 minutesShutdown –c cancels the current shutdownrebootHaltPoweroff

Alert users before switching runlevels or other major system eventsWall<file> <- this command send a messages to all usersShutdown –h +10 “System is going to go down”

Properly terminate processesEnvoke start-up script directlyUbuntu:# /etc/init.d/apache2 stop# /etc/init.d/apache2 startRedHat:# service httpd start# service httpd stop

Kill - < -list signalsKill –s <SIGNAL PID>

1- SIGHUP < - terminates interactive programs, causes many daemons to reload configuration file9 - SIGKILL < - Sent to a process to terminate it immediately, without preforming routine shutdown tasks15 – SIGTERM (default) allows process to perform nice termination, releasing resources

102 Linux installation and Package Management102.1 Design hard disk layout

Page 8: Notes for LX0-101 Linux

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 managementExtra partitions are needed for preventing log files and temp files from consuming too much spaceSplitting reads and writes across partitionsPlanning 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

Page 9: Notes for LX0-101 Linux

/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 optionsBoth 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

Page 10: Notes for LX0-101 Linux

configure LILO using the /etc/lilo.conf file.

grub configuration file located at:

/boot/grub/grub.conf or

/boot/grub/menu.lst and

Superblocksuperblock describes basic filesystem features, such as the filesystem’s size and status The debugfsand dumpe2fs commands provide some basic superblock information

102.3 Manage Shared LibrariesIdentify 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.

Page 11: Notes for LX0-101 Linux

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 postinstallationscript 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

Page 12: Notes for LX0-101 Linux

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 CommandsCommand Descriptionupdate - Obtains updated information about packages available from the installation sources listed in /etc/apt/sources.listupgrade - Upgrades all installed packages to the newest versions available,based on locally stored information about available packagesdselect-upgrade - Performs any changes in package status (installation, removal, and so on) left undone after running dselectdist-upgrade - Similar to upgrade, but performs “smart” conflict resolution to avoid upgrading a package if doing so would break a dependencyinstall - Installs a package by package name (not by package filename), obtaining the package from the source that contains the most up-todate versionremove - Removes a specified package by package namesource - 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 CommandsDisplay 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, typingaptitude 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

Page 13: Notes for LX0-101 Linux

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 Descriptiona applies to all installed packagesc together with q lists configuration filesd together with q lists documentation filesf together with q queries which package installed a given fileh adds hashes while processingi together with q lists information about a packagel together with q lists all files and directories in a packagep together with q specifies that the query is performed on the package filev verbose

# rpm -Uvh samba-server-3.0.25b-4.5mdv2008.0.x86_64.rpmYou can also use rpm -ivh in place of rpm -Uvh if you don’t already have a sambaserverpackage 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

Page 14: Notes for LX0-101 Linux

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

Page 15: Notes for LX0-101 Linux

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 anarchive 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 creatingan 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 OptionPackage file -qpInstalled package -qFile -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)

Page 16: Notes for LX0-101 Linux

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

Page 17: Notes for LX0-101 Linux

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.

pwdls -ld or ls -l -d or ls -d -lrm -r /tmp/totocat ../readme helpme > savemore /etc/passwd /etc/hosts /etc/groupfind . -name *.[ch] -printdate "+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=fooexport VARNAME

List of common predefined variables

Page 18: Notes for LX0-101 Linux

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

PATHList 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 providethe 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 filtersSend text files and output streams through text utility filters to modify the output using standard UNIX commands found in the GNU textutils package;

Page 19: Notes for LX0-101 Linux

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