I found 1 link google:
http://www.paulcilwa.com/writing/technical/03.assembler/BootSector/index.asp
and another
http://www.supernovah.com/Tutorials/BootSector2.php
[BITS 16]
[ORG 0x7C00]
jmp $
times 510 - ($ - $$) db 0
dw 0xAA55
piektdiena, 2014. gada 22. augusts
ceturtdiena, 2014. gada 21. augusts
WHAT LOCKS YOUR SCREEN IN XFCE
#!/bin/sh
#
# xfce4
#
# Copyright (C) 1999, 2003 Olivier Fourdan (fourdan@xfce.org)
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#
if pgrep xscreensaver > /dev/null 2>&1; then
xscreensaver-command -lock
elif pgrep -f gnome-screensaver 2>/dev/null; then
gnome-screensaver-command --lock
elif test x"`which slock 2>/dev/null`" != x""; then
slock
else
xlock $*
fi
exit 0
#
# xfce4
#
# Copyright (C) 1999, 2003 Olivier Fourdan (fourdan@xfce.org)
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#
if pgrep xscreensaver > /dev/null 2>&1; then
xscreensaver-command -lock
elif pgrep -f gnome-screensaver 2>/dev/null; then
gnome-screensaver-command --lock
elif test x"`which slock 2>/dev/null`" != x""; then
slock
else
xlock $*
fi
exit 0
sestdiena, 2014. gada 12. aprīlis
Packages that run Linux.
3.2. All Packages
Download or otherwise obtain the following packages:
- Autoconf (2.69) - 1,186 KB:
- Home page: http://www.gnu.org/software/autoconf/MD5 sum:
50f97f4159805e374639a73e2636f22e
- Automake (1.14.1) - 1,456 KB:
- Home page: http://www.gnu.org/software/automake/MD5 sum:
7fc29854c520f56b07aa232a0f880292
- Bash (4.2) - 6,845 KB:
- Home page: http://www.gnu.org/software/bash/MD5 sum:
3fb927c7c33022f1c327f14a81c0d4b0
- Bc (1.06.95) - 288 KB:
- Home page: http://www.gnu.org/software/bc/MD5 sum:
5126a721b73f97d715bb72c13c889035
- Binutils (2.24) - 22,184 KB:
- Home page: http://www.gnu.org/software/binutils/MD5 sum:
e0f71a7b2ddab0f8612336ac81d9636b
- Bison (3.0.2) - 1,882 KB:
- Home page: http://www.gnu.org/software/bison/MD5 sum:
146be9ff9fbd27497f0bf2286a5a2082
- Bzip2 (1.0.6) - 764 KB:
- Home page: http://www.bzip.org/MD5 sum:
00b516f4704d4a7cb50a1d97e6e8e15b
- Check (0.9.12) - 714 KB:
- Home page: http://check.sourceforge.net/MD5 sum:
46fe540d1a03714c7a1967dbc6d484e7
- Coreutils (8.22) - 5,210 KB:
- Home page: http://www.gnu.org/software/coreutils/MD5 sum:
8fb0ae2267aa6e728958adc38f8163a2
- DejaGNU (1.5.1) - 566 KB:
- Home page: http://www.gnu.org/software/dejagnu/MD5 sum:
8386e04e362345f50ad169f052f4c4ab
- Diffutils (3.3) - 1,170 KB:
- Home page: http://www.gnu.org/software/diffutils/MD5 sum:
99180208ec2a82ce71f55b0d7389f1b3
- E2fsprogs (1.42.9) - 5,928 KB:
- Home page: http://e2fsprogs.sourceforge.net/MD5 sum:
3f8e41e63b432ba114b33f58674563f7
- Expect (5.45) - 614 KB:
- Home page: http://expect.sourceforge.net/MD5 sum:
44e1a4f4c877e9ddc5a542dfa7ecc92b
- File (5.17) - 694 KB:
- Home page: http://www.darwinsys.com/file/MD5 sum:
e19c47e069ced7b01ccb4db402cc01d3
Note
File (5.17) may no longer be available at the listed location. The site administrators of the master download location occasionally remove older versions when new ones are released. An alternative download location that may have the correct version available can also be found at: http://www.linuxfromscratch.org/lfs/download.html#ftp. - Findutils (4.4.2) - 2,100 KB:
- Home page: http://www.gnu.org/software/findutils/MD5 sum:
351cc4adb07d54877fa15f75fb77d39f
- Flex (2.5.38) - 1,590 KB:
- Home page: http://flex.sourceforge.netMD5 sum:
b230c88e65996ff74994d08a2a2e0f27
- Gawk (4.1.0) - 2,004 KB:
- Home page: http://www.gnu.org/software/gawk/MD5 sum:
b18992ff8faf3217dab55d2d0aa7d707
- GCC (4.8.2) - 83,984 KB:
- Home page: http://gcc.gnu.org/MD5 sum:
a3d7d63b9cb6b6ea049469a0c4a43c9d
- GDBM (1.11) - 796 KB:
- Home page: http://www.gnu.org/software/gdbm/MD5 sum:
72c832680cf0999caedbe5b265c8c1bd
- Gettext (0.18.3.2) - 15,810 KB:
- Home page: http://www.gnu.org/software/gettext/MD5 sum:
241aba309d07aa428252c74b40a818ef
- Glibc (2.19) - 11,801 KB:
- Home page: http://www.gnu.org/software/libc/MD5 sum:
e26b8cc666b162f999404b03970f14e4
- GMP (5.1.3) - 1,777 KB:
- Home page: http://www.gnu.org/software/gmp/MD5 sum:
e5fe367801ff067b923d1e6a126448aa
- Grep (2.16) - 1,184 KB:
- Home page: http://www.gnu.org/software/grep/MD5 sum:
502350a6c8f7c2b12ee58829e760b44d
- Groff (1.22.2) - 3,926 KB:
- Home page: http://www.gnu.org/software/groff/MD5 sum:
9f4cd592a5efc7e36481d8d8d8af6d16
- GRUB (2.00) - 5,016 KB:
- Home page: http://www.gnu.org/software/grub/MD5 sum:
a1043102fbc7bcedbf53e7ee3d17ab91
- Gzip (1.6) - 712 KB:
- Home page: http://www.gnu.org/software/gzip/MD5 sum:
da981f86677d58a106496e68de6f8995
- Iana-Etc (2.30) - 201 KB:
- Home page: http://freshmeat.net/projects/iana-etc/MD5 sum:
3ba3afb1d1b261383d247f46cb135ee8
- Inetutils (1.9.2) - 2,188 KB:
- Home page: http://www.gnu.org/software/inetutils/MD5 sum:
aa1a9a132259db83e66c1f3265065ba2
- IPRoute2 (3.12.0) - 415 KB:
-
MD5 sum:
f87386aaaecafab95607fd10e8152c68
- Kbd (2.0.1) - 1,962 KB:
-
MD5 sum:
cc0ee9f2537d8636cae85a8c6541ed2e
- Kmod (16) - 1,408 KB:
-
MD5 sum:
3006a0287211212501cdfe1211b29f09
- Less (458) - 308 KB:
- Home page: http://www.greenwoodsoftware.com/less/MD5 sum:
935b38aa2e73c888c210dedf8fd94f49
- LFS-Bootscripts (20130821) - 34 KB:
-
MD5 sum:
e908023fc44e613ad0c81241781289e7
- Libpipeline (1.2.6) - 761 KB:
- Home page: http://libpipeline.nongnu.org/MD5 sum:
6d1d51a5dc102af41e0d269d2a31e6f9
- Libtool (2.4.2) - 2,571 KB:
- Home page: http://www.gnu.org/software/libtool/MD5 sum:
d2f3b7d4627e69e13514a40e72a24d50
- Linux (3.13.3) - 75,393 KB:
- Home page: http://www.kernel.org/MD5 sum:
ad98a0c623a124a25dab86406ddc7119
Note
The Linux kernel is updated relatively often, many times due to discoveries of security vulnerabilities. The latest available 3.13.x kernel version should be used, unless the errata page says otherwise.For users with limited speed or expensive bandwidth who wish to update the Linux kernel, a baseline version of the package and patches can be downloaded separately. This may save some time or cost for a subsequent patch level upgrade within a minor release. - M4 (1.4.17) - 1,122 KB:
- Home page: http://www.gnu.org/software/m4/MD5 sum:
12a3c829301a4fd6586a57d3fcf196dc
- Make (4.0) - 1,311 KB:
- Home page: http://www.gnu.org/software/make/MD5 sum:
571d470a7647b455e3af3f92d79f1c18
- Man-DB (2.6.6) - 1,415 KB:
- Home page: http://www.nongnu.org/man-db/MD5 sum:
5d65d66191080c144437a6c854e17868
- Man-pages (3.59) - 1,172 KB:
- Home page: http://www.kernel.org/doc/man-pages/MD5 sum:
d8e4d8287a76ee861351b905044c8e92
- MPC (1.0.2) - 619 KB:
- Home page: http://www.multiprecision.org/MD5 sum:
68fadff3358fb3e7976c7a398a0af4c3
- MPFR (3.1.2) - 1,049 KB:
- Home page: http://www.mpfr.org/MD5 sum:
e3d203d188b8fe60bb6578dd3152e05c
- Ncurses (5.9) - 2,760 KB:
- Home page: http://www.gnu.org/software/ncurses/MD5 sum:
8cb9c412e5f2d96bc6f459aa8c6282a1
- Patch (2.7.1) - 660 KB:
- Home page: http://savannah.gnu.org/projects/patch/MD5 sum:
e9ae5393426d3ad783a300a338c09b72
- Perl (5.18.2) - 13,730 KB:
- Home page: http://www.perl.org/MD5 sum:
d549b16ee4e9210988da39193a9389c1
- Pkg-config (0.28) - 1,892 KB:
-
MD5 sum:
aa3c86e67551adc3ac865160e34a2a0d
- Procps (3.3.9) - 548 KB:
- Home page: http://sourceforge.net/projects/procps-ngMD5 sum:
0980646fa25e0be58f7afb6b98f79d74
- Psmisc (22.20) - 422 KB:
- Home page: http://psmisc.sourceforge.net/MD5 sum:
a25fc99a6dc7fa7ae6e4549be80b401f
- Readline (6.2) - 2,225 KB:
-
MD5 sum:
67948acb2ca081f23359d0256e9a271c
- Sed (4.2.2) - 1,035 KB:
- Home page: http://www.gnu.org/software/sed/MD5 sum:
7ffe1c7cdc3233e1e0c4b502df253974
- Shadow (4.1.5.1) - 3,428 KB:
-
MD5 sum:
ae66de9953f840fb3a97f6148bc39a30
- Sysklogd (1.5) - 85 KB:
- Home page: http://www.infodrom.org/projects/sysklogd/MD5 sum:
e053094e8103165f98ddafe828f6ae4b
- Sysvinit (2.88dsf) - 108 KB:
- Home page: http://savannah.nongnu.org/projects/sysvinitMD5 sum:
6eda8a97b86e0a6f59dabbf25202aa6f
- Tar (1.27.1) - 1,835 KB:
- Home page: http://www.gnu.org/software/tar/MD5 sum:
e0382a4064e09a4943f3adeff1435978
- Tcl (8.6.1) - 8,551 KB:
- Home page: http://tcl.sourceforge.net/MD5 sum:
aae4b701ee527c6e4e1a6f9c7399882e
- Time Zone Data (2013i) - 214 KB:
- Home page: http://www.iana.org/time-zonesMD5 sum:
8bc69eb75bea496ebe1d5a9ab576702d
- Texinfo (5.2) - 3,724 KB:
- Home page: http://www.gnu.org/software/texinfo/MD5 sum:
cb489df8a7ee9d10a236197aefdb32c5
- Systemd (208) - 2,328 KB:
-
MD5 sum:
df64550d92afbffb4f67a434193ee165
- Udev-lfs Tarball (208) - 29 KB:
-
MD5 sum:
c0231ff619e567a9b11f912d8a7a404a
- Util-linux (2.24.1) - 3,461 KB:
- Home page: http://userweb.kernel.org/~kzak/util-linux/MD5 sum:
88d46ae23ca599ac5af9cf96b531590f
- Vim (7.4) - 9,632 KB:
- Home page: http://www.vim.orgMD5 sum:
607e135c559be642f210094ad023dc65
- Xz Utils (5.0.5) - 894 KB:
- Home page: http://tukaani.org/xzDownload: http://tukaani.org/xz/xz-5.0.5.tar.xzMD5 sum:
aa17280f4521dbeebed0fbd11cd7fa30
- Zlib (1.2.8) - 441 KB:
- Home page: http://www.zlib.net/Download: http://www.zlib.net/zlib-1.2.8.tar.xzMD5 sum:
28f1205d8dd2001f26fec1e8c2cebe37
Total size of these packages: about 322 MB
LVM2 what allows using multiple partitions of hard drive.
LVM2-2.02.105
Introduction to LVM2
The LVM2 package is a package that manages logical partitions. It allows spanning of file systems across multiple physical disks and disk partitions and provides for dynamic growing or shrinking of logical partitions.
This package is known to build and work properly using an LFS-7.5 platform.
Package Information
- Download (FTP): ftp://sources.redhat.com/pub/lvm2/LVM2.2.02.105.tgz
- Download MD5 sum: b5b3540661fc70bf329b526c1cfbcf3a
- Download size: 1.4 MB
- Estimated disk space required: 24 MB (additional 2 MB to run the test suite)
- Estimated build time: 0.3 SBU (additional 3.6 SBU to run the test suite)
LVM2 Dependencies
Optional
mdadm-3.3 (for checks) and xfsprogs-3.1.11 (for checks)
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/lvm2
Kernel Configuration
Enable the following option in the kernel configuration and recompile the kernel:
Note
There are several other Device Mapper options in the kernel beyond those listed below. In order to get reasonable results if running the regression tests, all must be enabled either internally or as a module.
Device Drivers --->
Multiple devices driver support (RAID and LVM): Y
Device mapper support: Y or M
Crypt target support: (optional)
Snapshot target: (optional)
Mirror target: (optional)
Installation of LVM2
Install LVM2 by running the following commands:
sed -i s/CPPFunction/rl_completion_func_t/ tools/lvm.c && ./configure --prefix=/usr \ --exec-prefix= \ --with-confdir=/etc \ --enable-applib \ --enable-cmdlib \ --enable-pkgconfig \ --enable-udev_sync && make
The check command must be run as the
root
user. Also the tests are known to hang if at least one partition on a hard drive is not set up as a Linux LVM partition (type 8e00). To test the results, issue: make check as the root
user.
Now, as the
root
user:make install
Command Explanations
sed -i s/CPPFunction/rl_completion_func_t/ tools/lvm.c: Corrects the use of a deprecated typedef.
--enable-applib
: This switch enables building of the shared application library.--enable-cmdlib
: This switch enables building of the shared command library. It is required when building the event daemon.--enable-pkgconfig
: This switch enables installation of pkg-config support files.--enable-udev_sync
: This switch enables synchronisation with Udev processing.--enable-dmeventd
: This switch enables building of the Device Mapper event daemon.Contents
Installed Programs:blkdeactivate, dmeventd (optional), dmsetup, fsadm, lvm, lvmconf, lvmdump, vgimportclone. There are also numerous symbolic links to lvm that implement specific functionality.
Installed Libraries:libdevmapper.so, liblvm2app.so and liblvm2cmd.so; optional: libdevmapper-event.so, libdevmapper-event-lvm2.so, libdevmapper-event-lvm2mirror.so, libdevmapper-event-lvm2snapshot.so, libdevmapper-event-lvm2raid.so, libdevmapper-event-lvm2thin.so and some under /lib/device-mapper
Installed Directories:/etc/lvm and /lib/device-mapper (optional)
Short Descriptions
utility to deactivate block device.
| |
(optional) is the Device Mapper event daemon.
| |
is a low level logical volume management tool.
| |
is an utility used to resize or check filesystem on a device.
| |
provides the command-line tools for LVM2. Commands are implemented via sympolic links to this program to manage physical devices (pv*), volume groups (vg*) and logical volumes (lv*).
| |
is a script that modifies the locking configuration in the LVM2 configuration file.
| |
is a tool used to dump various information concerning LVM2.
| |
is used to import a duplicated VG (e.g. hardware snapshot).
| |
contains the Device Mapper API functions.
|
Last updated on 2014-03-07 15:12:35 +0000
FUSE something that creates file systems.
Fuse-2.9.3
Introduction to Fuse
FUSE (Filesystem in Userspace) is a simple interface for userspace programs to export a virtual filesystem to the Linux kernel. Fuse also aims to provide a secure method for non privileged users to create and mount their own filesystem implementations.
This package is known to build and work properly using an LFS-7.5 platform.
Package Information
- Download (HTTP): http://downloads.sourceforge.net/fuse/fuse-2.9.3.tar.gz
- Download MD5 sum: 33cae22ca50311446400daf8a6255c6a
- Download size: 564 KB
- Estimated disk space required: 9.5 MB
- Estimated build time: 0.1 SBU
User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/fuse
Kernel Configuration
Enable the following options in the kernel configuration and recompile the kernel if necessary:
File systems --->
[*] FUSE (Filesystem in Userspace) support
Installation of Fuse
Note
After the configure script has finished you will see a warning shown below. You can safely disregard this warning.
configure: WARNING:
******************************************************************
* Please install util-linux version 2.18 or later which supports *
* --fake and --no-canonicalize options in mount and umount *
******************************************************************
Install Fuse by running the following commands:
./configure --prefix=/usr --disable-static INIT_D_PATH=/tmp/init.d && make
If you have Doxygen-1.8.6 installed and wish to build the API documentation, issue doxygen doc/Doxyfile.
This package does not come with a test suite.
Now, as the
root
user:make install && mv -v /usr/lib/libfuse.so.* /lib && ln -sfv ../../lib/libfuse.so.2.9.3 /usr/lib/libfuse.so && rm -rf /tmp/init.d && install -v -m755 -d /usr/share/doc/fuse-2.9.3 && install -v -m644 doc/{how-fuse-works,kernel.txt} \ /usr/share/doc/fuse-2.9.3
If you built the API documentation, install it as the
root
user by issuing the following commands:install -v -m755 -d /usr/share/doc/fuse-2.9.3/api && install -v -m644 doc/html/* \ /usr/share/doc/fuse-2.9.3/api
Command Explanations
--disable-static
: This switch prevents installation of static versions of the libraries.INIT_D_PATH=/tmp/init.d
: This parameter installs the bootscript into /tmp/init.d
as a bootscript is not required.
mv -v /usr/lib/libfuse.so.* /lib: This moves the FUSE library to the root filesystem so that it is available early in the boot process in case
/usr
is mounted on a separate partition and ntfs-3g-2014.2.15 is built with a system-installed version of FUSE.
rm -rf /tmp/init.d: This removes the unneeded bootscript.
Configuring fuse
Config Files
Some options regarding mount policy can be set in the file
/etc/fuse.conf
. To install the file run the following command as the root
user:cat > /etc/fuse.conf << "EOF" # Set the maximum number of FUSE mounts allowed to non-root users. # The default is 1000. # #mount_max = 1000 # Allow non-root users to specify the 'allow_other' or 'allow_root' # mount options. # #user_allow_other EOF
Additional information about the meaning of the configuration options are found in the man page.
Contents
Installed Programs:fusermount, mount.fuse, and ulockmgr_server
Installed Libraries:libfuse.so and libulockmgr.so
Installed Directory:/usr/include/fuse
Short Descriptions
is a set users ID root program to mount and unmount Fuse filesystems.
| |
is the command mount would call to mount a Fuse filesystem.
| |
is the Userspace Lock Manager Server for Fuse filesystems.
| |
contains the FUSE API functions.
| |
contains the Userspace Lock Manager API functions.
|
Last updated on 2014-02-17 23:16:31 +0000
INITRAMFS something that loads linux kernel.
About initramfs
The only purpose of an initramfs is to mount the root filesystem. The initramfs is a complete set of directories that you would find on a normal root filesystem. It is bundled into a single cpio archive and compressed with one of several compression algorithms.
At boot time, the boot loader loads the kernel and the initramfs image into memory and starts the kernel. The kernel checks for the presence of the initramfs and, if found, mounts it as / and runs /init. The init program is typically a shell script. Note that the boot process takes longer, possibly significantly longer, if an initramfs is used.
For most distributions, kernel modules are the biggest reason to have an initramfs. In a general distribution, there are many unknowns such as file system types and disk layouts. In a way, this is the opposite of LFS where the system capabilities and layout are known and a custom kernel is normally built. In this situation, an initramfs is rarely needed.
There are only four primary reasons to have an initramfs in the LFS environment: loading the rootfs from a network, loading it from an LVM logical volume, having an encrypted rootfs where a password is required, or for the convenience of specifying the rootfs as a LABEL or UUID. Anything else usually means that the kernel was not configured properly.
Building an initramfs
If you do decide to build an initramfs, the following scripts will provide a basis to do it. The scripts will allow specifying a rootfs via partition UUID or partition LABEL or a rootfs on an LVM logical volume. They do not support an encrypted root file system or mounting the rootfs over a network card. For a more complete capability see the LFS Hints or dracut.
To install these scripts, run the following commands as the
root
user:cat > /sbin/mkinitramfs << "EOF"
#!/bin/bash
# This file based in part on the mkinitrafms script for the LFS LiveCD
# written by Alexander E. Patrakov and Jeremy Huntwork.
copy()
{
local file
if [ "$2" == "lib" ]; then
file=$(PATH=/lib:/usr/lib type -p $1)
else
file=$(type -p $1)
fi
if [ -n $file ] ; then
cp $file $WDIR/$2
else
echo "Missing required file: $1 for directory $2"
rm -rf $WDIR
exit 1
fi
}
if [ -z $1 ] ; then
INITRAMFS_FILE=initrd.img-no-kmods
else
KERNEL_VERSION=$1
INITRAMFS_FILE=initrd.img-$KERNEL_VERSION
fi
if [ -n "$KERNEL_VERSION" ] && [ ! -d "/lib/modules/$1" ] ; then
echo "No modules directory named $1"
exit 1
fi
printf "Creating $INITRAMFS_FILE... "
binfiles="sh cat cp dd killall ls mkdir mknod mount "
binfiles="$binfiles umount sed sleep ln rm uname"
sbinfiles="udevadm modprobe blkid switch_root"
#Optional files and locations
for f in mdadm udevd; do
if [ -x /sbin/$f ] ; then sbinfiles="$sbinfiles $f"; fi
done
unsorted=$(mktemp /tmp/unsorted.XXXXXXXXXX)
DATADIR=/usr/share/mkinitramfs
INITIN=init.in
# Create a temporrary working directory
WDIR=$(mktemp -d /tmp/initrd-work.XXXXXXXXXX)
# Create base directory structure
mkdir -p $WDIR/{bin,dev,lib/firmware,run,sbin,sys,proc}
mkdir -p $WDIR/etc/{modprobe.d,udev/rules.d}
touch $WDIR/etc/modprobe.d/modprobe.conf
ln -s lib $WDIR/lib64
# Create necessary device nodes
mknod -m 640 $WDIR/dev/console c 5 1
mknod -m 664 $WDIR/dev/null c 1 3
# Install the udev configuration files
if [ -f /etc/udev/udev.conf ]; then
cp /etc/udev/udev.conf $WDIR/etc/udev/udev.conf
fi
for file in $(find /etc/udev/rules.d/ -type f) ; do
cp $file $WDIR/etc/udev/rules.d
done
# Install any firmware present
cp -a /lib/firmware $WDIR/lib
# Copy the RAID configureation file if present
if [ -f /etc/mdadm.conf ] ; then
cp /etc/mdadm.conf $WDIR/etc
fi
# Install the init file
install -m0755 $DATADIR/$INITIN $WDIR/init
if [ -n "$KERNEL_VERSION" ] ; then
if [ -x /bin/kmod ] ; then
binfiles="$binfiles kmod"
else
binfiles="$binfiles lsmod"
sbinfiles="$sbinfiles insmod"
fi
fi
# Install basic binaries
for f in $binfiles ; do
ldd /bin/$f | sed "s/\t//" | cut -d " " -f1 >> $unsorted
copy $f bin
done
# Add lvm if present
if [ -x /sbin/lvm ] ; then sbinfiles="$sbinfiles lvm dmsetup"; fi
for f in $sbinfiles ; do
ldd /sbin/$f | sed "s/\t//" | cut -d " " -f1 >> $unsorted
copy $f sbin
done
# Add udevd libraries if not in /sbin
if [ -x /lib/udev/udevd ] ; then
ldd /lib/udev/udevd | sed "s/\t//" | cut -d " " -f1 >> $unsorted
fi
# Add module symlinks if appropriate
if [ -n "$KERNEL_VERSION" ] && [ -x /bin/kmod ] ; then
ln -s kmod $WDIR/bin/lsmod
ln -s kmod $WDIR/bin/insmod
fi
# Add lvm symlinks if appropriate
# Also copy the lvm.conf file
if [ -x /sbin/lvm ] ; then
ln -s lvm $WDIR/sbin/lvchange
ln -s lvm $WDIR/sbin/lvrename
ln -s lvm $WDIR/sbin/lvextend
ln -s lvm $WDIR/sbin/lvcreate
ln -s lvm $WDIR/sbin/lvdisplay
ln -s lvm $WDIR/sbin/lvscan
ln -s lvm $WDIR/sbin/pvchange
ln -s lvm $WDIR/sbin/pvck
ln -s lvm $WDIR/sbin/pvcreate
ln -s lvm $WDIR/sbin/pvdisplay
ln -s lvm $WDIR/sbin/pvscan
ln -s lvm $WDIR/sbin/vgchange
ln -s lvm $WDIR/sbin/vgcreate
ln -s lvm $WDIR/sbin/vgscan
ln -s lvm $WDIR/sbin/vgrename
ln -s lvm $WDIR/sbin/vgck
# Conf file(s)
cp -a /etc/lvm $WDIR/etc
fi
# Install libraries
sort $unsorted | uniq | while read library ; do
if [ "$library" == "linux-vdso.so.1" ] ||
[ "$library" == "linux-gate.so.1" ]; then
continue
fi
copy $library lib
done
cp -a /lib/udev $WDIR/lib
# Install the kernel modules if requested
if [ -n "$KERNEL_VERSION" ]; then
find \
/lib/modules/$KERNEL_VERSION/kernel/{crypto,fs,lib} \
/lib/modules/$KERNEL_VERSION/kernel/drivers/{block,ata,md,firewire} \
/lib/modules/$KERNEL_VERSION/kernel/drivers/{scsi,message,pcmcia,virtio} \
/lib/modules/$KERNEL_VERSION/kernel/drivers/usb/{host,storage} \
-type f 2> /dev/null | cpio --make-directories -p --quiet $WDIR
cp /lib/modules/$KERNEL_VERSION/modules.{builtin,order} \
$WDIR/lib/modules/$KERNEL_VERSION
depmod -b $WDIR $KERNEL_VERSION
fi
( cd $WDIR ; find . | cpio -o -H newc --quiet | gzip -9 ) > $INITRAMFS_FILE
# Remove the temporary directory and file
rm -rf $WDIR $unsorted
printf "done.\n"
EOF
chmod 0755 /sbin/mkinitramfs
mkdir -p /usr/share/mkinitramfs && cat > /usr/share/mkinitramfs/init.in << "EOF" #!/bin/sh PATH=/bin:/usr/bin:/sbin:/usr/sbin export PATH problem() { printf "Encountered a problem!\n\nDropping you to a shell.\n\n" sh } no_device() { printf "The device %s, which is supposed to contain the\n" $1 printf "root file system, does not exist.\n" printf "Please fix this problem and exit this shell.\n\n" } no_mount() { printf "Could not mount device %s\n" $1 printf "Sleeping forever. Please reboot and fix the kernel command line.\n\n" printf "Maybe the device is formatted with an unsupported file system?\n\n" printf "Or maybe filesystem type autodetection went wrong, in which case\n" printf "you should add the rootfstype=... parameter to the kernel command line.\n\n" printf "Available partitions:\n" } do_mount_root() { mkdir /.root [ -n "$rootflags" ] && rootflags="$rootflags," rootflags="$rootflags$ro" case "$root" in /dev/* ) device=$root ;; UUID=* ) eval $root; device="/dev/disk/by-uuid/$UUID" ;; LABEL=*) eval $root; device="/dev/disk/by-label/$LABEL" ;; "" ) echo "No root device specified." ; problem ;; esac while [ ! -b "$device" ] ; do no_device $device problem done if ! mount -n -t "$rootfstype" -o "$rootflags" "$device" /.root ; then no_mount $device cat /proc/partitions while true ; do sleep 10000 ; done else echo "Successfully mounted device $root" fi } init=/sbin/init root= rootdelay= rootfstype=auto ro="ro" rootflags= device= mount -n -t devtmpfs devtmpfs /dev mount -n -t proc proc /proc mount -n -t sysfs sysfs /sys mount -n -t tmpfs tmpfs /run read -r cmdline < /proc/cmdline for param in $cmdline ; do case $param in init=* ) init=${param#init=} ;; root=* ) root=${param#root=} ;; rootdelay=* ) rootdelay=${param#rootdelay=} ;; rootfstype=*) rootfstype=${param#rootfstype=} ;; rootflags=* ) rootflags=${param#rootflags=} ;; ro ) ro="ro" ;; rw ) ro="rw" ;; esac done # udevd location depends on version if [ -x /sbin/udevd ]; then UDEV_PATH=/sbin else UDEV_PATH=/lib/udev fi ${UDEV_PATH}/udevd --daemon --resolve-names=never udevadm trigger udevadm settle if [ -f /etc/mdadm.conf ] ; then mdadm -As ; fi if [ -x /sbin/vgchange ] ; then /sbin/vgchange -a y > /dev/null ; fi if [ -n "$rootdelay" ] ; then sleep "$rootdelay" ; fi do_mount_root killall -w ${UDEV_PATH}/udevd exec switch_root /.root "$init" "$@" EOF
Using an initramfs
Required Runtime Dependency
To build an initramfs, run the following as the
root
user:mkinitramfs [KERNEL VERSION]
The optional argument is the directory where the appropriate kernel modules are located. This must be a subdirectory of
/lib/modules
. If no modules are specified, then the initramfs is named initrd.img-no-kmods. If a kernel version is specified, the initrd is named initrd.img-$KERNEL_VERSION and is only appropriate for the specific kernel specified. The output file will be placed in the current directory.
After generating the initrd, copy it to the
/boot
directory.
Now edit
/boot/grub/grub.cfg
and add a new menuentry. Below are several examples.# Generic initramfs and root fs identified by UUID menuentry "LFS Dev (LFS-7.0-Feb14) initrd, Linux 3.0.4" { linux /vmlinuz-3.0.4-lfs-20120214 root=UUID=54b934a9-302d-415e-ac11-4988408eb0a8 ro initrd /initrd.img-no-kmods }
# Generic initramfs and root fs on LVM partition menuentry "LFS Dev (LFS-7.0-Feb18) initrd lvm, Linux 3.0.4" { linux /vmlinuz-3.0.4-lfs-20120218 root=/dev/mapper/myroot ro initrd /initrd.img-no-kmods }
# Specific initramfs and root fs identified by LABEL menuentry "LFS Dev (LFS-7.1-Feb20) initrd label, Linux 3.2.6" { linux /vmlinuz-3.2.6-lfs71-120220 root=LABEL=lfs71 ro initrd /initrd.img-3.2.6-lfs71-120220 }
Finally, reboot the system and select the desired system.
Abonēt:
Ziņas (Atom)