You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
Create/use more directory structure in the Documentation/ tree.
Create Documentation/blockdev/ sub-directory and populate it. Populate the Documentation/serial/ sub-directory. Move MSI-HOWTO.txt to Documentation/PCI/. Move ioctl-number.txt to Documentation/ioctl/. Update all relevant 00-INDEX files. Update all relevant Kconfig files and source files. Signed-off-by: Randy Dunlap <randy.dunlap@oracle.com>
This commit is contained in:
@@ -0,0 +1,16 @@
|
||||
00-INDEX
|
||||
- this file
|
||||
README.DAC960
|
||||
- info on Mylex DAC960/DAC1100 PCI RAID Controller Driver for Linux.
|
||||
cciss.txt
|
||||
- info, major/minor #'s for Compaq's SMART Array Controllers.
|
||||
cpqarray.txt
|
||||
- info on using Compaq's SMART2 Intelligent Disk Array Controllers.
|
||||
floppy.txt
|
||||
- notes and driver options for the floppy disk driver.
|
||||
nbd.txt
|
||||
- info on a TCP implementation of a network block device.
|
||||
paride.txt
|
||||
- information about the parallel port IDE subsystem.
|
||||
ramdisk.txt
|
||||
- short guide on how to set up and use the RAM disk.
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,171 @@
|
||||
This driver is for Compaq's SMART Array Controllers.
|
||||
|
||||
Supported Cards:
|
||||
----------------
|
||||
|
||||
This driver is known to work with the following cards:
|
||||
|
||||
* SA 5300
|
||||
* SA 5i
|
||||
* SA 532
|
||||
* SA 5312
|
||||
* SA 641
|
||||
* SA 642
|
||||
* SA 6400
|
||||
* SA 6400 U320 Expansion Module
|
||||
* SA 6i
|
||||
* SA P600
|
||||
* SA P800
|
||||
* SA E400
|
||||
* SA P400i
|
||||
* SA E200
|
||||
* SA E200i
|
||||
* SA E500
|
||||
* SA P700m
|
||||
* SA P212
|
||||
* SA P410
|
||||
* SA P410i
|
||||
* SA P411
|
||||
* SA P812
|
||||
* SA P712m
|
||||
* SA P711m
|
||||
|
||||
Detecting drive failures:
|
||||
-------------------------
|
||||
|
||||
To get the status of logical volumes and to detect physical drive
|
||||
failures, you can use the cciss_vol_status program found here:
|
||||
http://cciss.sourceforge.net/#cciss_utils
|
||||
|
||||
Device Naming:
|
||||
--------------
|
||||
|
||||
If nodes are not already created in the /dev/cciss directory, run as root:
|
||||
|
||||
# cd /dev
|
||||
# ./MAKEDEV cciss
|
||||
|
||||
You need some entries in /dev for the cciss device. The MAKEDEV script
|
||||
can make device nodes for you automatically. Currently the device setup
|
||||
is as follows:
|
||||
|
||||
Major numbers:
|
||||
104 cciss0
|
||||
105 cciss1
|
||||
106 cciss2
|
||||
105 cciss3
|
||||
108 cciss4
|
||||
109 cciss5
|
||||
110 cciss6
|
||||
111 cciss7
|
||||
|
||||
Minor numbers:
|
||||
b7 b6 b5 b4 b3 b2 b1 b0
|
||||
|----+----| |----+----|
|
||||
| |
|
||||
| +-------- Partition ID (0=wholedev, 1-15 partition)
|
||||
|
|
||||
+-------------------- Logical Volume number
|
||||
|
||||
The device naming scheme is:
|
||||
/dev/cciss/c0d0 Controller 0, disk 0, whole device
|
||||
/dev/cciss/c0d0p1 Controller 0, disk 0, partition 1
|
||||
/dev/cciss/c0d0p2 Controller 0, disk 0, partition 2
|
||||
/dev/cciss/c0d0p3 Controller 0, disk 0, partition 3
|
||||
|
||||
/dev/cciss/c1d1 Controller 1, disk 1, whole device
|
||||
/dev/cciss/c1d1p1 Controller 1, disk 1, partition 1
|
||||
/dev/cciss/c1d1p2 Controller 1, disk 1, partition 2
|
||||
/dev/cciss/c1d1p3 Controller 1, disk 1, partition 3
|
||||
|
||||
SCSI tape drive and medium changer support
|
||||
------------------------------------------
|
||||
|
||||
SCSI sequential access devices and medium changer devices are supported and
|
||||
appropriate device nodes are automatically created. (e.g.
|
||||
/dev/st0, /dev/st1, etc. See the "st" man page for more details.)
|
||||
You must enable "SCSI tape drive support for Smart Array 5xxx" and
|
||||
"SCSI support" in your kernel configuration to be able to use SCSI
|
||||
tape drives with your Smart Array 5xxx controller.
|
||||
|
||||
Additionally, note that the driver will not engage the SCSI core at init
|
||||
time. The driver must be directed to dynamically engage the SCSI core via
|
||||
the /proc filesystem entry which the "block" side of the driver creates as
|
||||
/proc/driver/cciss/cciss* at runtime. This is because at driver init time,
|
||||
the SCSI core may not yet be initialized (because the driver is a block
|
||||
driver) and attempting to register it with the SCSI core in such a case
|
||||
would cause a hang. This is best done via an initialization script
|
||||
(typically in /etc/init.d, but could vary depending on distribution).
|
||||
For example:
|
||||
|
||||
for x in /proc/driver/cciss/cciss[0-9]*
|
||||
do
|
||||
echo "engage scsi" > $x
|
||||
done
|
||||
|
||||
Once the SCSI core is engaged by the driver, it cannot be disengaged
|
||||
(except by unloading the driver, if it happens to be linked as a module.)
|
||||
|
||||
Note also that if no sequential access devices or medium changers are
|
||||
detected, the SCSI core will not be engaged by the action of the above
|
||||
script.
|
||||
|
||||
Hot plug support for SCSI tape drives
|
||||
-------------------------------------
|
||||
|
||||
Hot plugging of SCSI tape drives is supported, with some caveats.
|
||||
The cciss driver must be informed that changes to the SCSI bus
|
||||
have been made. This may be done via the /proc filesystem.
|
||||
For example:
|
||||
|
||||
echo "rescan" > /proc/scsi/cciss0/1
|
||||
|
||||
This causes the driver to query the adapter about changes to the
|
||||
physical SCSI buses and/or fibre channel arbitrated loop and the
|
||||
driver to make note of any new or removed sequential access devices
|
||||
or medium changers. The driver will output messages indicating what
|
||||
devices have been added or removed and the controller, bus, target and
|
||||
lun used to address the device. It then notifies the SCSI mid layer
|
||||
of these changes.
|
||||
|
||||
Note that the naming convention of the /proc filesystem entries
|
||||
contains a number in addition to the driver name. (E.g. "cciss0"
|
||||
instead of just "cciss" which you might expect.)
|
||||
|
||||
Note: ONLY sequential access devices and medium changers are presented
|
||||
as SCSI devices to the SCSI mid layer by the cciss driver. Specifically,
|
||||
physical SCSI disk drives are NOT presented to the SCSI mid layer. The
|
||||
physical SCSI disk drives are controlled directly by the array controller
|
||||
hardware and it is important to prevent the kernel from attempting to directly
|
||||
access these devices too, as if the array controller were merely a SCSI
|
||||
controller in the same way that we are allowing it to access SCSI tape drives.
|
||||
|
||||
SCSI error handling for tape drives and medium changers
|
||||
-------------------------------------------------------
|
||||
|
||||
The linux SCSI mid layer provides an error handling protocol which
|
||||
kicks into gear whenever a SCSI command fails to complete within a
|
||||
certain amount of time (which can vary depending on the command).
|
||||
The cciss driver participates in this protocol to some extent. The
|
||||
normal protocol is a four step process. First the device is told
|
||||
to abort the command. If that doesn't work, the device is reset.
|
||||
If that doesn't work, the SCSI bus is reset. If that doesn't work
|
||||
the host bus adapter is reset. Because the cciss driver is a block
|
||||
driver as well as a SCSI driver and only the tape drives and medium
|
||||
changers are presented to the SCSI mid layer, and unlike more
|
||||
straightforward SCSI drivers, disk i/o continues through the block
|
||||
side during the SCSI error recovery process, the cciss driver only
|
||||
implements the first two of these actions, aborting the command, and
|
||||
resetting the device. Additionally, most tape drives will not oblige
|
||||
in aborting commands, and sometimes it appears they will not even
|
||||
obey a reset command, though in most circumstances they will. In
|
||||
the case that the command cannot be aborted and the device cannot be
|
||||
reset, the device will be set offline.
|
||||
|
||||
In the event the error handling code is triggered and a tape drive is
|
||||
successfully reset or the tardy command is successfully aborted, the
|
||||
tape drive may still not allow i/o to continue until some command
|
||||
is issued which positions the tape to a known position. Typically you
|
||||
must rewind the tape (by issuing "mt -f /dev/st0 rewind" for example)
|
||||
before i/o can proceed again to a tape drive which was reset.
|
||||
|
||||
@@ -0,0 +1,93 @@
|
||||
This driver is for Compaq's SMART2 Intelligent Disk Array Controllers.
|
||||
|
||||
Supported Cards:
|
||||
----------------
|
||||
|
||||
This driver is known to work with the following cards:
|
||||
|
||||
* SMART (EISA)
|
||||
* SMART-2/E (EISA)
|
||||
* SMART-2/P
|
||||
* SMART-2DH
|
||||
* SMART-2SL
|
||||
* SMART-221
|
||||
* SMART-3100ES
|
||||
* SMART-3200
|
||||
* Integrated Smart Array Controller
|
||||
* SA 4200
|
||||
* SA 4250ES
|
||||
* SA 431
|
||||
* RAID LC2 Controller
|
||||
|
||||
It should also work with some really old Disk array adapters, but I am
|
||||
unable to test against these cards:
|
||||
|
||||
* IDA
|
||||
* IDA-2
|
||||
* IAES
|
||||
|
||||
|
||||
EISA Controllers:
|
||||
-----------------
|
||||
|
||||
If you want to use an EISA controller you'll have to supply some
|
||||
modprobe/lilo parameters. If the driver is compiled into the kernel, must
|
||||
give it the controller's IO port address at boot time (it is not
|
||||
necessary to specify the IRQ). For example, if you had two SMART-2/E
|
||||
controllers, in EISA slots 1 and 2 you'd give it a boot argument like
|
||||
this:
|
||||
|
||||
smart2=0x1000,0x2000
|
||||
|
||||
If you were loading the driver as a module, you'd give load it like this:
|
||||
|
||||
modprobe cpqarray eisa=0x1000,0x2000
|
||||
|
||||
You can use EISA and PCI adapters at the same time.
|
||||
|
||||
|
||||
Device Naming:
|
||||
--------------
|
||||
|
||||
You need some entries in /dev for the ida device. MAKEDEV in the /dev
|
||||
directory can make device nodes for you automatically. The device setup is
|
||||
as follows:
|
||||
|
||||
Major numbers:
|
||||
72 ida0
|
||||
73 ida1
|
||||
74 ida2
|
||||
75 ida3
|
||||
76 ida4
|
||||
77 ida5
|
||||
78 ida6
|
||||
79 ida7
|
||||
|
||||
Minor numbers:
|
||||
b7 b6 b5 b4 b3 b2 b1 b0
|
||||
|----+----| |----+----|
|
||||
| |
|
||||
| +-------- Partition ID (0=wholedev, 1-15 partition)
|
||||
|
|
||||
+-------------------- Logical Volume number
|
||||
|
||||
The device naming scheme is:
|
||||
/dev/ida/c0d0 Controller 0, disk 0, whole device
|
||||
/dev/ida/c0d0p1 Controller 0, disk 0, partition 1
|
||||
/dev/ida/c0d0p2 Controller 0, disk 0, partition 2
|
||||
/dev/ida/c0d0p3 Controller 0, disk 0, partition 3
|
||||
|
||||
/dev/ida/c1d1 Controller 1, disk 1, whole device
|
||||
/dev/ida/c1d1p1 Controller 1, disk 1, partition 1
|
||||
/dev/ida/c1d1p2 Controller 1, disk 1, partition 2
|
||||
/dev/ida/c1d1p3 Controller 1, disk 1, partition 3
|
||||
|
||||
|
||||
Changelog:
|
||||
==========
|
||||
|
||||
10-28-2004 : General cleanup, syntax fixes for in-kernel driver version.
|
||||
James Nelson <james4765@gmail.com>
|
||||
|
||||
|
||||
1999 : Original Document
|
||||
@@ -0,0 +1,245 @@
|
||||
This file describes the floppy driver.
|
||||
|
||||
FAQ list:
|
||||
=========
|
||||
|
||||
A FAQ list may be found in the fdutils package (see below), and also
|
||||
at <http://fdutils.linux.lu/faq.html>.
|
||||
|
||||
|
||||
LILO configuration options (Thinkpad users, read this)
|
||||
======================================================
|
||||
|
||||
The floppy driver is configured using the 'floppy=' option in
|
||||
lilo. This option can be typed at the boot prompt, or entered in the
|
||||
lilo configuration file.
|
||||
|
||||
Example: If your kernel is called linux-2.6.9, type the following line
|
||||
at the lilo boot prompt (if you have a thinkpad):
|
||||
|
||||
linux-2.6.9 floppy=thinkpad
|
||||
|
||||
You may also enter the following line in /etc/lilo.conf, in the description
|
||||
of linux-2.6.9:
|
||||
|
||||
append = "floppy=thinkpad"
|
||||
|
||||
Several floppy related options may be given, example:
|
||||
|
||||
linux-2.6.9 floppy=daring floppy=two_fdc
|
||||
append = "floppy=daring floppy=two_fdc"
|
||||
|
||||
If you give options both in the lilo config file and on the boot
|
||||
prompt, the option strings of both places are concatenated, the boot
|
||||
prompt options coming last. That's why there are also options to
|
||||
restore the default behavior.
|
||||
|
||||
|
||||
Module configuration options
|
||||
============================
|
||||
|
||||
If you use the floppy driver as a module, use the following syntax:
|
||||
modprobe floppy <options>
|
||||
|
||||
Example:
|
||||
modprobe floppy omnibook messages
|
||||
|
||||
If you need certain options enabled every time you load the floppy driver,
|
||||
you can put:
|
||||
|
||||
options floppy omnibook messages
|
||||
|
||||
in /etc/modprobe.conf.
|
||||
|
||||
|
||||
The floppy driver related options are:
|
||||
|
||||
floppy=asus_pci
|
||||
Sets the bit mask to allow only units 0 and 1. (default)
|
||||
|
||||
floppy=daring
|
||||
Tells the floppy driver that you have a well behaved floppy controller.
|
||||
This allows more efficient and smoother operation, but may fail on
|
||||
certain controllers. This may speed up certain operations.
|
||||
|
||||
floppy=0,daring
|
||||
Tells the floppy driver that your floppy controller should be used
|
||||
with caution.
|
||||
|
||||
floppy=one_fdc
|
||||
Tells the floppy driver that you have only one floppy controller.
|
||||
(default)
|
||||
|
||||
floppy=two_fdc
|
||||
floppy=<address>,two_fdc
|
||||
Tells the floppy driver that you have two floppy controllers.
|
||||
The second floppy controller is assumed to be at <address>.
|
||||
This option is not needed if the second controller is at address
|
||||
0x370, and if you use the 'cmos' option.
|
||||
|
||||
floppy=thinkpad
|
||||
Tells the floppy driver that you have a Thinkpad. Thinkpads use an
|
||||
inverted convention for the disk change line.
|
||||
|
||||
floppy=0,thinkpad
|
||||
Tells the floppy driver that you don't have a Thinkpad.
|
||||
|
||||
floppy=omnibook
|
||||
floppy=nodma
|
||||
Tells the floppy driver not to use Dma for data transfers.
|
||||
This is needed on HP Omnibooks, which don't have a workable
|
||||
DMA channel for the floppy driver. This option is also useful
|
||||
if you frequently get "Unable to allocate DMA memory" messages.
|
||||
Indeed, dma memory needs to be continuous in physical memory,
|
||||
and is thus harder to find, whereas non-dma buffers may be
|
||||
allocated in virtual memory. However, I advise against this if
|
||||
you have an FDC without a FIFO (8272A or 82072). 82072A and
|
||||
later are OK. You also need at least a 486 to use nodma.
|
||||
If you use nodma mode, I suggest you also set the FIFO
|
||||
threshold to 10 or lower, in order to limit the number of data
|
||||
transfer interrupts.
|
||||
|
||||
If you have a FIFO-able FDC, the floppy driver automatically
|
||||
falls back on non DMA mode if no DMA-able memory can be found.
|
||||
If you want to avoid this, explicitly ask for 'yesdma'.
|
||||
|
||||
floppy=yesdma
|
||||
Tells the floppy driver that a workable DMA channel is available.
|
||||
(default)
|
||||
|
||||
floppy=nofifo
|
||||
Disables the FIFO entirely. This is needed if you get "Bus
|
||||
master arbitration error" messages from your Ethernet card (or
|
||||
from other devices) while accessing the floppy.
|
||||
|
||||
floppy=usefifo
|
||||
Enables the FIFO. (default)
|
||||
|
||||
floppy=<threshold>,fifo_depth
|
||||
Sets the FIFO threshold. This is mostly relevant in DMA
|
||||
mode. If this is higher, the floppy driver tolerates more
|
||||
interrupt latency, but it triggers more interrupts (i.e. it
|
||||
imposes more load on the rest of the system). If this is
|
||||
lower, the interrupt latency should be lower too (faster
|
||||
processor). The benefit of a lower threshold is less
|
||||
interrupts.
|
||||
|
||||
To tune the fifo threshold, switch on over/underrun messages
|
||||
using 'floppycontrol --messages'. Then access a floppy
|
||||
disk. If you get a huge amount of "Over/Underrun - retrying"
|
||||
messages, then the fifo threshold is too low. Try with a
|
||||
higher value, until you only get an occasional Over/Underrun.
|
||||
It is a good idea to compile the floppy driver as a module
|
||||
when doing this tuning. Indeed, it allows to try different
|
||||
fifo values without rebooting the machine for each test. Note
|
||||
that you need to do 'floppycontrol --messages' every time you
|
||||
re-insert the module.
|
||||
|
||||
Usually, tuning the fifo threshold should not be needed, as
|
||||
the default (0xa) is reasonable.
|
||||
|
||||
floppy=<drive>,<type>,cmos
|
||||
Sets the CMOS type of <drive> to <type>. This is mandatory if
|
||||
you have more than two floppy drives (only two can be
|
||||
described in the physical CMOS), or if your BIOS uses
|
||||
non-standard CMOS types. The CMOS types are:
|
||||
|
||||
0 - Use the value of the physical CMOS
|
||||
1 - 5 1/4 DD
|
||||
2 - 5 1/4 HD
|
||||
3 - 3 1/2 DD
|
||||
4 - 3 1/2 HD
|
||||
5 - 3 1/2 ED
|
||||
6 - 3 1/2 ED
|
||||
16 - unknown or not installed
|
||||
|
||||
(Note: there are two valid types for ED drives. This is because 5 was
|
||||
initially chosen to represent floppy *tapes*, and 6 for ED drives.
|
||||
AMI ignored this, and used 5 for ED drives. That's why the floppy
|
||||
driver handles both.)
|
||||
|
||||
floppy=unexpected_interrupts
|
||||
Print a warning message when an unexpected interrupt is received.
|
||||
(default)
|
||||
|
||||
floppy=no_unexpected_interrupts
|
||||
floppy=L40SX
|
||||
Don't print a message when an unexpected interrupt is received. This
|
||||
is needed on IBM L40SX laptops in certain video modes. (There seems
|
||||
to be an interaction between video and floppy. The unexpected
|
||||
interrupts affect only performance, and can be safely ignored.)
|
||||
|
||||
floppy=broken_dcl
|
||||
Don't use the disk change line, but assume that the disk was
|
||||
changed whenever the device node is reopened. Needed on some
|
||||
boxes where the disk change line is broken or unsupported.
|
||||
This should be regarded as a stopgap measure, indeed it makes
|
||||
floppy operation less efficient due to unneeded cache
|
||||
flushings, and slightly more unreliable. Please verify your
|
||||
cable, connection and jumper settings if you have any DCL
|
||||
problems. However, some older drives, and also some laptops
|
||||
are known not to have a DCL.
|
||||
|
||||
floppy=debug
|
||||
Print debugging messages.
|
||||
|
||||
floppy=messages
|
||||
Print informational messages for some operations (disk change
|
||||
notifications, warnings about over and underruns, and about
|
||||
autodetection).
|
||||
|
||||
floppy=silent_dcl_clear
|
||||
Uses a less noisy way to clear the disk change line (which
|
||||
doesn't involve seeks). Implied by 'daring' option.
|
||||
|
||||
floppy=<nr>,irq
|
||||
Sets the floppy IRQ to <nr> instead of 6.
|
||||
|
||||
floppy=<nr>,dma
|
||||
Sets the floppy DMA channel to <nr> instead of 2.
|
||||
|
||||
floppy=slow
|
||||
Use PS/2 stepping rate:
|
||||
" PS/2 floppies have much slower step rates than regular floppies.
|
||||
It's been recommended that take about 1/4 of the default speed
|
||||
in some more extreme cases."
|
||||
|
||||
|
||||
Supporting utilities and additional documentation:
|
||||
==================================================
|
||||
|
||||
Additional parameters of the floppy driver can be configured at
|
||||
runtime. Utilities which do this can be found in the fdutils package.
|
||||
This package also contains a new version of mtools which allows to
|
||||
access high capacity disks (up to 1992K on a high density 3 1/2 disk!).
|
||||
It also contains additional documentation about the floppy driver.
|
||||
|
||||
The latest version can be found at fdutils homepage:
|
||||
http://fdutils.linux.lu
|
||||
|
||||
The fdutils releases can be found at:
|
||||
http://fdutils.linux.lu/download.html
|
||||
http://www.tux.org/pub/knaff/fdutils/
|
||||
ftp://metalab.unc.edu/pub/Linux/utils/disk-management/
|
||||
|
||||
Reporting problems about the floppy driver
|
||||
==========================================
|
||||
|
||||
If you have a question or a bug report about the floppy driver, mail
|
||||
me at Alain.Knaff@poboxes.com . If you post to Usenet, preferably use
|
||||
comp.os.linux.hardware. As the volume in these groups is rather high,
|
||||
be sure to include the word "floppy" (or "FLOPPY") in the subject
|
||||
line. If the reported problem happens when mounting floppy disks, be
|
||||
sure to mention also the type of the filesystem in the subject line.
|
||||
|
||||
Be sure to read the FAQ before mailing/posting any bug reports!
|
||||
|
||||
Alain
|
||||
|
||||
Changelog
|
||||
=========
|
||||
|
||||
10-30-2004 : Cleanup, updating, add reference to module configuration.
|
||||
James Nelson <james4765@gmail.com>
|
||||
|
||||
6-3-2000 : Original Document
|
||||
@@ -0,0 +1,47 @@
|
||||
Network Block Device (TCP version)
|
||||
|
||||
What is it: With this compiled in the kernel (or as a module), Linux
|
||||
can use a remote server as one of its block devices. So every time
|
||||
the client computer wants to read, e.g., /dev/nb0, it sends a
|
||||
request over TCP to the server, which will reply with the data read.
|
||||
This can be used for stations with low disk space (or even diskless -
|
||||
if you boot from floppy) to borrow disk space from another computer.
|
||||
Unlike NFS, it is possible to put any filesystem on it, etc. It should
|
||||
even be possible to use NBD as a root filesystem (I've never tried),
|
||||
but it requires a user-level program to be in the initrd to start.
|
||||
It also allows you to run block-device in user land (making server
|
||||
and client physically the same computer, communicating using loopback).
|
||||
|
||||
Current state: It currently works. Network block device is stable.
|
||||
I originally thought that it was impossible to swap over TCP. It
|
||||
turned out not to be true - swapping over TCP now works and seems
|
||||
to be deadlock-free, but it requires heavy patches into Linux's
|
||||
network layer.
|
||||
|
||||
For more information, or to download the nbd-client and nbd-server
|
||||
tools, go to http://nbd.sf.net/.
|
||||
|
||||
Howto: To setup nbd, you can simply do the following:
|
||||
|
||||
First, serve a device or file from a remote server:
|
||||
|
||||
nbd-server <port-number> <device-or-file-to-serve-to-client>
|
||||
|
||||
e.g.,
|
||||
root@server1 # nbd-server 1234 /dev/sdb1
|
||||
|
||||
(serves sdb1 partition on TCP port 1234)
|
||||
|
||||
Then, on the local (client) system:
|
||||
|
||||
nbd-client <server-name-or-IP> <server-port-number> /dev/nb[0-n]
|
||||
|
||||
e.g.,
|
||||
root@client1 # nbd-client server1 1234 /dev/nb0
|
||||
|
||||
(creates the nb0 device on client1)
|
||||
|
||||
The nbd kernel module need only be installed on the client
|
||||
system, as the nbd-server is completely in userspace. In fact,
|
||||
the nbd-server has been successfully ported to other operating
|
||||
systems, including Windows.
|
||||
@@ -0,0 +1,417 @@
|
||||
|
||||
Linux and parallel port IDE devices
|
||||
|
||||
PARIDE v1.03 (c) 1997-8 Grant Guenther <grant@torque.net>
|
||||
|
||||
1. Introduction
|
||||
|
||||
Owing to the simplicity and near universality of the parallel port interface
|
||||
to personal computers, many external devices such as portable hard-disk,
|
||||
CD-ROM, LS-120 and tape drives use the parallel port to connect to their
|
||||
host computer. While some devices (notably scanners) use ad-hoc methods
|
||||
to pass commands and data through the parallel port interface, most
|
||||
external devices are actually identical to an internal model, but with
|
||||
a parallel-port adapter chip added in. Some of the original parallel port
|
||||
adapters were little more than mechanisms for multiplexing a SCSI bus.
|
||||
(The Iomega PPA-3 adapter used in the ZIP drives is an example of this
|
||||
approach). Most current designs, however, take a different approach.
|
||||
The adapter chip reproduces a small ISA or IDE bus in the external device
|
||||
and the communication protocol provides operations for reading and writing
|
||||
device registers, as well as data block transfer functions. Sometimes,
|
||||
the device being addressed via the parallel cable is a standard SCSI
|
||||
controller like an NCR 5380. The "ditto" family of external tape
|
||||
drives use the ISA replicator to interface a floppy disk controller,
|
||||
which is then connected to a floppy-tape mechanism. The vast majority
|
||||
of external parallel port devices, however, are now based on standard
|
||||
IDE type devices, which require no intermediate controller. If one
|
||||
were to open up a parallel port CD-ROM drive, for instance, one would
|
||||
find a standard ATAPI CD-ROM drive, a power supply, and a single adapter
|
||||
that interconnected a standard PC parallel port cable and a standard
|
||||
IDE cable. It is usually possible to exchange the CD-ROM device with
|
||||
any other device using the IDE interface.
|
||||
|
||||
The document describes the support in Linux for parallel port IDE
|
||||
devices. It does not cover parallel port SCSI devices, "ditto" tape
|
||||
drives or scanners. Many different devices are supported by the
|
||||
parallel port IDE subsystem, including:
|
||||
|
||||
MicroSolutions backpack CD-ROM
|
||||
MicroSolutions backpack PD/CD
|
||||
MicroSolutions backpack hard-drives
|
||||
MicroSolutions backpack 8000t tape drive
|
||||
SyQuest EZ-135, EZ-230 & SparQ drives
|
||||
Avatar Shark
|
||||
Imation Superdisk LS-120
|
||||
Maxell Superdisk LS-120
|
||||
FreeCom Power CD
|
||||
Hewlett-Packard 5GB and 8GB tape drives
|
||||
Hewlett-Packard 7100 and 7200 CD-RW drives
|
||||
|
||||
as well as most of the clone and no-name products on the market.
|
||||
|
||||
To support such a wide range of devices, PARIDE, the parallel port IDE
|
||||
subsystem, is actually structured in three parts. There is a base
|
||||
paride module which provides a registry and some common methods for
|
||||
accessing the parallel ports. The second component is a set of
|
||||
high-level drivers for each of the different types of supported devices:
|
||||
|
||||
pd IDE disk
|
||||
pcd ATAPI CD-ROM
|
||||
pf ATAPI disk
|
||||
pt ATAPI tape
|
||||
pg ATAPI generic
|
||||
|
||||
(Currently, the pg driver is only used with CD-R drives).
|
||||
|
||||
The high-level drivers function according to the relevant standards.
|
||||
The third component of PARIDE is a set of low-level protocol drivers
|
||||
for each of the parallel port IDE adapter chips. Thanks to the interest
|
||||
and encouragement of Linux users from many parts of the world,
|
||||
support is available for almost all known adapter protocols:
|
||||
|
||||
aten ATEN EH-100 (HK)
|
||||
bpck Microsolutions backpack (US)
|
||||
comm DataStor (old-type) "commuter" adapter (TW)
|
||||
dstr DataStor EP-2000 (TW)
|
||||
epat Shuttle EPAT (UK)
|
||||
epia Shuttle EPIA (UK)
|
||||
fit2 FIT TD-2000 (US)
|
||||
fit3 FIT TD-3000 (US)
|
||||
friq Freecom IQ cable (DE)
|
||||
frpw Freecom Power (DE)
|
||||
kbic KingByte KBIC-951A and KBIC-971A (TW)
|
||||
ktti KT Technology PHd adapter (SG)
|
||||
on20 OnSpec 90c20 (US)
|
||||
on26 OnSpec 90c26 (US)
|
||||
|
||||
|
||||
2. Using the PARIDE subsystem
|
||||
|
||||
While configuring the Linux kernel, you may choose either to build
|
||||
the PARIDE drivers into your kernel, or to build them as modules.
|
||||
|
||||
In either case, you will need to select "Parallel port IDE device support"
|
||||
as well as at least one of the high-level drivers and at least one
|
||||
of the parallel port communication protocols. If you do not know
|
||||
what kind of parallel port adapter is used in your drive, you could
|
||||
begin by checking the file names and any text files on your DOS
|
||||
installation floppy. Alternatively, you can look at the markings on
|
||||
the adapter chip itself. That's usually sufficient to identify the
|
||||
correct device.
|
||||
|
||||
You can actually select all the protocol modules, and allow the PARIDE
|
||||
subsystem to try them all for you.
|
||||
|
||||
For the "brand-name" products listed above, here are the protocol
|
||||
and high-level drivers that you would use:
|
||||
|
||||
Manufacturer Model Driver Protocol
|
||||
|
||||
MicroSolutions CD-ROM pcd bpck
|
||||
MicroSolutions PD drive pf bpck
|
||||
MicroSolutions hard-drive pd bpck
|
||||
MicroSolutions 8000t tape pt bpck
|
||||
SyQuest EZ, SparQ pd epat
|
||||
Imation Superdisk pf epat
|
||||
Maxell Superdisk pf friq
|
||||
Avatar Shark pd epat
|
||||
FreeCom CD-ROM pcd frpw
|
||||
Hewlett-Packard 5GB Tape pt epat
|
||||
Hewlett-Packard 7200e (CD) pcd epat
|
||||
Hewlett-Packard 7200e (CD-R) pg epat
|
||||
|
||||
2.1 Configuring built-in drivers
|
||||
|
||||
We recommend that you get to know how the drivers work and how to
|
||||
configure them as loadable modules, before attempting to compile a
|
||||
kernel with the drivers built-in.
|
||||
|
||||
If you built all of your PARIDE support directly into your kernel,
|
||||
and you have just a single parallel port IDE device, your kernel should
|
||||
locate it automatically for you. If you have more than one device,
|
||||
you may need to give some command line options to your bootloader
|
||||
(eg: LILO), how to do that is beyond the scope of this document.
|
||||
|
||||
The high-level drivers accept a number of command line parameters, all
|
||||
of which are documented in the source files in linux/drivers/block/paride.
|
||||
By default, each driver will automatically try all parallel ports it
|
||||
can find, and all protocol types that have been installed, until it finds
|
||||
a parallel port IDE adapter. Once it finds one, the probe stops. So,
|
||||
if you have more than one device, you will need to tell the drivers
|
||||
how to identify them. This requires specifying the port address, the
|
||||
protocol identification number and, for some devices, the drive's
|
||||
chain ID. While your system is booting, a number of messages are
|
||||
displayed on the console. Like all such messages, they can be
|
||||
reviewed with the 'dmesg' command. Among those messages will be
|
||||
some lines like:
|
||||
|
||||
paride: bpck registered as protocol 0
|
||||
paride: epat registered as protocol 1
|
||||
|
||||
The numbers will always be the same until you build a new kernel with
|
||||
different protocol selections. You should note these numbers as you
|
||||
will need them to identify the devices.
|
||||
|
||||
If you happen to be using a MicroSolutions backpack device, you will
|
||||
also need to know the unit ID number for each drive. This is usually
|
||||
the last two digits of the drive's serial number (but read MicroSolutions'
|
||||
documentation about this).
|
||||
|
||||
As an example, let's assume that you have a MicroSolutions PD/CD drive
|
||||
with unit ID number 36 connected to the parallel port at 0x378, a SyQuest
|
||||
EZ-135 connected to the chained port on the PD/CD drive and also an
|
||||
Imation Superdisk connected to port 0x278. You could give the following
|
||||
options on your boot command:
|
||||
|
||||
pd.drive0=0x378,1 pf.drive0=0x278,1 pf.drive1=0x378,0,36
|
||||
|
||||
In the last option, pf.drive1 configures device /dev/pf1, the 0x378
|
||||
is the parallel port base address, the 0 is the protocol registration
|
||||
number and 36 is the chain ID.
|
||||
|
||||
Please note: while PARIDE will work both with and without the
|
||||
PARPORT parallel port sharing system that is included by the
|
||||
"Parallel port support" option, PARPORT must be included and enabled
|
||||
if you want to use chains of devices on the same parallel port.
|
||||
|
||||
2.2 Loading and configuring PARIDE as modules
|
||||
|
||||
It is much faster and simpler to get to understand the PARIDE drivers
|
||||
if you use them as loadable kernel modules.
|
||||
|
||||
Note 1: using these drivers with the "kerneld" automatic module loading
|
||||
system is not recommended for beginners, and is not documented here.
|
||||
|
||||
Note 2: if you build PARPORT support as a loadable module, PARIDE must
|
||||
also be built as loadable modules, and PARPORT must be loaded before the
|
||||
PARIDE modules.
|
||||
|
||||
To use PARIDE, you must begin by
|
||||
|
||||
insmod paride
|
||||
|
||||
this loads a base module which provides a registry for the protocols,
|
||||
among other tasks.
|
||||
|
||||
Then, load as many of the protocol modules as you think you might need.
|
||||
As you load each module, it will register the protocols that it supports,
|
||||
and print a log message to your kernel log file and your console. For
|
||||
example:
|
||||
|
||||
# insmod epat
|
||||
paride: epat registered as protocol 0
|
||||
# insmod kbic
|
||||
paride: k951 registered as protocol 1
|
||||
paride: k971 registered as protocol 2
|
||||
|
||||
Finally, you can load high-level drivers for each kind of device that
|
||||
you have connected. By default, each driver will autoprobe for a single
|
||||
device, but you can support up to four similar devices by giving their
|
||||
individual co-ordinates when you load the driver.
|
||||
|
||||
For example, if you had two no-name CD-ROM drives both using the
|
||||
KingByte KBIC-951A adapter, one on port 0x378 and the other on 0x3bc
|
||||
you could give the following command:
|
||||
|
||||
# insmod pcd drive0=0x378,1 drive1=0x3bc,1
|
||||
|
||||
For most adapters, giving a port address and protocol number is sufficient,
|
||||
but check the source files in linux/drivers/block/paride for more
|
||||
information. (Hopefully someone will write some man pages one day !).
|
||||
|
||||
As another example, here's what happens when PARPORT is installed, and
|
||||
a SyQuest EZ-135 is attached to port 0x378:
|
||||
|
||||
# insmod paride
|
||||
paride: version 1.0 installed
|
||||
# insmod epat
|
||||
paride: epat registered as protocol 0
|
||||
# insmod pd
|
||||
pd: pd version 1.0, major 45, cluster 64, nice 0
|
||||
pda: Sharing parport1 at 0x378
|
||||
pda: epat 1.0, Shuttle EPAT chip c3 at 0x378, mode 5 (EPP-32), delay 1
|
||||
pda: SyQuest EZ135A, 262144 blocks [128M], (512/16/32), removable media
|
||||
pda: pda1
|
||||
|
||||
Note that the last line is the output from the generic partition table
|
||||
scanner - in this case it reports that it has found a disk with one partition.
|
||||
|
||||
2.3 Using a PARIDE device
|
||||
|
||||
Once the drivers have been loaded, you can access PARIDE devices in the
|
||||
same way as their traditional counterparts. You will probably need to
|
||||
create the device "special files". Here is a simple script that you can
|
||||
cut to a file and execute:
|
||||
|
||||
#!/bin/bash
|
||||
#
|
||||
# mkd -- a script to create the device special files for the PARIDE subsystem
|
||||
#
|
||||
function mkdev {
|
||||
mknod $1 $2 $3 $4 ; chmod 0660 $1 ; chown root:disk $1
|
||||
}
|
||||
#
|
||||
function pd {
|
||||
D=$( printf \\$( printf "x%03x" $[ $1 + 97 ] ) )
|
||||
mkdev pd$D b 45 $[ $1 * 16 ]
|
||||
for P in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
||||
do mkdev pd$D$P b 45 $[ $1 * 16 + $P ]
|
||||
done
|
||||
}
|
||||
#
|
||||
cd /dev
|
||||
#
|
||||
for u in 0 1 2 3 ; do pd $u ; done
|
||||
for u in 0 1 2 3 ; do mkdev pcd$u b 46 $u ; done
|
||||
for u in 0 1 2 3 ; do mkdev pf$u b 47 $u ; done
|
||||
for u in 0 1 2 3 ; do mkdev pt$u c 96 $u ; done
|
||||
for u in 0 1 2 3 ; do mkdev npt$u c 96 $[ $u + 128 ] ; done
|
||||
for u in 0 1 2 3 ; do mkdev pg$u c 97 $u ; done
|
||||
#
|
||||
# end of mkd
|
||||
|
||||
With the device files and drivers in place, you can access PARIDE devices
|
||||
like any other Linux device. For example, to mount a CD-ROM in pcd0, use:
|
||||
|
||||
mount /dev/pcd0 /cdrom
|
||||
|
||||
If you have a fresh Avatar Shark cartridge, and the drive is pda, you
|
||||
might do something like:
|
||||
|
||||
fdisk /dev/pda -- make a new partition table with
|
||||
partition 1 of type 83
|
||||
|
||||
mke2fs /dev/pda1 -- to build the file system
|
||||
|
||||
mkdir /shark -- make a place to mount the disk
|
||||
|
||||
mount /dev/pda1 /shark
|
||||
|
||||
Devices like the Imation superdisk work in the same way, except that
|
||||
they do not have a partition table. For example to make a 120MB
|
||||
floppy that you could share with a DOS system:
|
||||
|
||||
mkdosfs /dev/pf0
|
||||
mount /dev/pf0 /mnt
|
||||
|
||||
|
||||
2.4 The pf driver
|
||||
|
||||
The pf driver is intended for use with parallel port ATAPI disk
|
||||
devices. The most common devices in this category are PD drives
|
||||
and LS-120 drives. Traditionally, media for these devices are not
|
||||
partitioned. Consequently, the pf driver does not support partitioned
|
||||
media. This may be changed in a future version of the driver.
|
||||
|
||||
2.5 Using the pt driver
|
||||
|
||||
The pt driver for parallel port ATAPI tape drives is a minimal driver.
|
||||
It does not yet support many of the standard tape ioctl operations.
|
||||
For best performance, a block size of 32KB should be used. You will
|
||||
probably want to set the parallel port delay to 0, if you can.
|
||||
|
||||
2.6 Using the pg driver
|
||||
|
||||
The pg driver can be used in conjunction with the cdrecord program
|
||||
to create CD-ROMs. Please get cdrecord version 1.6.1 or later
|
||||
from ftp://ftp.fokus.gmd.de/pub/unix/cdrecord/ . To record CD-R media
|
||||
your parallel port should ideally be set to EPP mode, and the "port delay"
|
||||
should be set to 0. With those settings it is possible to record at 2x
|
||||
speed without any buffer underruns. If you cannot get the driver to work
|
||||
in EPP mode, try to use "bidirectional" or "PS/2" mode and 1x speeds only.
|
||||
|
||||
|
||||
3. Troubleshooting
|
||||
|
||||
3.1 Use EPP mode if you can
|
||||
|
||||
The most common problems that people report with the PARIDE drivers
|
||||
concern the parallel port CMOS settings. At this time, none of the
|
||||
PARIDE protocol modules support ECP mode, or any ECP combination modes.
|
||||
If you are able to do so, please set your parallel port into EPP mode
|
||||
using your CMOS setup procedure.
|
||||
|
||||
3.2 Check the port delay
|
||||
|
||||
Some parallel ports cannot reliably transfer data at full speed. To
|
||||
offset the errors, the PARIDE protocol modules introduce a "port
|
||||
delay" between each access to the i/o ports. Each protocol sets
|
||||
a default value for this delay. In most cases, the user can override
|
||||
the default and set it to 0 - resulting in somewhat higher transfer
|
||||
rates. In some rare cases (especially with older 486 systems) the
|
||||
default delays are not long enough. if you experience corrupt data
|
||||
transfers, or unexpected failures, you may wish to increase the
|
||||
port delay. The delay can be programmed using the "driveN" parameters
|
||||
to each of the high-level drivers. Please see the notes above, or
|
||||
read the comments at the beginning of the driver source files in
|
||||
linux/drivers/block/paride.
|
||||
|
||||
3.3 Some drives need a printer reset
|
||||
|
||||
There appear to be a number of "noname" external drives on the market
|
||||
that do not always power up correctly. We have noticed this with some
|
||||
drives based on OnSpec and older Freecom adapters. In these rare cases,
|
||||
the adapter can often be reinitialised by issuing a "printer reset" on
|
||||
the parallel port. As the reset operation is potentially disruptive in
|
||||
multiple device environments, the PARIDE drivers will not do it
|
||||
automatically. You can however, force a printer reset by doing:
|
||||
|
||||
insmod lp reset=1
|
||||
rmmod lp
|
||||
|
||||
If you have one of these marginal cases, you should probably build
|
||||
your paride drivers as modules, and arrange to do the printer reset
|
||||
before loading the PARIDE drivers.
|
||||
|
||||
3.4 Use the verbose option and dmesg if you need help
|
||||
|
||||
While a lot of testing has gone into these drivers to make them work
|
||||
as smoothly as possible, problems will arise. If you do have problems,
|
||||
please check all the obvious things first: does the drive work in
|
||||
DOS with the manufacturer's drivers ? If that doesn't yield any useful
|
||||
clues, then please make sure that only one drive is hooked to your system,
|
||||
and that either (a) PARPORT is enabled or (b) no other device driver
|
||||
is using your parallel port (check in /proc/ioports). Then, load the
|
||||
appropriate drivers (you can load several protocol modules if you want)
|
||||
as in:
|
||||
|
||||
# insmod paride
|
||||
# insmod epat
|
||||
# insmod bpck
|
||||
# insmod kbic
|
||||
...
|
||||
# insmod pd verbose=1
|
||||
|
||||
(using the correct driver for the type of device you have, of course).
|
||||
The verbose=1 parameter will cause the drivers to log a trace of their
|
||||
activity as they attempt to locate your drive.
|
||||
|
||||
Use 'dmesg' to capture a log of all the PARIDE messages (any messages
|
||||
beginning with paride:, a protocol module's name or a driver's name) and
|
||||
include that with your bug report. You can submit a bug report in one
|
||||
of two ways. Either send it directly to the author of the PARIDE suite,
|
||||
by e-mail to grant@torque.net, or join the linux-parport mailing list
|
||||
and post your report there.
|
||||
|
||||
3.5 For more information or help
|
||||
|
||||
You can join the linux-parport mailing list by sending a mail message
|
||||
to
|
||||
linux-parport-request@torque.net
|
||||
|
||||
with the single word
|
||||
|
||||
subscribe
|
||||
|
||||
in the body of the mail message (not in the subject line). Please be
|
||||
sure that your mail program is correctly set up when you do this, as
|
||||
the list manager is a robot that will subscribe you using the reply
|
||||
address in your mail headers. REMOVE any anti-spam gimmicks you may
|
||||
have in your mail headers, when sending mail to the list server.
|
||||
|
||||
You might also find some useful information on the linux-parport
|
||||
web pages (although they are not always up to date) at
|
||||
|
||||
http://www.torque.net/parport/
|
||||
|
||||
|
||||
@@ -0,0 +1,165 @@
|
||||
Using the RAM disk block device with Linux
|
||||
------------------------------------------
|
||||
|
||||
Contents:
|
||||
|
||||
1) Overview
|
||||
2) Kernel Command Line Parameters
|
||||
3) Using "rdev -r"
|
||||
4) An Example of Creating a Compressed RAM Disk
|
||||
|
||||
|
||||
1) Overview
|
||||
-----------
|
||||
|
||||
The RAM disk driver is a way to use main system memory as a block device. It
|
||||
is required for initrd, an initial filesystem used if you need to load modules
|
||||
in order to access the root filesystem (see Documentation/initrd.txt). It can
|
||||
also be used for a temporary filesystem for crypto work, since the contents
|
||||
are erased on reboot.
|
||||
|
||||
The RAM disk dynamically grows as more space is required. It does this by using
|
||||
RAM from the buffer cache. The driver marks the buffers it is using as dirty
|
||||
so that the VM subsystem does not try to reclaim them later.
|
||||
|
||||
The RAM disk supports up to 16 RAM disks by default, and can be reconfigured
|
||||
to support an unlimited number of RAM disks (at your own risk). Just change
|
||||
the configuration symbol BLK_DEV_RAM_COUNT in the Block drivers config menu
|
||||
and (re)build the kernel.
|
||||
|
||||
To use RAM disk support with your system, run './MAKEDEV ram' from the /dev
|
||||
directory. RAM disks are all major number 1, and start with minor number 0
|
||||
for /dev/ram0, etc. If used, modern kernels use /dev/ram0 for an initrd.
|
||||
|
||||
The new RAM disk also has the ability to load compressed RAM disk images,
|
||||
allowing one to squeeze more programs onto an average installation or
|
||||
rescue floppy disk.
|
||||
|
||||
|
||||
2) Kernel Command Line Parameters
|
||||
---------------------------------
|
||||
|
||||
ramdisk_size=N
|
||||
==============
|
||||
|
||||
This parameter tells the RAM disk driver to set up RAM disks of N k size. The
|
||||
default is 4096 (4 MB) (8192 (8 MB) on S390).
|
||||
|
||||
ramdisk_blocksize=N
|
||||
===================
|
||||
|
||||
This parameter tells the RAM disk driver how many bytes to use per block. The
|
||||
default is 1024 (BLOCK_SIZE).
|
||||
|
||||
|
||||
3) Using "rdev -r"
|
||||
------------------
|
||||
|
||||
The usage of the word (two bytes) that "rdev -r" sets in the kernel image is
|
||||
as follows. The low 11 bits (0 -> 10) specify an offset (in 1 k blocks) of up
|
||||
to 2 MB (2^11) of where to find the RAM disk (this used to be the size). Bit
|
||||
14 indicates that a RAM disk is to be loaded, and bit 15 indicates whether a
|
||||
prompt/wait sequence is to be given before trying to read the RAM disk. Since
|
||||
the RAM disk dynamically grows as data is being written into it, a size field
|
||||
is not required. Bits 11 to 13 are not currently used and may as well be zero.
|
||||
These numbers are no magical secrets, as seen below:
|
||||
|
||||
./arch/i386/kernel/setup.c:#define RAMDISK_IMAGE_START_MASK 0x07FF
|
||||
./arch/i386/kernel/setup.c:#define RAMDISK_PROMPT_FLAG 0x8000
|
||||
./arch/i386/kernel/setup.c:#define RAMDISK_LOAD_FLAG 0x4000
|
||||
|
||||
Consider a typical two floppy disk setup, where you will have the
|
||||
kernel on disk one, and have already put a RAM disk image onto disk #2.
|
||||
|
||||
Hence you want to set bits 0 to 13 as 0, meaning that your RAM disk
|
||||
starts at an offset of 0 kB from the beginning of the floppy.
|
||||
The command line equivalent is: "ramdisk_start=0"
|
||||
|
||||
You want bit 14 as one, indicating that a RAM disk is to be loaded.
|
||||
The command line equivalent is: "load_ramdisk=1"
|
||||
|
||||
You want bit 15 as one, indicating that you want a prompt/keypress
|
||||
sequence so that you have a chance to switch floppy disks.
|
||||
The command line equivalent is: "prompt_ramdisk=1"
|
||||
|
||||
Putting that together gives 2^15 + 2^14 + 0 = 49152 for an rdev word.
|
||||
So to create disk one of the set, you would do:
|
||||
|
||||
/usr/src/linux# cat arch/i386/boot/zImage > /dev/fd0
|
||||
/usr/src/linux# rdev /dev/fd0 /dev/fd0
|
||||
/usr/src/linux# rdev -r /dev/fd0 49152
|
||||
|
||||
If you make a boot disk that has LILO, then for the above, you would use:
|
||||
append = "ramdisk_start=0 load_ramdisk=1 prompt_ramdisk=1"
|
||||
Since the default start = 0 and the default prompt = 1, you could use:
|
||||
append = "load_ramdisk=1"
|
||||
|
||||
|
||||
4) An Example of Creating a Compressed RAM Disk
|
||||
----------------------------------------------
|
||||
|
||||
To create a RAM disk image, you will need a spare block device to
|
||||
construct it on. This can be the RAM disk device itself, or an
|
||||
unused disk partition (such as an unmounted swap partition). For this
|
||||
example, we will use the RAM disk device, "/dev/ram0".
|
||||
|
||||
Note: This technique should not be done on a machine with less than 8 MB
|
||||
of RAM. If using a spare disk partition instead of /dev/ram0, then this
|
||||
restriction does not apply.
|
||||
|
||||
a) Decide on the RAM disk size that you want. Say 2 MB for this example.
|
||||
Create it by writing to the RAM disk device. (This step is not currently
|
||||
required, but may be in the future.) It is wise to zero out the
|
||||
area (esp. for disks) so that maximal compression is achieved for
|
||||
the unused blocks of the image that you are about to create.
|
||||
|
||||
dd if=/dev/zero of=/dev/ram0 bs=1k count=2048
|
||||
|
||||
b) Make a filesystem on it. Say ext2fs for this example.
|
||||
|
||||
mke2fs -vm0 /dev/ram0 2048
|
||||
|
||||
c) Mount it, copy the files you want to it (eg: /etc/* /dev/* ...)
|
||||
and unmount it again.
|
||||
|
||||
d) Compress the contents of the RAM disk. The level of compression
|
||||
will be approximately 50% of the space used by the files. Unused
|
||||
space on the RAM disk will compress to almost nothing.
|
||||
|
||||
dd if=/dev/ram0 bs=1k count=2048 | gzip -v9 > /tmp/ram_image.gz
|
||||
|
||||
e) Put the kernel onto the floppy
|
||||
|
||||
dd if=zImage of=/dev/fd0 bs=1k
|
||||
|
||||
f) Put the RAM disk image onto the floppy, after the kernel. Use an offset
|
||||
that is slightly larger than the kernel, so that you can put another
|
||||
(possibly larger) kernel onto the same floppy later without overlapping
|
||||
the RAM disk image. An offset of 400 kB for kernels about 350 kB in
|
||||
size would be reasonable. Make sure offset+size of ram_image.gz is
|
||||
not larger than the total space on your floppy (usually 1440 kB).
|
||||
|
||||
dd if=/tmp/ram_image.gz of=/dev/fd0 bs=1k seek=400
|
||||
|
||||
g) Use "rdev" to set the boot device, RAM disk offset, prompt flag, etc.
|
||||
For prompt_ramdisk=1, load_ramdisk=1, ramdisk_start=400, one would
|
||||
have 2^15 + 2^14 + 400 = 49552.
|
||||
|
||||
rdev /dev/fd0 /dev/fd0
|
||||
rdev -r /dev/fd0 49552
|
||||
|
||||
That is it. You now have your boot/root compressed RAM disk floppy. Some
|
||||
users may wish to combine steps (d) and (f) by using a pipe.
|
||||
|
||||
--------------------------------------------------------------------------
|
||||
Paul Gortmaker 12/95
|
||||
|
||||
Changelog:
|
||||
----------
|
||||
|
||||
10-22-04 : Updated to reflect changes in command line options, remove
|
||||
obsolete references, general cleanup.
|
||||
James Nelson (james4765@gmail.com)
|
||||
|
||||
|
||||
12-95 : Original Document
|
||||
Reference in New Issue
Block a user