08年开源10件大事

消息来自: 人民网

1. Linux上网本迅速风靡

2. Sun更新OpenOffice、Solaris,收购MySQL

3. 开源操作系统Ubuntu 8.10和Fedora 10上市

4. 谷歌推出Chrome开源浏览器

5. 谷歌推出开源移动平台Android

6. 诺基亚收购Symbian剩余52%股份

7. 在“Jacobsen起诉Katzer”案件中,法庭裁定 ,开源协议是一种著作权协议,违反协议就是侵权行为。

8. Linux文件系统reiserfs作者汉斯·雷瑟(Hans Reiser)因谋杀妻子被判入狱15年。

9. Debian OpenSSL软件包曝安全漏洞

10. 法官戴尔·基姆鲍尔(Dale Kimball)再次裁定SCO不拥有Unix知识产权

开始捣鼓FC10

刚准备帮朋友移植一个浏览器到ARM平台,启动我的FC8,又出现了一个令我感到很莫名的错误,“欢迎程序似乎即将崩溃,请选择其他欢迎程序!”

这个问题曾经我也出现过,也是在FC8的版本上出现的,上次问题出现后我在字符界面一步一步跟踪,最终确定问题在于没有足够的磁盘空间运行图形界面程序,由于前些天突然编译安装了几个巨大的程序,没有考虑到磁盘空间问题,删掉不必要的文件后,恢复到原来的正常状态了。

这次我懒得看什么错误,直接删掉了/tmp下的所有文件,然后将/usr/local中的文件精简,腾出来了1G空间,发现问题依然存在,相必这次问题应该和上次不一样了,也懒得跟踪了,这不Fedora Core 10正式版已经出来了么,赶紧下来看看

顺便说一下,我在实机上装的第一个Linux是Red Hat 7,后来看到了Fedora Core,便一直对FC情有独钟,尽管体验过的很多其他分发版Linux。从FC4~6基本上是一路升级过来的,随着内核版本和界面体验不断提高,FC是越来越强大,鉴于Ubuntu带来强大的压力,FC的版本升级过快,导致我不得不跳过几个版本号,直接从6跳到了8,然后尝试了9,发现9的KDE中文环境实在是令人叹息,并且经常莫名崩溃,无语,只好退回来到FC8直到现在。

Fedora Core 10 正式版发布

Fedora开发社区宣布,Fedora 10最终正式版已经发布。作为一个新的开源Linux发行版,Fedora 10引入了不少重要的新功能和技术,提高桌面用户体验的可用性。

由于相关服务器在今年8月受到了恶意黑客的攻击,Fedora 10正式版的发布比原计划推迟了一个月的时间。Fedora开发社区在出事后不得不让一些关键设备离线,幸好经过检查后没有发现源代码被盗。

Fedora 10基于今年10月份推出的Linux Kernel 2.6.27,改善了与流行摄像头的兼容性,集成了新的Atheros ath9k无线驱动,默认还有Firefox 3.0.4浏览器。

Fedora 10提供了KDE 4.1和GNOME 2.24两个最新版的安装环境供选择,其中前者发布于7月份,后者发布于9月份,整合了即时通信客户端Empathy和标签式浏览,并改进了Nautilus文件管理。

根据官方发行说明,Fedora 10的主要特性有:

-无线连接共享启用ad hoc网络共享

-更好的设置并通过改进的管理工具使用打印机

-简化了本地和远程连接的虚拟化存储供应

-新的安全性审核及入侵侦测系统SecTool

-强大、灵活的软件管理程序库RPM更新至4.6版

-通过重新编写PulseAudio声音服务器让其使用基于时间的音频调度实现无故障音频以及更好的性能

-改善摄像头支持

-更好支持红外远程控制使其方便与很多应用程序连接

-已为普通用户将/usr/local/sbin:/usr/sbin:/sbin添加到PATH以便简化命令行管理任务

-在线帐户服务为位于http://online.gnome.org或者保存在GConf中的帐户提供带证书的应用程序

Fedora 10最终正式版下载地址:
http://fedoraproject.org/zh_CN/get-fedora


这里提供另一个下载地址 :
i386 DVD SHA1:086fd570518ac58d3966c43c1b6d146e38919d8d
Fedora-10-i386-DVD.iso
http://mirrors.kernel.org/fedora/releases/10/Fedora/i386/iso/Fedora-10-i386-DVD.iso

Live CD (GNOME)
c0efba4eb55c142bcda3d78d8a02fada2339a220 *F10-i686-Live.iso
http://mirror.yandex.ru/fedora/linux/releases/10/Live/i686/F10-i686-Live.iso

Live CD (KDE)
d1b1d714d77534872b82c97abcf6f6c877a0d364 *F10-i686-Live-KDE.iso
http://download.fedoraproject.org/pub/fedora/linux/releases/10/Live/i686/F10-i686-Live-KDE.iso

建议使用迅雷下载,教育网的用户会自动搜索到 上交的FTP,速度很快。
也可以去上交的FTP上找找,肯定会有的。

Fedora 10正式版发布

Fedora 10正式版发布

Fedora 10正式版发布

Fedora 10正式版发布

Fedora 10正式版发布

KStar 校园网锐捷认证GUI版

先截两个图:

KStar1
KStar1
KStar1

近来学习QT,发现积极性不是很大,后来索性就想做一个什么实际的东西出来把,细想了一下,现在教育网很多用户都用锐捷认证,官方的版本限制太多,没有考 虑我们广大用户的利益,所以Windows下面有一Meto锐捷的东西,Linux下面也有相应的官方认证软件supplicant,但是这个不好用,所 以后来就有人写了mystar。但是一直没有一个GUI的,虽然使用Linux的高手云集,命令行可以搞定一切,貌似没有人准备为他写一个GUI,毕竟 Linux的推广于普及最终还是要让普通的来百姓能够使用,而他们迫切的需要图形界面的支持。

我一想,这个还不错,既学习Qt,巩固C++,又可以学习网络编程,当然少不了特定平台的系统调用,最后还可将学习Qt在BSD,windows,嵌入式等上面的移植,那个想法是相当的不错阿.说感就干。

