[linux-lvm] Modifying lvmcreate_initrd

Holger Rauch Holger.Rauch at heitec.de
Sun Oct 29 19:58:03 UTC 2000


Hi!

I've modified "lvmcreate_initrd" in such a way that it can be used to
build a customizable rescue system. Instead of taking the files to be
copied to the RAM disk from a variable, as the present
"lvmcreate_initrd" does, I'm gathering this information from several
files:

- binary_files_for_initrd: contains assorted binaries from /bin, /sbin,
/usr/bin, and /usr/sbin
- config_files_for_initrd: the desired config files from the /etc dir
- auxiliary_files_for_initrd: contains additional files that don't fit in
any of the above categories, e.g. everything under /usr/lib/terminfo
- symlinks_for_initrd: contains the name of the symlink and the file/dir
the link points to.

Each of this file contains one entry per line. Those entries may also
contain wildcards, e.g. "/etc/lvm*". Comments start with a "#".

The problem I'm currently having with this approach, however, is that when
booting from LILO, a "Loading rescue......................" message is
displayed on the screen. Then my machine hangs (normally it should
simply boot the kernel at that point). What can be the cause of
this behavior?

All the work is done by "main.sh" (a rather unfortunate name, I admit it).
"constants" contains some constants which are needed inside "main.sh".
"glob_vars" holds all the global variables, and "functions" has all
function declaration, some of which are not used yet.

One of the main differences (apart from the fact that it doesn't work
yet (-, ) from the present "lvmcreate_initrd" script is that it uses a
file along with a loop device associated with it in order to hold the RAM
disk's contents (the present "lvmcreate_initrd" uses the RAM disk straight
ahead and this would take too much RAM by far for what I'm trying to
achieve).

The system I'm using for this is a SuSE 6.4 system (glibc 2.1.1
based) with reiserfs 3.5.18 and lvm 0.8e.

The reason why I'm actually changing the "lvmcreate_initrd" script is that
I want a rescue system that can live in "/boot" independently of the
remaining file systems on the hard disk. This would be particularly useful
when switching distributions and yet wanting to preserve existing logical
volumes. Please tell me what you think of this idea.
 
Any help is greatly appreciated!

Greetings,

	Holger
-------------- next part --------------
A non-text attachment was scrubbed...
Name: main.sh
Type: application/x-sh
Size: 8695 bytes
Desc: 
URL: <http://listman.redhat.com/archives/linux-lvm/attachments/20001029/775d2a25/attachment.sh>
-------------- next part --------------
#
# Functions
#

# Get constants
. constants

# Get global variables
. glob_vars

# Trap important signals

trap "
	echo 'interrupted --- cleaning up'
	cd /
	$RM -rf $toplevel_dir
	$UMOUNT $DEVLOOP
	$LOSETUP -d $DEVLOOP
" 1 2 3 15

# Creates a small but sufficient fstab file for our ramdisk image

function create_fstab {
echo "# Automatically generated by $CMD on `$DATE +%Y/%m/%d` at `$DATE +%H:%M`
/dev/ram	/	ext2	defaults		1	0
none		/proc	proc	defaults		0	0
/dev/cdrom	/cdrom	iso9660	user,ro,exec,noauto	0	0
# End of automatically generated section
" > etc/fstab
if [ $? -ne 0 ] ; then
	echo "$CMD --- ERROR: create_fstab: Unable to write etc/fstab file"
	exit 1
fi
$CHMOD 644 etc/fstab
if [ $? -ne 0 ] ; then
	echo "$CMD --- ERROR: ${CHMOD}: Unable to chmod etc/fstab file"
	exit 1
fi
}

# Creates a linuxrc file for our ramdisk image
# (It is executed immediately after the contents of the image file are stored
# in RAM)

function create_linuxrc {
echo "#!/bin/sh
# Autmatically generated by $CMD on `$DATE +%Y/%m/%d` at `$DATE +%H:%M`
$INSMOD lvm
$MOUNT /proc
$VGSCAN
$VGCHANGE -a y
$UMOUNT /proc
# End of automatically generated section
" > linuxrc
if [ $? -ne 0 ] ; then
	echo "$CMD --- ERROR: create_linuxrc: Unable to write linuxrc file"
	exit 1
fi
$CHMOD 555 linuxrc
if [ $? -ne 0 ] ; then
	echo "$CMD --- ERROR: ${CHMOD}: Unable to chmod linuxrc file"
	exit 1
fi
}

