liufirst 发表于 2006-3-20 11:00:51

硬盘启动可能用到的文件loadlin.exe(中文)

这个也是偶翻译的,有错的地方请指出。


LOADLIN 用户手册                                                96-04-28
于2006年3月2日翻译                   by liufirst刘一
============================================================================

   LOADLIN v1.6 (C) 1996 Hans Lermen (lermen@elserv.ffm.fgan.de)

   本程序为自由软件。这意味着你可以重新发布它或者修改它。它遵守GNU(General Public License),所有版本由Free Software Foundation(自由软件联盟)发行。

   我希望这个程序有用,但是对任何目的的销售没有什么担保,包括暗示
性的担保,在GNU条款里有更详细的内容。


   你会随此软件得到一个GNU条款,如果没有,写信给自由软件联盟
the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.


============================================================================



      目录
      ========

1.    为什么使用LOADLIN

2.    LOADLIN的特点

3.    如何使用LOADLIN
3.1.你需要什么
3.2.从DOS命令行启动
3.2.1 快速开始
3.2.2 帮助
3.2.3 使用批处理文件(.bat)文件开始linux
3.2.4 装入Ramdisks一个新的内核
3.2.5 使用老内核软盘和Ramdisks ( Linux < 1.3.48 )
3.2.6 系统规定
3.3   从CONFIG.SYS启动
3.3.1 CONFIG.SYS(DOS)的例子
3.3.2 CONFIG.SYS (Windows 95)的例子
3.3.3 CONFIG.SYS句法规定

4.    LOADLIN命令行参数
4.1   命令行的最大长度

5.    如果有问题
5.1   检测到V86的问题
5.2.排错时的输出(-v,-t,-d参数)

6.    参数和错误报告发送到哪里

7.    荣誉


                         --------- +++--------



1.    为什么使用LOADLIN ?
      =================

如果你在linux之外有可启动的DOS分区,LOADLIN是从硬盘启动linux最安全的方法,
大多数新学linux的人没有耐心去看完LILO文档,不正确的配置LILO会导致
      DOS不可启动(MBR被重写了,'fdisk /MBR'通常不能解决),对于没有耐心
      的人,LOADLIN则是启动linux最好的办法

      LOADLIN不需要安装,内核镜象(images)只要在任何DOS可存取的分区,
      即使是网络驱动器,这也让LOADLIN成为一个出色的工具,如果在系统崩溃后
      启动,可从备份的文件系统中恢复(这之后必须要运行LILO,但要先启动,对吧)

很多Cdrom生产商已经看到了从LOADLIN启动linux安装的好处,因为它不从linux
启动,如果有了DOS或者是WIN95,使用DOS开始linux并不坏。使用LOADLIN 可以
不需要linux启动盘而直接启动linux

                         --------- +++--------


2.    LOADLIN的特点
      ===================

LOADLIN适应不同版本的DOS,很少有限制。它使用extended memory,还可以
装入很大的内核(bzImages),或者直接使用ramdisk镜象(initrd),
bzImage+initrd标准是被LILO作者和LOADLIN作者(我)联合开发的,他们也是
1.3.73以后版本的官方内核作者。

      它也可以适就从UMSDOS-based系统启动的DOS驱动器.

一些选项(-v, -t, -d)产生排错信息,如果有问题,你可以找找看它们是不是由
LOADLIN引起的

      LOADLIN也可以被虚拟的86模式装入,使用EMS驱动时通常是正常的


                         --------- +++--------



3.    如何使用LOADLIN
      ==================

      注意:

LOADLIN是一个逻辑装入系统的工具,它会导致DOS完全被linux取代,当需要返回
DOS时,需要在linux下使用reboot命令。


3.1.需要什么
      -------------

      1. 一个386或者更好的CPU
         DOS或者WINDOWS95已经装在系统里了

      2. 任何压缩的linux内核镜象文件(zImage, bzImage).
         注意: zImage是一个古老的内核压缩模式, bzImage 比较新( kernel version >= 1.3.73),
         它可以压缩到1M大小, 这样未压缩的内核会有2M大
         下面的例子我们只说zImage,如果是bzImage你可以照样替代。

      3. LODLIN16.TGZ压缩包, 它包括:

          ( 注意:这些是DOS文件 )
          LOADLIN.EXE
          DOC\MANUAL.TXT (this file)
          参数文件例子 DOC\TEST.PAR
          DOC\PARAMS.DOC


