<!> 这篇文章似乎被忽略,因此必须被分类为创建中 —— RussHerold;请把反馈发送给 GlennMatthys 并请他作出更新

<!> 这篇论坛文档描述了一个类似的引导方法供安装 CentOS-6 之用。

手动安装

准备功夫

引导主机操作系统

你可以选择任何采用 rpm 组件管理员的发行版本,即使主机发行本并不原生地运用 rpm。

要是你使用 CentOS 的安装光盘,不论是 CD 1、DVD 1 或 live CD,引导光盘时请使用:

linux rescue 

你也可采用:

linux text 

来引导「文字界面」(TUI)控制台。要是你已经进入「图像界面」(GUI)安装环境,请稍候,当它提问有关分区时,你可按 ctrl-alt-F2。这样你便会取得一个文字控制台来设置分区的细节。当你满意后,请在文字界面控制台存储分割数据,然后重新引导计算机:

reboot 

并利用这些分区续继安装。

此外你可选择提供一个 vga= 的开机参数,这样便能拥有一个较大图像暂存区的显示窗口。

碟盘设置

首先,按你首选的分割方式设置你的碟盘。你可选用任何格式:RAID、LVM、等……请记下你的碟盘设置,因为你在设置 grub、menu.lst 及 fstab 时需要它。采用 RAID、LVM、或其它格式所需的设置将会多于本指南所引述的。为求保持样例简单,我们会使用单一碟盘,并利用 fdisk 设置三个分区。举个例:

# fdisk /dev/sda

/dev/sda1/dev/sda3 的分区类型将会是 ext2/dev/sda2 的分区类型将会是 swap。它们会个别按类型进行格式化:

# mkfs /dev/sda1
# mkfs /dev/sda3
# mkswap /dev/sda2

你也可选择在那二个存放数据的分区上设置采用 ext2ext3 日志扩展,但你亦可在初始化安装后才利用 tune2fs 指令来进行这项设置。

接下来,在现有的文件系统上设置一个位置,用作创建新安装的用途,而分区将会挂载在 slash./boot 的位置:

# mkdir /target
# mount /dev/sda3 /target
# mkdir /target/boot
# mount /dev/sda1 /target/boot

设置 RPM

视乎你所采用的主机操作系统,你可能需要在主机的操作系统上初始化 rpm 的数据库

# rpm --initdb

??? 问:这里在说什么?在不明白主机的操作系统为何需要一个 RPM 数据库。 RussHerrold

现在挂载组件的来源。这个样例采用的是 CentOS 安装光盘,而光盘的碟盘位于 /dev/hdc

# mkdir /source
# mount /dev/hdc /source

请使用以下指令来安装组件:

# rpm --root /target -i (一个或多个组件的全路径)

提示:你可暂时把它放在指令壳内:# alias INSTALL='rpm --root /target -i '

安装基本系统

请利用指令壳的 tab 来自动完成组件的名称。这些指令刻意去除组件的版本,好让它们能适用于不同版本。

让我们安装一些基本组件(请记得,这个样例假设你设立了简称:INSTALL = rpm --root /target -i

# INSTALL setup basesystem filesystem

先安装 bash,因为 post-install 脚本需要它

# INSTALL bash glibc glibc-common termcap libgcc tzdata mktemp libtermcap

安装一些依赖性组件(目的是要令下个指令较简洁)

# INSTALL grep pcre libstdc++ info ncurses zlib gawk sed ethtool

安装系统的主要部份

# INSTALL coreutils libselinux libacl libattr pam audit-libs cracklib-dicts cracklib libsepol mcstrans libcap chkconfig python db4 openssl readline bzip2-libs gdbm findutils krb5-libs initscripts util-linux popt udev MAKEDEV centos-release shadow-utils keyutils-libs iproute sysfsutils SysVinit net-tools module-init-tools e2fsprogs e2fsprogs-libs glib2 mingetty device-mapper sysklogd psmisc centos-release-notes procps libsysfs iputils

安装组件管理员

# INSTALL rpm beecrypt elfutils-libelf rpm-libs sqlite

安装 YUM

# INSTALL yum python-elementtree rpm-python yum-metadata-parser python-sqlite expat libxml2 python-urlgrabber m2crypto python-iniparse

你也许会想安装一个惯用的编辑器

# INSTALL nano

这个组件安放缺省值在主目录,例如为 ls 加上颜色

# INSTALL rootfiles

设置新系统

此刻,你已拥有一个可通过 chroot 进入的系统,所以我们可着手进行基本设置

挂载目录供 chroot 采用:

# mount --bind /dev /target/dev
# mount -t proc none /target/proc
# mount -t sysfs none /target/sys
# chroot /target

创建 /etc/shadow

# pwconv

设置 fstab

# nano -w /etc/fstab

安装内核。由于来源组件并未挂载在 /target 目录树内,你必须在 chroot 以外的主机操作系统上进行。只要更改光盘挂载的位置,便没有这个必要。

# exit
# INSTALL kernel mkinitrd cpio device-mapper-multipath dmraid gzip kpartx lvm2 nash tar less device-mapper-event

安装开机程序 —— grub。

# INSTALL grub diffutils redhat-logos

再度进入 chroot 为新的安装设置开机程序

# chroot /target

我们可以先设置开机程序。打开 /boot/grub/menu.lst,然后放入以下内容:

timeout 5
default 0

# (0) CentOS
title CentOS
root (hd0,0)
kernel /vmlinuz-2.6.18-92.el5 root=/dev/sda3 ro
initrd /initrd-2.6.18-92.el5.img

??? 问题:采用 menu.lst 并非 CentOS 的做法,因为它有别于 Debian,采用 grub.conf。这里必须乎合 CentOS 的惯例。 RussHerrold

请把上述样例中的内核版本改为你实际安装的版本。

要是这个指令输出错误报告,你可以安全地忽视它,因为它并不重要。

??? 问题:错误报告是有意思的,而上述的万用解释明显是错的。请规限及纠正这个断定。 RussHerrold

重要的就是 grub-install 正确地把开机时所需的文件复制至 /boot/grub/

??? 问题:再一次,样例中的 menu.lst 所指的目录差不多肯定是 /boot/ 。这些必须被测试及纠正。 RussHerrold

# /sbin/grub-install /dev/sda

要是上一步失败了,请以手动方式安装 grub —— 即是在 grub 的指令壳输入:

# grub
#- root (hd0,0)
#- setup (hd0)

可选组件

你也许会想安装 passwd,还有 shadow passwd utilities 来设置密码

# INSTALL passwd libuser openldap cyrus-sasl-lib

这些是用来设置键盘语言(loadkeys)

# INSTALL kbd usermode

安装后的提示

现在你应拥有一台支持开机的系统!以下是一些能协助你过渡首次开机的提示

系统设置

很多系统设置都放置在 /etc/sysconfig。请阅读

/usr/share/doc/initscripts

内的完整文档。

请在 /etc/sysconfig/keyboard 内利用 KEYTABLE 变量来设置你的键盘

网络

/etc/sysconfig/network-scripts/。参考 ifcfg-lo 作为例子。

rpmdb: unable to lock mutex: Invalid argument

要是你采用的主机操作系统有不同的 db 版本,rpm 将会投诉 rpmdb: unable to lock mutex: Invalid argument。以下方法重建 RPM 数据库,并尽可能保留原有的内容

# rpmdb --rebuilddb -vv

Translation of revision 12

zh/HowTos/ManualInstall (last edited 2012-10-11 05:12:48 by TimothyLee)