# reads the contents of the file specified by $1 to directory $toplevel_dir

function copy_files {
	while read file ; do
		`echo $file | $EGREP -q '^ *\#|^ *$'` && continue
		file=`echo -n $file | $SED 's/\( |\t\)*\#\(.*\)$//'`
		file=`echo -n $file | $PERL -pe 's/\n//'`
		#echo $file
#		$FIND $file -print0 | $CPIO -pdm $toplevel_dir 2> /dev/null
		( $FIND $file -depth -print0 | $TAR -cpf - --null -T - 2>/dev/null ) | ( $TAR -C $toplevel_dir -xpf - --null 2>/dev/null )
# Commented out because of "Unable to link to ..." errors from tar
# When checking the results, these proved to be false
# The errors resulted from the order of the file names returned by the shell
# when expanding the wildcards. More precisely, they occured when the name
# of an ordinary file was preceded by that of a symbolic link. That meant tar
# was unable to create the link since the file the link pointed to did not yet
# exist.
# Commenting out the following code snippet, however, means that the remaining
# - and possibly real - error conditions are not taken into account either.
# This is rather unfortunate, of course, but I don't know what to do about it.
#		if [ $? -ne 0 ] ; then
#			echo "$CMD --- ERROR: copy_files: Unable to cpio files to \"$toplevel_dir\""
#			exit 1
#		fi
	done < $1
}

# Determines the sizes of all the files specified in $1 and calculates the sum
# In case the file read in is the file containing the binaries, the sizes
# of the shared libs are taken into account as well.

function determine_file_size {
	while read file ; do
    	sizes=`$LS -l $file | $AWK '{ print $5 }'`
        	for size in $sizes ; do
            	final_size=`$EXPR $final_size + $size`
            done
            if [ "$1" == "$BIN_CFG_FILE" ] ; then
            	shlibs=`$LDD $file | $AWK '{ if (/=>/) { print $3} }' | $SORT -u 2>/dev/null`
                for lib in $shlibs ; do
                	libsize=`$LS -Ll $lib | $AWK '{ print $5 }'`
                    final_size=`$EXPR $final_size + $size`
               done
            fi
    done < $1
}

# Prints an informational message and terminates the program

function bye {
    echo "Sorry. There is no way to enlarge the file system."
    echo "Please reconsider your choices in binary_files_for_initrd"
    echo "or auxiliary_files_for_initrd, respectively."
    exit 1
}

# used to ask the user a question that can only be answered by "yes" or "no"

function ask_user {
    while $TRUE ; do
        echo -n "$1"
        read choice
        case "$choice" in
            [yYnN])
                break
                ;;
            *)
                echo "Please press the correspondig key for \"yes\" or \"no\""
        esac
    done
}

# Checks whether the mount point given as the first argument belongs to
# a file system residing on a separate logical volume
# If so, it asks the user whether the file system (and thus the underlying
# logical volume) may be resized