3.2.从MSDOS启动
      ---------------------------

3.2.1 开始
      -----------

      下面我假定你将LODLIN16.TGZ解压到C:\LOADLIN.

      在DOS提示符下你可以输入:

         C:> CD \LOADLIN
         C:\LOADLIN> LOADLIN zimage /dev/hdb1 ro vga=ask

      或者想输入一个大内核,而且使用RAM disk:

         C:\LOADLIN> LOADLIN bzimage /dev/ram rw initrd=diskimage

      如果你的参数长度大于128个字符,你可以用文件:

         C:\LOADLIN> LOADLIN @params

      "test.par"是一个例子,看看它吧。

      关于命令行参数的详细说明在PARAMS.DOC文件里,但这个文件有点过时了,
一个更好的说明在
          http://sunsite.unc.edu/mdw/HOWTO/BootPrompt-HOWTO.html
      or
          http://rsphy1.anu.edu/~gpg109/BootPrompt-HOWTO.html
但这两个链接好象打不开。

3.2.2 帮助
      ----------

      可以获得在线帮助,输入:

         C:\LOADLIN> loadlin

      或者,更详细

         C:\LOADLIN> loadlin | more


      它输出如下(在我的电脑里) ....

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      LOADLIN v1.6 (C) 1994..1996 Hans Lermen

      USAGE:
      LOADLIN @params
      LOADLIN
          without any params, LOADLIN displays this help message.
          @params:
             params is a DOS file containing all other options
          zimage_file:
             DOS file name of compressed Linux kernel image
          options:
             -v      verbose, show information on params and configuration
             -t      test mode, do all but starting Linux, also sets -v
             -d file   debug mode, same as -t, but duplicates output to "file"
             -clone    ( Please read MANUAL.TXT before using this switch! )
             -n      no translation for root=/dev/...
             -txmode   switch to textmode 80x25 on startup
             -noheap   disable use of setup heap
             -wait=nnafter loading wait nn (DOS)ticks before booting Linux
             -dskreset after loading reset all disks before booting Linux
          boot_params:
             root=xxxfilesystem to be mounted by Linux as "/"
                     (string passed unchanged to the kernel)
                  xxx = hex number (e.g. root=201 for /dev/fd1)
                      = /dev/mmmn (e.g. root=/dev/hda2)
                           mmm = fd,hda,hdb,sda,sdb...
                           n   = 1..10.. decimal
             ro      mount "/" readonly
             rw      mount "/" read/write
             initrd=x(for kernels > 1.3.72) load file x into /dev/ram. If FS in x
                     contains /linuxrc, execute it, and then remount to root=xxx.
                     If root=/dev/ram, just load, bypass execution of /linuxrc

          for more boot params see PARAMS.TXT or Paul Gortmakers HOWTO:
            http://sunsite.unc.edu/mdw/HOWTO/BootPrompt-HOWTO.html
            http://rsphy1.anu.edu/~gpg109/BootPrompt-HOWTO.html

      Your current DOS/CPU configuration is:
      load buffer size: 0x0082D000 VCPI, setup buffer size:0x3E00 (reloc setup)
      lowmem buffer:    0x0006DC00 (part of load buffer)
      total memory:   0x01000000
      CPU is in V86 mode
      SetupIntercept: YES, patching setup code
      stat4: VCPI_present, physmap=logmap, all OK for switch to realmode
      input params (size 0x0000):

      LOADLIN started from DOS-prompt

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

      NOTE: All LOADLIN options (such as -t,... ) MUST come before
            the Linux command_line params
注意,所有的loadlin参数必须在linux参数前面

3.2.3 从批处理启动loadlin
      --------------------------------------------

大多数MSDOS用户开着smartdrv,如果"write-behind"写缓存开着,
      在LOADLIN运行前程序要把该写的写到硬盘里。

      例子:

       C\LOADLIN> smartdrv /C    这句可以让缓存内容写入硬盘
       C\LOADLIN> loadlin ....


      用批处理是个聪明的方法:

      +-------------------- start of LINUX.BAT
      |
      |SMARTDRV /C
      |C:\LOADLIN\LOADLIN C:\LOADLIN\ZIMAGE root=/dev/hdb2 ro vga=3
      |
      +-------------------- end of LINUX.BAT


      这样你可以输入:

       C> linux

      ... 这样就开始了

      这个例子随机就有



3.2.4 将新的内核载入到内存虚拟盘(ramdisks)中
      -----------------------------------

