[mdk-re] Re[2]: [mdk-re] Два линуксанаодномвинте

Sergei =?iso-8859-1?q?serpiph_=CE=C1_pochtamt=2Eru?=
Вт Май 15 23:01:01 MSD 2001


15 Май 2001 22:53 Вы написали:
> Hi!
> On Tue, 15 May 2001 22:30:00 +0400
> Sergei <serpiph на pochtamt.ru> wrote:
> 
> > > Может Вы имеете в виду изменение размеров разделов и их перемещение
> > > без потери данных? SC2000 это умеет. Lilo - не умеет.
> > Тогда советую заглянуть на man-страницу lilo и полазить по докам.
> 
> Все же выразитесь яснее. Что Вы имеете в виду?
> Чего я такого могу увидеть в man lilo?
> Я его читал и не раз, может что-то и упустил?
> О чем речь?
Включаю файл из /usr/share/doc/lilo-21.7/README (кусок). Там то, что я имею в 
виду. Просто слишком много слов для описания.
В кратце - загрузка других операционок.

-- 
С уважением, Епифанов Сергей
----------- следующая часть -----------
Booting a foreign operating system
- - - - - - - - - - - - - - - - -

LILO can even boot other operating systems, i.e. MS-DOS. To boot an other 
operating system, the name of a loader program, the device or file that 
contains the boot sector and the device that contains the partition table 
have to be specified.

The boot sector is merged with the partition table and stored in the map 
file.

Currently, the loaders chain.b and os2_d.b exist. chain.b simply starts the 
specified boot sector.* os2_d.b it a variant of chain.b that can boot OS/2 
from the second hard disk. The MAP-DRIVE option has to be used with os2_d.b 
to actually swap the drives.

  *  The boot sector is loaded by LILO's secondary boot loader before 
    control is passed to the code of chain.b.

The image is specified as follows: OTHER=<device_name> or OTHER=<file_name>

In addition to the options listen in section "Per-image options for 
kernels", the following variables are recognized: 

  CHANGE  Change the partition table according to the rules specified in 
    this CHANGE section. This option is intended for booting systems which 
    find their partitions by examining the partition table. See section 
    "Partition type changes" for details. 
  LOADER=<chain_loader>  Specifies the chain loader that should be used. If 
    it is omitted, /boot/chain.b is used. 
  MAP-DRIVE=<bios_device_code>  Instructs chain.b to installs a resident 
    driver that re-maps the floppy or hard disk drives. This way, one can 
    boot any operating system from a hard disk different from the first 
    one, as long as that operating system uses _only_ the BIOS to access 
    that hard disk.* This is known to work for PC/MS-DOS.

      *  So you should be very suspicious if the operating system requires 
        any specific configuration or even drivers to use the disk it is 
        booted from. Since there is a general trend to use optimized 
        drivers to fully exploit the hardware capabilities (e.g. 
        non-blocking disk access), booting systems from the second disk may 
        become increasingly difficult.

     MAP-DRIVE is followed by the variable TO=<bios_device_code> which 
    specifies the drive that should effectively be accessed instead of the 
    original one. The list of mappings is only searched until the first 
    match is found. It is therefore possible to "swap" drives, see the 
    second example below. 
  TABLE=<device>  Specifies the device that contains the partition table. 
    LILO does not pass partition information to the booted operating system 
    if this variable is omitted. (Some operating systems have other means 
    to determine from which partition they have been booted. E.g. MS-DOS 
    usually stores the geometry of the boot disk or partition in its boot 
    sector.) Note that /sbin/lilo must be re-run if a partition table 
    mapped referenced with TABLE is modified. 
  UNSAFE  Do not access the boot sector at map creation time. This disables 
    some sanity checks, including a partition table check. If the boot 
    sector is on a fixed-format floppy disk device, using UNSAFE avoids the 
    need to put a readable disk into the drive when running the map 
    installer. UNSAFE and TABLE are mutually incompatible. 

None of these options can be set in the global options section.

Examples:

other = /dev/hda2
  label = dos
  table = /dev/hda