function check_sep_lv {
    echo -n "Checking whether $1 resides on a logical volume..."
    lv=`$DF -k | $EGREP "$1\$" | $AWK '{ print $1 }' | egrep 'lv$'`
    if [ -z "$lv" ] ; then
        echo "no."
        if [ "$1" == "$PREFERED_DIR" ] ; then
            bye
        fi
        echo "So I will take a look at the next file system"
        next_fs=1
    else
        echo "yes."
        echo "I can extend the file system in case it's a Reiser fs."
        echo -n "Checking whether it's a Reiser file system..."
        reiserfs=`$DF -Tk | $EGREP "$1\$" | $GREP "reiserfs"`
        if [ -z "$reiserfs" ] ; then
            echo "no."
            if [ "$1" == "$PREFERED_DIR" ] ; then
                bye
            fi
            echo "So I will take a look at the next file system"
            next_fs=1
        else
            echo "yes."
            ask_user "Do you want me to extend the $1 file system (yY/nN)? "
            case "$choice" in
                [yY])
                    echo -n "All righty. Let's get this party started ,-)..."
                    $LVEXTEND -L ${required_size}M $lv
                    $RESIZE_REISERFS -s${required_size}M -f $lv
                    echo "done."
                    # Ok (put the files there)
                    echo "Putting files in extended $1 file system"
                    toplevel_dir="$1/mnt.$$"
                    #exit 0
                    ;;
                [nN])
                    if [ "$1" != "$PREFERED_DIR" ] ; then
                        echo "Ok, I will take a look at the next file system"
                        next_fs=1
                    else
                        echo "Sorry, but if you don't let me extend the $PREFERED_DIR file system, I can not do anything."
                        bye
                    fi
                    ;;
            esac
        fi
    fi
}

# Checks which ext2/reiserfs file systems are available in addition to "/",
# "/boot", and $PREFERED_DIR
# For each of these file systems
# - whether it is large enough to hold the files
# - if so, ask the user whether this file system should be used
#   * in case the user confirms, store the files in this place
#   * in case he denies, go on with the next file system
# - if the file system is not large enough, invoke check_sep_lv on that fs
#   in order to determine whether it's been created on top of a logical volume

function check_other_fs {
    for mount_point in `$DF -Tk | $EGREP "reiserfs|ext2" | $EGREP -v "/\$|/boot\$|$PREFERED_DIR\$" | $AWK '{ print $6 }'` ; do
        # Find the device for each mount point
        device=`$DF | $GREP "$mount_point" | $AWK '{ print $1 }'`
        # Check whether there is enough space in the file system
        echo -n "Checking whether there is enough free space in $mount_point..."        free_space`$DF -k | $GREP "$mount_point" | $AWK '{ print $4 }'`
        if [ "$free_space" -ge "$required_space" ] ; then
            echo "yes."
            ask_user "Do you want to store your files there (yY/nN)? "
            # Ok (put the files there)
            case "$choice" in
                [yY])
                    # Ok (put the files there)
                    echo "Putting files in $mount_point"
                    toplevel_dir="${mount_point}/mnt.$$"
                    break
                    #exit 0
                    ;;
                [nN])
                    # continue for loop
                    continue
                    ;;
            esac
        else
            # There is not enough space in $mount_point
            echo "no."
            check_sep_lv $mount_point
            if [ "$next_fs" -eq 1 ] ; then
                continue
            fi
        fi
    done
}

function copy_all_files {
	echo "*** Copying all required files to $toplevel_dir ***"
	echo -n "$CMD --- 1. Copying binaries to $toplevel_dir..."
	copy_files $BIN_CFG_FILE
	echo "done."
	echo -n "$CMD --- 2. Determining required shared libraries..."
	while read file ; do
		shlibs=`$LDD $file | $AWK '{ if (/=>/) { print $3} }' | $SORT -u 2>/dev/null`
#		$FIND $shlibs | $CPIO -Lpdm $toplevel_dir 2> /dev/null
		( $TAR -chpf - $shlibs 2>/dev/null ) | ( $TAR -C $toplevel_dir -xhpf - 2>/dev/null )
		for lib in $shlibs ; do
			$STRIP $toplevel_dir/$lib
		done
	done < $BIN_CFG_FILE
	echo "done."
	echo -n "$CMD --- 3. Copying config files to $toplevel_dir..."
	copy_files $CONF_CFG_FILE
	echo "done."
	echo -n "$CMD --- 4. Copying auxiliary files to $toplevel_dir..."
	copy_files $AUX_CFG_FILE
	echo "done."
}

function modify_lilo_conf {
echo "
# beginning of section added by $CMD on `$DATE +%Y/%m/%d` at `$DATE +%H:%M`
image = $BOOT_KERNEL
initrd = $INITRD
root = $ROOT_PARTITION
label = rescue
# end of section added by $CMD on `$DATE +%Y/%m/%d` at `$DATE +%H:%M`
" >> /etc/lilo.conf
if [ $? -ne 0 ] ; then
	echo "$CMD --- ERROR: modify_lilo_conf: Unable to modify \"$LILO_CONF\""
	exit 1
fi
}
-------------- next part --------------
#
# Global Variables
#

