本节说明如何通过现有的 Unix 或 Linux 系统来安装 Debian GNU/Linux,而非使用本手册其余部分谈到的由菜单驱动的安装程序。这篇“交叉安装(cross-install)” HOWTO 是应那些原来使用 Redhat、Mandriva 和 SUSE,现转到 Debian GNU/Linux 的用户撰写的。在本节中,我们假设您对于输入 *nix 命令以及在文件系统中穿梭移动并不生疏。同时,在本节中,$
标志着这个命令是在用户当前使用的系统中输入的,而 #
则表示这个命令是在 Debian chroot 环境中输入的。
一旦您根据自己的要求配置好了新的 Debian 系统,就可以将您原来系统中的用户数据(如果有的话)悉数迁移到新系统里去。然后就能继续爽了。一言以蔽之,这是一次“不停机”的 Debian GNU/Linux 安装。同时,这也是处理那些因为硬件原因不能通过任何引导或者安装介质完成安装的权宜之计。
![]() |
注意 |
---|---|
由于绝大多数操作都是手动进行,应该记住这将需要您自己对系统做大量地基本配置,并且要具有比常规安装更多的 Debian 和 Linux 知识。不要期望这种执行的结果与常规安装完全相同。您还应该明白这一过程只是建立一个系统的基本步骤。可能还需要额外的安装、或者配置步骤。 |
如果需重新分区,用您当前的 *nix 的分区工具,至少要划分出一个文件系统,以及交换分区。如果只用控制台,至少要准备 506MB 空间,倘若想装 X,就需要至少 1536MB 的空间了(安装 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 工具[26]。如果您的系统里还没有 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。
如果您已经把一张 jessie 版本的 Debian GNU/Linux CD 挂载到 /cdrom
,那么也可以把 http URL 替换成 file URL,即:file:/cdrom/debian/
用下面其中一个架构替换 debootstrap 命令中的 ARCH
:amd64
, arm64
, armel
, armhf
, i386
, mips
, mipsel
, powerpc
, ppc64el
, or s390x
。
# /usr/sbin/debootstrap --arch ARCH jessie \ /mnt/debinst http://ftp.us.debian.org/debian
现在您的磁盘上已经有了一个功能虽弱但却是真正的 Debian 系统。键入 chroot 命令进入:
# LANG=C.UTF-8 chroot /mnt/debinst /bin/bash
然后您需要设置与 Debian 基本系统兼容的终端定义,例如:
此时,/dev/
只含有非常基本的设备文件。安装的后续步骤可能还需要更多的设备文件。使用什么样的文件和方法,取决于安装使用的系统、是否采用内核模块,以及在新系统中采用动态 (比如,使用 udev
) 或静态设备文件。
可以使用的选项有:
安装 makedev 软件包,并创建默认的静态设备文件,使用(chroot 以后)
# apt-get 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/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
当前的 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/default/rcS
文件中的选项决定系统是以 UTC 还是本地时间解释硬件时钟。下面命令可以让您设定和选择时区。
# 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 jessie main deb http://security.debian.org/ jessie/updates main deb-src http://security.debian.org/ jessie/updates main
修改源列表之后一定要执行 aptitude update
。
要想启动这个系统,您很可能还需要一个 Linux 内核和一个 boot loader。可以用下面指令找到那些预先打包的内核:
# apt-cache search linux-image
然后根据所选取的软件包名称安装内核软件包。
# aptitude install linux-image-arch-etc
要让您的 Debian GNU/Linux 系统能够启动,还要创建 boot loader,好让它能加载安装的内核并用上新的根分区。注意 debootstrap 不会安装 boot loader,因此您要在 Debian 的 chroot 中使用 aptitude 完成。
通过 info grub
或 man lilo.conf
可以看到有关设置 bootloader 的指导。如果希望保留用来安装 Debian 的系统,只需要为 Debian 系统添加一条配置信息到现有 grub2 的 grub.cfg
或 lilo.conf
。对于 lilo.conf
,您也可以把这个文件拷贝到新的系统里,然后在新的系统里编辑它。修改好配置,运行 lilo (请记住,在哪个系统里运行 lilo,它就会用哪个系统里的 lilo.conf
)。
安装和建立 grub2
非常容易:
# aptitude install grub-pc
# grub-install /dev/sda
# update-grub
第二个命令将安装 grub2 (本例中是 sda
的 MBR)。最后的命令是创建一个可用的 /boot/grub/grub.cfg
。
注意,这里假设已经创建了 /dev/sda
设备文件。另外一种方法是安装 grub2,但它不属于本附录讨论范围。
下面有一个简单的/etc/lilo.conf
作为例子:
boot=/dev/sda6
root=/dev/sda6
install=menu delay=20 lba32 image=/vmlinuz initrd=/initrd.img label=Debian
In case you can login to the system via console, you can skip this section. If the system should be accessible via the network later on, you need to install SSH and set up access.
# aptitude install ssh
Root login with password is disabled by default, so setting up access can be done by setting a password and re-enable root login with password:
# passwd # editor /etc/ssh/sshd_config
This is the option to be enabled:
PermitRootLogin yes
Access can also be set up by adding an ssh key to the root account:
# mkdir /root/.ssh # cat << EOF > /root/.ssh/authorized_keys ssh-rsa .... EOF
Lastly, access can be set up by adding a non-root user and setting a password:
# adduser joe # passwd joe
如前所述,安装的是很基本的系统。如果您想让它更成熟一些,有一个简单的方法,使用 “standard” 优先级来安装所有的软件包:
# tasksel install standard
当然,您也可以用 aptitude 来安装单独的软件包。
安装之后,/var/cache/apt/archives/
里面会有大量下载的软件包。您可以运行下面命令释放空间:
# aptitude clean