首先分析Mystar的源代码,核心应该是参考Meto的,都是使用了libpcap库来实现网络抓包。libnet实现发帧。大概花了一上午的时间,将 mystar封装成类,然后开始学习QT,其实学习QT也挺快的,首先了解程序框架,然后了解各种文件用法,编译连接过程,然后根据doc/html下面 的帮助文档就可以了,不懂的地方Google一定能找到答案。

编写这个Kstar(名字瞎起的),用了RSA的MD5函数,读取配置文件还使用了专用的库CIniFile,为了在X11中使用系统托盘,使用了第三方 的TrayIcon类(Qt3中没有TrayIcon的相关类,哎),最后弄得这个可执行文件足有1M大小,真是惭愧…..尽管libcap使用的是 共享…

下面是ldd的结果

[root@localhost bin]# ldd kstar
linux-gate.so.1 => (0×00110000)
libpcap.so.0.9 => /usr/lib/libpcap.so.0.9 (0x00d2e000)
libqt-mt.so.3 => /usr/lib/qt-3.3/lib/libqt-mt.so.3 (0×02000000)
libXext.so.6 => /usr/lib/libXext.so.6 (0x00d5d000)
libX11.so.6 => /usr/lib/libX11.so.6 (0×00111000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x003f7000)
libm.so.6 => /lib/libm.so.6 (0x00ccc000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x002b2000)
libc.so.6 => /lib/libc.so.6 (0x00b71000)
libmng.so.1 => /usr/lib/libmng.so.1 (0x007b7000)
libjpeg.so.62 => /usr/lib/libjpeg.so.62 (0x003d3000)
libpng12.so.0 => /usr/lib/libpng12.so.0 (0×00253000)
libz.so.1 => /lib/libz.so.1 (0x00d19000)
libXi.so.6 => /usr/lib/libXi.so.6 (0x0027b000)
libXrender.so.1 => /usr/lib/libXrender.so.1 (0×00286000)
libXrandr.so.2 => /usr/lib/libXrandr.so.2 (0x0029d000)
libXcursor.so.1 => /usr/lib/libXcursor.so.1 (0×00291000)
libXinerama.so.1 => /usr/lib/libXinerama.so.1 (0x002a6000)
libXft.so.2 => /usr/lib/libXft.so.2 (0x007a2000)
libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0x00d6f000)
libfontconfig.so.1 => /usr/lib/libfontconfig.so.1 (0×00222000)
libSM.so.6 => /usr/lib/libSM.so.6 (0x003ac000)
libICE.so.6 => /usr/lib/libICE.so.6 (0x003b7000)
libdl.so.2 => /lib/libdl.so.2 (0x00cf7000)
libpthread.so.0 => /lib/libpthread.so.0 (0x00cfe000)
libXau.so.6 => /usr/lib/libXau.so.6 (0x0020d000)
libxcb-xlib.so.0 => /usr/lib/libxcb-xlib.so.0 (0×00210000)
libxcb.so.1 => /usr/lib/libxcb.so.1 (0x002be000)
/lib/ld-linux.so.2 (0x00b52000)
liblcms.so.1 => /usr/lib/liblcms.so.1 (0x0076a000)
libXfixes.so.3 => /usr/lib/libXfixes.so.3 (0x002ab000)
libexpat.so.1 => /lib/libexpat.so.1 (0x002da000)
libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0×00212000)

整个工程使用Kdevelop开发,用Qmake处理pro文件,源码如下:
kstar-src-1.0.tar.gz

在 Fedoro Core 8下面的编译的二进制包:

kstar-bin-1.0.tar.gz

关于PC的启动引导器(Bootloader)

关于PC的启动引导器Bootloader
作者:febird, 转载请注明出处

启动引导器就是就是提供给BIOS的一个用于装载磁盘(或者其他存储介质)上的操作系统的一个程序。

通常放在硬 盘的MBR(Main Boot Record主引导记录),它位于磁盘的0柱面0磁道1扇区,在文件系统之外(当然高级的引导加载器可以放置在文件系统里面作为多级引导,也有的可以放在物理分区的引导块), 但是每一个可启动设备通常都有一个MBR,里 面包含了从该设备启动系统的可执行代码,通常作用有:初始化内存,解释文件系统,加载操作系统内核等等作用。

因为MBR引导代码大小有限制,高级的引导器通常还有其他部分,例如Grub 阶段1.5 阶段2 的stage文件,grub4Dos的 grldr、grub.exe,NTLoader的ntldr等等。

高级的引导器还有启动配置文件,例如grub的menu.ls,NTloaer的 boot.ini 、syslinux的syslinux.cfg,lilo的lilo.conf,这些都方便我们配置启动引导器。

下面分别一下常见的几种引导加载器

一. 用于DOS或Win98的引导代码

必须放在MBR,需要IO.SYS,如果需要引导进入DOS Shell 则必须有command.com
如果使用了CONFIG.SYS 配置文件,则command.com可以为其他文件名
DOS的启动代码不支持多重启动,除非你进入 command.com之前在AUTOEXEC.BAT或者CONFIG.SYS 中 执行了grub.exe 或者 DEVICE=grub.exe 命令,这样就会进入Grub4Dos的管辖(Grub4Dos里会有详细说明)。

如下面的CONFIG.SYS写就可以实现用(路径可能有变化):

REM 下面的一行用来切换到 GRUB
device=GRUB\grub.exe –bypass –time-out=8 –config-file=grub\menu.lst

DEVICE=FebirdDOS\ECHO.SYS W/e/l/c/o/m/e /t/o MS-DOS 7.10…
DEVICE=FebirdDOS\ECHO.SYS C/o/p/y/r/i/g/h/t M/i/c/r/o/s/o/f/t C/o/r/p. A/l/l /r/i/g/h/t/s /r/e/s/e/r/v/e/d.
DEVICE=FebirdDOS\HIMEM.SYS
DEVICE=FebirdDOS\EMM386.EXE NOEMS
DEVICEHIGH=FebirdDOS\SETVER.EXE
DEVICEHIGH=FebirdDOS\POWER.EXE
REM DEVICEHIGH=FebirdDos\VIDE-CDD.SYS /D:IDE-CD
REM COUNTRY=001,437,FebirdDos\COUNTRY.SYS
SHELL=COMMAND.COM /P /E:640
DOS=HIGH,UMB,AUTO
FCBS=4,0
FILES=30
BUFFERS=20,0
LASTDRIVE=26
STACKS=9,256