# The amount of space the files will need (in Mbytes)
final_size=0

# Used as a synonym, but in a different context
required_space=0

# A flag used to decide whether more file systems should be processed
next_fs=0

# The actual directory containing the file system layout for the (uncompressed)
# ramdisk image
toplevel_dir=""

# The file system containing $wanted_dir
fs=""
-------------- next part --------------
#
# Constants
#

# The root partition of your hard disk

ROOT_PARTITION="/dev/hda6"

# The kernel to be booted

BOOT_KERNEL="/boot/vmlinuz"

# The name of the script
CMD="main.sh"

# The file containing the names of the binaries that are supposed to be
# included in the ramdisk image (taken from /bin, /sbin/, /usr/bin, /usr/sbin)
BIN_CFG_FILE="binary_files_for_initrd"

# The same for config files (taken from /etc)
CONF_CFG_FILE="config_files_for_initrd"

# The same for auxiliary files (various files from /lib and /usr/lib)
AUX_CFG_FILE="auxiliary_files_for_initrd"

# The file containing the symlinks
SYMLINK_CFG_FILE="symlinks_for_initrd"

# The config file for LILO
LILO_CONF="/etc/lilo.conf"

# The kernel version (needed in order to figure out which kernel
# modules we need)
VERSION="$1"
[ -z "$VERSION" ] && VERSION=`uname -r`

# The path to the kernel modules
MODULES="/lib/modules/$VERSION"

# The loop device
DEVLOOP="/dev/loop0"

# The file system containing the file system layout for the ramdisk image
PREFERED_DIR="/tmp"

# The compressed ramdisk image is stored here
INITRD="/boot/initrd.gz"

# The temporary file used in conjunction with $DEVLOOP
TMP_FILE="$$"

### Various Linux/Unix tools 

RM="/bin/rm"
LS="/bin/ls"
LNS="/bin/ln -s"
DD="/bin/dd"
MOUNT="/bin/mount"
UMOUNT="/bin/umount"
LOSETUP="/sbin/losetup"
CHMOD="/bin/chmod"
EGREP="/usr/bin/egrep"
GREP="/usr/bin/grep"
SED="/usr/bin/sed"
PERL="/usr/bin/perl"
STRIP="/usr/bin/strip"
FIND="/usr/bin/find"
AWK="/usr/bin/awk"
CPIO="/usr/bin/cpio"
GZIP="/usr/bin/gzip"
EXPR="/usr/bin/expr"
LDD="/usr/bin/ldd"
SORT="/usr/bin/sort"
DF="/bin/df"
WC="/usr/bin/wc"
TAR="/bin/tar"
PWD="/bin/pwd"
MKDIR="/bin/mkdir"
TRUE="/bin/true"
VGSCAN="/sbin/vgscan"
VGCHANGE="/sbin/vgchange"
LVEXTEND="/sbin/lvextend"
RESIZE_REISERFS="/sbin/resize_reiserfs"
MKE2FS="/sbin/mke2fs"
LILO="/sbin/lilo"
DATE="/bin/date"
INSMOD="/sbin/insmod"
DEPMOD="/sbin/depmod"

# The name of the directory the config files reside in
CFG_FILE_DIR=`$PWD`
-------------- next part --------------
# This file contains the binaries that are supposed to be included in the
# RAM disk image

# Files in /bin
/bin/bash
/bin/cat
/bin/chgrp
/bin/chmod
/bin/chown
/bin/cp
/bin/date
/bin/dd
/bin/dd_rescue
/bin/df
/bin/dmesg
/bin/echo
/bin/ed
/bin/false
/bin/fuser
/bin/gzip
/bin/hostname
/bin/kill
/bin/ln
/bin/loadkeys
/bin/login
/bin/ls
/bin/mkdir
/bin/mknod
/bin/mktemp
/bin/more
/bin/mount
/bin/mv
/bin/netstat
/bin/ping
/bin/ps
/bin/pwd
/bin/rescan-scsi-bus.sh
/bin/rm
/bin/rmdir
/bin/rpm
/bin/sleep
/bin/stty
/bin/su
/bin/sync
/bin/tar
/bin/tcsh
/bin/true
/bin/umount
/bin/uname
/bin/vim