如果你使用1.3.72版之后的内核, LOADLIN可以直接将内核载入到内存虚拟盘中,
并且让Linux把内存虚拟盘(ramdisk (/dev/ram))mount成根文件系统。这个文
件必须包含linux支持的文件系统,比如minix或者ext2,这个技术叫做'initrd',它可以
更灵活的从软盘载入。可能会有以下情况:

      A) 你只想载入ramdisk并把它mount成root FS.

         C\LOADLIN> loadlin zimage root=/dev/ram rw initrd=imagefile

         你将会看到两个LOADING....过程,一个是内核,一个是ramdisk.

B) 你想载入并且mount ramdisk,只是想解压一个大一点的系统,内核只支持很
少的设备。这样,ramdisk镜象的内容必须包括一个可执行的'/linuxrc',它可以通过
(via insmod)载入内核模块。/linuxrc运行完后, root FS重新通过root=/dev/...为设备
mount后使用,或者对于那个设备,/linuxrc已经选择。这个技术的细节在linux/Documentation/initrd.txt,它是内核资源的一部分,这样可以这样输入:

         C\LOADLIN> loadlin zimage root=/dev/hda1 ro initrd=imagefile

      不用initrd 方法,例如_not_ LOADLIN载入了ramdisk,但是内核从软盘启动,
在1.3.48版有点修改,它现在是这个样子:

         C\LOADLIN> loadlin zimage root=/dev/fd0 rw load_ramdisk=1

或者,你想在插入软盘前有一个提示:

         C\LOADLIN> loadlin zimage root=/dev/fd0 rw load_ramdisk=1 prompt_ramdisk=1

      Ramdisk的大小是动态分配的。
      注意: 在所有情况下,ramdisk镜象都是被压缩的 (gziped)



3.2.5 软盘和ramdisk使用老版linux( Linux < 1.3.48 )
      -----------------------------------------------------------

      如果LOADLIN发现ramdisk=xxxx和root=/dev/fdx一起,它会把内核镜象载入到内存,
但是,在此之前,Linux会提示插入一张含有内核的软盘,这使你可以让我们用同一张软盘
启动DOS,也可以开始LOADLIN。

当然,这是两张软盘(a two-floppy boot)启动,当Linux变得越来越大,一张盘可
能存不下内核文件和root文件系统了,使用LOADLIN,不需要任何想象力或者花招,就可以
把更多的文件载入。

      例子:

      LST版本只随3.5寸软盘发行,但是你却只有5.25寸的A:盘
      Slackware 3.0有一个很大的目录树和许多可能用到的驱动
      使用LOADLIN只需要有内核镜象的盘和一个合适的root盘


3.2.6 系统规定
      ------------------

LOADLIN-1.6对使用新的内核只有非常少的规定,因为内核现在支持LOADLIN。1.6版改
善了很LOADLIN-1.5版的问题,以下*开头的部分只在老版本内核中使用(不支持loadlin)

      *必须有足够内存存放压缩的内核镜象(LOADLIN开始到090000h).

      -如果是新版内核,只需有足够的extended/XMS/VCPI内存临时存放镜象文件,(和最终的ramdisk镜象)

      -LOADLIN的"load buffer size"提供(你所有的)详细输出。

      *setup程序和LOADLIN自身在090000h ... 09B000h之间,因此你必须有640 K基本内存。

      -使用Linux 1.1.43,setup程序不适合2 K,这样,它会变化大小,随时可能会变大,
现在的(1.3.91)setup是9 * 512字节长,LOADLIN则有31 * 512字节,它会有点慢。

      -LOADLIN的"load buffer size"提供(你所有的)详细输出。

      *剩下的12 Kbyte在640 K的最上面,它最有希望是BIOS和载入到高端的驱动数据


      -DOS程序中可以工作在实模式下,或者是V86模式(虚拟86模式,在386以上机)

         Linux则运行在保护模式下,内核则必须有0级特权(P0,超级用户模式),然而,
在V86模式下,如果V86服务器不允许的话,不可能切换到P0级(as is the case with DPMI).

         因此:
         - 必须在86实模式下(没有EMS驱动,没有WINDOWS,没有Windows 95图形模式).
             或者
         - 必须在EMS驱动中有VCPI服务,仍就不能运行WINDOWS 或 Windows 95
         使用EMM386,别加NOVCPI选项, 但NOEMS则没问题。

         VCPI允许P0并且被大多数EMS驱动支持,但别在MS-WINDOWS或Windows 95下