二.用于WindowsNT/2000/xp的 NTloader Vista 的 bootmgr

必须放在MBR , 需要 ntldr, ntdetect文件 (如果需要Bootloader的其他语言支持,需要相应的bootfont文件)

NTLoader在MBR中的那段代码,可以使用 fdisk /mbr 来给第一块硬盘增加 (fdisk 好像没有选择硬盘 写入mbr的命令开关)

如果Windows的引导被其他 引导程序覆盖,例如被Grub覆盖,或者被DOS的覆盖,那么你需要通过可启动软盘,光盘,移动硬盘等附带FDISK工具的微型系统盘来执行fdisk /mbr

如果磁盘MBR原来是写的DOS/WIN98的,安装NT系统(包括XP,2000等)后,Windows会将原来的MBR保存为 BOOTSECT.SYS. 然后再在Boot.ini中配置多重启动,例如可以用NTLoader加载Grub4DOS的grldr来进入 Grub4DOS具体配置请看“Boot.ini详解

值得注意的是,如果使用NTLoader,NTLDR文件(包括需要的NTDETECT,boot.ini,bootfont) 可以和WINDOWS分开 放在不同的磁盘分区,并且WINDOWS可以放在逻辑分区,但是NTLDR文件必须放在”主分区”,并且该分区为”激活”(因为NTLoader的MBR 部分代码会查找 磁盘“活动分区”上的 ntldr文件)。

还有就是multi(0)disk(0)rdisk(0)partition(1)\WINDOWS 这句中的 partition 是从1开始的,先编号主分区,然后再编号逻辑分区,并且忽略扩展分区。这个和Linux和Grub的计算方法不一样,Grub是扩展分区当成一个主分区也进行编号,但是并没有实际意义。
例如 有一块硬盘,第一个分区是主分区,第二个分区是扩展分区(里面包含若干个逻辑分区),第三个分区又是主分区而且在这个分区里面有我们需要启动的Windows,那么partition的()里面应该填2, 然而 grub里面这个分区从0开始应该是2 (hd0,2).

关于Vista的Bootmgr,没有太多的感受,主要还是我自己的电脑没有使用这个的原因。通过BCEdit等工具可以方便的修改Vista的多重启动。

三.GNU Grub/ LILO/ SysLinux

GNU Grub是一个相当强大的启动管理器,下面简单做一下说明,Grub可以安装在MBR,Linux的根分区,以及其他介质上面(比如软盘,光盘等),通常情况安装在MBR上比较方便,因为这样不需要安装其他的引导加载器,但是这会覆盖原来的MBR,不过好在安装Linux的时候会直接分析原来安装过的启动项(例如Windows),Grub Bootloader分为几个部分,第一部分为stage0,通常是放在MBR中或者根分区的 引导块中。stage1,stage1.5,stage2等等都分别放在文件系统中的,而且stage1.5 还有相应的不同的版本以适应不同的文件系统。
GNU Grub就是文件太多,不够简洁(当然也有它的好处),关于Grub能够讲很多,这里看详细介绍与使用: Grub详解

SysLinux, LILO也是一个比较常、主流的引导装载器,配置起来和 Grub大同小异,也可以用来引导诸多系统,由于平时我没有怎么使用,可以看这个关于LILO的详细的使用说明

四.Grub4Dos

上面讲到的Grub适合使用在Linux,BSD,Unix里,Grub4Dos吸取了GNU Grub的所有优点之后,最大的特点就是他还可以运行在 DOS平台,Grub4Dos是在Grub源码基础之上开发的,Grub4Dos青出于蓝胜于蓝,应用范围相当广泛,功能更加强大。

下载的 Grub4Dos通常包含 下面几个文件,grldr,grub.exe, bootlace.com menu.lst等。

Grub4Dos可以被其他的Bootloader二次引导

1.被 DOS 引导,就是上面写DOS引导程序的提到时候的,使用Device命令或者直接执行grub.exe。

2. 被NTLoader引导,这时grldr就相当于ntldr,只要在boot.ini中加入 一行 例如 C:\grldr=”BOOT GRUB ” (文件系统可以是 FAT32或者NTFS)

另外,grldr还可以通过 Vista的 bootmgr来加载

3. 被GNU Grub 引导
可以在Grub的menu.lst里面通过类似下面的代码。这时候 grub.exe作为内核加载,IMG是可启动软盘镜像

kernel (hd0,0)/grub.exe –config-file=”map (rd) (fd0); map –hook; chainloader (fd0)+1; rootnoverify (fd0)”
initrd (hd0,0)/DOS.IMG
boot

也可以不加任何参数加载:
kernel (hd0,0)/grub.exe
boot

4.从已经启动运行的Linux中转到 grub
kexec -l grub.exe
kexec -e

5.被LILO中引导
image=/boot/grub.exe
label=grub.exe

6. 被 SysLinux引导
label grub.exe
kernel grub.exe

Grub4Dos可以作为主引导程序,写入MBR,用来加载,grldr

将Grub4Dos写入MBR的方法是使用 bootlace.com,该程序运行于DOS环境和Linux环境,

bootlace.com [OPTIONS] DEVICE_OR_FILE

在Linux下写入硬盘MBR,类似:

bootlace.com /dev/hda

在DOS下类似 :

bootlace.com 0×80

Grub4Dos使用扩展的 kernel, chainloader 和 map 命令可以实现更多更强大的功能,具体请看Grub4Dos的README

关于Grub4Dos网络上有一个教程,我的Live Skydrive有下载 : grub4dos.chm

五.MacOS Darwin BootLoader

尽管 Mac OS X 可以通过 EFI启动,Mac OS X的”达尔文 ” Bootloader 在PC上面 也是可以发挥得很好 ,Darwin BootLoader也是既可以写入 MBR,也可以写入 分区的”启动扇区”

Darwin的 standalone 文件夹提供了基本上所有的 引导相关文件:

BOOT0 , BOOT1h, BOOT1u, BOOT ,BOOTEFI, CDBOOT ,BOOT.cat,CHAIN0,BOOTHELP.TXT

