1240 lines
63 KiB
Plaintext
1240 lines
63 KiB
Plaintext
Linux ATA RAID HOWTO
|
||
|
||
Murty Rompalli
|
||
|
||
murty@solar.m u r t y.n e t
|
||
|
||
|
||
April 26, 2002
|
||
Revision History
|
||
Revision 2.0 2002-05-10 Revised by: mr
|
||
Major enhancements
|
||
Revision 1.3 2002-05-07 Revised by: jyg
|
||
format fixes
|
||
Revision 1.2 2002-04-30 Revised by: mr
|
||
Minor fixes
|
||
Revision 1.1 2002-04-28 Revised by: ldl
|
||
Some minor changes and sgml-improvements
|
||
Revision 1.0 2002-04-26 Revised by: mr
|
||
Initial Release
|
||
|
||
|
||
RAID is not limited to expensive SCSI disks anymore as more and more
|
||
motherboard manufacturers are introducing motherboards with onboard RAID
|
||
support for inexpensive IDE disks, known as ATA RAID. Promise Technolgy and
|
||
HighPoint are two companies that dominate this ATA RAID market. This HOWTO
|
||
document explains how to install Linux on an Intel Pentium compatible
|
||
computer with an ATA RAID Controller (onboard chip or seperate card), single
|
||
or multiple processors and atleast two hard disks. Currently, this document
|
||
covers installing RedHat Linux 7.2 with Promise FastTrack ATA RAID Controller
|
||
only.
|
||
|
||
-----------------------------------------------------------------------------
|
||
Table of Contents
|
||
1. Introduction
|
||
1.1. Copyright Information
|
||
1.2. Disclaimer
|
||
1.3. New Versions
|
||
1.4. Credits
|
||
1.5. Feedback
|
||
1.6. Translations
|
||
|
||
|
||
2. Requirements
|
||
3. Prepare Promise Driver Floppy
|
||
4. Preparing RedHat 7.2 CDs
|
||
5. Installing Red Hat 7.2
|
||
6. Installing Native Linux RAID
|
||
7. Installing on an existing Linux system
|
||
7.1. Append Line
|
||
7.2. Determining the Append Line
|
||
7.3. Setting Up RAID 1
|
||
|
||
|
||
8. Upgrading Kernel
|
||
8.1. Promise Technology (ft) Driver with OS on RAID mirror
|
||
8.2. Promise Technology (ft) Driver with non-OS data on RAID mirror
|
||
8.3. Linux Native (ataraid) Driver with OS on RAID mirror
|
||
8.4. Linux Native (ataraid) Driver with non-OS data on RAID mirror
|
||
|
||
|
||
9. Disabling RAID feature on Promise FastTrack
|
||
9.1. Case 1: OS not using RAID
|
||
9.2. Case 2: OS is using RAID
|
||
|
||
|
||
10. Tips and Important Notes
|
||
11. For more information
|
||
A. How is this document generated
|
||
|
||
1. Introduction
|
||
|
||
The goal of this HOWTO document is to explain how to setup RAID 1 (mirroring)
|
||
with the two hard disks and install bootable RedHat Linux Operating System on
|
||
the mirror device. This document discusses both methods of achieving this
|
||
goal: 1. Using Promise supplied driver 2. Using Linux native RAID. If you
|
||
choose the first method (using Promise supplied driver), you must use the
|
||
Kernel 2.4.7-10 that comes with RedHat 7.2 CD. If you choose the second
|
||
method, you can upgrade the kernel to the latest kernel (2.4.18). This
|
||
document does not discuss Striping or other disk configurations, although the
|
||
author believes that this document might help setup those configurations.
|
||
This document does not yet cover: 1. Installation using GRUB instead of LILO
|
||
and 2. Installation with Latest development kernels (2.5.x).
|
||
|
||
First of all we need a bit of legalese. Recent development shows it is quite
|
||
important.
|
||
-----------------------------------------------------------------------------
|
||
|
||
1.1. Copyright Information
|
||
|
||
© 2002 Murty Rompalli
|
||
|
||
This document is copyrighted © 2002 Murty Rompalli and is distributed under
|
||
the terms of the [http://www.gnu.org/copyleft/fdl.txt] GNU Free Documentation
|
||
License and additional terms described below.
|
||
|
||
This Linux HOWTO document may be reproduced and distributed in whole or in
|
||
part, in any medium physical or electronic, as long as this copyright notice
|
||
is retained on all copies. Commercial redistribution is allowed and
|
||
encouraged; however, the author would like to be notified of any such
|
||
distributions.
|
||
|
||
All translations, derivative works, or aggregate works incorporating this
|
||
Linux HOWTO document must be covered under this copyright notice. That is,
|
||
you may not produce a derivative work from this HOWTO document and impose
|
||
additional restrictions on its distribution. Exceptions to these rules may be
|
||
granted under certain conditions; please contact the Linux HOWTO coordinator
|
||
at this address <linux-howto@metalab.unc.edu>.
|
||
|
||
In short, the author wishes to promote dissemination of this information
|
||
through as many channels as possible but wish to retain copyright on this
|
||
HOWTO document, and would like to be notified of any plans to redistribute
|
||
this HOWTO document.
|
||
-----------------------------------------------------------------------------
|
||
|
||
1.2. Disclaimer
|
||
|
||
No liability for the contents of this documents can be accepted. Use the
|
||
concepts, examples and other content at your own risk. As this is a new
|
||
edition of this document, there may be errors and inaccuracies, that may of
|
||
course be damaging to your system. Proceed with caution, and although this is
|
||
highly unlikely, the author does not take any responsibility for that.
|
||
|
||
All copyrights are held by their by their respective owners, unless
|
||
specifically noted otherwise. Use of a term in this document should not be
|
||
regarded as affecting the validity of any trademark or service mark.
|
||
|
||
Naming of particular products or brands should not be seen as endorsements.
|
||
|
||
You are strongly recommended to take a backup of your system before major
|
||
installation and backups at regular intervals.
|
||
-----------------------------------------------------------------------------
|
||
|
||
1.3. New Versions
|
||
|
||
The newest version of this HOWTO will always be made available on my website
|
||
[http://www.murty.net/ataraid/] http://www.murty.net/ataraid/, or you may
|
||
contact me directly at <murty at solar . murty . net> to check if there is a
|
||
newer version.
|
||
|
||
Currently, this document is available in the following formats:
|
||
|
||
* [ataraid.html] HTML.
|
||
|
||
* [ataraid.txt] plain text.
|
||
|
||
* [ataraid.pdf] Adobe PDF.
|
||
|
||
* gzipped postscript (US letter format).
|
||
|
||
* [ataraid.sgml] SGML source.
|
||
|
||
* [ataraid.dvi.gz] gzipped DVI file.
|
||
|
||
* [ataraid.tex.gz] gzipped TeX (to be used with jadetex).
|
||
|
||
|
||
Note that paper sizes vary in the world, A4 and US letter differ
|
||
significantly. You might also wish to consider using the universal format
|
||
(8.27x11in; 210x279mm).
|
||
-----------------------------------------------------------------------------
|
||
|
||
1.4. Credits
|
||
|
||
Your name here, if you contribute :)
|
||
|
||
Luc de Louw <luc at delouw.ch> corrected errors in my SGML source.
|
||
|
||
Joy Y Goodreau <joyg at us.ibm.com> corrected errors in my SGML source.
|
||
|
||
In this version I have the pleasure of acknowledging:
|
||
|
||
Alain Portal <alain.portal at free.fr>, Service Commun de Microscopie
|
||
Electronique for proof-reading and correcting mistakes.
|
||
-----------------------------------------------------------------------------
|
||
|
||
1.5. Feedback
|
||
|
||
Feedback is most certainly welcome for this document. Without your
|
||
submissions and input, this document wouldn't exist. Please send your
|
||
additions, comments and criticisms to the following email address : <murty at
|
||
solar. murty . net>.
|
||
-----------------------------------------------------------------------------
|
||
|
||
1.6. Translations
|
||
|
||
Please help International users who do not speak English. You are encouraged
|
||
to translate this document to a foreign language. Please notify the author if
|
||
you translated or would like to translate this document into a foreign
|
||
language. The following translation efforts are already under way.
|
||
|
||
* French Translation is coming soon. Thanks go to Alain Portal.
|
||
|
||
|
||
-----------------------------------------------------------------------------
|
||
2. Requirements
|
||
|
||
This section lists what items are required before you start installing on
|
||
your computer.
|
||
|
||
* Two blank floppies, DOS formatted. On a working linux computer, you can
|
||
type mkfs.msdos /dev/fd0
|
||
|
||
* Red Hat Linux 7.2 CDs 1 and 2 (3 and 4 contain SRPMS and are not
|
||
required)
|
||
|
||
* Internet connection available
|
||
|
||
* Your computer with working CD, floppy,10/100 ethernet card support
|
||
|
||
* Patience
|
||
|
||
|
||
-----------------------------------------------------------------------------
|
||
3. Prepare Promise Driver Floppy
|
||
|
||
1. Download appropriate driver from one of the two sites below and save the
|
||
driver on one of the blank floppies. You can do this on any computer
|
||
connected to Internet.
|
||
|
||
+ [http://www.promise.com.tw/support/file/rhup-ftb14.tgz] Driver for
|
||
Single Processor Machine
|
||
|
||
+ [http://www.promise.com.tw/support/file/rhsmp-ft12014.tgz] Driver for
|
||
Multiple Processor Machine
|
||
|
||
|
||
2. Insert the floppy with the driver tar ball into a working Linux computer
|
||
and type:
|
||
|
||
+---------------------------------------------------------------+
|
||
|mount /dev/fd0 /mnt/floppy |
|
||
|cd /mnt/floppy |
|
||
|cp rhsmp-ft12014.tgz /tmp |
|
||
|tar xvzf /tmp/rhsmp-ft12014.tgz |
|
||
|cd / |
|
||
|umount /mnt/floppy |
|
||
+---------------------------------------------------------------+
|
||
|
||
3. Label the floppy »Promise FastTrack driver« and set it aside.
|
||
|
||
|
||
-----------------------------------------------------------------------------
|
||
4. Preparing RedHat 7.2 CDs
|
||
|
||
Note NOTE
|
||
If you already have Red Hat Linux 7.2 CDs 1 and 2, skip this step.
|
||
Otherwise, read this step to learn how you can get them for free.
|
||
|
||
1. Logon to a Windows computer that has a CD Writer drive installed and
|
||
setup properly. Insert a blank CD-R into the CD Writer.
|
||
|
||
2. Point your browser to the Red Hat Web site: [ftp://ftp.redhat.com/pub/
|
||
redhat/linux/7.2/en/iso/i386/] ftp://ftp.redhat.com/pub/redhat/linux/7.2/
|
||
en/iso/i386/.
|
||
|
||
3. Browse and locate enigma-disc1.iso (the first disk of Red Hat 7.2), and
|
||
save this file to your Windows desktop.
|
||
|
||
4. Right-click on the iso image created on your desktop and choose "Record
|
||
to CD" It will then write the iso image onto your CD-R and create disk-1.
|
||
|
||
5. Repeat the procedure for the second iso file named enigma-disc2.iso on
|
||
[ftp://ftp.redhat.com/pub] ftp.redhat.com/pub.
|
||
|
||
6. Test to make sure your CD-Rs are indeed readable. If you click on »My
|
||
Computer« and click on the CD Writer Drive icon, you should be able to
|
||
browse the contents of the CD-R.
|
||
|
||
7. Label the CD-Rs properly: RH 7.2 disk-1 and RH 7.2 disk-2
|
||
|
||
|
||
-----------------------------------------------------------------------------
|
||
5. Installing Red Hat 7.2
|
||
|
||
Once you have created your CDs, you are ready to begin installing Red Hat 7.2
|
||
on your Linux system.
|
||
|
||
1. Restart the computer and press Cntrl-F when you see FastTrack BIOS prompt
|
||
on screen. This will take you into the Promise FastTrack BIOS.
|
||
|
||
2. Inside this BIOS, choose "delete array," "define array," and "choose
|
||
Mirror."
|
||
|
||
3. Press Cntrl-Y to save.
|
||
|
||
4. Choose »Create Only« and ESC to reboot. When it reboots, you should see
|
||
that Promise FastTrack now has 1x2 RAID Mirror defined over your two hard
|
||
disks connected to FastTrack controller.
|
||
|
||
5. Insert your Red Hat 7.2, disk-1 into your CD-ROM and reboot.
|
||
|
||
6. At the boot-prompt, type:
|
||
|
||
+---------------------------------------------------------------+
|
||
|linux noprobe |
|
||
+---------------------------------------------------------------+
|
||
|
||
7. Now, installation will begin. Choose »Add device« and scroll through the
|
||
list of available drivers to see if Promise FastTrack is listed. If it is
|
||
not listed, press F2 to load external driver from a floppy. Insert your
|
||
Promise FastTrack driver floppy and hit "OK."
|
||
|
||
8. Continue with installation. Choose only ext3 type partitions for now. You
|
||
can make ext2 partions at the very end, if you really need them.
|
||
|
||
9. When the system you to create Boot Floppy, insert a blank floppy disk.
|
||
The Red Hat installation program will create a Boot Floppy disk.
|
||
|
||
Note NOTE
|
||
Please do not click on »Skip boot disk creation«. If you
|
||
skip this step and do not create a Boot Floppy disk, you
|
||
will be very sorry later.
|
||
|
||
10. When the install asks you to choose Boot loader configuration, please
|
||
choose »LILO only«. Do not choose »GRUB« as your boot loader.
|
||
|
||
When the installation is finished, you will see »Congratulations« screen.
|
||
|
||
11. Press Cntrl-ALT-F2 to switch to tty2.
|
||
|
||
12. At the shell prompt, type:
|
||
|
||
+---------------------------------------------------------------+
|
||
|cd /mnt/sysimage/lib/modules/2.4.7-10/kernel/drivers/scsi |
|
||
+---------------------------------------------------------------+
|
||
|
||
13. Type ls and make sure the file ft.o exists. If not, you are going to need
|
||
to manually install the module ft.o as follows:
|
||
|
||
a. Make sure your Driver floppy is mounted. Go into the floppy and type
|
||
|
||
+------------------------------------------------------------+
|
||
|mv module.cgz /tmp |
|
||
|cd /tmp |
|
||
|gzip -dc module.cgz | cpio -idumv |
|
||
+------------------------------------------------------------+
|
||
|
||
b. Now, you will see a bunch of directories created under /tmp.
|
||
|
||
+----------------------------------------------------------------+
|
||
|cd /tmp/`uname -r` |
|
||
|cp ft.o /mnt/sysimage/lib/modules/`uname -r`/kernel/drivers/scsi|
|
||
+----------------------------------------------------------------+
|
||
|
||
c. At the shell prompt, type:
|
||
|
||
+------------------------------------------------------------+
|
||
|less /mnt/sysimage/etc/lilo.conf |
|
||
+------------------------------------------------------------+
|
||
|
||
Check to see that the lilo.conf looks good. Especially, it should
|
||
have the initrd= line and the corresponding initrd.img file must
|
||
exist in /mnt/sysimage/boot. If not, you are going to create it
|
||
manually as follows:
|
||
|
||
+-------------------------------------------------------------+
|
||
|/mnt/sysimage/usr/sbin/chroot /mnt/sysimage /sbin/mkinitrd \ |
|
||
|--preload jbd \ |
|
||
|--preload ext3 \ |
|
||
|--preload scsi_mod \ |
|
||
|--with ft \ |
|
||
|/boot/initrd.img 2.4.7-10 |
|
||
+-------------------------------------------------------------+
|
||
|
||
|
||
14. Now, remove the floppy and the CD, and reboot. At this point, pray that
|
||
your computer will boot without any problems.
|
||
|
||
15. If it does not boot, insert your Boot Floppy and reboot and login; And
|
||
then repair as follows:
|
||
|
||
a. Make sure /boot/initrd.img exists. Make sure /lib/modules/2.4.7-10/
|
||
kernel/drivers/scsi/ft.o exists (If not you have to manually fix
|
||
these issues as explained above)
|
||
|
||
b. Type: /sbin/lilo
|
||
|
||
c. Now, remove floppy and reboot. Your machine should boot into your new
|
||
machine now using Promise Driver.
|
||
|
||
|
||
16. Type df -k and you should see your hard disks as /dev/sdaX instead of /
|
||
dev/hdaX. This is because the Promise Driver is actually a special type
|
||
of Software Emulation RAID, not exactly Hardware RAID. (Promise RAID
|
||
works through a BIOS Hack).
|
||
|
||
|
||
|
||
|
||
If your machine is SMP, you will have to manually create initrdsmp.img, when
|
||
you boot into Uniprocessor Kernel as shown below, and edit /etc/lilo.conf and
|
||
then test to see you can boot into SMP system.
|
||
|
||
1. When you boot your machine into 2.4.7-10 uniprocessor kernel, type the
|
||
following to make initrdsmp.img to be used for 2.4.7-10smp kernel:
|
||
|
||
+---------------------------------------------------------------+
|
||
|/sbin/mkinitrd \ |
|
||
|--preload jbd \ |
|
||
|--preload ext3 \ |
|
||
|--preload scsi_mod \ |
|
||
|--with ft \ |
|
||
|/boot/initrdsmp.img 2.4.7-10smp |
|
||
+---------------------------------------------------------------+
|
||
|
||
Note NOTE
|
||
If you are tired of remembering the command to create initrd
|
||
files, dowload my [files/geninitrd.txt] geninitrd script and
|
||
keep it handy.
|
||
|
||
2. Adjust your /etc/lilo.conf accordingly for 2.4.7-10smp (the SMP kernel
|
||
section), type /sbin/lilo and reboot into the SMP kernel. Here is how /
|
||
etc/lilo.conf should look like.
|
||
|
||
|
||
At this point, you have a working Red Hat 7.2 machine with SMP support, if
|
||
applicable. If you are happy with the fact that you are running a fake
|
||
Hardware RAID from Promise FastTrack using SCSI Emulation, then read no
|
||
further.
|
||
|
||
Because Promise Driver is a SCSI emulation, it puts a lot of load on CPU(s).
|
||
Read on if you want to enable true Linux native RAID and get rid of this
|
||
Promise SCSI emulation.
|
||
-----------------------------------------------------------------------------
|
||
|
||
6. Installing Native Linux RAID
|
||
|
||
The first step you want to take is to configure your networking and connect
|
||
your computer to Internet, which is still running under Promise Driver SCSI
|
||
emulation. Next you will install native Linux RAID.
|
||
|
||
|
||
|
||
1. Go to [http://www.kernel.org/] www.kernel.org and download latest kernel
|
||
2.4.18.tar.gz.
|
||
|
||
2. Configure your kernel:
|
||
|
||
+-------------------------------------------------------------------------------+
|
||
|cd /usr/src/ |
|
||
|tar xvzf linux-2.4.18.tar.gz |
|
||
|cd linux # cd to kernel source directory just created by tar |
|
||
|cp config.txt .config #(See NOTE below to find out where to get config.txt) |
|
||
|make menuconfig |
|
||
+-------------------------------------------------------------------------------+
|
||
|
||
Note NOTE
|
||
You can download a working config.txt file [files/
|
||
config.txt] HERE. You can, of course, modify this to suit
|
||
your needs either directly in a text editor or by typing
|
||
make menuconfig as explained above. It is easy to make
|
||
mistakes if you are editing .config directly in vi or emacs.
|
||
Therefore, it is recommended to use Menu Interface by typing
|
||
make menuconfig.
|
||
|
||
3. Enable all the following in the kernel statically (NOT as modules):
|
||
|
||
+----------------------------------------------------------------------------+
|
||
| ATA/IDE/MFM/RLL Support --> |
|
||
| <*> ATA/IDE/MFM/RLL Support |
|
||
| IDE/ATA/ATAPI Block Devices --> |
|
||
| <*> Enhanced ATA/IDE/MFM/RLL disk/cdrom/tape/floppy support |
|
||
| <*> Include IDE/ATA-2 Disk Support |
|
||
| [*] Use multi-mode by default |
|
||
| Include IDE/ATAPI CDROM support |
|
||
| [*] Generic PCI IDE chipset support |
|
||
| [*] Sharing PCI IDE interrupt support |
|
||
| [*] Generic PCI Bus master DMA support |
|
||
| [*] Use PCI DMA by default when available |
|
||
| [*] Intel PIIXn chipset support |
|
||
| [*] PIIXn tuning support |
|
||
| [*] Promise PDC202{46|62|65|67|68} support |
|
||
| [*] Special UDMA Feature |
|
||
| [*] Special FastTrack Feature |
|
||
| [*] VIA 82CXXX chipset support |
|
||
| <*> Support for IDE RAID controllers |
|
||
| <*> Support Promise Software RAID (fasttrack) |
|
||
+----------------------------------------------------------------------------+
|
||
|
||
4. After you have enabled static features as shown above, make any more
|
||
changes that you would like to make to suit your environment.
|
||
|
||
5. Save the kernel configuration. It is saved to .config in the current
|
||
directory. Please back up this file. If you dont do so, you will regret
|
||
it later. Copy .config file in a blank floppy or in /root
|
||
|
||
6. Build and install the kernel like you normally do, by typing:
|
||
|
||
+---------------------------------------------------------------+
|
||
|make dep ; make clean ; make && make install |
|
||
|make modules && make modules_install |
|
||
+---------------------------------------------------------------+
|
||
|
||
|
||
Look at /etc/lilo.conf to make sure new lines are added to boot your new
|
||
kernel 2.4.18. Note that there should not be an initrd= line for this new
|
||
kernel in /etc/lilo.conf. That is, our new kernel will boot itself without
|
||
depending on a initrd.img unlike your current 2.4.7-10 kernel.
|
||
|
||
Now adjust /etc/lilo.conf as follows:
|
||
|
||
1. Locate the root=/dev/sdaX line for the new kernel in /etc/lilo.conf.
|
||
Change this to root=/dev/ataraid/d0pX where X is a number 1 through 16.
|
||
Save your changes.
|
||
|
||
2. Type:
|
||
|
||
+---------------------------------------------------------------+
|
||
|/sbin/lilo |
|
||
+---------------------------------------------------------------+
|
||
|
||
3. If you chose any ext2 partitions during installation, you should comment
|
||
them out in /etc/fstab for now.(Best thing is: Forget ext2 in this whole
|
||
process)
|
||
|
||
4. Remove all floppies and CDs, and reboot by typing:
|
||
|
||
+---------------------------------------------------------------+
|
||
|sync;sync;reboot |
|
||
+---------------------------------------------------------------+
|
||
|
||
5. At the LILO prompt, type your new kernel lable corresponding to 2.4.18
|
||
Your computer should then boot into your new kernel.
|
||
|
||
6. Login and type df -k to make sure you see /dev/ataraid/d0X entries
|
||
instead of earlier /dev/sdaX entries.
|
||
|
||
Note NOTE
|
||
You may see some errors related to mounting swap device at
|
||
the time of booting into new kernel. These are harmless. You
|
||
should edit /etc/fstab to change any sdaX entries to ataraid
|
||
/d0pX entries.
|
||
|
||
7. Now, connect your computer to Internet and download lilo-22.tar.gz (the
|
||
latest version of lilo program) from the Internet.
|
||
|
||
8. Remove the existing lilo on your computer by typing: rpm -e --nodeps lilo
|
||
|
||
9. Install new version of lilo as follows:
|
||
|
||
+---------------------------------------------------------------------+
|
||
|tar xvzf lilo-22.tar.gz |
|
||
|cd lilo-22 # cd to lilo source directory just created by tar |
|
||
|./QuickInst.sh |
|
||
+---------------------------------------------------------------------+
|
||
|
||
10. Say "Yes" to questions the system will ask you.
|
||
|
||
11. Ignore any errors except if /sbin/lilo is not created.
|
||
|
||
12. Adjust /etc/lilo.conf as follows:
|
||
|
||
+ Replace linear by lba32
|
||
|
||
+ Delete line "compact"
|
||
|
||
+ Change vga= line to vga=normal
|
||
|
||
+ Change boot=/dev/sda line to boot=/dev/ataraid/dN (where N is the
|
||
partition number on which your root file system exists. Type df -k /
|
||
to find out your root partition number).
|
||
|
||
+ Make sure that default=linux-2.4.18 (where linux-2.4.18 is the label
|
||
given to boot your new kernel: 2.4.18)
|
||
|
||
|
||
13. Save changes to the file and type: /sbin/lilo
|
||
|
||
14. Reboot the system and cross your fingers.
|
||
|
||
|
||
Here is how the final /etc/lilo.conf should look like.
|
||
|
||
If everything comes up without any errors, time to celebrate!!
|
||
-----------------------------------------------------------------------------
|
||
|
||
7. Installing on an existing Linux system
|
||
|
||
This section explains how to install Linux Native ATA RAID on non-OS disks
|
||
you may have on a running Linux machine. Non-OS disks are those which do not
|
||
contain any Linux OS partitions such as /, /usr, /var, /boot. In other words,
|
||
we have a working Linux machine with two free disks and we want to setup ATA
|
||
RAID mirror (raid 1) on those two disks. When we save important data on such
|
||
a mirror device, our data is protected. Ofcourse, like any other RAID 1, we
|
||
will experience improved read speeds while reading the data and slightly
|
||
decreased write speeds while modifying or adding new data to the mirror
|
||
device. Therefore, using RAID 1 for data disks is recommended if the data
|
||
disk is more frequently read than written to. A web server hosting rarely
|
||
changing web sites is a good example where web content is rarely modified but
|
||
very frequently accessed by users.
|
||
|
||
Here are the steps to install non-OS ATA RAID if your RAID chip is from
|
||
Promise Technology:
|
||
|
||
* Find out IO address numbers and IRQ number(s) for your Promise RAID chip/
|
||
card.
|
||
|
||
* Edit /etc/lilo.conf and insert appropriate Append Line
|
||
|
||
* Enable ataraid support either by automatically loading ataraid module
|
||
when your Linux machine starts up or by statically building ataraid
|
||
support into your kernel
|
||
|
||
|
||
-----------------------------------------------------------------------------
|
||
7.1. Append Line
|
||
|
||
For the purpose of understanding various tasks involving Promise FastTrack
|
||
RAID such as upgrading or troubleshooting, we introduce a noun: Append Line
|
||
|
||
All the ide options you pass at the LILO boot: prompt at the time of booting,
|
||
when put together as a string, make up the Append Line. All the ide options
|
||
in double quotes after append= keyword in /etc/lilo.conf also make up the
|
||
Append Line.
|
||
|
||
For example, if you type
|
||
|
||
linux-new ide2=0x0001,0x0009,9 ide3=0x2000,0x2009,10 ide4=none nousb expert
|
||
root=/dev/hda3
|
||
|
||
at boot: prompt at the time of booting your Linux computer, then Append Line
|
||
is the string
|
||
|
||
ide2=0x0001,0x0009,9 ide3=0x2000,0x2009,10 ide4=none.
|
||
|
||
Similarly, if your /etc/lilo.conf has the following section, your Append Line
|
||
is
|
||
|
||
ide2=0x9400,0x9002 ide3=0x8800,0x8402.
|
||
|
||
+---------------------------------------------------------------------------+
|
||
|image=/boot/vmlinuz-2.4.9-10 |
|
||
| label=linuxold |
|
||
| read-only |
|
||
| root=/dev/hde9 |
|
||
| append="nousb ide2=0x9400,0x9002 ide3=0x8800,0x8402" |
|
||
| initrd="initrd.img" |
|
||
+---------------------------------------------------------------------------+
|
||
|
||
When we experience problems booting a Linux machine with RAID, we may have to
|
||
use an appropriate Append Line. Therefore, it is important to determine and
|
||
write down the Append Line. This will help you fix your problems later or
|
||
upgrade your kernel smoothly or add/remove additional hard disks.
|
||
-----------------------------------------------------------------------------
|
||
|
||
7.2. Determining the Append Line
|
||
|
||
To determine the correct Append Line, we should first know how all our ide
|
||
devices are connected. IDE devices can be hard disks, ATAPI CDROM(s) etc.
|
||
Once we determine the Append Line, we can append it to the boot: options (at
|
||
the time of booting) or we can alternatively assign it as a string value to
|
||
the append paramater in /etc/lilo.conf. Unless you love to remember
|
||
complicated boot: options and type them at boot time every time, you should
|
||
choose the second method, i.e., insert it into /etc/lilo.conf . You can do so
|
||
by inserting append="Your Append Line Here", saving file and then activating
|
||
new /etc/lilo.conf by running the command /sbin/lilo.
|
||
|
||
For the purpose of understanding better, lets say that your ide devices are
|
||
as follows:
|
||
|
||
* ide0: hda , hdb (hard disks)
|
||
|
||
* ide1: hdc , hdd (hard disks or other ide devices like CDROM)
|
||
|
||
* ide2: hde (first free disk)
|
||
|
||
* ide3: hdg (second free disk)
|
||
|
||
|
||
The two free disks above (hde and hdg) are the ones we would like to setup as
|
||
RAID 1 to create /dev/ataraid/d0 raid device. Note that we do not have hdf or
|
||
hdh because that is how we used the IDE/RAID ports on Promise chip. It is not
|
||
a good idea to connect two hard disks to the same Promise controller IDE
|
||
port. In the above example, we used Primary Master and Secondary Master
|
||
connections on the Promise Technology card.
|
||
|
||
If you do not know how various ide devices are connected in your computer,
|
||
take a look at /proc/devices and /proc/ide/*. You can also carefully go
|
||
through boot log file, /var/log/bootlog (or type dmesg | more right after
|
||
your Linux system boots) to find your ide devices. Now type less /proc/pci
|
||
and locate appropriate information about Promise Technology. In the output of
|
||
less /proc/pci, you can see somewhere information about your Promise chip,
|
||
something like:
|
||
|
||
+--------------------------------------------------------------------------------+
|
||
| Bus 0, device 17, function 0: |
|
||
| Unknown mass storage controller: Promise Technology Unknown device (rev 2). |
|
||
| Vendor id=105a. Device id=d30. |
|
||
| Medium devsel. IRQ 10. Master Capable. Latency=32. |
|
||
| I/O at 0x9400 [0x9401]. |
|
||
| I/O at 0x9000 [0x9001]. |
|
||
| I/O at 0x8800 [0x8801]. |
|
||
| I/O at 0x8400 [0x8401]. |
|
||
| I/O at 0x8000 [0x8001]. |
|
||
| Non-prefetchable 32 bit memory at 0xd5800000 [0xd5800000]. |
|
||
+--------------------------------------------------------------------------------+
|
||
|
||
From this output, we learn that our Promise Technology card uses IRQ 10 for
|
||
both ide ports (ide2 and ide3). Using same IRQ is perfectly alright as long
|
||
as your kernel supports PCI IRQ Sharing. By default, our Linux kernel is
|
||
configured to support PCI IRQ sharing. From the above output, we also learn
|
||
that our Promise Technology card uses various IO addresses. For the purpose
|
||
of identifying Promise Technology disks properly at boot time, we only want
|
||
the IRQ number(s) and the first four IO Address numbers outside [ ]. Write
|
||
down on a piece of paper this information. In this case, from the above
|
||
output:
|
||
|
||
+---------------------------------------------------------------------------+
|
||
|IRQ1 = 10 |
|
||
|IRQ2 = 10 |
|
||
|IO1 = 0x9400 |
|
||
|IO2 = 0x9000 |
|
||
|IO3 = 0x8800 |
|
||
|IO4 = 0x8400 |
|
||
+---------------------------------------------------------------------------+
|
||
|
||
Now, we have to evaluate the following to obtain the correct Append Line.
|
||
Then either specify this Append Line at boot time or specify it in lilo
|
||
configuration file.
|
||
|
||
+-----------------------------------------------------------------------------------+
|
||
|ideX=IO1,IO2+0x0002,IRQ1 ideY=IO3,IO4+0x0002,IRQ2 |
|
||
|where ideX and ideY are the two IDE ports of Promise card our free disks are using.|
|
||
+-----------------------------------------------------------------------------------+
|
||
|
||
In our example, the above Append Line will become:
|
||
|
||
ide2=0x9400,0x9002,10 ide3=0x8800,0x8402,10
|
||
|
||
If, for example, we want to boot kernel version 2.4.18, labelled linux
|
||
according to /etc/lilo.conf, then we specify our Append Line in one of the
|
||
following two methods:
|
||
|
||
1. At boot time
|
||
+---------------------------------------------------------------+
|
||
|boot: linux ide2=0x9400,0x9002,10 ide3=0x8800,0x8402,10 |
|
||
+---------------------------------------------------------------+
|
||
If you choose this method, you should manually type the Append Line after
|
||
the kernel label linux everytime you boot your Linux machine.
|
||
|
||
2. In /etc/lilo.conf
|
||
+---------------------------------------------------------------+
|
||
|image=/boot/vmlinuz-2.2.18 |
|
||
| label=linux |
|
||
| read-only |
|
||
| root=/dev/hda1 |
|
||
| append="ide2=0x9400,0x9002,10 ide3=0x8800,0x8402,10" |
|
||
+---------------------------------------------------------------+
|
||
If you choose this method, you have to run lilo once to activate changes
|
||
by typing /sbin/lilo. And you do not have to type anything extra at boot
|
||
time.
|
||
|
||
|
||
-----------------------------------------------------------------------------
|
||
7.3. Setting Up RAID 1
|
||
|
||
If you want to setup RAID 1 using Promise Technology proprietary driver
|
||
(ft.o), you can download Promise Driver (ft.o) into /lib/modules/
|
||
kernel-version and load the module by typing modprobe -k ft. You should then
|
||
be able to access your new raid device as /dev/sdc or something like that.
|
||
But if it does not work, then determine your Append Line and add it to /etc/
|
||
lilo.conf. If you are setting up RAID on an existing Linux system and are
|
||
using either Promise Technology ft driver or Linux native ataraid driver,
|
||
then use of Append Line in /etc/lilo.conf is strongly recommended. Once you
|
||
reboot with your new /etc/lilo.conf that contains Append Line, you can load
|
||
either driver (ft.o from Promise Technology or ataraid.o, the Linux Native
|
||
RAID module) to enable RAID except when your kernel has built-in ataraid
|
||
support in which case you do not have to load ataraid module.
|
||
|
||
As Linux Native RAID is recommended, let us discuss that in detail. To setup
|
||
Linux Native RAID on an existing Linux machine, insert Append Line into /etc/
|
||
lilo.conf as explained above. Now, activate changes by typing /sbin/lilo.
|
||
Then reboot your computer. After your computers reboots, load ataraid module
|
||
manually if your kernel does not have ataraid built-in support or ataraid.o
|
||
module failed to load for some reason. If you compiled your kernel with
|
||
static ataraid support (ataraid not as module), then you can start formatting
|
||
and using your mirror disk /dev/ataraid/d0 right away.
|
||
|
||
But if you compile ataraid as a seperate module, then type lsmod and see
|
||
ataraid is listed. If not, manually load it by typing modprobe -k ataraid. If
|
||
you dont see any errors, then you can start using your mirror disk /dev/
|
||
ataraid/d0 right away. Format it, mount it and use it just like you normally
|
||
do.
|
||
|
||
The fact that you can use /dev/ataraid/d0 implies that you are successful in
|
||
your mission. Please do not access /dev/hde, /dev/hdg or any of their
|
||
partitions directly, although Linux will let you do that. Once you make a
|
||
mirror device from two disks, you should always access the mirror device and
|
||
not the disks directly.
|
||
-----------------------------------------------------------------------------
|
||
|
||
8. Upgrading Kernel
|
||
|
||
Read this section carefully before you plan to upgrade kernel on your Linux
|
||
machine with Promise FastTrack RAID. Unless you are not using Promise
|
||
FastTrack at all in any way, you need this information to avoid problems.
|
||
|
||
Always backup your data before kernel upgrade. Also backup /etc/fstab, /etc/
|
||
lilo.conf, /boot/vmlinuz-currentversion and /boot/initrd.img (if you use
|
||
initrd). When you upgrade your kernel, do not delete old kernel or its
|
||
dependent files in /boot and do not delete the lines corresponding to it in /
|
||
etc/lilo.conf. If you upgrade kernel to say 2.4.19, just create another
|
||
kernel section in /etc/lilo.conf. For example, add the following lines to /
|
||
etc/lilo.conf:
|
||
|
||
+---------------------------------------------------------------------------+
|
||
|# Begin Code for booting my brand new kernel: 2.4.19 |
|
||
| |
|
||
|image=/boot/vmlinuz-2.4.19 |
|
||
| label=linux-new |
|
||
| read-only |
|
||
| root=/dev/ataraid/d0p12 |
|
||
| |
|
||
|# End Code for booting my brand new kernel: 2.4.19 |
|
||
+---------------------------------------------------------------------------+
|
||
|
||
Also, do not change default=linux line in /etc/lilo.conf unless and until you
|
||
successfully can boot into your new kernel by typing linux-new at the boot:
|
||
prompt (or highlighting linux-new in the menu, if you are using LILO in
|
||
curses menu mode).
|
||
|
||
Now lets discuss the actual process of upgrading kernel in the following four
|
||
cases:
|
||
|
||
1. Promise Technology (ft) Driver with OS on RAID mirror
|
||
|
||
2. Promise Technology (ft) Driver with non-OS data on RAID mirror
|
||
|
||
3. Linux Native (ataraid) Driver with OS on RAID mirror
|
||
|
||
4. Linux Native (ataraid) Driver with non-OS data on RAID mirror
|
||
|
||
|
||
OS stands for "Operating System" or more specifically Red Hat Linux Operating
|
||
System in our case. When you install Linux on mirrored partitions such as /
|
||
dev/ataraid/d0p1 (or /dev/sda1 when using Promise Technology proprietary
|
||
driver), you are said to have your OS on RAID mirror. If your Linux machine
|
||
has only the main partitions such as / and /boot on RAID, it is also called
|
||
(a case of) OS on RAID.
|
||
|
||
Partitions created by user to make use of available free partitions such as /
|
||
mydata1, /imp, /scratch are not part of Linux OS because Linux does not
|
||
install any files into them by default when you install Linux or upgrade any
|
||
standard Linux software package. Any data in such user partitions becomes
|
||
user data or alternatively, non-OS data. It is a good idea to use only ext3
|
||
and swap file systems for OS partitions. For non-OS partitions, you can use
|
||
other file systems such as ext2 and dos (if you have another operating system
|
||
like Windows on the same Linux computer or if you just feel like you love dos
|
||
so much). However, why do you want to use ext2 if you dont have to and you
|
||
have a better choice of using ext3 for OS or non-OS partitions?
|
||
-----------------------------------------------------------------------------
|
||
|
||
8.1. Promise Technology (ft) Driver with OS on RAID mirror
|
||
|
||
Currently, Promise Technology supports Red Hat 7.2 and earlier versions only.
|
||
Red Hat 7.2 uses kernel 2.4.7-10 by default. Also note that, you have to use
|
||
initrd.img (Initial RAM disk image) in /etc/lilo.conf, when you install Linux
|
||
with Promise supplied driver. At the time of installation, Promise Driver
|
||
scripts are supposed to automatically generate initrd file and configure /etc
|
||
/lilo.conf for you. Unfortunately, this does not work properly and you may
|
||
have to manually create initrd.img and configure /etc/lilo.conf yourself.
|
||
|
||
You are stuck with the default kernel 2.4.7-10 and you cannot and should not
|
||
upgrade kernel either by compiling or by automatic update programs such as
|
||
up2date or rpm utility. If you really really want to upgrade kernel then do
|
||
so but do not use raid. You can add Append Line to the /etc/lilo.conf as
|
||
explained in Section 7.2 and do not load ataraid module (or do not compile
|
||
your new kernel with ataraid feature built-in). By doing this, you are
|
||
upgrading kernel to new version and sacrificing RAID feature because you are
|
||
using Promise Technology card as a simple IDE extension card.
|
||
|
||
If Promise Technology releases new version of their ft driver for 2.4.19 in
|
||
future, you can then upgrade your kernel first to 2.4.19 (using up2date or
|
||
rpm but not by manually compiling) and place their new version of ft.o file
|
||
in /lib/modules/kernel-2.4.19. You will also have to put initrd-2.4.19 in /
|
||
boot and append initrd= line to the new kernel section in /etc/lilo.conf. If
|
||
your Linux machine uses Promise Technology driver, your OS is on RAID mirror
|
||
and Promise Technology did not release any new versions for new kernel
|
||
versions, please do not fool around with your current kernel. If you do fool
|
||
around, remember that you can seriously damage your computer and not be able
|
||
to boot or retrieve your data.
|
||
-----------------------------------------------------------------------------
|
||
|
||
8.2. Promise Technology (ft) Driver with non-OS data on RAID mirror
|
||
|
||
Almost all of explanation in previous case (Promise Technology (ft) Driver
|
||
with OS on RAID mirror) applies in this also, ofcourse you are now risking
|
||
non-OS data instead of OS. That means, if your upgrade fails, you will be
|
||
able to boot but not be able to see data in your RAID partitions.
|
||
Additionally, you have the flexibility of loading and unloading Promise
|
||
Proprietary driver (ft.o). However, this is not guaranteed to work smoothly
|
||
because Promise Technology driver has a lot of issues.
|
||
|
||
Unless Promise Technology releases appropriate drivers for new kernel
|
||
version, please do not attempt kernel upgrade in any method. You are stuck
|
||
with 2.4.7-10 kernel. You may be required to add Append Line as discussed in
|
||
Section 7.2 to boot your computer in some cases.
|
||
-----------------------------------------------------------------------------
|
||
|
||
8.3. Linux Native (ataraid) Driver with OS on RAID mirror
|
||
|
||
You can upgrade kernel to any version above 2.4.18 by recompiling the kernel
|
||
and not by any automatic upgrade method such as up2date or rpm utility. You
|
||
need .config file from your previous kernel source directory (/usr/src/
|
||
linux-2.4.18/.config). You did save your 2.4.18 .config file, did't you?
|
||
|
||
After you copy .config into /usr/src/linux-2.4.19 directory, you may make
|
||
changes by typing make menuconfig but generally you do not need to make
|
||
changes because you are upgrading only to 2.4.19 and your machine hardware
|
||
did not change. But if you do make changes by typing make menuconfig,
|
||
remember to save and also backup your modified .config file. Save the .config
|
||
file safely in /root or on a floppy disk. Here are the steps:
|
||
|
||
* Unzip new kernel in /usr/src and rename top directory to linux-2.4.19. So
|
||
your new kernel source directory is /usr/src/linux-2.4.19.
|
||
|
||
* cp /root/config.txt .config
|
||
|
||
* make menuconfig (Make any required changes)
|
||
|
||
* cp .config /root/config-2.4.19.txt (Back up config file in a safe place)
|
||
|
||
* make dep ; make clean ; make && make install (Install new kernel)
|
||
|
||
* make modules && make modules_install (Install new kernel modules)
|
||
|
||
* Edit /etc/lilo.conf to add new lines to boot new kernel. Label the new
|
||
kernel linux-new. Do not change default= line and do not delete lines
|
||
corrosponding to current working kernel.
|
||
|
||
* /sbin/lilo (Activate changes in /etc/lilo.conf)
|
||
|
||
* /sbin/lilo -R linux-new (Tell LILO to treat linux-new as default boot
|
||
kernel just for one time only)
|
||
|
||
* sync;sync;reboot (Reboot and hope that it works. If it does not boot,
|
||
power off and power on again. Then login and investigate why your new
|
||
kernel did not boot.)
|
||
|
||
|
||
-----------------------------------------------------------------------------
|
||
8.4. Linux Native (ataraid) Driver with non-OS data on RAID mirror
|
||
|
||
To upgrade kernel in this case, follow same procedure as explained in
|
||
previous section (Linux Native (ataraid) Driver with OS on RAID mirror). If
|
||
you experience problems, you may be required to add an additional line,
|
||
Append Line, to your /etc/lilo.conf. To find out what your Append Line is,
|
||
see Section 7.2.
|
||
|
||
Similar to previous case, do not attempt to upgrade kernel by any automatic
|
||
method (up2date or rpm utility). Manually compile and your install your new
|
||
kernel as explained in the previous section.
|
||
-----------------------------------------------------------------------------
|
||
|
||
9. Disabling RAID feature on Promise FastTrack
|
||
|
||
If you are reading this section, then you may be sick and tired of the fake
|
||
RAID feature (formally known as quasi-hardware RAID) provided by Promise
|
||
Technology FastTrack card or onboard chip on your motherboard.
|
||
-----------------------------------------------------------------------------
|
||
|
||
9.1. Case 1: OS not using RAID
|
||
|
||
It is possible to disable the RAID feature and use the Promise FastTrack as a
|
||
plain vanilla IDE card. It is very simple. Follow the below steps:
|
||
|
||
1. Determine your Append Line. See Section 7.2 for help with this
|
||
|
||
2. Modify /etc/lilo.conf to include append="Append Line" in your current
|
||
kernel boot section. Again see Section 7.2 for details.
|
||
|
||
3. Type /sbin/lilo and reboot
|
||
|
||
|
||
Now you should see your hard disks seperately and you can use them. If you
|
||
previously had partitions on the RAID mirror, you will see partitions
|
||
accordingly on each of the two member disks. You will also see the data that
|
||
you previously stored on the RAID mirror.
|
||
-----------------------------------------------------------------------------
|
||
|
||
9.2. Case 2: OS is using RAID
|
||
|
||
If you want to disable RAID on a Linux computer that is using RAID mirror
|
||
partitions for /, /boot, /usr etc., then first backup your data including /
|
||
usr/src/linux/.config, /etc/fstab, /boot/vmlinux. Power off your computer.
|
||
Then turn it on. At the boot: prompt, type linux followed by Append Line. If
|
||
your system does not boot successfully, then insert your emergency rescue/
|
||
boot floppy disk, boot off of that floppy disk and type at the boot: prompt
|
||
linux followed by Append Line. If you still cannot boot, then you cannot
|
||
disable RAID non-destructively, which means you have to boot off of the
|
||
RedHat CDROM #1 and re-install Linux, again by typing linux followed by
|
||
Append Line at the boot: prompt.
|
||
|
||
If your Linux machine boots successfully, then first make sure that all data
|
||
is available and clean. Make sure that files in /boot are not corrupt. In
|
||
some cases, the ASCII configuration files in /boot and LILO binary files may
|
||
be corrupt. If that happens, you have to restore them from backup or
|
||
reconfigure /etc/lilo.conf, run /sbin/lilo and recompile and reinstall the
|
||
kernel (recompile with unmodified .config, i.e., without Promise RAID
|
||
support).
|
||
|
||
If your Linux machine boots up and all files are safe, then add Append Line
|
||
to /etc/lilo.conf, run /sbin/lilo and reboot.
|
||
|
||
If you disabled RAID on OS disks and then later changed your mind, then you
|
||
have to back up data and reinstall Linux. If you change mind this way and
|
||
want your RAID back on your Linux OS disks, you may have to sacrifice your
|
||
current data.
|
||
-----------------------------------------------------------------------------
|
||
|
||
10. Tips and Important Notes
|
||
|
||
* Dont bother using KDE / GNOME or any other X window system to finish RAID
|
||
installation as explained above. Use simple text terminal.
|
||
|
||
* You can press Cntrl-ALT-Fj to switch to ttyj where j=1,2,..6
|
||
|
||
* If you do start KDE/GNOME or any other X window system, it will run on
|
||
tty7, which you can access by pressing Cntrl-ALT-F7
|
||
|
||
* If you decide to use Promise supplied SCSI emulation driver for FastTrack
|
||
RAID, note that you are stuck at the default kernel version 2.4.7-10.
|
||
Because, no source code for FastTrack is available.
|
||
|
||
* During RH 7.2 installation, choose ext3 and swap file types only.
|
||
|
||
* When you remove Promise SCSI emulation and setup Native Linux RAID, linux
|
||
lets you access the hard disks either by mirror name: d0 or individual
|
||
disks themselves: hde2, hdg3 etc. It is very important that: YOU NEVER
|
||
access the hard disks directly by their name, instead access the
|
||
corresponding mirror partition. Example: Use /dev/ataraid/d0p3 instead of
|
||
/dev/hde3 or /dev/hdg3
|
||
|
||
|
||
-----------------------------------------------------------------------------
|
||
11. For more information
|
||
|
||
For more information, please check the following resources
|
||
|
||
* Quasi-Mini-HowTo at [http://www.geocities.com/ender7007/] http://
|
||
www.geocities.com/ender7007/
|
||
|
||
* LhD Product Page at [http://lhd.datapower.com/db/dispproduct.cgi?DISP?
|
||
2751] http://lhd.datapower.com/db/dispproduct.cgi?DISP?2751. You can also
|
||
go to [http://lhd.datapower.com/] LhD Main Page and search for »Promise
|
||
FastTrack«.
|
||
|
||
* [http://people.redhat.com/arjanv/pdcraid/ataraidhowto.html] ATA RAID help
|
||
document by RedHat, Inc. You can also join their [https://
|
||
listman.redhat.com/mailman/listinfo/ataraid-list] ataraid mailing list,
|
||
or atleast search [https://listman.redhat.com/pipermail/ataraid-list/]
|
||
the mailing list archive.
|
||
|
||
* Promise Technology's support web site at [http://support.promise.com/]
|
||
http://support.promise.com. Also check out [http://www.promise.com/
|
||
support/linux_eng.asp] this page.
|
||
|
||
* Promise FastTrack help for Linux Mandrake is available at [http://
|
||
www.magic-lamp.org/] http://www.magic-lamp.org.
|
||
|
||
|
||
-----------------------------------------------------------------------------
|
||
A. How is this document generated
|
||
|
||
So you want to know how I generated this HOWTO? Or, did you download SGML
|
||
version of this document, modified some portions in it and now want to know
|
||
how you can create HOWTO?
|
||
|
||
I made sure there are no errors in my SGML by first typing the command nsgmls
|
||
-s ataraid.sgml. I created a script called makehowto and ran the command ./
|
||
makehowto ataraid.sgml. Here is the my makehowto script:
|
||
|
||
+--------------------------------------------------------------------------------+
|
||
|#!/bin/bash |
|
||
|# |
|
||
|# makehowto by Murty Rompalli |
|
||
|# (c) All Rights Reserved |
|
||
|# Free for non commercial use. All other uses must be authorized explicitly |
|
||
|# by the creator. Contact me for more info. murty@solar.m u r t y.net |
|
||
|# |
|
||
| |
|
||
|function maketut() { |
|
||
|echo;echo Creating Tutorial Files ... |
|
||
|jade \ |
|
||
| -t sgml \ |
|
||
| -d /usr/lib/sgml/stylesheets/nwalsh-modular/html/ldp.dsl\#html \ |
|
||
| $1.sgml |
|
||
|} |
|
||
| |
|
||
|function makehtml { |
|
||
|echo;echo Creating html file: $1.html ... |
|
||
|jade \ |
|
||
| -t sgml \ |
|
||
| -d /usr/lib/sgml/stylesheets/nwalsh-modular/html/docbook.dsl \ |
|
||
| -V nochunks \ |
|
||
| $1.sgml > $1.html |
|
||
|} |
|
||
| |
|
||
|function maketxt { |
|
||
| if [ -f $1.html ] |
|
||
| then |
|
||
| echo;echo Creating text file: $1.txt ... |
|
||
| lynx -dump $1.html > $1.txt |
|
||
| else |
|
||
| echo;echo $1.html not found, creating ... |
|
||
| makehtml $1 |
|
||
| maketxt $1 |
|
||
| fi |
|
||
|} |
|
||
| |
|
||
|function makepdf { |
|
||
| [ -f $1.ps ] && gzip $1.ps |
|
||
| |
|
||
| if [ -f $1.ps.gz ] |
|
||
| then |
|
||
| echo;echo Creating pdf file: $1.pdf ... |
|
||
| gzip -dc $1.ps.gz | |
|
||
| gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=$1.pdf - |
|
||
| else |
|
||
| echo;echo $1.ps.gz not found creating ... |
|
||
| makeps $1 |
|
||
| makepdf $1 |
|
||
| fi |
|
||
|} |
|
||
| |
|
||
|function maketex { |
|
||
|echo;echo Creating TeX file $1.tex ... |
|
||
|jade \ |
|
||
| -t tex \ |
|
||
| -d /usr/lib/sgml/stylesheets/cygnus-both.dsl\#print \ |
|
||
| $1.sgml |
|
||
|gzip $1.tex |
|
||
|echo $1.tex gzipped to $1.tex.gz |
|
||
|} |
|
||
| |
|
||
|function makedvi { |
|
||
|echo;echo Creating DVI file $1.dvi ... |
|
||
|db2dvi $1.sgml >/dev/null 2>&1 |
|
||
|echo See $1.log for errors |
|
||
|gzip $1.dvi |
|
||
|echo $1.dvi gzipped to $1.dvi.gz |
|
||
|} |
|
||
| |
|
||
|function makeps { |
|
||
|echo;echo Creating PS file $1.ps ... |
|
||
|db2ps $1.sgml >/dev/null 2>&1 |
|
||
|echo See $1.log for errors |
|
||
|gzip $1.ps |
|
||
|echo $1.ps gzipped to $1.ps.gz |
|
||
|} |
|
||
| |
|
||
|#### Begin Main Program |
|
||
| |
|
||
|echo " |
|
||
|makehowto utility for generating HOWTO from SGML file. |
|
||
|(c) Murty Rompalli |
|
||
|" |
|
||
| |
|
||
|[ x$1 = x ] && |
|
||
|echo "Error. Usage: $0 abc.sgml '{tut|html|pdf|tex|dvi|ps|all}' |
|
||
| |
|
||
|Option 'all' is default if sgml file is the only option supplied. |
|
||
| |
|
||
|Options: |
|
||
|------- |
|
||
|tut Make complete tutorial, i.e., generate necessary html files |
|
||
|html Make a printable single HTML file |
|
||
|pdf Make a PDF file |
|
||
|tex Make a TeX source file, gzipped |
|
||
|dvi Make a DVI file, gzipped |
|
||
|ps Make a PostScript file, gzipped |
|
||
|all Generate all possible formats. |
|
||
| |
|
||
|" && exit |
|
||
| |
|
||
|file="`echo $1|sed 's/\.sgml$//'`" |
|
||
| |
|
||
|[ x$file = x ] && |
|
||
|echo Error. Usage: $0 abc.sgml '{tut|html|tex|dvi|ps|all}' && exit |
|
||
| |
|
||
|[ -f $file.sgml ] || { |
|
||
|echo Error. $file.sgml does not exist |
|
||
|exit |
|
||
|} |
|
||
| |
|
||
|[ -r $file.sgml ] || { |
|
||
|echo Error. $file.sgml not readable |
|
||
|exit |
|
||
|} |
|
||
| |
|
||
| |
|
||
|if [ x$2 = x ] |
|
||
|then |
|
||
| action=all |
|
||
|else |
|
||
| action=$2 |
|
||
|fi |
|
||
| |
|
||
| |
|
||
|case $action in |
|
||
|tut|tutorial) maketut $file |
|
||
| ;; |
|
||
|html|htm) makehtml $file |
|
||
| ;; |
|
||
|tex|latex) maketex $file |
|
||
| ;; |
|
||
|dvi) makedvi $file |
|
||
| ;; |
|
||
|ps) makeps $file |
|
||
| ;; |
|
||
|text|txt) maketxt $file |
|
||
| ;; |
|
||
|pdf) makepdf $file |
|
||
| ;; |
|
||
|all) maketut $file |
|
||
| makehtml $file |
|
||
| maketex $file |
|
||
| makedvi $file |
|
||
| makeps $file |
|
||
| maketxt $file |
|
||
| makepdf $file |
|
||
| ;; |
|
||
|*) echo error |
|
||
| ;; |
|
||
|esac |
|
||
| |
|
||
|\rm -f $file.aux |
|
||
|\rm -f $file.tex |
|
||
|\rm -f $file.dvi |
|
||
| |
|
||
|echo;echo makehowto: Finished |
|
||
|echo You can review $file.log and delete it. |
|
||
|echo Thank you for using makehowto. |
|
||
|echo |
|
||
+--------------------------------------------------------------------------------+
|
||
|
||
You can also just type ./makehowto ataraid.sgml pdf, for example, if you just
|
||
want create PDF version. Just type ./makehowto to get more help on using the
|
||
script. [files/makehowto] Click here to download this makehowto script.
|