other = /dev/hdb2
  label = os2
  loader = /boot/os2_d.b
  map-drive = 0x80
    to = 0x81
  map-drive = 0x81
    to = 0x80


Disk geometry
-------------

For floppies and most hard disks, LILO can obtain the disk geometry 
information from the kernel. Unfortunately, there are some exotic disks or 
adapters which may either not supply this information or which may even 
return incorrect information.

If no geometry information is available, LILO reports either the error
  geo_query_dev HDIO_GETGEO (dev 0x<number>) 
 or
  Device 0x<number>: Got bad geometry <sec>/<hd>/<cyl> 

If incorrect information is returned, booting may fail in several ways, 
typically with a partial "LILO" banner message. In this document, that is 
called a "geometry mismatch".

The next step should be to attempt setting the LBA32 or LINEAR 
configuration variable or the  -L  or  -l  command-line option. If this 
doesn't help, the entire disk geometry has to be specified explicitly. Note 
that LINEAR doesn't always work with floppy disks.

Another common use of disk sections is if an (E)IDE and a SCSI drive are 
used in the same system and the BIOS is configured to use the SCSI drive as 
the first drive. (Normally, the (E)IDE drive would be the first drive and 
the SCSI drive would be the second one.) Since LILO doesn't know how the 
BIOS is configured, it needs to be told explicitly about this arrangement. 
(See the second example below.)


Obtaining the geometry
- - - - - - - - - - -

The disk geometry parameters can be obtained by booting MS-DOS and running 
the program DPARAM.COM with the hexadecimal BIOS code of the drive as its 
argument, e.g. dparam 0x80 for the first hard disk. It displays the number 
of sectors per track, the number of heads per cylinder and the number of 
cylinders. All three numbers are one-based.

Alternatively, the geometry may also be determined by reading the 
information presented by the "setup" section of the ROM-BIOS or by using 
certain disk utilities under operating systems accessing the disk through 
the BIOS.


Specifying the geometry
- - - - - - - - - - - -

Disk geometry parameters are specified in the options section of the 
configuration file. Each disk parameter section begins with 
DISK=<disk_device>, similar to the way how boot images are specified. It is 
suggested to group disk parameter sections together, preferably at the 
beginning or the end of the options section.

For each disk, the following variables can be specified: 

  BIOS=<bios_device_code>  Is the number the BIOS uses to refer to that 
    device. Normally, it's  0x80  for the first hard disk and  0x81  for 
    the second hard disk. Note that hexadecimal numbers have to begin with 
    "0x". If BIOS is omitted, LILO tries to "guess" that number. 
  SECTORS=<sectors>  and 
  HEADS=<heads>  specify the number of sectors per track and the number of 
    heads, i.e. the number of tracks per cylinder. Both parameters have to 
    be either specified together or they have to be entirely omitted. If 
    omitted, LILO tries to obtain that geometry information from the 
    kernel. 
  CYLINDERS=<cylinders>  Specifies the number of cylinders. This value is 
    only used for sanity checks. If CYLINDERS is omitted, LILO uses the 
    information obtained from the kernel if geometry information had to be 
    requested in order to determine some other parameter. Otherwise,* it 
    just assumes the number of cylinders to be 1024, which is the cylinder 
    limit imposed by the BIOS. 
  INACCESSIBLE  Marks the device as inaccessible (for the BIOS). This is 
    useful if some disks on the system can't be read by the BIOS, although 
    LILO "thinks" they can. If one accidentally tries to use files located 
    on such disks for booting, the map installer won't notice and the 
    system becomes unbootable. The most likely use of INACCESSIBLE is to 
    prevent repetition after experiencing such a situation once. No other 
    variables may be specified if a device is configured as INACCESSIBLE. 

  *  I.e. if the BIOS device code, the number of sectors, the number of 
    heads and the partition start are specified. Note that the number of 
    cylinders may appear to vary if CYLINDERS is absent and only some of 
    the partition starts are specified.