-        物理内存到虚拟内存映射必须同样对第1个640K使用,一般设置都是这样,但也可
以禁止,典型的EMS驱动选项如下:

         EXCLUDE=1000-A000   (for 386MAX)
             or
         B=A000                (for EMM386.EXE, 通常不需要).


         看看你的EMS手册
         别担心,少了什么,LOADLIN会提示的。

         注意:

         或许你的VCPI server在进行保护模式时做了垃圾内存收集,因此要有耐心,特别
是系统内存很大时。

      -当然,别在Linux DOSEMU(linux的dos模拟器)里执行LOADLIN,如果这样做,结果自然是DOS模拟器被终止掉,因为它没有VCPI服务,你的文件系统也仍就是完整的。

3.3   从CONFIG.SYS启动
      -----------------------

从DOS 6.0启动时,可以配置多重启动,这被CONFIG.SYS指针管理,因此,这个地方设置LOADLIN/Linux启动很好。即使准备启动DOS,也可以以后再启动linux,可以从DOS命令或者是
批处理文件。


3.3.1 CONFIG.SYS文件的例子(DOS)
      ---------------------------------

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      SWITCHES=/F

      
      menuitem=DOS, DOS boot
      menuitem=LINUX_1, LINUX boot
      menuitem=LINUX_2, LINUX boot via param file
      menuitem=LINUX_3, LINUX boot via param file, but overwrite root device
      menuitem=LINUX_4, Create a dump file for bug report


      
      device=c:\dos\himem.sys
      device=c:\dos\emm386.exe 2048 ram
      DOS=HIGH,UMB
      SHELL=C:\COMMAND.COM C:\ /e:1024 /p
      ...   etc.,etc.,etc.


      
      shell=c:\loadlin\loadlin.exe c:\loadlin\zimage root=/dev/hdb2 ro


      
      shell=c:\loadlin\loadlin.exe @c:\loadlin\linux.par


      
      shell=c:\loadlin\loadlin.exe @c:\loadlin\linux.par root=/dev/hdb2


      
      shell=c:\loadlin\loadlin.exe c:\loadlin\zimage -d c:\dump.txt root=/dev/hda1
      rem                                          ^^^^^^^^^^^^^^
      remThis writes debug information to a file ---------^
      remAll is set up as usual, but Linux is not loaded and LOADLIN idles.
      remCAUTION: Don't do this if you haven't a in CONFIG.SYS,
      rem         because you then need a DOS System floppy to boot normally.


      
      rem   Here we put any other "common" configuration stuff ....

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


3.3.2 CONFIG.SYS例子(Windows 95)
      -----------------------------------------

      Windows 95和Linux在同一台电脑中,需要关掉C:\MSDOS.SYS文件中的某些选项,
(在Windows 95中这个文件是文本文件)。
      注意:   别在图形界面下使用LOADLIN
改变C:\MSDOS.SYS的属性,这样它能被看到,也可以被编辑

      C:\MSDOS.SYS --------------------------------------
      BootGUI=0
      Logo=0
      ...
      ---------------------------------------------------

这将避免启动到图形界面,而是进入正常的DOS提示符。
(想进GUI,输入C:>win    )
      Logo=0 关闭开机画面(logo)
有报告说,显示LOGO会使有些显卡看不到linux的画面,这样只有在它之前就启动linux

      C:\CONFIG.SYS -------------------------------------
      
      menuitem=W95, Boot W95 DOS
      menuitem=LINUX, Boot Linux
      menudefault=W95,10

      
      rem all what you need for DOS
      ...

      
      shell=c:\loadlin\loadlin.exe @C:\loadlin\linuxpar.1

      
      rem THERE SHOULD BE NOTHING for COMMON
      rem move all you have to W95 part
      ---------------------------------------------------



3.3.3 CONFIG.SYS句法
      --------------------------------

1.        "shell=" 句子会被DOS转换成大写,但是Linux 参数区分大小写,LOADLIN把下面的
参数转换成小写

         root=...
         ro
         rw
         mem=...
         no387
         single
         auto
         debug
         no-hlt
         reserve=...
         hd=...
         xd=...
         bmouse=...
         max_scsi_luns=

         而且在CONFIG.SYS使用’shell=loadlin.exe @params more_params'时,所有'more_params'都会被转换成小写

         下面的参数不会写到启动命令行,但会为启动转换成数值

         vga=...
         ramdisk=


