宝剑锋从磨砺出,梅花香自苦寒来。这篇文章主要讲述有关Gentoo Linux的安装相关的知识,希望能为你提供帮助。
1. 有关Gentoo Linux的安装1.a. 介绍
欢迎!
首先,欢迎使用Gentoo Linux系统!你将进入选择和性能的世界中。Gentoo处处给用户提供选择。当安装Gentoo时,这点你会经常感受到。你可以选择自己编译多少软件,可以选择怎样安装Gentoo,可以选择使用什么系统日志程序等等。
Gentoo是一个快速和现代的半发行版,设计理念干净灵活。Gentoo是由无数的自由软件编译而成,决不会向用户隐瞒什么。 Portage,Gentoo使用的软件包管理系统,是用python编码而成,方便你简单的查看和修改源代码。Gentoo的软件包管理系统使用源代码 (虽然也包括对预编译软件包的支持),在配置系统行为时采用普通文本文件。换句话说,处处都是向你开放的。
理解Gentoo中的面向用户的选择理念是很重要的。我们不会强迫你作任何你不喜欢的事情,如果你觉的我有的话,请告诉我们。
安装过程的步骤如何?
Gentoo的安装可以看成是一个需要10步的程序,分别对应第2章到第11章,每一步都会带领你到一个新的状态:
- 第一步后,你处于一个准备安装Gentoo的工作环境中
- 第二步后,你的网络连接已经准备好(在某些情况下这步是可选的)
- 第三步后,你的硬盘已经初始化完毕,准备好了Gentoo的小窝
- 第四步后,你的安装环境已经准备好了,并准备chroot到一个新的系统环境中
- 第五步后,在所有Gentoo安装中相同的核心的软件包已经安装完毕
- 第六步后,你已经编译好了你的Linux内核
- 第七步后,你已经写好绝大多数的Gentoo系统配置文件
- 第八步后,必要的系统工具(你可以从列表中选择)已经安装完毕
- 第九步后,你选择的启动程序已经安装和配置好,你可以登录进入你新的Gentoo系统中
- 第十步后,你可以在你新的Gentoo系统环境中遨游了
有些时候从一个可选的步骤继续下去,这样的步骤我们在标题中以“可选:”表示出来,也就是说它们不是安装Gentoo必须的。但是,一些可选的步骤是根据你前面的选择决定的,这种情况下,我们在你作出那个选择和这个可选步骤的前面都告诉你一声。
我的选择是什么?
你可以采用不同的方法来安装Gentoo。你可以下载我们的LiveCD(安装CD)开始安装,从一个已有发行版中安装,从一个启动CD(如 Knoppix)中安装,从一个网络启动环境中安装,从一个启动软盘中安装……这篇文档覆盖了使用我们的LiveCD和一些情况下的网络启动等安装方法。 对于其他安装方法,请阅读替代安装方案中获得帮助。如果你觉的这篇安装指南太详细了,那么请使用我们在文档资源里的与你的架构相关的快速安装指南。
你还有几种可能:你可以从底层编译你的整个系统,或者快速安装预编译软件包得到你的Gentoo系统。当然,你还可以有个折衷的处理,就是从一个初步准备好的系统开始,而不需要编译所有的东西。
困难?
如果你在安装(或者安装文档)中发现问题,请查看我们Gentoo发行工程项目的勘误,访问我们bug跟踪系统并检查这个bug是否已经提交。如果没有,请提交一份bug报告,这样我们可以注意到这个问题。不要惧怕负责(你的)bug的开发人员,通常情况下他们不会吃人的:-)
虽然你已经注意到了,这篇文档现在已经根据架构分开了,但是它也会包含对其他架构的引用。这是由于Gentoo手册的大部分使用源代码,而这些源代码在所有的架构中是通用的(防止重复工作和开发资源紧缺)。我们将尽可能小的避免混淆用户。
如果你不确认这个问题是否是一个用户相关的问题(尽管已经仔细阅读文档你仍然犯的一些错误)或者软件相关的问题(尽管已经仔细测试安装/文档我们仍然犯的 一些错误),你可以随时加入irc.gentoo.net里的#gentoo频道参加讨论。当然,我们任何时候都欢迎你 :)
如果你有与Gentoo相关的问题,请查看我们文档资源里的常见问题问答。你也可以查看我们论坛里的FAQs。如果你仍然找不到答案,你可以去在irc.freenode.net上的#gentoo频道讨论。 我们中的一些人可是一直坐在IRC里的异形哦 :-)
1.b. 预编译还是编译所有的?
Gentoo的参考平台是什么?
Gentoo参考平台,从小型的到GRP,都是用户(也就是你喽!)在Gentoo安装过程中可以用来加快安装进程的预编译软件包的一个快照。GRP包含 了一个可以完全正常工作的Gentoo安装时所需要的所有软件包。它们不仅在安装基本系统时可以加快速度,并且所有的大型编译(如KDE、xorg- x11、GNOME、OpenOffice、Mozilla……)也都有GRP软件包。
但是,Gentoo发行版永远都不会去维护这些预编译软件包。它们只在每个Gentoo发行时随带发行的快照,只是用于在短时间内安装出一个功能完整的系统环境。你然后可以在你的Gentoo环境中工作的同时后台更新你的系统。
Portage是怎样处理GRP软件包的
你的Portage树(一系列的ebuilds,也就是包含一个软件包的所有信息的文件,如软件包的描述、主页、源代码网址、编译说明、依赖性等)必须和GRP系列同步:已有ebuilds的版本必须和它们相对应的GRP软件包相符合。
由于这个原因,如果你要使用GRP的安装方法,你将必须使用一个Portage快照,而不是和最新的Portage树同步更新。
有可用的GRP软件包吗?
不是所有的架构都提供GRP软件包。这并不意味着GRP不支持这些架构,只是我们没有足够的资源来编译和测试这些GRP软件包。
现在,我们只提供如下架构的GRP软件包:
- x86架构(x86,i686,pentium3,pentium4,athlon-xp)。注 意:x86和i686的GRP软件包(比如packages-x86-2004.2.iso)在我们的镜像中能找到,但是 pentium3,pentium4和athlon-xp的GRP软件包只能通过bittorent获得。
- amd64架构(amd64)
- sparc架构(sparc32,sparc64)
- ppc架构(G3,G4,G5)
- alpha架构(alpha,alphaev5,alphaev56,alphaev6)
- mips架构
- hppa架构
谁可以不需要网络
根据你安装Gentoo时采用的介质,你可以或者不能不需要网络(或者因特网)继续。不不,我们是说真的,决不会玩弄你的:-)
一般来说你需要网络(和因特网)。但是,Gentoo也提供了不需要网络连接的安装方式,这个唯一的例外就是使用Gentoo通用LiveCD。
为什么我需要网络?
从因特网上安装Gentoo可以提供一个完全最新的Gentoo安装。你将可以基于最新的Portage树(我们提供一系列的软件包和软件管理工具)来安装,这也是网络安装收到欢迎的一个原因。但是,有些人不能或者不愿意使用一个活动的网络连接来安装Gentoo。
如果你正是处于这种情况,你将需要使用Gentoo通用LiveCD。这种LiveCD里包含有源代码、Portage树的一个快照和安装Gentoo基本系统和其他的工具。当然这种方法也有其代价,就是你不能获得最新的软件,当然这些区别会很小。 minimal.
如果你要使用这样的一种同样LiveCD,进行无网络安装,跳过这章的其余部分,从磁盘准备继续。否则,从下面的网络配置部分继续。
可选:配置代理
如果你需要通过代理进入因特网,你可能需要在安装中设置代理信息。设置代理是很简单的一件事清:你只需要定义一个包含代理服务器信息的变量即可。
大多数情况下,你可以使用服务器主机名来定义这个变量。作为例子,我们假设代理服务器叫做proxy.gentoo.org,端口为8080。
代码 1: 定义代理服务器 |
(如果代理通过HTTP协议) # export http_proxy="http://proxy.gentoo.org:8080" (如果代理通过FTP协议) # export ftp_proxy="ftp://proxy.gentoo.org:8080" (如果代理通过RSYNC协议) # export RSYNC_PROXY="proxy.gentoo.org:8080" |
代码 2: 给代理服务器变量添加用户名/密码 |
http://username:password@server |
代码 3: 授权的代理 |
# export http_proxy="http://john:f00b_r@proxy.gentoo.org:8080" |
可能已经可以工作?
如果你的系统处于一个有DHCP服务器的以太网中,很可能你的网络配置已经自动完成。如果确实如此,你应该可以使用到LiveCD里很多网络相关的命令如ssh、scp、ping、irssi、wget和links等。
如果网络已经配置好了,命令/sbin/ifconfig应该列出除开lo等的网络接口,如eth0:
代码 4: /sbin/ifconfig列出工作中的网络配置 |
# /sbin/ifconfig eth0Link encap:EthernetHWaddr 00:50:BA:8F:61:7A inet addr:192.168.0.2Bcast:192.168.0.255Mask:255.255.255.0 inet6 addr: fe80::50:ba8f:617a/10 Scope:Link UP BROADCAST RUNNING MULTICASTMTU:1500Metric:1 RX packets:1498792 errors:0 dropped:0 overruns:0 frame:0 TX packets:1284980 errors:0 dropped:0 overruns:0 carrier:0 【有关Gentoo Linux的安装】collisions:1984 txqueuelen:100 RX bytes:485691215 (463.1 Mb)TX bytes:123951388 (118.2 Mb) Interrupt:11 Base address:0xe800 |
你可能想试着测试一下你的ISP的域名服务器(在/etc/resolv.conf里)和选择的一个网址,以确认一下你的数据包可以到达网络中,DNS域名解析也能正确工作等……
代码 5: 进一步测试网络 |
# ping -c 3 www.yahoo.com |
3.c. 自动配置网络
如果网络还不能立即工作,一些安装介质允许你使用net-setup(常规网络)或者adsl-setup(ADSL用户)或者pptp(PPTP用户,仅用于x86系统)。
如果你的安装介质不包含上述提到的任何一个工具,或者网络仍然不起作用,从手动配置网络继续。
- 常规的以太网用户应该从默认:使用net-setup继续
- ADSL用户应该从另一种办法:使用RP-PPPoE继续
- PPTP用户应该从另一种办法:使用PPTP继续
如果网络没有自动配置好,最简单的办法是运行net-setup脚本来设置网络:
代码 6: 运行脚本net-setup |
# net-setup eth0 |
如果网络仍然不能工作,从手动配置网络继续。
另一种方法:使用RP-PPPoE
假设你需要使用PPPoE连接到因特网上,LiveCD(任何版本)里包含了方便设置的rp-pppoe。使用它提供的adsl-setup脚本可以配置网络连接。程序将会提示你输入连接到adsl调制解调器的以太网设备、用户名、密码、DNS服务器的IP地址和是否需要设置基本的防火墙。
代码 7: 使用rp-pppoe |
# adsl-setup # adsl-start |
如果一切正常,从磁盘准备继续。
另一种方法:使用PPTP
如果你需要PPTP支持,你可以使用LiveCD提供的pptpclient。但是首先你得确认配置准确。编辑/etc/ppp/pap-secrets或者/etc/ppp/chap-secrets,使其包含正确的用户名/密码:
代码 8: 编辑/etc/ppp/chap-secrets |
# nano -w /etc/ppp/chap-secrets |
代码 9: 编辑/etc/ppp/options.pptp |
# nano -w /etc/ppp/options.pptp |
代码 10: 连接到一个拨号服务器 |
# pptp <
server ip>
|
3.d. 手动配置网络
加载准确的网络模块
当LiveCD启动时,它会尝试检测你的硬件设备并加载准确的内核模块(驱动)来支持这些硬件。大多数情况下,它会做的很漂亮。但是,一些情况下,它可能没有自动加载你需要的模块。
如果net-setup或者adsl-setup失败了,那么有可能你的网卡没有立即检测到。这意味着你需要手动为它加载正确的内核模块。
使用ls来查看我们给网络提供了什么内核模块:
代码 11: 搜索提供的模块 |
# ls /lib/modules/`uname -r`/kernel/drivers/net |
代码 12: 使用modprobe来加载内核模块 |
(作为例子,我们加载模块pcnet32) # modprobe pcnet32 |
代码 13: 测试网卡的存在,成功! |
# ifconfig eth0 eth0Link encap:EthernetHWaddr FE:FD:00:00:00:00 BROADCAST NOARP MULTICASTMTU:1500Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 b)TX bytes:0 (0.0 b) |
代码 14: 测试网卡的存在,失败! |
# ifconfig eth0 eth0: error fetching interface information: Device not found |
假设你现在网卡已经检测到了,你可以再次尝试使用net-setup或者adsl-setup(现在应该可以工作了),但是为了你们其中的一些“顽固分子”,这里我们将解释怎样手动配置网络。
根据你的网络设置来选择下面的章节:
- 使用DHCP来自动设置IP
- 如果你有一个无线网卡的话,无线网络的准备
- 理解网络名词解释了对于网络你应该知道的信息
- 使用ifconfig和route解释了怎样手动设置网络
DHCP(动态主机配置协议)使得自动获得网络信息(IP地址、网络掩码、广播地址、网关、域名服务器等)成为可能。但这个只在你的网络中有一个DHCP服务器的情况下才可以使用这种方法。要通过一个网络接口自动获得这些网络信息,使用dhcpcd:
代码 15: 使用dhcpcd |
# dhcpcd eth0 一些网络管理员需要你使用 DHCP服务器提供的主机名和域名。 这种情况下,使用 # dhcpcd -HD eth0 |
无线网络的准备
注释: 不是所有的LiveCD都由iwconfig这个命令。如果你的没有,仍然可以按照linux-wlan-ng项目里的说明获得这些扩展功能。 |
代码 16: 显示当前无线设置 |
# iwconfig eth0 eth0IEEE 802.11-DSESSID:"GentooNode" Mode:ManagedFrequency:2.442GHzAccess Point: 00:09:5B:11:CC:F2 Bit Rate:11Mb/sTx-Power=20 dBmSensitivity=0/65535 Retry limit:16RTS thr:offFragment thr:off Power Management:off Link Quality:25/10Signal level:-51 dBmNoise level:-102 dBm Rx invalid nwid:5901 Rx invalid crypt:0 Rx invalid frag:0 Tx excessive retries:237 Invalid misc:350282 Missed beacon:84 |
注释: 一些无线网卡可能使用设备名wlan0而不是eth0。 |
代码 17: 修改ESSID和/或添加WEP密匙 |
(这将网络名称改为“GentooNode”) # iwconfig eth0 essid GentooNode (这设置了一个16进制的WEP密匙) # iwconfig eth0 key 1234123412341234abcd (这设置了一个ASCII密是,以“s:”开头) # iwconfig eth0 key s:some-password |
理解网络名词
注释: 如果你知道你的IP地址、广播地址、网络掩码和域名解析服务器,那么你可以跳过这一节,从使用ifconfig和route继续。 |
在一个网络中,主机是由它们的IP地址(因特网协议地址)来标识的。这样的一个地址是由四个处于0到255之间的数字组合而成的,至少我们是这样感觉的。实际上,这样的一个IP地址是由32位字元(0和1)组成,让我们来看个例子:
代码 18: IP地址的样例 |
IP地址 (数字):192.168.0.2 IP地址 (字元):11000000 10101000 00000000 00000010 -------- -------- -------- -------- 19216802 |
而分开这些的就是网络掩码,也是由一系列的1后面加上一系列的0。用1标识的那部分IP地址就是网络部分,其余的就是主机部分。通常,网络掩码也可以写成IP地址的形式。
代码 19: 网络/主机分离的例子 |
IP-address:19216802 11000000 10101000 00000000 00000010 Netmask:11111111 11111111 11111111 00000000 2552552550 +--------------------------+--------+ NetworkHost |
广播地址是你的网络中具有相同网络部分的IP地址,但是只有那些1为主机部分。你的网络中的每个主机都会监视这个IP地址,也就是说这个地址用来广播数据包。
代码 20: 广播地址 |
IP-address:19216802 11000000 10101000 00000000 00000010 Broadcast:11000000 10101000 00000000 11111111 1921680255 +--------------------------+--------+ NetworkHost |
我们前面提到过每个主机都有它自己的IP地址。如果你要通过一个名字(而不是IP地址)来访问这台主机,你需要一个能将名字(如dev.gentoo.org)转换为IP地址(如64.5.62.82)的服务。这样的一个服务就叫做域名服务。要使用这种服务,你必须在/etc/resolv.conf里定义必须的域名服务器。
有些情况下,你的网关也担当域名服务器的角色。否则的话,你将必须输入你的ISP提供的域名服务器。
总的说来,在继续配置之前你必须获得如下的信息:
网络项目 |
样例 |
你的IP地址 |
192.168.0.2 |
网络掩码 |
255.255.255.0 |
广播地址 |
192.168.0.255 |
网关 |
192.168.0.1 |
域名解析服务器 |
195.130.130.5, 195.130.130.133 |
设置网络包括了三个步骤。首先,我们使用ifconfig给自己分配一个IP地址。然后,我们使用route来设定路由的网关。在接着,我们在/etc/resolv.conf里设置域名服务器的IP地址后就结束了。
你需要有你的IP地址、广播地址和网络掩码才可以分配IP地址。然后执行下面的命令,其中将${IP_ADDR}换成你的IP地址,${BROADCAST}换为你的广播地址和${NETMASK}换成你的网络掩码:
代码 21: 使用ifconfig |
# ifconfig eth0 ${IP_ADDR} broadcast ${BROADCAST} netmask ${NETMASK} up |
代码 22: 使用route |
# route add default gw ${GATEWAY} |
代码 23: 创建/etc/resolv.conf |
# nano -w /etc/resolv.conf |
代码 24: /etc/resolv.conf的模板 |
nameserver ${NAMESERVER1} nameserver ${NAMESERVER2} |
块设备
我们将来看看Gentoo Linux和Linux上磁盘相关方面的问题,包括文件系统、分区和块设备。然后,只有你熟悉了磁盘和文件系统的细节,你才将可以在Gentoo Linux的安装中正确的设置分区和文件系统哦。
我们将从介绍块设备开始。最为人所知的块设备很可能是Linux系统的第一个IDE驱动器,也就是/dev/hda。如果你的系统使用SCSI驱动器,那么你的第一个硬盘驱动器就是/dev/sda。
上面的块设备其实是磁盘的接口的抽象概念。用户编程时不需要担心你的驱动器是IDE、SCSI或者别的什么,也可以使用这些块设备和你的磁盘交流。程序可以简单的以一连串连续和随机存取的512字节块来定位存储。
分区
虽然理论上是可以用整个磁盘来放置你的Linux系统,但是实际的操作几乎很少如此。反而,整个磁盘将会被分为几个更小更方便管理的块设备。在x86系统上,它们被称作为分区。
分区分为三种:主分区、扩展分区和逻辑分区。
一个主分区是在MBR(主引导记录)上有其记录信息的分区。因为MBR很小(512字节),所以只能定义三个主分区(比如/dev/hda1到/dev/hda4。
一个扩展分区是一种特别的主分区(也就是扩展分区必须是四个可能主分区中的一个),它能包含更多的分区。这样的一个分区实际上并不存在,但是因为四个分区实在太少,为扩展分区表而又不会失去向后兼容能力,就引入了这个概念。
一个逻辑分区是扩展分区里的一个分区。它们的定义不是放在MBR里,但是在扩展分区里声明的。
高级存储
x86的LiveCD提供了对EVMS和LVM2的支持。EVMS和LVM2可以增加对你的分区设置的灵活性。在这个安装说明中,我们将集中于“常规”分区,但是了解可以支持EVMS和LVM2也是很有用的。
4.b. 设计分区表
默认的分区策略
如果你对为你的系统设计一个分区策略没什么兴趣的话,你可以使用我们在这本书里介绍的分区策略:
分区 |
文件系统 |
大小 |
描述 |
/dev/hda1 |
ext2 |
32M |
启动分区 |
/dev/hda2 |
(swap) |
512M |
交换分区 |
/dev/hda3 |
ext3 |
Rest of the disk |
根分区 |
多少?多大?
分区的数量主要根据你的环境所定。比如说,如果你有多个用户,你将会愿意使/home单独出来,这样不仅增加了安全性还方便备份。如果你安装Gentoo是用作邮件服务器,你的/var应该单独出来,因为它里面存储了所有的邮件。然后文件系统的选择将会提高系统的性能。游戏服务器将有一个单独的/pot,因为绝大多数的游戏服务器都安装在此,原因同/home的一样:安全性和备份。
就同你看到的,这很大程度上取决于你要达到的目标。单独的分区或者卷有如下优点:
- 你可以为每个分区或者卷选择最好的文件系统
- 如果一个废弃的工具连续的向一个分区或者卷写入文件,这个系统不会用光所有的磁盘空间
- 如果需要,文件系统的检查的是件可以减少,因此多个检查可以并行进行(虽然这个优势在多磁盘比多分区中明显的多)
- 通过只读、nosuid(可以忽略setuid的特性)、noexec(可以忽略可执行的特性)等挂载一些分区或者卷,可以增强安全性。
作为分区的一个样例,我们给你看看一个示范笔记本(包含网站服务器、邮件服务器、gnome……)上20Gb磁盘的分区表:
代码 1: 文件系统使用样例 |
FilesystemTypeSizeUsed Avail Use% Mounted on /dev/hda5ext3509M132M351M28% / /dev/hda2ext35.0G3.0G1.8G63% /home /dev/hda7ext37.9G6.2G1.3G83% /usr /dev/hda8ext31011M483M477M51% /opt /dev/hda9ext32.0G607M1.3G32% /var /dev/hda1ext251M17M31M36% /boot /dev/hda6swap516M12M504M2% < not mounted> (还有2Gb的未分区空间留作后用) |
4.c. 使用fdisk对磁盘分区
下面的部分将会解释怎样创建前面提到的样例分区表,也就是:
分区 |
描述 |
/dev/hda1 |
启动分区 |
/dev/hda2 |
交换分区 |
/dev/hda3 |
根分区 |
查看当前分区布局
fdisk是用来对磁盘进行分区的很流行和强大的一个工具。在你的系统中输入fdisk(在我们的例子中,我们将使用/dev/hda):
代码 2: 开始fdisk |
# fdisk /dev/hda |
代码 3: fdisk提示符 |
Command (m for help): |
代码 4: 一个分区配置的样例 |
Command (m for help): p Disk /dev/hda: 240 heads, 63 sectors, 2184 cylinders Units = cylinders of 15120 * 512 bytes Device BootStartEndBlocksIdSystem /dev/hda1114105808+83Linux /dev/hda2154926460082Linux swap /dev/hda3507015876083Linux /dev/hda4712184159818405Extended /dev/hda5712091050808+83Linux /dev/hda62103481050808+83Linux /dev/hda73496262101648+83Linux /dev/hda86279042101648+83Linux /dev/hda990521849676768+83Linux Command (m for help): |
删除所有分区
首先,我们将从这个磁盘上删掉所有已有的分区。输入d来删掉一个分区。比如,删掉已有的分区/dev/hda1:
代码 5: 删除一个分区 |
Command (m for help): d Partition number (1-4): 1 |
现在,假设你确实要删掉你系统上所有的分区,重复的输入p来列出分区然后输入d和标号来删掉分区。最后,你将会得到一个什么都没有的分区表:
代码 6: 一个空的分区表 |
Disk /dev/hda: 30.0 GB, 30005821440 bytes 240 heads, 63 sectors/track, 3876 cylinders Units = cylinders of 15120 * 512 = 7741440 bytes Device BootStartEndBlocksIdSystem Command (m for help): |
创建启动分区
我们首先来创建一个小的启动分区。输入n来创建一个新的分区,然后输入p选择一个主分区,接着输入1来选择第一个主分区。当提示第一个扇区时,点击enter。当提示最后的扇区时,输入+32M来创建一个大小为32Mbyte的分区。
代码 7: 创建启动分区 |
Command (m for help): n Command action eextended pprimary partition (1-4) p Partition number (1-4): 1 First cylinder (1-3876, default 1): (Hit Enter) Using default value 1 Last cylinder or +size or +sizeM or +sizeK (1-3876, default 3876): +32M |
代码 8: 已创建的启动分区 |
Command (m for help): p Disk /dev/hda: 30.0 GB, 30005821440 bytes 240 heads, 63 sectors/track, 3876 cylinders Units = cylinders of 15120 * 512 = 7741440 bytes Device BootStartEndBlocksIdSystem /dev/hda1114105808+83Linux |
创建交换分区
现在我们来创建交换分区。要做这个,输入n创建一个新分区,然后输入p来告诉fdisk你需要一个主分区。然后输入2来创建第二个主分区,在这里也就是/dev/hda2。当提示第一个扇区时,点击enter。当提示最后一个扇区时,输入+512M来创建一个大小为512MB的交换分区。做完这些之后,输入t来设定分区类型,2来选择你刚才创建的分区,然后输入82将分区类型设置为“Linux Swap”。完成这些步骤后,输入p应该可以看到类似如下的分区表:
代码 9: 创建一个交换分区后的分区表 |
Command (m for help): p Disk /dev/hda: 30.0 GB, 30005821440 bytes 240 heads, 63 sectors/track, 3876 cylinders Units = cylinders of 15120 * 512 = 7741440 bytes Device BootStartEndBlocksIdSystem /dev/hda1 *114105808+83Linux /dev/hda2158150652082Linux swap |
最后,让我们来创建根分区。要做这个,输入n创建一个信分区,然后输入p来告诉fdisk你需要一个主分区。然后输入3来创建第三个主分区,在这里也就是/dev/hda3。当提示第一个扇区时,点击enter。当提示最后一个扇区时,点击enter来创建一个使用磁盘剩下所有剩余空间的分区。完成这些步骤后,输入p应该可以看到类似如下的分区表:
代码 10: 创建根分区后的分区表 |
Command (m for help): p Disk /dev/hda: 30.0 GB, 30005821440 bytes 240 heads, 63 sectors/track, 3876 cylinders Units = cylinders of 15120 * 512 = 7741440 bytes Device BootStartEndBlocksIdSystem /dev/hda1 *114105808+83Linux /dev/hda2158150652082Linux swap /dev/hda38238762869020083Linux |
输入w保存分区表和退出fdisk。
代码 11: 保存并退出fdisk |
Command (m for help): w |
4.d. 创建文件系统
简介
现在分区已创建完成,该到给它们文件系统的时候了。如果你并不关心要选择什么样的文件系统,对本书中的默认设置很满意的话,从给分区创建文件系统继续。否则,继续读下去,学习已有文件系统的相关知识……
文件系统?
Linux内核支持各种各样的文件系统,我们着里将解释ext2、ext3、ReiserFS、XFS和JFS,因为这些文件系统在Linux系统中很常见的。
ext2是一个可靠的真正的文件系统,但不支持元数据日志功能,这意味着启动时的日常文件系统检查将会消耗比较多的时间。现在已经有了很多 新一代的日志文件系统可供选择,它们在稳定性检查时非常快,在和同等的非日志文件系统比较中越来越受到大家的喜爱。在启动系统时碰巧文件系统处于不稳定状 态时,日志式文件系统可以防止出现长时间的延迟。
ext3就是ext2文件系统的日志式版本,提供了用于快速恢复的元数据日志功能和其他的增强日志模式(如全数据和顺序数据日志)。 ext3是一个很好的可靠的文件系统,它有一个额外的杂乱b-tree检索选项,使得在几乎任何情况下都可以有很高的性能。一句话,ext3确实是个很优 秀的文件系统。
ReiserFS是一个基于B*-tree的文件系统,在处理小文件(小于4k的文件)时,相比较ext2和ext3来说,有极其优秀的表 现,常常是它们的10到15倍的性能表现。ReiserFS调整能力极强,也由元数据日志功能。对于高于2.4.18版本的内核来说,ReiserFS是 一个可靠和有用的文件系统,可以同时用于多种用途和如大文件系统、小文件很多、大文件和包含极大量文件的文件夹等极端例子中。
XFS是一个具有稳定和对可伸缩性加强的元数据日志功能的文件系统。我们只在使用高端SCSI和/或纤维通道存储(fibre channel storage)和不稳定电源供应这些情况下推荐使用这个。因为XFS在RAM中进行了强劲的流量缓冲,设计不合理的程序(那些在往磁盘写入文件时没有进 行合理预测危险的程序,现在很多程序都属于此类)在系统不稳定时会对数据处理失去控制。
JFS是IBM的高性能的日志式文件系统。它最近在商品应用中已经准备就绪,但是在主动或者被动注释这一点上都没有足够的轨道记录。
给分区创建文件系统
要对一个分区或者卷创建文件系统,对于每一个文件系统来说都有一些工具:
文件系统 |
创建命令 |
ext2 |
mke2fs |
ext3 |
mke2fs -j |
reiserfs |
mkreiserfs |
xfs |
mkfs.xfs |
jfs |
mkfs.jfs |
代码 12: 给分区创建文件系统 |
# mke2fs /dev/hda1 # mke2fs -j /dev/hda3 |
激活交换分区
mkswap是用来初始化交换分区的命令:
代码 13: 创建交换分区标识 |
# mkswap /dev/hda2 |
代码 14: 激活交换分区 |
# swapon /dev/hda2 |
4.e. 挂载
现在你的分区已经初始化并都使用了一个文件系统,该到挂在这些分区的时候了。使用mount命令来做这个。当然不要忘了给每个你创建的分区创建必要的挂载文件夹。作为一个例子,我们来挂载根分区和启动分区:
代码 15: 挂载分区 |
# mount /dev/hda3 /mnt/gentoo # mkdir /mnt/gentoo/boot # mount /dev/hda1 /mnt/gentoo/boot |
注释: 如果你要你的/tmp为一个单独的分区,确认在挂载后修改它的权限:chmod 1777 /mnt/gentoo/tmp。对于/var/tmp也应该如此。 |
代码 16: 创建挂载点 /mnt/gentoo/proc |
# mkdir /mnt/gentoo/proc # mount -t proc none /mnt/gentoo/proc |
正确的设置日期/时间
在继续之前,你需要检查和更新一下你的系统日期/时间。一个配置错误的时钟可能在将来导致很奇怪的结果。
运行date确认一下当前时间:
代码 1: 确认日期/时间 |
# date Sun Apr 25 16:21:18 CEST 2004 |
代码 2: 设定日期/时间 |
# date 042516212004 |
下一步你需要做的是在你的系统上安装一个你所选择的stage包。你可以从因特网上下载一个需要的包,或者如果你从Gentoo的通用LiveCD启动的话就从LiveCD里复制过去一个。
- 默认:使用从因特网上下载的Stage
- 替换办法:使用LiveCD里的一个Stage
下载Stage包
进入你将文件系统所挂载的Gentoo的挂载点(很可能是/mnt/gentoo):
代码 3: 进入Gentoo挂载点 |
# cd /mnt/gentoo |
注释: Gentoo Hardened stage包(用于x86架构上)是2004.0发行版的一部分。 |
代码 4: 使用lynx浏览镜像列表 |
# lynx http://www.gentoo.org/main/en/mirrors.xml |
代码 5: 使用links2浏览镜像列表 |
(Without proxy)# links2 http://www.gentoo.org/main/en/mirrors.xml (With proxy)# links2 -http-proxy proxy.server.com:8080 http://www.gentoo.org/main/en/mirrors.xml |
代码 6: 检查一个stage包的完整性 |
# md5sum -c stage1-x86-20040412.tar.bz2.md5 stage1-x86-20040412.tar.bz2: OK |
下载解开下载到你系统的stage包。我们使用GNU的tar命令来完成,这是最简单的方法:
代码 7: 解开stage |
# tar -xvjpf stage?-*.tar.bz2 |
注释: 你可以忽略任何有关./proc的警告"No such file for directory"。还有,"Error exit delayed from previous errors"这样的信息也可以忽略。 |
stage安装完后,从安装Portage继续。
5.c. 替代办法:使用LiveCD里的一个stage
解开Stage包
CD里的stage都放在/mnt/cdrom/stages文件夹里。使用ls查看里面存在的stage列表:
代码 8: 列出已有的stage |
# ls /mnt/cdrom/stages |
代码 9: 挂载CD-ROM |
# ls /mnt/cdrom/stages ls: /mnt/cdrom/stages: No such file or directory # mount /dev/cdroms/cdrom0 /mnt/cdrom # ls /mnt/cdrom/stages |
代码 10: 进入文件夹/mnt/gentoo |
# cd /mnt/gentoo |
代码 11: 解开stage包 |
# tar -xvjpf /mnt/cdrom/stages/stage3-<
subarch>
-20040412.tar.bz2 |
注释: 你可以忽略任何有关./proc的警告"No such file for directory"。还有,"Error exit delayed from previous errors"这样的信息也可以忽略。 |
5.d. 安装Portage
有无网络?
如果你没有一个可以使用的网络连接,你必须使用我们的LiveCD提供的一个portage快照。如果后面你要使用预编译的软件包和加快安装速度,你必须使用LiveCD提供的portage快照。其他的用户则可以等会使用emerge下载一个完全新的Portage树。
从下面一个正确的地方继续:
- 从LiveCD中安装一个Portage快照和源代码(用于无网络安装或者GRP安装)
- 配置编译选项(所有其他的安装方法)
在通用LiveCD里有一个Portage的快照。你读到这些,我们可以假设你正在使用这种LiveCD。要安装这个快照,可以看看/mnt/cdrom/snapshots里有什么快照:
代码 12: 查看文件夹/mnt/cdrom/snapshots的内容 |
# ls /mnt/cdrom/snapshots |
代码 13: 解开一个Portage快照 |
# tar -xvjf /mnt/cdrom/snapshots/portage-20040413.tar.bz2 -C /mnt/gentoo/usr |
代码 14: 复制源代码 |
# mkdir /mnt/gentoo/usr/portage/distfiles # cp /mnt/cdrom/distfiles/* /mnt/gentoo/usr/portage/distfiles/ |
5.e. 配置编译参数
介绍
你可以设定一些可以影响Portage行为的变量来优化Gento。这些变量都可以作为环境变量设置(使用export),但是不能保持不变。为保存你的设定,Portage给你提供了一个给Portage的配置文件/etc/make.conf。这就是我们现在要编辑的文件。
注释: 所有可以使用的变量的带注释的列表可以在/mnt/gentoo/etc/make.conf.example里找到。你只需要设定里面提到的这些变量,就可以成功完成Gentoo的安装。 |
代码 15: 打开/etc/make.conf |
# nano -w /mnt/gentoo/etc/make.conf |
CHOST
警告: 虽然这个对非stage1用户很吸引人,但是他们不不应该改变make.conf里的CHOST设定。做这个会让系统变得不可用。再一次提醒:只有你在使用一个stage1安装时才能改变这个变量。 |
架构 |
子架构 |
CHOST设置 |
x86 |
i386 |
i386-pc-linux-gnu |
x86 |
i486 |
i486-pc-linux-gnu |
x86 |
i586 |
i586-pc-linux-gnu |
x86 |
i686和上面所有的(包括athlon) |
i686-pc-linux-gnu |
alpha |
alpha-unknown-linux-gnu |
|
ppc |
powerpc-unknown-linux-gnu |
|
sparc |
sparc-unknown-linux-gnu |
|
hppa |
(generic) |
hppa-unknown-linux-gnu |
hppa |
pa7000 |
hppa1.1-unknown-linux-gnu |
hppa |
pa8000 and above |
hppa2.0-unknown-linux-gnu |
mips |
mips-unknown-linux-gnu |
|
amd64 |
x86_64-pc-linux-gnu |
变量CFLAGS和CXXFLAGS分别定义了gcc的C编译器和C++编译器的优化参数。虽然我们在这里进行了一般性的定义这些变量,如果你在编译每个软件时分别优化这些参数,你将获得最大的性能。这里的原因就是每个程序都是不一样的。
在make.conf里,你应该定义你认为是可以使你系统一般情况下最能有反应的优化参数。不要在这个变量山放一些测试性的设置;太多的优化也可能导致程序不正常(失败,或者更糟,不起作用)。
我们不会解释所有的这些优化选项。如果你想知道所有的,阅读GNU在线手册或者gccinfo页面(info gcc只能在一个可以工作的Linux系统起作用)。文件make.conf.example里也包含了不少的例子和信息;不要忘了也阅读它。
第一个设置就是参数-march=,这个指定了目标架构的名字。文件make.conf.example描述了可能的选项(以注释出现)。比如,对于x86的Athlon Xp架构来说:
代码 16: GCC的march设定 |
# AMD64用户不要使用athlon-xp -march=athlon-xp |
代码 17: GCC的O设定 |
-O2 |
推荐阅读
- 腾讯云服务器如何挂载云硬盘(Linux版本)()
- Ubuntu 下安装 matlab2018a
- linux忘记密码怎么办(看我)
- 如何用 Nacos 构建服务网格生态
- CentOS常用命令
- 神策数据正式推出智能预警分析,告别后知后觉的指标波动
- hashmap面试题,mysql管理工具forandroid
- Etcd 集群搭建
- Java入门(百度Java开发工资)