本节说明如何通过现有的 Unix 或 Linux 系统来安装 Debian GNU/Linux,而非使用本手册后面要谈到的由菜单驱动的安装软件。这篇“交叉安装(cross-install)” HOWTO 是应用户的要求而撰写的。他们原来是 Redhat、Mandrake 和 SUSE 的用户,现转而使用 Debian GNU/Linux。在本节中,我们假设您对于输入 *nix 命令以及在文件系统中穿梭移动并不生疏。同时,在本节中,$
标志着这个命令是在用户当前使用的系统中输入的,而 #
则表示这个命令是在 Debian chroot 环境中输入的。
一旦您根据自己的要求配置好了新的 Debian 系统,就可以将您原来系统中的用户数据(如果有的话)悉数迁移到 Debian 里去。然后就能继续爽了。一言以蔽之,这是一次“不停机”的 Debian GNU/Linux 安装。同时,这也是处理那些因为硬件原因不能通过任何引导或者安装介质完成安装的权宜之计。
由于绝大多数操作都是手动进行,应该记住这将需要您自己对系统做大量地基本配置,并且要具有比常规安装更多的 Debian 和 Linux 知识。不要期望这种执行的结果与常规安装完全相同。您还应该明白这一过程只是建立一个系统的基本步骤。可能还需要额外的安装、或者配置步骤。
如果需重新分区,用您当前的 *nix 的分区工具,至少要划分出一个文件系统,以及交换分区。如果只用控制台,至少要准备 350MB 空间,倘若想装 X,就需要至少 1GB 的空间了(安装 GNOME 或 KDE 这样的桌面环境,还要更多)。
下一步,在分区上创建文件系统。例如,在 /dev/hda6
分区(以后的例子中,将把它作为 root 分区)建立一个 ext3 格式的文件系统:
# mke2fs -j /dev/hda6
建立 ext2 格式的文件系统,要去掉 -j
。
初始化并激活交换分区(请把分区编号替换成您希望用作 Debian 交换分区的分区编号):
# mkswap /dev/hda5
# sync; sync; sync # swapon /dev/hda5
把一个分区挂载到 /mnt/debinst
(这是安装的位置,将来作为您新系统的根(/
)文件系统)。挂载点的名称是任意的,后面的步骤将会用到。
# mkdir /mnt/debinst
# mount /dev/hda6
/mnt/debinst
如果您打算将部分文件系统(例如,/usr)放到独立的分区,在进入下一阶段之前,需要手动创建和加载这些目录。
Debian 安装程序使用的工具,同时也作为安装 Debian 基本系统的正式方法,是 debootstrap。它调用了 wget 和 ar,而其他的仅依赖 /bin/sh
和基本的 Unix/Linux 工具[31]。如果您的系统里还没有 wget 和 ar,先安装它们,然后下载并安装 debootstrap。
或者您也可以通过下面的步骤手动安装它。先新建一个 work 目录,用于解压后的 .deb 文件:
# mkdir work # cd work
debootstrap 的二进制文件位于 Debian archive (请确保选对了您架构的文件)。下载 debootstrap .deb,它位于 pool,把软件包拷贝到 work 目录,解压该文件。把这些文件安装到系统,您必须要拥有 root 的权限。
# ar -x debootstrap_0.X.X_all.deb # cd / # zcat /full-path-to-work/work/data.tar.gz | tar xv
debootstrap 执行后,它会从 archive 直接下载所需的文件。在下面的命令示例中,建议您可以根据自己的网络情况,选择较近的一个 Debian archive 镜像,替换 http.us.debian.org/debian
。镜像列表位于 http://www.debian.org/mirror/list。
如果您已经把一张 squeeze 版本的 Debian GNU/Linux CD 挂载到 /cdrom
,那么也可以把 http URL 替换成 file URL,即:file:/cdrom/debian/
用下面列出的一个架构替换 debootstrap 命令中的 ARCH
: alpha
, amd64
, arm
, armel
, hppa
, i386
, ia64
, m68k
, mips
, mipsel
, powerpc
, s390
, or sparc
。
# /usr/sbin/debootstrap --arch ARCH squeeze \ /mnt/debinst http://ftp.us.debian.org/debian
虽然功能还很弱,现在您的磁盘上已经有了一个真正的 Debian 系统。用 chroot 命令进入:
# LANG=C chroot /mnt/debinst /bin/bash
之后您需要设置与 Debian 基本系统兼容的终端定义,例如:
# export TERM=xterm-color
此时,/dev/
只含有非常基本的设备文件。安装的后续步骤可能还需要更多的设备文件。使用什么样的文件和方法,取决于安装使用的系统、是否采用内核模块,以及在新系统中采用动态 (比如,使用 udev
) 或静态设备文件。
可以使用的选项有:
创建默认的静态设备文件,使用
# cd /dev # MAKEDEV generic
手动创建指定的设备文件,使用 MAKEDEV
将 host 系统上加载的 /dev 绑定到 target 系统的 /dev;注意,有些软件包的 postinst 脚本会创建设备文件,所以要小心使用改选项。
您需要新建 /etc/fstab
。
# editor /etc/fstab
这里有个样板,您不妨根据自己的情况对它进行修改:
# /etc/fstab: static file system information. # # file system mount point type options dump pass /dev/XXX / ext3 defaults 0 1 /dev/XXX /boot ext3 ro,nosuid,nodev 0 2 /dev/XXX none swap sw 0 0 proc /proc proc defaults 0 0 /dev/fd0 /media/floppy auto noauto,rw,sync,user,exec 0 0 /dev/cdrom /media/cdrom iso9660 noauto,ro,user,exec 0 0 /dev/XXX /tmp ext3 rw,nosuid,nodev 0 2 /dev/XXX /var ext3 rw,nosuid,nodev 0 2 /dev/XXX /usr ext3 rw,nodev 0 2 /dev/XXX /home ext3 rw,nosuid,nodev 0 2
可以通过 mount -a
来挂载 /etc/fstab
中所标明的所有文件系统,您也可以一个一个分别地挂载这些文件系统,像:
# mount /path # e.g.: mount /usr
Current Debian systems have mountpoints for removable media under /media
, but keep compatibility symlinks in /
. Create these as as needed, for example:
# cd /media # mkdir cdrom0 # ln -s cdrom0 cdrom # cd / # ln -s media/cdrom
您可以多次挂载 proc 文件系统,通常是在 /proc
位置,但也可以选择任意的地方。如果没有使用 mount -a
,请在进入下一步前先将 proc 挂载:
# mount -t proc proc /proc
ls /proc
命令现在应该列出非空目录。如果失败,您应该从 chroot: 以外加载 proc。
# mount -t proc proc /mnt/debinst/proc
/etc/default/rcS
文件中的选项决定系统是以 UTC 还是本地时间解释硬件时钟。下面命令可以让您设定和选择时区。
# editor /etc/default/rcS # dpkg-reconfigure tzdata
To configure networking, edit /etc/network/interfaces
, /etc/resolv.conf
, /etc/hostname
and /etc/hosts
.
# editor /etc/network/interfaces
Here are some simple examples from /usr/share/doc/ifupdown/examples
:
###################################################################### # /etc/network/interfaces -- configuration file for ifup(8), ifdown(8) # See the interfaces(5) manpage for information on what options are # available. ###################################################################### # We always want the loopback interface. # auto lo iface lo inet loopback # To use dhcp: # # auto eth0 # iface eth0 inet dhcp # An example static IP setup: (broadcast and gateway are optional) # # auto eth0 # iface eth0 inet static # address 192.168.0.42 # network 192.168.0.0 # netmask 255.255.255.0 # broadcast 192.168.0.255 # gateway 192.168.0.1
Enter your nameserver(s) and search directives in /etc/resolv.conf
:
# editor /etc/resolv.conf
A simple example /etc/resolv.conf
:
search hqdom.local nameserver 10.1.1.36 nameserver 192.168.9.100
Enter your system's host name (2 to 63 characters):
# echo DebianHostName > /etc/hostname
And a basic /etc/hosts
with IPv6 support:
127.0.0.1 localhost 127.0.1.1 DebianHostName # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters ff02::3 ip6-allhosts
If you have multiple network cards, you should arrange the names of driver modules in the /etc/modules
file into the desired order. Then during boot, each card will be associated with the interface name (eth0, eth1, etc.) that you expect.
debootstrap 会创建一个非常基本的 /etc/apt/sources.list
文件用于安装额外的软件包。但您还可以增加一些其他的源,比如源码包和安全更新:
deb-src http://ftp.us.debian.org/debian squeeze main deb http://security.debian.org/ squeeze/updates main deb-src http://security.debian.org/ squeeze/updates main
修改源列表之后一定要执行 aptitude update
。
要想启动这个系统,您很可能还需要一个 Linux 内核和一个 boot loader。可以用下面指令找到那些预先打包的内核:
# apt-cache search linux-image
如果您打算使用预编译的内核包,可以在使用前创建 /etc/kernel-img.conf
配置文件。这里是一个示例文件:
# Kernel image management overrides # See kernel-img.conf(5) for details do_symlinks = yes relative_links = yes do_bootloader = yes do_bootfloppy = no do_initrd = yes link_in_boot = no
要了解该文件及其选项的信息,请在安装 kernel-package
软件包后参考其手册(man)。我们建议使用适合您系统的值。
然后使用所选择的内核软件包名来安装。
# aptitude install linux-image-2.6.32-arch-etc
假如您在安装预编译内核包之前没有创建 /etc/kernel-img.conf
文件,安装时会被问到相关的问题。
要让您的 Debian GNU/Linux 系统能够启动,还要创建 boot loader,好让它能加载安装的内核并用上新的根分区。注意 debootstrap 不会安装 boot loader,因此您要在 Debian 的 chroot 中使用 aptitude 完成。
通过 info grub
或 man lilo.conf
可以看到有关设置 bootloader 的指导。如果希望保留用来安装 Debian 的那个系统,在现有的 grub menu.lst
或 lilo.conf
里为 Debian 系统的安装添加一条配置就可以了。对于 lilo.conf
,您也可以把这个文件拷贝到新的系统里,然后在新的系统里编辑它。修改好配置,运行 lilo(请记住,在哪个系统里运行 lilo,它就会用哪个系统里的 lilo.conf
)。
安装和建立 grub
非常容易:
# aptitude install grub
# grub-install /dev/hda
# update-grub
第二个命令将安装 grub (本例中是 hda
的 MBR)。最后的命令是创建一个胜任的 /boot/grub/menu.lst
。
注意,这里假设已经创建了 /dev/hda
设备文件。另外一种方法是安装 grub,但本附录中不讨论。
下面有一个简单的/etc/lilo.conf
作为例子:
boot=/dev/hda6
root=/dev/hda6
install=menu delay=20 lba32 image=/vmlinuz initrd=/initrd.img label=Debian
根据您选择的 bootloader,可以在 /etc/kernel-img.conf
里做一些修改。
对于 grub
bootloader,您应该设置 do_bootloader
选项为 “no”。为了能在安装或删除 Debian 内核时自动更新 /boot/grub/menu.lst
,应添加下面几行:
postinst_hook = update-grub postrm_hook = update-grub
对于 lilo
bootloader,do_bootloader
的值应保留为 “yes”。
如前所述,安装的是很基本的系统。如果您想让它更成熟一些,有一个简单的方法,使用 “standard” 优先级来安装所有的软件包:
# tasksel install standard
当然,您也可以用 aptitude 来安装单独的软件包。
安装之后,/var/cache/apt/archives/
里面会有大量下载的软件包。您可以运行下面命令释放空间:
# aptitude clean