# Files in /sbin
/sbin/activate
/sbin/badblocks
/sbin/checkproc
/sbin/ctrlaltdel
/sbin/e2fsck
/sbin/fdisk
/sbin/fsck
/sbin/fsck.ext2
/sbin/halt
/sbin/fsck.minix
/sbin/hdparm
/sbin/hwclock
/sbin/ifconfig
/sbin/init
/sbin/killall5
/sbin/killproc
/sbin/lilo
/sbin/mingetty
/sbin/mke2fs
/sbin/mkfs
/sbin/mkfs.ext2
/sbin/mkfs.minix
/sbin/mkswap
/sbin/restore
/sbin/route
/sbin/sfdisk
/sbin/shutdown
/sbin/startproc
/sbin/sulogin
/sbin/swapon
/sbin/tune2fs
/sbin/update
/sbin/arp
/sbin/dump
/sbin/cfdisk
/sbin/ckraid
/sbin/depmod
/sbin/e2fsadm
/sbin/insmod.static
/sbin/insmod_ksymoops_clean
/sbin/installpkg
/sbin/kbdrate
/sbin/kerneld
/sbin/ldconfig
/sbin/losetup
/sbin/lspci
/sbin/lv*
/sbin/mdadd
/sbin/mdcreate
/sbin/mkpv
/sbin/mkraid
/sbin/mkreiserfs
/sbin/mkswap
/sbin/modinfo
/sbin/pkgtool
/sbin/pv*
/sbin/quotacheck
/sbin/quotaon
/sbin/raidstart
/sbin/rctab
/sbin/removepkg
/sbin/rmt
/sbin/runlevel
/sbin/setpci
/sbin/setserial
/sbin/setserialbits
/sbin/sln
/sbin/start-stop-daemon
/sbin/sysctl
/sbin/vg*

# Files in /usr/sbin
/usr/sbin/klogd
/usr/sbin/mklost+found
/usr/sbin/rdev
/usr/sbin/syslogd
/usr/sbin/chpasswd
/usr/sbin/cron
/usr/sbin/edquota
/usr/sbin/gpm
/usr/sbin/groupadd
/usr/sbin/groupmod
/usr/sbin/groupdel
/usr/sbin/grpck
/usr/sbin/inetd
/usr/sbin/in.rshd
/usr/sbin/in.telnetd
/usr/sbin/in.ftpd
/usr/sbin/in.fingerd
/usr/sbin/in.rlogind
/usr/sbin/john
/usr/sbin/klogconsole
/usr/sbin/newusers
/usr/sbin/pwck
/usr/sbin/pwconv
/usr/sbin/pwunconv
/usr/sbin/quotastats
/usr/sbin/raidconvert.sh
/usr/sbin/raw
/usr/sbin/rdev
/usr/sbin/repquota
/usr/sbin/safe_finger
/usr/sbin/setquota
/usr/sbin/sgcheck
/usr/sbin/sitar.pl
/usr/sbin/stinit
/usr/sbin/sshd
/usr/sbin/suserundig
/usr/sbin/syslogd
/usr/sbin/tcpd
/usr/sbin/tcpdchk
/usr/sbin/tcpdmatch
/usr/sbin/tcpdump
/usr/sbin/tcpslice
/usr/sbin/temp-watch
/usr/sbin/traceroute
/usr/sbin/useradd
/usr/sbin/useradd.local
/usr/sbin/userdel
/usr/sbin/userdel.local
/usr/sbin/usermod
/usr/sbin/vipw
/usr/sbin/visudo
/usr/sbin/warnquota