Additionally, partition subsections can be added with 
PARTITION=<partition_device>. Each partition section can contain only one 
variable: 

  START=<partition_offset>  Specifies the zero-based number of the start 
    sector of that partition. The whole disk always has a partition offset 
    of zero. The partition offset is only necessary when using devices for 
    which the kernel does not provide that information, e.g. CD-ROMs. 

Examples:

disk = /dev/sda
  bios = 0x80
  sectors = 32
  heads = 64
  cylinders = 632
  partition = /dev/sda1
    start = 2048
  partition = /dev/sda2
    start = 204800
  partition = /dev/sda3
    start = 500000
  partition = /dev/sda4
    start = 900000

disk = /dev/sda
  bios = 0x80
disk = /dev/hda
  bios = 0x81


Partition table manipulation
----------------------------

Some non-Linux operating systems obtain information about their partitions 
(e.g. their equivalent of the root file system) from the partition table. 
If more than one such operating system is installed on a PC, they may have 
conflicting interpretations of the content of the partition table. Those 
problems can be avoided by changing the partition table, depending on which 
operating system is being booted.

Partition table changes are specified in a CHANGE section in the 
configuration file section describing the foreign operating system. Note 
that CHANGE sections are only accepted if the build-time option  
REWRITE_TABLE  is set.

The CHANGE section contains subsections for each partition whose table 
entry needs to be modified. Partitions are specified with 
PARTITION=<device_name>

Changes are applied in the sequence in which they appear in the 
configuration file. Configurations containing changes that are redundant 
either by repeating a previous change or by changing its result further are 
invalid and refused by the map installer.

Internally, all changes are expressed as rules which specify the location 
(disk and offset in the partition table), the value this location must 
contain before the change, and the value that has to be stored. As a safety 
measure, the rule is ignored if the previous value is found to be 
different.


Partition activation
- - - - - - - - - -

This option is intended for booting systems which determine their boot 
partition by examining the active flag in the partition table. The flag is 
enabled with ACTIVATE and disabled with DEACTIVATE. Note that only the 
current partition is affected. LILO does not automatically change the 
active flags of other partitions and it also allows more than one partition 
to be active at the same time.

Example:

other = /dev/sda4
  label = sco
  change
    partition = /dev/sda4
      activate
    partition = /dev/sda3
      deactivate


Partition type change rules
- - - - - - - - - - - - - -

Partition type changes are normally a transition between two possible 
values, e.g. a typical convention is to set the lowest bit in the upper 
nibble of the partition type (i.e. 0x10) in order to "hide", and to clear 
it to "unhide" a partition. LILO performs these changes based on a set of 
rules. Each rule defines the name of a partition type, its normal value, 
and the value when hidden. Those rules are defined in the options section 
of the configuration file. The section defining them begins with 
CHANGE-RULES.

The following options and variables can appear in the section: 

  RESET  Removes all previously defined rules. This is needed if a user 
    doesn't wish to use the pre-defined rules (see below). 
  TYPE=<name>  Adds a rule for the type with the specified name. Type names 
    are case-insensitive. The values are defined with NORMAL=<byte> and 
    HIDDEN=<byte>. Values can be specified as decimal or as hexadecimal 
    numbers with a leading  0x . If only one of the values is present, the 
    other value is assumed to be the same number, but with the most 
    significant bit inverted. 

LILO pre-defines rules for the three partition types of DOS partitions. The 
following example removes the pre-defined rules and creates them again:

change-rules
  reset
  type = DOS12
    normal = 0x01
    hidden = 0x11
  type = DOS16_small
    normal = 4 # hidden is 0x14
  type = DOS16_big
    hidden = 0x16


Partition type changes
- - - - - - - - - - -

Partition type changes are specified in the partition section as 
SET=<name>_<state>, where <name> is the name of the partition type, and 
<state> is its state, i.e. NORMAL or HIDDEN.

Example:

other = /dev/sda3
  label = dos
  change
    partition = /dev/sda2
      set = dos16_big_normal
    partition = /dev/sda3
      activate
      set = DOS16_big_normal

Only one SET variable is allowed per partition section. In the rare event 
that more than one SET variable is needed, further partition sections can 
be used.




Подробная информация о списке рассылки community