2.        可以使用参数文件,以避免大小写问题,CONFIG.SYS的例子如下:

         
         shell=c:\loadlin\loadlin.exe @c:\loadlin\params

         可以编辑这个指定的文件,比如:

         
         shell=c:\loadlin\loadlin.exe @c:\loadlin\params root=/dev/other

         "test.par"是这样一个例子.仔细阅读一下。


                         --------- +++--------




4.    LOADLIN命令行参数
      ===================================

注意你是否用了一个参数文件,例如 @TEST.PAR,这必须是LOADLIN命令行的第1个
参数,其它参数,包括zImage文件,都在这个参数文件中。

所有在 @.. 后的参数都在参数文件读完后再读,相同的项值会被后面的取代,参数
文件中的第1个参数必须是内核镜象文件,如果你想改变它,就用关键字'image=',比如:

         C:> loadlin @test.par image=otherfile

      当Linux启动时,它把运行参数传给setup(这个程序检查最基本的硬件配置,并设定为保护模式)这个字符串命令行,将被一些著名的内置关键字检查,(is then checked for some well known compiled-in keywords.),一些用来改变内核变量,比如(mem=, root=, ro, rw, no387), 一些传给设备驱动,(比如 ether=, hd=, sound=) 一些(比如single and auto)会做为选项传给/etc/init 或者/bin/init或者/sbin/init, 看什么最先被找到).

      "PARAMS.DOC"有更详细的解释。

      所有不能识别的关键字,例如"keyword=value"会被设置到环境变量中("envp_init"),它也传给/linuxrc (如果你有initrd=)和/etc/init.这些环境变量可以在/etc/rc*检查,(/etc/rc.d/rc.*). 这个完整的命令行也可以通过/proc/cmdline查看。


4.1   命令行最长有多长
      ----------------------------------

      DOS命令行最长可以达到127 bytes (包括程序本身),使用参数文件,则可以达到2047 bytes, 但是这个字符串在一个临时的地方,必须被拷贝到内核的静态缓冲区init/main中,这使最大长度变成了256 bytes.
      如果需要更长,可以在arch/i386/kernel/setup.c中改变COMMAND_LINE_SIZE的值。


                         --------- +++--------



5.    如果有问题
      ====================

      对于上千种可能的软硬件配置,没有程序可以没问题,因此,我需要你能把你遇到的问题反馈给我。


      但是,如果你看到问题,我需要有详细的信息,就象“我的电脑蓝屏了”就不能使我找到问题。
      LOADLIN可以为我们产生很多信息。
      打开-d 或者-t开关



5.1   在侦测到V86时的问题
      ----------------------

      在一些486 clones(486的克隆?),当检查到V86模式时遇到了CR0问题,它会在CPU工作在实模式下时,但有内存分页,这有可能,这即没有文档,也不被INTEL支持。可能是主板的BIOS把影子内存这样映射,或者用了那些老的奇怪的EMM管理器。也可能是不兼容486 clone,-clone开关可以跳过CR0检查,如果找到EMM管理器,就假定是V86模式。当然,EMM管理器不能真的使用分页。

      另外,如果LOADLIN检查到V86,并且你又确定电脑工作在实模式下,你需要使用-f开关,强迫LOADLIN检查实模式。
      注意: 这个选项只在这里介绍,因为它实在是太危险了。

5.2.debug信息输出(-v,-t,-d)
      --------------------------------------

      根区载入setup被LOADLIN改变时,-v, -t or -d 选项会有输出,这些信息会在linux中看到,但-t 和 ?d,zimage文件并没有被装入, linux还没有开始。

      描述:

      你当前linux内核配置如下:
      image file:       d:\tmp\1-1-47.0

liufirst 发表于 2006-3-20 11:01:25

回复 #1 liufirst 的帖子

Word版

[ 本帖最后由 liufirst 于 2006-3-20 11:03 编辑 ]

zhenfu 发表于 2006-3-20 17:14:36

好文,支持。

liufirst 发表于 2006-3-20 21:07:19

好文可不可以加精呢?

add1132 发表于 2006-3-29 01:01:14

好东西应该加精,可惜我没权限。

liufirst 发表于 2006-3-29 20:54:38

那也谢了。

button 发表于 2009-7-1 09:25:28

确实好东西
页: [1]
查看完整版本: 硬盘启动可能用到的文件loadlin.exe(中文)