BOOT0用于写入MBR, BOOT1h BOOT1u 和 BOOT 共同构成了DARWIN的启动 其中BOOT1h写入HFS+文件系统的Mac的启动扇区,BOOT1U写入UFS文件系统的Mac,BOOT则写在不为人知的地方。 BOOTEFI 是EFI方式启动的启动文件, CDBOOT 和 BOOT.cat 用于光盘启动, CHAIN0 用于 GRUB等 链式启动。

后来有人做的的tboot是用来启动逻辑盘里的Mac。

大多数在普通PC机上面安装破解版的MacOS的一般都会是多系统,所以不会将Darwin Bootloader安装在MBR,都会选择安装在分区“引导块”,所以我这里只说一下我总结的一些,很多都是积累了很多前人的经验,我使用的是 uphuck 和 iTOAK.

如果启动代码写在 MBR ,必须保证 MacOS 分区是活动分区并且 Mac应安装在比较靠前的分区(1024之前)柱面,”活动分区” 可以通过分区工具 PM来做,或者是用Mac 启动盘提供的 fdisk

>fdisk -e /dev/rdisk0 #rdisk0指第一个硬盘
>flag X #将X分区激活
>update #更新分区表
>write #更改生效
>quit

想想要自己的MacOS分区(ufs,hfs)系统被其他Bootloader启动,Darwin的启动代码最好写在分区“引导块”上,同时Mac应安装
在比较靠前的分区(1024之前)柱面,这样才可以通过 chain0,tboot或者 grub 的 chainloader +1
等方式来启动。如果引导块没有写入这个引导代码,则可以通过光盘自带的工具startfiletool来解决.Mac OSX 的分区可以通过光盘进入
命令行,然后执行下面的命令

> unmount /Volumes/MacDriveName

> dd if=/usr/standalone/i386/boot1h of=/dev/rdisk0s1 bs=446 count=1
>starupfiletool /dev/rdisk0s1 /usr/standalone/i386/boot
>bless -drive /disk0s1 -setboot -verbose

Mac OSX 启动时,可按F8进入交互模式,输入:
[device] [arguments]

其中
device: rd= (e.g. rd=disk0s2)
rd=* (e.g. rd=*/PCI0@0/CHN0@0/@0:1)
kernel: kernel name (e.g. “mach_kernel” – must be in “/” )
例如:
mach_kernel rd=disk0s1 -v “Graphics Mode”=”4096x4096x32@85″

========

The End

LILO详解

此文系转载
作者:佚名
原始网址:不详

LILO(Linux Loader)是Linux自带的一个优秀的引导管理器,使用它可以很方便地引导一台机器上的多个操作系统。与其他常用的引导加载程序相比,LILO引导 方式显得更具有艺术性,对其深入的理解,将有助于我们方便地处理多操作系统、网络引导、大硬盘及大内存等诸多棘手的问题。

  通常我们谈到LILO,会涉及到两个方面——LILO引导程序和LILO安装命令/sbin/lilo。为了不至于混淆这两个概念,本文将用LILO表示LILO引导程序,而lilo表示/sbin/lilo。

  一般地,LILO使用一个文本文件/etc/lilo.conf作为其配置文件。lilo读取lilo.conf,按照其中的参数将特定的LILO写 入系统引导区。任何时候,修改了/etc/lilo.conf,都必须重新运行lilo命令,以保证LILO正常运行。lilo.conf使用的配置参数 很多,配置起来也相当复杂。下面以RedHat Linux为例作一些初步探讨,RedHat的lilo程序包版本为0.20,别的Linux发行版本可能会有所出入,但不会太大。

  lilo.conf文件中的配置参数分为两部分,一部分是全局参数,另一部分是引导映像参数。与Linux系统其他的配置文件一样,“#”号后的一行文字表示注释。

  一、LILO的全局参数

  全局参数是全程有效的,它可以出现在文件lilo.conf中的任何地方。以下是具体的参数项:

  1.backup=backup-file

  在装入LILO之前将原先的引导区备份到backup-file,而不是RedHat 缺省的/boot/boot.NNNN。也可以备份到一个设备上,如: /dev/null。注意:如果原先已有一个同名文件,该参数将被忽略。我们可通过这个备份恢复原先的引导扇区:

  dd if=/boot/boot.NNNN of=/dev/hda bs=446 count=1

  恢复原先的MBR。(注:虽然boot.NNNN有512字节,但只能恢复前446字节到MBR。)

  2.boot=boot-device

  指定一个用于安装LILO的设备。通常LILO可安装在如下几个地方:

  MBR:第一个硬盘的主引导区, 对应于/dev/hda、/dev/sda等。

  Root:Linux根分区的超级块(Super block), 对应于/dev/hda1、/dev/hda2、/dev/hda5、/dev/sda1、/dev/sda5等。

  Floppy:LILO安装在软盘上,对应于/dev/fd0。

  不指定时,lilo缺省安装在根分区超级块上。

  3.compact

  该参数用于优化LILO,产生一个更小的“map”文件。如果在软盘上安装LILO,强烈推荐使用此参数。

  4.default=name

  指定缺省引导的操作系统。如default=dos 表示将label为DOS的系统作为缺省引导的操作系统。如不指定该参数,排在lilo.conf中的第一个操作系统将作为缺省操作系统。

  5.delay=tsecs

  在没有指定“prompt” 参数时,LILO将立即引导缺省的操作系统,“delay”参数在这之间插入一段延时,单位是1/10秒。

  6.disk=device-name

  为某些非标准硬盘定义参数。其内部还包括有几个可选的子参数。

  bios=〈bios_device_code〉:  设备号。十六进制数0×80表示第一硬盘;0×81表示第二硬盘,依此类推。

  sectors=〈sectors〉:硬盘扇区数。

  heads=〈heads〉:硬盘磁头数。

  cylinders=〈cylinders〉:硬盘柱面数。受系统BIOS限制,柱面数必须在1024以内。

  partition=〈partition_device〉:用于物理定位特殊硬盘上的分区,有一个子参数start。

  start=〈partition_offset〉:每一分区的起始扇区。

  例如:

  disk = /dev/sda

  bios=0×80

  #指定SCSI硬盘为第一硬盘

   sectors = 32

   heads = 64

   cylinders=632

  #硬盘参数为632/64/32

  partition=/dev/sda1

  start=2048

  #第一分区起始扇区为2048

  partition = /dev/sda2

  start=204800

  #第二分区起始扇区为204800

   partition = /dev/sda3

    start = 500000

   partition = /dev/sda4

    start = 900000

  当机器上有两块硬盘,一块为SCSI硬盘,另一块为IDE硬盘时,LILO很有可能无法自动识别它们的主、从顺序,这时可进行如下设置:

