本节说明如何通过现有的 Unix 或 Linux 系统来安装 Debian GNU/Linux,而非使用本手册其余部分谈到的由菜单驱动的安装程序。这篇“交叉安装(cross-install)” HOWTO 是应那些原来使用 Redhat、Mandriva 和 SUSE,现转到 Debian GNU/Linux 的用户撰写的。在本节中,我们假设您对于输入 *nix 命令以及在文件系统中穿梭移动并不生疏。同时,在本节中,$
标志着这个命令是在用户当前使用的系统中输入的,而 #
则表示这个命令是在 Debian chroot 环境中输入的。
一旦您根据自己的要求配置好了新的 Debian 系统,就可以将您原来系统中的用户数据(如果有的话)悉数迁移到新系统里去,然后继续滚动。一言以蔽之,这是一次“不停机”的 Debian GNU/Linux 安装。同时,这也是处理那些因为硬件原因不能通过任何引导或者安装介质完成安装的权宜之计。
注意 | |
---|---|
由于绝大多数操作都是手动进行,应该记住这将需要您自己对系统做大量地基本配置,并且要具有比常规安装更多的 Debian 和 Linux 知识。不要期望这种执行的结果与常规安装完全相同。您还应该明白这一过程只是建立一个系统的基本步骤。可能还需要额外的安装、或者配置步骤。 |
如果需重新分区,用您当前的 *nix 的分区工具,至少要划分出一个文件系统,以及交换分区。如果只用控制台,至少要准备 1012MB 空间,倘若想装 X,就需要至少 2539MB 的空间了(安装 GNOME 或 KDE 这样的桌面环境,还要更多)。
下一步,在分区上创建文件系统。例如,在 /dev/sda6
分区(以后的例子中,将把它作为 root 分区)建立一个 ext3 格式的文件系统:
# mke2fs -j /dev/sda6
建立 ext2 格式的文件系统,要去掉 -j
。
初始化并激活交换分区(请把分区号替换成您希望用作 Debian 交换分区的分区号):
# mkswap /dev/sda5
# sync # swapon /dev/sda5
把一个分区挂载到 /mnt/debinst
(这是安装的位置,将来作为您新系统的根(/
)文件系统)。挂载点的名称是任意的,后面的步骤将会用到。
# mkdir /mnt/debinst
# mount /dev/sda6
/mnt/debinst
注意 | |
---|---|
如果您打算将部分文件系统(例如,/usr)放到独立的分区,在进入下一阶段之前,需要手动创建和加载这些目录。 |
Debian 安装程序使用的工具,同时也作为安装 Debian 基本系统的正式方法,是 debootstrap。它调用了 wget 和 ar,而其他的仅依赖 /bin/sh
和基本的 Unix/Linux 工具[21]。如果您的系统里还没有 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。
如果您已经把一张 trixie 版本的 Debian GNU/Linux 安装映像挂载到 /cdrom
,那么也可以把 http URL 替换成 file URL,即:file:/cdrom/debian/
用下面其中一个架构替换 debootstrap 命令中的 ARCH
:amd64
,
arm64
,
armel
,
armhf
,
i386
,
mips64el
,
mipsel
,
ppc64el
,
s390x
。
# /usr/sbin/debootstrap --arch ARCH trixie \ /mnt/debinst http://ftp.us.debian.org/debian
如果目的架构与主机不同,那么应该添加 --foreign
选项。
现在您的磁盘上已经有了一个功能虽弱但却是真正的 Debian 系统。键入 chroot 命令进入:
# LANG=C.UTF-8 chroot /mnt/debinst /bin/bash
如果目标架构与主机不同,那么需要首先将 qemu-user-static 复制到新的主机:
# cp /usr/bin/qemu-ARCH-static /mnt/debinst/usr/bin # LANG=C.UTF-8 chroot /mnt/debinst qemu-ARCH-static /bin/bash
chrooting 之后,会需要设置终端定义与 Debian 基本系统兼容,例如:
# export TERM=xterm-color
依赖于 TERM 的值,会必须安装 ncurses-term
软件包,来从中得到支持。
如果目标架构与主机不同,则需要完成多阶段自举:
/debootstrap/debootstrap --second-stage
此时,/dev/
只含有非常基本的设备文件。安装的后续步骤可能还需要更多的设备文件。使用什么样的文件和方法,取决于安装使用的系统、是否采用内核模块,以及在新系统中采用动态 (比如,使用 udev
) 或静态设备文件。
可以使用的选项有:
安装 makedev 软件包,并创建默认的静态设备文件,使用(chroot 以后)
# apt install makedev # mount none /proc -t proc # 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/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
当前的 Debian 系统为可移动介质创建的挂载点位于 /media
, 但为了保持兼容,仍有符号链接处于 /
目录下面。如果需要,可以像下面这样创建这些挂载点:
# 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/adjtime
的第三行设置为 “UTC” 或 “LOCAL”,决定系统是否将认为硬件时钟被设置为UTC各自的本地时间。后面的命令允许设置它。
# editor /etc/adjtime
这是个例子:
0.0 0 0.0 0 UTC
后面的命令允许选择时区。
# dpkg-reconfigure tzdata
要配置网络,编辑 /etc/network/interfaces
、/etc/resolv.conf
、/etc/hostname
和 /etc/hosts
。
# editor /etc/network/interfaces
以下的简单例子来自 /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. ###################################################################### # The loopback interface isn't really required any longer, but can be used # if needed. # # auto lo # iface lo inet loopback # To use dhcp: # # auto eth0 # iface eth0 inet dhcp # An example static IP setup: (network, 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
在 /etc/resolv.conf
输入您的名称服务器和搜索域:
# editor /etc/resolv.conf
来自 /etc/resolv.conf
的简单示例:
search example.com nameserver 10.1.1.36 nameserver 192.168.9.100
输入系统的主机名(2到63个字符):
# echo DebianHostName > /etc/hostname
简单的带 IPv6 支持的 /etc/hosts
:
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
如果您有多张网卡,您应该在 /etc/modules
文件内以适当的顺序排列驱动程序模块名。然后在启动期间,每张卡将会获得您期望的接口名称(eth0,eth1,等等)。
debootstrap 会创建一个非常基本的 /etc/apt/sources.list
文件用于安装额外的软件包。但您还可以增加一些其他的源,比如源码包和安全更新:
deb-src http://ftp.us.debian.org/debian trixie main deb http://security.debian.org/ trixie-security main deb-src http://security.debian.org/ trixie-security main
修改源列表之后一定要执行 aptitude update
。
要想启动这个系统,您很可能还需要一个 Linux 内核和一个启动加载程序。可以用下面指令找到那些预先打包的内核:
# apt search linux-image
然后根据所选取的软件包名称安装内核软件包。
# apt install linux-image-arch-etc
要让您的 Debian GNU/Linux 系统能够启动,还要创建 boot loader,好让它能加载安装的内核并用上新的根分区。注意 debootstrap 不会安装 boot loader,因此您要在 Debian 的 chroot 中使用 aptitude 完成。
注意,这里假设已经创建了 /dev/sda
设备文件。另外一种方法是安装 grub2,但它不属于本附录讨论范围。
如果您可以通过控制台登录系统,可以跳过此节。如果以后可以通过网络访问系统,则需要安装 SSH 并设置访问权限。
# apt install ssh
默认禁用 root 登录密码,因此可以通过设置密码来设置访问权限,并用密码重新启用 root 登录:
# passwd # editor /etc/ssh/sshd_config
这是启用的选项:
PermitRootLogin yes
也可通过在 root 帐户中添加 ssh 密钥来设置访问权限:
# mkdir /root/.ssh # cat << EOF > /root/.ssh/authorized_keys ssh-rsa .... EOF
最后,还可以通过添加非 root 用户和设置密码来设置访问权限:
# adduser joe # passwd joe
如前所述,安装的是很基本的系统。如果您想让它更成熟一些,有一个简单的方法,使用 “standard” 优先级来安装所有的软件包:
# tasksel install standard
当然,您也可以用 apt 来安装单独的软件包。
安装之后,/var/cache/apt/archives/
里面会有大量下载的软件包。您可以运行下面命令释放空间:
# apt clean