硬盘启动可能用到的文件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
回复 #1 liufirst 的帖子
Word版[ 本帖最后由 liufirst 于 2006-3-20 11:03 编辑 ] 好文,支持。 好文可不可以加精呢? 好东西应该加精,可惜我没权限。 那也谢了。 确实好东西
页:
[1]