disk = /dev/sda

   bios = 0×80

  disk = /dev/hda

   bios = 0×81

  #SCSI硬盘为主硬盘,IDE硬盘为从硬盘

  该参数是为Linux无法识别的硬盘准备的,一般Linux可以正确识别和使用大多数硬盘,除非最坏的情况,否则不用设置它。

  7.force-backup=backup-file

  类似“backup”参数,但是将覆盖原有的同名文件。

  8.ignore-table

  通知lilo忽略无效的硬盘分区表。

  9.install=boot-sector

  LILO实际上包含有几个部分,而这几部分都存放在/boot/boot.b文件中。如果忽略“install”参数,则lilo认为install=/boot/boot.b。

  10.linear

  产生用于替换硬盘sector/head/cylinder地址(硬盘几何参数)的linear扇区地址。linear地址在运行时产生并且不依赖于 硬盘几何参数。某些SCSI硬盘和一些以LBA方式使用的IDE硬盘可能会需要使用这个参数。注意,在将LILO安装到软盘上时不能使用“linear” 参数。

  11.lock

  出现LILO提示后立即按最近一次的引导映像启动计算机。也就是说,当我们在lilo.conf中加入了该参数,然后运行lilo安装LILO,再重新启动计算机,这时LILO会提示我们选择引导哪一种操作系统,这一选择将被LILO记录下来,即“锁定”,下次启动计算机时,LILO将忽略“delay”、“prompt”等参数及键盘输入而直接跳转到其“锁定”的操作系统。

  12.map=map-file

  指定map文件。 没有本项时缺省使用/boot/map,每次执行lilo命令都会产生一个新的map文件。

  13.message=message-file

  该命令用于指定一个包含注释信息的文件,该文件将在系统打印出字符串“LILO”之前显示。如果在LILO启动时想获取较多的信息,可以编辑一个文 件,再使用该命令就可以了。文件中如果包含有ASCII码为0xFF的字符(Ctrl+L)则表示清屏。注意,文件的大小不能超过65535个字节。每次 文件改变之后,都必须重新运行lilo命令重建map文件,以保证其正常显示。

  14.optional

  当用于启动的引导映像不存在时,该参数使lilo忽略它。这对用于测试一个不长期存在的Linux核心是有用的。

  15.password=password

  为LILO设置口令保护,每次重新启动计算机提示用户输入口令。设置了口令后,建议将lilo.conf的文件属性改为600,以免让非root用户看到口令。

  16.prompt

  给出“boot:”提示,强制LILO等待用户的键盘输入,按下回车键则立即引导默认的操作系统,而按下Tab键则打印可供选择的操作系统。当 “prompt”被设置而“timeout”没有被设置时,系统会一直处于等待状态而不引导任何操作系统。不设置该参数时,LILO不给出“boot:” 提示而直接引导默认操作系统,除非用户按下了Shift、Ctrl、Alt三键中的任何一个。大多数情况下,如果你的硬盘上有多个操作系统,建议使用参 数,它留给用户一个选择的余地。

  17.restricted

  与“password”联用,使“password”仅作用于在LILO提示后有命令行输入的时候。

  18.serial=parameters

  使用串行口控制。这将初始化指定的串口,并将使引导管理器能接受来自串口的输入。从串口发送一个中断信号相当于从控制台键盘上按下Shift键,它同 样会被LILO捕捉到。如果不能保证来自串口的访问和控制台一样安全,比方说有一个modem连在串口上,建议为每个引导映像加上口令保护 (password)。参数串有如下语法:

  〈port〉[,〈bps〉[〈parity〉[〈bits〉>

  〈port〉:数字表示的串口号,0表示COM1,其余类推。所有四个串口都可被使用。

  〈bps〉:串口速率,支持110、 150、300、600、1200、2400、4800和 9600 bps,缺省值为2400bps。

  〈parity〉:设置串口校验。一般情况下,LILO忽略奇偶校验。n表示无校验,e 表示偶校验,o 表示奇校验。

  〈bits〉:字符位数,只能取7或8,缺省值是8。当有奇偶校验时只能取7。

  如果设置了“serial”,即使没有设置“delay”,系统也会将“delay”项的值自动增加20。

  19.timeout=tsecs



  设置等待键盘输入的时长,单位是0.1秒。超过这段时间没有输入则为超时,系统将自动引导缺省的操作系统。如果不设置本参数,缺省的超时时间长度为无穷大。

  二、引导映像参数

  引导映像参数作用于每一个引导映像区。如果某一引导映像参数(例如:password)与全局参数的定义相抵触,则以该引导映像参数的定义为准,但仅限于该引导映像区。以下是具体参数项:

  image=pathname

  设置包含Linux核心引导映像的文件或设备。

  other=pathname

  设置包含非Linux操作系统,如DOS、SCO UNIX、Windows 95等系统引导映像的文件或设备。

  range=start-end

  如果“image”参数被设置为一个设备,则Linux核心引导映像的存放范围必须被设置。

  image = /dev/fd0

  range = 1-512  

  # Linux核心引导映像存放在软盘上的第一至512扇区

  label=name

  通过此参数来标识当前操作系统,即操作系统名。用户可通过在LILO提示后输入“标识”来决定引导哪一个操作系统。

  alias=name

  给当前操作系统起一别名。

  lock

  类似同名全局参数。

  optional

  类似同名全局参数。

  password=password

  类似同名全局参数。

  restricted

  类似同名全局参数。

  以下两个参数项用于非Linux操作系统:

  loader=chain-loader

  如果要引导第二块硬盘上的非Linux操作系统或将LILO安装到软盘,这个参数是必需的。不指定时,缺省值是/boot/chain.b。如启动第 二块硬盘上的MS-DOS或Windows 95,可定义loader=/boot/any_d.b;对于OS/2,则为loader=/boot/os2_d.b。

  作为一个特殊的功能模块,any_d.b已不合时宜,在0.20版以后的lilo程序包中已不再包含它并将其功能整合进chain.b,os2_d.b亦有所变动。它们的功能可用如下语句代替。

  例:

   other = /dev/hdb1

     loader = /boot/any_d.b

  替换为:

   other = /dev/hdb1

     map-drive = 0×80

     to = 0×81

     map-drive = 0×81

     to = 0×80

  对于os2_d.b:

   other = /dev/hdb1

     loader = /boot/os2_d.b

  替换为:

   other = /dev/hdb1

   loader = /boot/os2_d.b

   map-drive = 0×80

       to = 0×81

   map-drive = 0×81

     to = 0×80

  map-drive=〈bios_device_code〉

  通知chain.b装入重映射软驱或硬驱的内存驻留驱动程序,使用它可以引导不同硬盘上的不同操作系统,条件只有一个, BIOS必须能访问硬盘。“map-drive”后跟有变量“TO=〈盘设备号〉”。实际上,“map-drive”起到了“软”交换两个软驱或硬驱主、 从顺序的作用,避免了手工接线的麻烦。

  例:交换软驱

     map-drive = 0

     to = 1

     map-drive = 1

     to = 0

  交换硬驱(参看loader参数例)

  table=device

  指定包含非Linux系统分区的主设备。举例来说,如果Windows 95在第一个IDE硬盘的第一个基本分区上,即/dev/hda1上,那么必须定义table=/dev/hda 。

  三、核心参数

  如果LILO引导的是Linux系统,我们可用下面命令传递一些参数给Linux核心。除“literal”之外,它们也可用于全局参数区。

  append=string

  append传递一个特殊硬件的参数串string给Linux系统的核心。它常用来配置一些Linux不能正确测试到的硬件设备。例如:

append = “hd=64,32,202″

  通知Linux核心,硬盘参数为64柱面、32磁头、202扇区。具体的参数串设置可参看/usr/doc/HOWTO/BootPrompt-HOWTO文件。

  literal=string

  类似于“append”,但它将撤消所有的其它核心参数(比如设置了root设备)。因为“literal”会不分青红皂白地撤消一些必需的、重要的参数,所以不能将它设置在全局参数区。

  ramdisk=size

  指定RAM盘的大小。size为零时不建立RAM盘。忽略此参数时,RAM盘大小由Linux核心引导映像决定。

  read-only

  通知LILO以只读方式载入根文件系统。通常我们在检查根文件系统时需要将根文件系统以只读方式载入。Linux系统在每次启动时也会将根文件系统以只读方式载入,待例行的文件系统检查后再将其重新载入为读写方式。

  read-write

  通知LILO以读写方式载入根文件系统。

  root=root-device

  指定被安装根文件系统硬盘分区设备。

  vga=mode

  指定引导Linux系统时的VGA模式。有以下取值:

  normal:常规80×25文本模式

  extended (or ext): 80×50文本模式

  ask: 引导时询问用户使用哪一种VGA模式,这时敲回车键将显示一个可分配的VGA模式表。

  如果不指定VGA模式,系统将缺省地使用包含在系统核心里的VGA模式值。

  四、lilo.conf配置实例

  有了这些基础知识,我们可以很容易地按照自己的意图配置LILO。请看一个lilo.conf文件的例子:

  boot=/dev/hda         #将LILO安装在MBR。LILO作为主引导管理器

  message=/boot/message     #注释为/boot/message

  compact             #产生一个更小的“map”文件

  map=/boot/map         #指定“map”文件为/boot/map

  install=/boot/boot.b

  password=zhoudi         #设置口令

  vga=normal           #80×25文本模式

  linear             #使用“linear”地址

  prompt             #提示用户键盘输入

  timeout=50           #超时时长为5秒

  default=dos           #缺省引导label为dos的操作系统

  #设定Linux

  image=/boot/vmlinuz-2.0.34-1  

  #设置Linux核心引导映像

   label=linux         #标识为linux

   root=/dev/hda1       #设置根文件系统

   read-only          #LILO以只读方式载入根文件系统

  #设定MS-DOS或Windows 95

  other=/dev/hda2         #DOS分区为第一个IDE硬盘的第二分区

   label=dos          #标识为dos

   table=/dev/hda       #主设备为第一个IDE硬盘

  #设定SCO UNIX

  注意:SCO分区必须设为活动(active)分区并将LILO安装在MBR上。

  other=/dev/hda3

   label=sco

   table=/dev/hda

  这个例子中,LILO是作为主引导管理器来管理机器上所有操作系统的。LILO也可作为二级引导管理器,这只要将“boot”参数改为根分区就可做到。例如:

  boot=/dev/hda1

  以这种方式使用LILO时,Linux根分区必须用DOS或Linux的fdisk程序将其设置为活动分区,并且这种方式只对硬盘主分区(不是扩展或逻辑分区)有效。

  LILO还可以启动第二个以上的操作系统。在我的机器上有两块希捷硬盘,一块硬盘为8.4GB,另一块为1.2GB,都以LBA模式接在主IDE口 上。8.4GB跳线为主盘,1.2GB跳线为从盘,Linux核心很容易地就将它们辨认出来并能正常使用,1.2GB的硬盘上安装了MS-DOS 6.22。笔者是这样设置lilo.conf的:

  disk=/dev/hda

   bios=0×80      

  #由于IDE硬盘存在双硬盘问题,所以当启动DOS系统时,会提示“无系统盘或系统盘错!”,需修改程序如下。

disk=/dev/hdb

   bios=0×81

  boot=/dev/hda

  map=/boot/map

  install=/boot/boot.b

  linear

  prompt

  timeout=50

  default=dos

  image=/boot/vmlinuz-2.2.11-1

   label=linux

   root=/dev/hda1

   read-only

  other=/dev/hdb1

   label=dos

   map-drive = 0×80

      to = 0×81

      map-drive = 0×81

      to = 0×80

  #交换两硬盘主、从顺序

   table=/dev/hdb

  配置好lilo.conf文件后,在root账户下执行lilo命令,新的LILO就被载入系统。上面第一个例子执行结果如下:

  #lilo

  Added linux

  Added dos*      

  Added sco

  (注:带*号的表示其为缺省操作系统)

  五、LILO提示信息

  LILO在运行时会给出一些提示信息,了解它的含义对我们正确配置lilo.conf或查找硬件错误是有帮助的。

  当LILO装入它自己的时候,显示单词 “LILO”:每完成一个特定的过程显示一个字母。如果LILO在某个地方失败了,屏幕上就停留几个字母,以指示错误发生的地方。

  注意,如果磁盘发生瞬间故障,可能会在第一个字母“L”后插入一些十六进制数字(磁盘错误码)。除非LILO停在那里并不停地产生错误码流,否则并不说明有严重问题。

  没有提示: LILO没有安装或者安装LILO的分区没有被激活。

  L〈错误码〉 : LILO的第一部分已经被装入并运行了,但它不能装入第二部分的引导程序。两位数字的错误码指示问题的类型(参见“磁盘错误码”),这种情况通常是在介质访问失败或硬盘参数错误。

  LI: LILO第一部分正确但是第二部分执行时出错。这一般是硬盘参数有误或/boot/boot.b被移动后没有重新运行map安装程序。

  LIL: LILO第二部分开始执行,但是不能从“map”文件中读取描述符表( descriptor table)。 这通常是因介质错误或磁盘参数有误引起的。

  LIL?: LILO在错误的地方加载。原因与“LI”大致相同。

  LIL-:描述符表(descriptor table)错误。典型原因是硬盘几何参数微妙的不匹配或/boot/boot.b被移动而没有运行map安装程序。

  LILO: LILO执行正确。

  1010101010: 分区情况已经改变却没有重新安装LILO,另外,超频也可能会出这种情况。

  六、磁盘错误码

  0×00:“内部错误”。 由LILO扇区读取子程序产生。可能是因为被破坏的文件,重建map文件试试看。另一个原因也许是,当使用“linear”参数时去访问超出1024的柱面。

  0×01:“非法命令”。这意味着LILO访问了BIOS不支持的硬盘。

  0×02:“没找到地址标记”。通常是介质问题,多试几遍看看。

  0×03:“写保护错”。 仅在写操作时出现。

  0×04:“扇区未找到”。典型的原因是硬盘参数错误。

  0×06:“激活顺序改变”。这应该是短暂的错误,再试一次。

  0×07:“无效的初始化”。BIOS没有适当地初始化硬盘,热启动一次或许有帮助。

  0×08:“DMA超出限度”。这不应当发生,重新启动。

  0×09:“DMA试图越过64kB边界”。这不应当发生,建议忽略“compact”参数。

  0x0C:“无效的介质”。这不应当发生,重新启动看看。

  0×10:“CRC错误”。检测到介质错误。建议多启动几次,运行map安装程序,把map文件从坏块写到正常的介质上。

  0×11:“ECC纠正成功”。读错误发生然后被纠正,但是LILO并不知道这个情况,终止了启动过程。

  0×20:“控制器错误”。一般不应发生。

  0×40:“定位失败”。这可能是介质问题,重新启动试试。

  0×80:“磁盘超时”。磁盘或驱动器没有准备好。介质坏了或磁盘没有转,也有可能是从软盘启动而没有关上软驱门。

  0xBB:“BIOS错误”。一般不应发生,如果反复发生,可考虑去掉“compact”参数或添加删除“linear”参数。

  如果在写操作过程中发生错误,则在错误码前有个前缀“w”。尽管写错误并不影响启动过程,但它们暗示了系统中存在某种错误,建议重新配置LILO成只读格式(read-only)。

LILO的配置相当复杂,读者只有在实践中不断学习、摸索,勤于思考,才能用好LILO。

Grub命令和使用详解

此文系转载
作者:佚名
网址: 佚名

从Red Hat Linux 7.2起,GRUB(GRand Unified Bootloader)取代LILO成为了默认的启动装载程序。相信LILO对于大家来说都是很熟悉的。这次Red Hat Linux用GRUB代替LILO,可见GRUB大有过人之处。不过,相对于LILO来说,大家对GRUB还是要陌生一些。本文将对GRUB的基本情况、 术语、接口、命令以及配置文件做个介绍,希望对大家有所帮助。
  一、GRUB的概述
  在Red Hat linux装载一个系统前,它必须由一个引导装载程序(boot loader,启动管理程序)中的特定指令告诉它去引导系统。这个程序一般是位于系统的主硬盘驱动器或是其他知道如何去开始linux内核的媒介驱动器上。
   如果说一个x86系统只安装了Red Hat Linux而且只有一个版本的linux内核,那么通过引导装载程序开始Red Hat Linux的特定过程就不重要了。Red Hat Linux安装程序允许用户快速方便地配置引导装载程序存放在主硬盘驱动的主引导记录中来引导操作系统。
  然而,为了能从多个linux内核或其他操作系统引导,那么就很有必要了解Red hat linux用于提供必要的引导选项的方法,以及理解引导的过程与如何去改变。
  本文是讨论GRUB,它是Red Hat Linux用来在x86系统上装载操作系统的默认方法。同时,本文也将详细介绍用于控制引导过程的各种命令和配置选项。
  GRUB的定义
   GNU GRUB(GRand Unified Bootloader)是一个将引导装载程序安装到主引导记录的程序,主引导记录是位于一个硬盘开始的扇区。它允许位于主引导记录区中特定的指令来装载一 个GRUB菜单或是GRUB的命令环境。这使得用户能够开始操作系统的选择,在内核引导时传递特定指令给内核,或是在内核引导前确定一些系统参数(如可用 的RAM大小)。
  x86的引导过程
  当一个x86机器启动后,系统BIOS开始检测系统参数,如内存的大小、日期和时间、磁 盘设备、以及这些磁盘设备用于引导的顺序等。通常情况下,BIOS都是被配置成首先检查软驱或光驱(或两者都检查),然后再尝试从硬盘引导。如果在这些可 移动的设备中,没有找到可引导的介质,那么BIOS通常是转向第一块硬盘最初的几个扇区,寻找用于装载操作系统的指令。这些最初的扇区-主引导记录-开始 装载一个预选择操作系统的过程,一个操作系统选项贩GRUB菜单,或是一个执行特定选项的GRUB命令行接口。 
  装载GRUB和操作系统的过程,包括以下几个操作步骤:
  1、装载基本的引导装载程序,这通常是第一步。基本引导装载程序必须是位于主引导扇区中一个非常小的空间,少于512字节。因此,基本引导装载程序所做的唯一的事情就是装载第二引导装载程序。这主要是归结于在主引导扇区中没有足够的空间用于其他东西了。
  2、装载第二引导装载程序,这通常称为第二步。这第二引导装载程序实际上是引出更高级的功能 ,以允许用户装载入一个特定的操作系统。在GRUB中,这步是让用户显示一个菜单或是输入命令。
  3、装载在一个特定分区上的操作系统,如linux内核。一旦GRUB从它的命令行或是配置文件中,接到开始操作系统的正确指令,它就寻找必要的引导文件,然后把机器的控制权移交给操作系统。
注意
  在一些文件系统以及文件系统的配置中,可能需要一个1.5步的文件,用来连接基本引导程序与第二引导程序之间的差异。
  举个例子来说,如果第二步中的引导装载程序文件位于一个使用了第一步引导装载程序所不能访问的文件系统的分区中,那么就可能需要指示第一步引导装载程序,从1.5步文件中载入附加的指令来读取第二步引导装载程序的文件。更多相关的信息,请参考GRUB的信息页。
   前面所提到的引导方法被称为直接装载。因为这种方法中使用的是直接装载操作系统的指令,没有用到任何在引导装载程序和操作系统主文件(如内核)之间的中 间代码。然而,不同操作系统所采用的引导过程可能会与上面提到的有一些细微的不同。例如,微软的DOS和Windows操作系统在安装时,倾趋于完全重写 主引导记录,而不是合并当前的主引导记录的配置。这将破坏掉其他操作系统保存在主引导记录中的所有信息,如Red Hat Linux。微软操作系统,还有一些其他的专有操作系统,都是使用一种称为链式装载的引导方法来启动的。在这种方法中,主引导记录仅仅是简单地指向操作系 统所在分区的第一个扇区。
  GRUB支持直接和链式装载的引导方法。GRUB能用于几乎所有操作系统,绝大多数流行的文件系统,以及几乎所有的系统BIOS所能识别的硬盘。
  GRUB的特性
  GRUB包含许多特性,这使得GRUB比其他可用的引导装载程序更加优越。下面列出一些比较重要的特性:
   ·GRUB在x86机器上,提供一个真正基于命令行的,先于操作系统(pre-OS)的环境。它对于用确定的选项装载操作系统或收集系统信息方面,提供 了最大程度的适应性。许多非x86的体系结构已经使用先于操作系统环璄许多年了,它提供控制系统如何从一个命令行引导。当LILO或其他x86引导装载程 序使用了一些命令特性的时候,GRUB已经包含了许多这方面的特性。
  ·GRUB支持逻辑块寻址(LBA)方式。LBA将用于寻找驱动器上 文件的地址转换工作置于驱动器的硬件中,它被用在许多IDE和所有的SCSI硬盘中。在使用LBA之前,硬盘驱动器遇到一个1024柱面的限制,即 BIOS不能找到在1024柱面后的文件(比如一个引导装载程序或是内核文件)。只要系统BIOS能支持LBA模式(大多数都支持),那么LBA就允许 GRUB超越1024柱面的限制,引导操作系统。
  ·GRUB的配置能在每次系统引导时被读取。这就避免了用户每次改变引导选项时都要重写 一次主引导记录。大多数的引导装载程序都不能很老道地读取配置文件,并使用它们来设置引导选项。比如说,用户必需改变一个LILO的配置文件,然后运行一 个命令将新的配置数据重写回系统的主引导记录。这种方法比GRUB所采用 的方法更加危险,因为一个错误配置的主引导记录将让系统无法引导。在使用 GRUB中,如果说配置文件被错误配置并且引导,那它也仅仅简单地转到一个默认的命令行,允许用户手工输入命令来运行操作系统。除开更新系统引导的第一 步、第二步、或是菜单配置文件的位置,主引导记录是不会被触及到的,而这种情况是很少发生的。
  注意:
  当GRUB的配置文件发生改变时,没有必要重新启动GRUB。所有的改变都能被自动地检测到。如果GRUB被重新启动,那么用户将退回到命令行方式的GRUB外壳下。

二.安装GRUB 
  如果在Red Hat Linux的安装过程中,GRUB没有被安装,下面将说明如何安装它,并将它设为默认的引导装载程序。
  注意:如果LILO已经被安装,并且是当前的系统引导装载程序,那并没有必要为了使用GRUB而删除它。GRUB一旦安装后,将做为

页面: 上一页 1 2
  1. 我的网络


  2. 标签云

  3. 推荐服务

  4. 分类目录


  5. 最近文章

    1. 惠州一日游
    2. iPhone USB充电问题
    3. Windows 8 主要快捷键
    4. 吐槽 Windows8 消费者预览版
    5. Linux命令备忘录(一)
    6. 新分类–随手记
    7. 2011年度小结
    8. 美国主机与翻墙
    9. Archos101平板安装openAOS系统
    10. 折腾能力下降
    11. 新浪微博与腾讯QQ正面竞争已经展开
    12. Google Talk 和 Google Voice 的终极整合
    13. “无法访问Windows Installer服务”解决方法
    14. 跨平台的移动应用开发框架-PhoneGap
    15. 七月
    16. 在电脑上K歌的设置
    17. 中国通货膨胀的原因
    18. 关于家族字辈
    19. 15款免费云存储服务
    20. 基于PHP的开源在线OA软件 Feng Office
  6. 最近评论

    1. 咦哇噢博客's avatar咦哇噢博客
      这个不错!收藏了!
    2. 龙龙FRED's avatar龙龙FRED
      提前学习一下先,方便装B
    3. ninee's avatarninee
      沙发~
    4. febird's avatarfebird
      谢谢~
    5. ninee's avatarninee
      鼓励~
    6. febird's avatarfebird
      A-Z,你猜吧。
    7. mahjong's avatarmahjong
      公子啊, 第5条是哪个字母啊?
    8. 皇冠网址-www.2532777.com|y2x35e's avatar皇冠网址-www.2532777.com|y2x35e
      写的不错,多谢分享,学习了 谢谢楼主。 多更新, 会常光顾的,...壬辰年(龙)二月初四 2012-2-25