# Files in /usr/bin
/usr/bin/afio
/usr/bin/agrep
/usr/bin/alien
/usr/bin/basename
/usr/bin/bc
/usr/bin/bonnie
/usr/bin/bunzip2
/usr/bin/bzcat
/usr/bin/bzip2
/usr/bin/bzip2recover
/usr/bin/cal
/usr/bin/cat2
/usr/bin/chage
/usr/bin/chattr
/usr/bin/chfn
/usr/bin/chkdupexe
/usr/bin/chroot
/usr/bin/chsh
/usr/bin/cksum
/usr/bin/clear
/usr/bin/cmp
/usr/bin/cmp2
/usr/bin/colrm
/usr/bin/column
/usr/bin/comm
/usr/bin/compress
/usr/bin/cpio
/usr/bin/crontab
/usr/bin/csplit
/usr/bin/cut
/usr/bin/des
/usr/bin/dialog
/usr/bin/diff
/usr/bin/diff3
/usr/bin/dir
/usr/bin/dircolors
/usr/bin/dirname
/usr/bin/du
/usr/bin/egrep
/usr/bin/env
/usr/bin/expand
/usr/bin/export
/usr/bin/expr
/usr/bin/factor
/usr/bin/faillog
/usr/bin/fdformat
/usr/bin/fgrep
/usr/bin/file
/usr/bin/find
/usr/bin/find2perl
/usr/bin/finger
/usr/bin/fiz
/usr/bin/fmt
/usr/bin/fold
/usr/bin/free
/usr/bin/ftp
/usr/bin/funzip
/usr/bin/gawk
/usr/bin/gcal
/usr/bin/gcal2txt
/usr/bin/getopt
/usr/bin/gpart
/usr/bin/gpasswd
/usr/bin/gpm-root
/usr/bin/grep
/usr/bin/gzexe
/usr/bin/h2ph
/usr/bin/h2xs
/usr/bin/head
/usr/bin/hex
/usr/bin/hexdump
/usr/bin/hostid
/usr/bin/id
/usr/bin/install
/usr/bin/ipcrm
/usr/bin/ipcs
/usr/bin/jed
/usr/bin/joe
/usr/bin/join
/usr/bin/jove
/usr/bin/killall
/usr/bin/last
/usr/bin/lastlog
/usr/bin/ldd
/usr/bin/lddlibc4
/usr/bin/lddlibc5
/usr/bin/less
/usr/bin/lessecho
/usr/bin/lesskey
/usr/bin/lesspipe.sh
/usr/bin/lha
/usr/bin/locate
/usr/bin/lockfile
/usr/bin/logger
/usr/bin/logname
/usr/bin/logsurfer
/usr/bin/look
/usr/bin/lsattr
/usr/bin/lsdev
/usr/bin/lsof
/usr/bin/ltrace
/usr/bin/lynx
/usr/bin/m4
/usr/bin/mail
/usr/bin/mtools
/usr/bin/mcheck
/usr/bin/mcomp
/usr/bin/md5sum
/usr/bin/merge
/usr/bin/mesg
/usr/bin/mkinfodir
/usr/bin/mkmanifest
/usr/bin/mmv
/usr/bin/mt
/usr/bin/mtools
/usr/bin/mtst
/usr/bin/mxtar
/usr/bin/namei
/usr/bin/nc
/usr/bin/newgrp
/usr/bin/nice
/usr/bin/nl
/usr/bin/nm
/usr/bin/nohup
/usr/bin/objdump
/usr/bin/od
/usr/bin/old
/usr/bin/passwd
/usr/bin/paste
/usr/bin/patch
/usr/bin/pathchk
/usr/bin/pdiff
/usr/bin/perl
/usr/bin/perlcc
/usr/bin/perldoc
/usr/bin/pgrep
/usr/bin/pilot
/usr/bin/pinky
/usr/bin/pkgmake
/usr/bin/pkgpack
/usr/bin/pl2pm
/usr/bin/pr
/usr/bin/printenv
/usr/bin/printf
/usr/bin/procinfo
/usr/bin/quota
/usr/bin/rcp
/usr/bin/recode
/usr/bin/remsync
/usr/bin/rename
/usr/bin/renice
/usr/bin/rev
/usr/bin/rgrep
/usr/bin/rpm2cpio
/usr/bin/rpm2html
/usr/bin/rpmlocate
/usr/bin/rsh
/usr/bin/s2p
/usr/bin/scan_scsi.linux
/usr/bin/scp
/usr/bin/script
/usr/bin/scsi_inquiry
/usr/bin/scsiformat
/usr/bin/scsiinfo
/usr/bin/sdiff
/usr/bin/sed
/usr/bin/seq
/usr/bin/setfdprm
/usr/bin/setterm
/usr/bin/sg*
/usr/bin/shar
/usr/bin/size
/usr/bin/skill
/usr/bin/snice
/usr/bin/socklist
/usr/bin/sort
/usr/bin/sperl5.00503
/usr/bin/splain
/usr/bin/split
/usr/bin/sprof
/usr/bin/ssh*
/usr/bin/strace
/usr/bin/strings
/usr/bin/strip
/usr/bin/su1
/usr/bin/sudo
/usr/bin/suidperl
/usr/bin/tac
/usr/bin/tail
/usr/bin/tailf
/usr/bin/talk
/usr/bin/targ
/usr/bin/tarl
/usr/bin/tcal
/usr/bin/teachjove
/usr/bin/tee
/usr/bin/telnet
/usr/bin/tgz
/usr/bin/tic
/usr/bin/tidy
/usr/bin/time
/usr/bin/tload
/usr/bin/top
/usr/bin/touch
/usr/bin/tput
/usr/bin/tset
/usr/bin/tr
/usr/bin/tty
/usr/bin/tzselect
/usr/bin/uemacs
/usr/bin/unarj
/usr/bin/unexpand
/usr/bin/uniq
/usr/bin/units
/usr/bin/unrar
/usr/bin/unshar
/usr/bin/unzip
/usr/bin/unzipsfx
/usr/bin/updatedb
/usr/bin/uptime
/usr/bin/users
/usr/bin/utmpdump
/usr/bin/uudecode
/usr/bin/uudepipe
/usr/bin/uudeview
/usr/bin/uuencode
/usr/bin/uuenview
/usr/bin/vdir
/usr/bin/vimtutor
/usr/bin/vmstat
/usr/bin/vpass
/usr/bin/w
/usr/bin/w3m
/usr/bin/wall
/usr/bin/watch
/usr/bin/wc
/usr/bin/wdiff
/usr/bin/weblint
/usr/bin/wget
/usr/bin/whereis
/usr/bin/which
/usr/bin/who
/usr/bin/whoami
/usr/bin/wipe
/usr/bin/word2x
/usr/bin/write
/usr/bin/xargs
/usr/bin/yes
/usr/bin/ytree
/usr/bin/zdiff
/usr/bin/zforce
/usr/bin/zgrep
/usr/bin/zip
/usr/bin/zipcloak
/usr/bin/zipgrep
/usr/bin/zipnote
/usr/bin/zipsplit
/usr/bin/zmore
/usr/bin/znew
/usr/bin/zoo
/usr/bin/zsh
-------------- next part --------------
/etc/DIR_COLORS
/etc/HOSTNAME
/etc/fstab
/etc/group
/etc/host.conf
/etc/hosts
/etc/hushlogins
/etc/inittab
/etc/inputrc
/etc/issue
/etc/issue.net
/etc/ld.so.cache
/etc/ld.so.conf
/etc/lesskey
/etc/lesskey.bin
/etc/logfiles
/etc/motd
/etc/mtab
/etc/netgroup
/etc/networks
/etc/nsswitch.conf
/etc/passwd
/etc/profile*
/etc/protocols
/etc/rc.config*
/etc/services
/etc/shells
/etc/syslog.conf
/etc/termcap
/etc/ttytype
/etc/vimrc
/etc/crontab
/etc/cron.*
/etc/fdprm
/etc/filesystems
/etc/gshadow
/etc/hosts.equiv
/etc/identd.conf
/etc/inetd.conf
/etc/jed.rc
/etc/modules.conf
/etc/mime.types
/etc/mtools.conf
/etc/pam*
/etc/perm*
/etc/printcap
/etc/apsfilter*
/etc/pwdb.conf
/etc/resolv.conf
/etc/rpc
/etc/runlevel.fallback
/etc/securetty
/etc/securi*
/etc/shadow
/etc/ske*
/etc/ss*
/etc/su1*
/etc/sudoers
/etc/csh.login
/etc/csh.cshrc
/etc/zshrc
/etc/wgetrc
/etc/mailcap
/etc/lvm*
-------------- next part --------------
/lib/libresolv.so.2
/lib/libpwdb.so.0.61
/lib/security/*
/lib/*pam*
/usr/share/terminfo/*
/dev/*
/sbin/init.d/*
-------------- next part --------------
bin/awk			../usr/bin/awk
bin/basename		../usr/bin/basename
bin/compress		../usr/bin/compress
bin/csh			tcsh
bin/egrep		../usr/bin/egrep
bin/gawk		../usr/bin/gawk
bin/grep		../usr/bin/grep
bin/gtar		tar
bin/gunzip		../usr/bin/gunzip
bin/mail		../usr/bin/mail
bin/sed			../usr/bin/sed
bin/sh			bash
bin/touch		../usr/bin/touch
bin/uncompress		../usr/bin/compress
bin/vi			vim
bin/reboot		../sbin/halt
bin/pidof		../sbin/killall5
sbin/swapoff		swapon
sbin/telinit		init
sbin/insmod		insmod.static
sbin/ksyms		ksyms.static
sbin/ksyms.static	insmod
sbin/lsmod		insmod
sbin/lsmod.static	lsmod
sbin/mdrun		mdadd
sbin/mdstop		mdadd
sbin/modprobe		insmod
sbin/modprobe.static	modprobe
sbin/quotaoff		quotaon
sbin/raid0run		raidstart
sbin/raidhotadd		raidhotremove
sbin/raidhotremove	raidstart
sbin/raidstop		raidstart
sbin/rmmod		insmod
sbin/rmmod.static	rmmod
sbin/rdump		dump
sbin/rrestore		restore
usr/sbin/unique		john
usr/sbin/unshadow	john
usr/sbin/vidmode	rdev
usr/sbin/ramsize	rdev
usr/sbin/rootflags	rdev
usr/sbin/swapdev	rdev
usr/bin/awk		gawk
usr/bin/bash		../../bin/bash
usr/bin/ash		../../bin/tcsh
usr/bin/ed		../../bin/ed
usr/bin/edit		vim
usr/bin/ex		vim
usr/bin/gunzip		gzip
usr/bin/gzip		../../bin/gzip
usr/bin/jmacs		joe
usr/bin/lastb		last
usr/bin/loadkeys	../../bin/loadkeys
usr/bin/mad		mmv
usr/bin/mailx		mail
usr/bin/mattrib		mtools
usr/bin/mbadblocks	mtools
usr/bin/mcat		mtools
usr/bin/mcd		mtools
usr/bin/mcopy		mtools
usr/bin/mcp		mmv
usr/bin/mdel		mtools
usr/bin/mdeltree	mtools
usr/bin/mdu		mtools
usr/bin/mformat		mtools
usr/bin/minfo		mtools
usr/bin/mlabel		mtools
usr/bin/mln		mmv
usr/bin/mmd		mtools
usr/bin/mmount		mtools
usr/bin/mmove		mtools
usr/bin/mpartition	mtools
usr/bin/mrd		mtools
usr/bin/mread		mtools
usr/bin/mren		mtools
usr/bin/mtoolstest	mtools
usr/bin/mtype		mtools
usr/bin/mzip		mtools
usr/bin/rbash		../../bin/bash
usr/bin/red		ed
usr/bin/rjoe		joe
usr/bin/slogin		ssh
usr/bin/tcsh		../../bin/tcsh
usr/bin/uncompress	compress
usr/bin/vi		vim
usr/bin/view		vim
usr/bin/vim		../../bin/vim
usr/bin/zcat		gzip
usr/bin/zcmp		zdiff
usr/bin/zipinfo		unzip
usr/bin/zless		zmore 
etc/conf.modules	modules.conf
etc/rc.d		../sbin/init.d
usr/lib/terminfo	../../usr/share/terminfo


More information about the linux-lvm mailing list