使用debootstrap手动安装debian系统

使用debootstrap手动安装debian系统

本文说明如何通过现有的 Unix 或 Linux 系统来安装 Debian GNU/Linux,而非使用由菜单驱动的安装程序。

在本文中,假设对于输入命令以及在文件系统中穿梭移动并不生疏。

一旦根据自己的要求配置好了新的 Debian 系统,就可以将来系统中的用户数据悉数迁移到新系统里去。

一言以蔽之,这是一次“不停机”的 Debian GNU/Linux 安装。

同时,这也是处理那些因为硬件原因不能通过任何引导或者安装介质完成安装的权宜之计。

注意:

由于绝大多数操作都是手动进行,应该记住这将需要自己对系统做大量地基本配置,并且要具有比常规安装更多的 Debian 和 Linux 知识。

不要期望这种执行的结果与常规安装完全相同。

还应该明白这一过程只是建立一个系统的基本步骤。

可能还需要额外的安装、或者配置步骤。

安装前的准备

确保有至少一台可以正常使用且能连接互联网的电脑

  • 下载 LiveCD 系统

  • 写入 LiveCD 到 U 盘

  • 安装系统

1、 获取安装映像

打开镜像地址,下载相应的安装系统的任意镜像。

注意:

镜像地址是可以自由选择的,可以选择更靠近的镜像服务器,

为了保险起见,下载好的文件需要校验其完整性。

若安装映像是从镜像站点下载,而非从官网下载的话,则签名是可以被伪造的。

在这种情况下,请确保用来解码签名的公钥是被另一个可信的密钥签署的。

gpg 命令将会输出公钥的指纹。

2、 准备安装介质

安装映像可以通过 U 盘、光盘和带 PXE 的网络提供给目标机器。

请按照合适的文章,使用所选映像为自己准备安装介质。

3、 启动到 Live 环境

注意:

若安装镜像不支持安全启动(Secure Boot)。

要引导安装介质,需要禁用安全启动。

若需要,可在完成安装后重新配置安全启动。

将准备好的 U 盘插上需要安装系统的电脑后重启/开启该电脑,通过按键(Esc/Del/F2/F10/F12)进入启动选项,选择后进入到 U 盘内的 LiveCD 环境。

如需配置 UEFI 启动,务必同样以 UEFI 方式启动 U 盘内的系统(选择时会有带 [U]EFI 和不带 [U]EFI 字样的两种 U 盘启动选项)。

注意:

根据主板不同,开机时选择启动项的方式也不同,一般可以按下 F12 来进行选择,若无效则可以通过 F2 进入到 BIOS 操作界面,找到 boot 相关的选项选择对应的 U 盘来启动,这里无法一一说明。

若不知道 UEFI 是什么,那这里也先不用去查,看到有 UEFI 启动先以 UEFI 启动即可。

简而言之,是一个替代了老式 BIOS 新的固件接口,可用于引导系统的启动,且更适配 GPT 分区表(无需使用额外的 boot 分区)。

扩展阅读请自行查阅。

启动时,请注意提示信息, BIOS 模式下会多一个手动启动的提示,需要在 15s 内选择,否则会正常启动硬盘下的系统。

4、 控制台键盘布局

控制台键盘布局默认为 us(美式键盘)。

列出所有可用的键盘布局,可以使用:

# ls /usr/share/kbd/keymaps/**/*.map.gz

若想要更改键盘布局,可以将相应文件名添加进 loadkeys,但请省略路径和扩展名。

比如,要添加德语键盘布局:

# loadkeys de-latin1

控制台字体位于 /usr/share/kbd/consolefonts/ 目录中。

5、 验证引导模式

要验证引导模式,请用下列命令行出 efivars 目录:

# ls /sys/firmware/efi/efivars

若命令结果显示了目录且没有报告错误,则系统以 UEFI 模式引导。

若目录不存在,则系统可能以 BIOS 模式 (或 CSM 模式) 引导。

若系统未以想要的模式引导启动,请参考主板说明书。

连接到互联网

要在 Live 环境中配置网络连接,请跟随以下步骤:

  • 确保系统已经启用了网络接口,用 ip-link 检查:

    # ip link
    
  • 对于无线局域网(Wi-Fi)和无线广域网(WWAN),请确保网卡未被 rfkill 禁用。

  • 要连接到网络:

    • 有线以太网 —— 连接网线。
    • WiFi —— 使用 iwctl 验证无线网络。
    • 移动宽带调制解调器(移动网卡) - 使用 mmcli 实用程序连接到移动网络。
  • 配置网络连接:

    • DHCP:对于有线以太网、无线局域网(WLAN)和无线广域网(WWAN)网络接口来说,动态 IP 地址和 DNS 服务器分配(由 systemd-networkd 和 systemd-resolved 提供功能)能够开箱即用。
    • 静态 IP 地址:按照静态 IP 地址进行操作。
  • 用 ping 检查网络连接:

    # ping baidu.com
    

更新系统时间

在 Live 环境中 systemd-timesyncd 默认启用,创建互联网连接后,时间将自动同步。

使用 timedatectl 确保系统时间是准确的:

# timedatectl set-ntp true

可使用 timedatectl status 检查服务状态。

建立硬盘分区

系统若识别到磁盘,就会将其分配为一个块设备,如 /dev/sda/dev/nvme0n1 或 /dev/mmcblk0。可使用 lsblk 或者 fdisk 查看:

# fdisk -l

结果中以 romloop 或者 airoot 结尾的设备可被忽略。

对于一个选定的设备,以下分区是必须要有的:

  • 一个根分区(挂载在 根目录)/
  • 要在 UEFI 模式中启动,还需要一个 EFI 系统分区。

若需要创建多级存储例如 LVM、disk encryption 或 RAID,请在此时完成。

请使用 fdisk 或 parted 修改分区表。例如:

# fdisk /dev/

注意:

  • 若想要的磁盘没有显示出来, 确保磁盘控制器未处于RAID模式.

  • 若要启动的磁盘已经有一个EFI系统分区,不要新建 EFI 分区,请使用现有的分区。

  • 若文件系统支持,交换空间 可通过 交换文件 实现。

亦可使用更为简单的cfdisk对磁盘进行分区处理,使用命令如下:

# cfdisk /dev/

注意

若在此处误将GPT分区与MBR分区弄错,可使用如下命令进行转换:

GPT分区转MBR分区:

使用parted工具转换,若系统未含有该工具,请先安装后再执行如下命令:

# parted -s /dev/ mklabel msdos

分区示例

UEFI 与 GPT
挂载点 分区 分区类型 建议大小
/mnt/boot1 /dev/*efi_system_partition* EFI 系统分区 至少 300 MiB
[SWAP] /dev/*swap_partition* Linux swap (交换空间) 大于 512 MiB
/mnt /dev/*root_partition* Linux x86-64 根目录 (/) 剩余空间

若使用的引导加载程序能够从根磁盘卷中加载内核和 initramfs 映像,则可使用其他挂载点(例如 /mnt/efi)。

BIOS 与 MBR
挂载点 分区 分区类型 建议大小
[SWAP] /dev/*swap_partition* Linux swap (交换空间) 大于 512 MiB
/mnt /dev/*root_partition* Linux 剩余空间

格式化分区

创建分区后,必须使用合适的文件系统对每个新创建的分区进行格式化。

例如,要在根分区 /dev/*root_partition* 上创建一个 Ext4 文件系统,请运行:

# mkfs.ext4 /dev/*root_partition(根分区)*

若创建了交换分区,请使用 mkswap 将其初始化:

# mkswap /dev/*swap_partition(交换空间分区)*

注意:

对于堆叠式块设备(stacked block devices)请使用恰当的块设备路径替换上文中的 /dev/**_partition* 处。

若要创建一个 EFI 系统分区,使用 mkfs.fat 将其格式化为 Fat32

警告:

只有在分区步骤中创建 EFI 系统分区时才需要格式化。

若这个磁盘上已经有一个 EFI 系统分区了,重新格式化会破坏其他已安装操作系统的引导加载程序。

# mkfs.fat -F 32 /dev/*efi_system_partition*

注意:

除了上述所述的ext4文件系统、fat32文件系统以外,其它文件系统还有xfsBtrFSzfs等。

当然 zfs 需要额外编译内核模块,新手安装不建议考虑。

BtrFS 文件系统,有写时复制,子卷,快照,透明压缩等一系列功能,对 SSD 也有额外优化,但也有碎片严重等问题。若考虑采用 BtrFS,建议先了解清楚。BtrFS文件系统现在是 openSUSEFedora 桌面变体的默认文件系统。

xfsRed Hat Enterprise Linux 的默认文件系统。

挂载分区

将根磁盘卷挂载到 /mnt,例如:

# mount /dev/*root_partition(根分区)* /mnt

使用 mkdir 创建其他剩余的挂载点(比如 /mnt/efi)并挂载其相应的磁盘卷。

提示:

使用 --mkdir 选项运行 mount 来创建指定的挂载点。

或者,先使用 mkdir 创建挂载点再挂载。

注意:

挂载分区一定要遵循顺序,先挂载根(root)分区(到 /mnt),再挂载引导(boot)分区(到 /mnt/boot 或 /mnt/efi,若单独分出来了的话),最后再挂载其他分区。

否则可能遇到安装完成后无法启动系统的问题。

对于 UEFI 系统,挂载 EFI 系统分区:

# mount /dev/*efi_system_partition* /mnt/boot

若创建了交换空间卷,请使用 swapon 启用:

# swapon /dev/*swap_partition(交换空间分区)*

安装系统

下载安装Debian系统安装程序

debootstrap 是Debian 安装程序使用的工具,同时也作为安装 Debian 基本系统的正式方法。

debootstrap 调用了 wget 和 ar,而其他的仅依赖 /bin/sh 和基本的 Unix/Linux 工具。

提示:

基本的 Unix/Linux 工具包括 GNU core 工具和命令,

像 sedgreptar 和 gzip

若系统里还没有 wget 和 ar,首先安装 wget 和 ar,再使用相应系统的软件包安装工具下载并安装 debootstrap

若系统的软件包安装工具中没有debootstrap,也可以通过下面的步骤手动安装。

  • ① 新建一个 work 目录,用于解压 .deb 文件:

    # mkdir work
    
    # cd work
    
  • ② 下载 debootstrap .deb,其位于 pool,把软件包拷贝到 work 目录,并解压该文件。

    debootstrap 的二进制文件位于 Debian archive 。

    请确保选择了合适的架构文件。

    要将这些文件安装到系统,需要 root 权限。

    # ar -x debootstrap_0.X.X_all.deb
    
    # cd /
    
    # zcat /full-path-to-work/work/data.tar.gz | tar xv
    

运行Debian系统安装程序

运行 debootstrap 后,会从 archive 直接下载所需的文件。

在下面的命令示例中,可以根据自己的网络情况,选择一个较近的 Debian archive 镜像,替换 http.us.debian.org/debian

镜像列表位于这里。

若已经把一张 Debian GNU/Linux 安装映像挂载到 /cdrom,那么也可以把 http URL 替换成 file URL,即:file:/cdrom/debian/

# /usr/sbin/debootstrap --arch ARCH bullseye \
     /mnt/debinst http://ftp.us.debian.org/debian

注意:

① 用下面其中一个架构替换 debootstrap 命令中的 ARCH

  • amd64

  • arm64

  • armel

  • armhf

  • i386

  • mips64el

  • mipsel

  • ppc64el

  • s390x

② 若目的架构与主机不同,那么应该添加 --foreign 选项。

若需要安装一些软件包,亦可将软件包添加进命令之中,示例命令如下:

debootstrap --arch=amd64 --include=linux-image-amd64,systemd,systemd-coredump,grub-pc,makedev,locales,,man,sudo,bash-completion bullseye /mnt https://mirrors.bfsu.edu.cn/debian/

debootstrap执行成功后会显示如下提示:

I: Base system installed successfully.

注意:

① 该下载过程或许很漫长,具体情况与网速挂钩。

② 若为UEFI的电脑,安装时可将grub-pc软件包更换为grub-efi-amd64软件包,并在/boot文件夹下创建EFI挂载点且挂载。

配置系统

编辑文件系统挂载配置

使用blkid命令查看分区ID,并在/etc/fstab文件中,添加挂载点配置,配置格式如下所示:

# UNCONFIGURED FSTAB FOR BASE SYSTEM
#                     

注意:

#开头的为注释,为后续添加挂载点方便,最好添加一个格式注释。

② 其中,

  • 为要挂载的分区或存储设备,即相应的UUID

  • 为挂载点

  • 为文件系统类型

  • 为挂载时使用的参数

  • 为是否做备份

  • 为需要检查的文件系统的检查顺序

样板如下,可以根据自己的情况对其进行修改:

# /etc/fstab: static file system information.
#
# UNCONFIGURED FSTAB FOR BASE SYSTEM
# 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

以下为实机的其中一行,亦可作为参照:

UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx    /    ext4    rw,relatime    0    2

亦可使用Arch Linux中的genfstab工具进行一键配置,下载Arch Linux中的genfstab工具后,执行如下命令:

# genfstab -U /mnt >> /mnt/etc/fstab

同时,可使用MX Linux中的make-fstab工具进行一键配置,下载MX Linux中的make-fstab工具后,执行如下命令:

# make-fstab --install=/mnt

注意:

genfstab工具,可使用 -U 或 -L 选项设置 UUID 或卷标。

make-fstab工具,可使用make-fstab --swap-only命令,仅为fstab增加swap分区。

强烈建议在执行完以上命令后,检查一下生成的 /mnt/etc/fstab 文件是否正确。

挂载特殊文件系统

使用mount命令挂载必要的文件系统

/proc 是一个由内核暴露信息到环境下的伪文件系统

# mount --types proc /proc /mnt/proc 

/sys 是类似 /proc 但比其更结构化的伪文件系统

# mount --rbind /sys /mnt/sys 

/dev 是由 udev 管理,包含所有设备文件的普通文件系统

# mount --rbind /dev /mnt/dev

可以通过 mount -a 来挂载 /etc/fstab 中所标明的所有文件系统,也可以逐个分别地挂载这些文件系统,例如:

# mount /path   # e.g.: mount /usr

额外进行二次挂载:

# mount --make-rslave /mnt/sys
# mount --make-rslave /mnt/dev
# mount -t proc proc /mnt/proc
# mount none /proc -t proc
# mount -t sysfs sysfs /mnt/sys

基本系统的配置

现在磁盘上已经有了一个功能虽弱但却是真正的 Debian 系统。

键入 chroot 命令进入:

# LANG=C.UTF-8 chroot /mnt /bin/bash

进入Chroot后,或许会出现无法使用某些工具的情况,该情况一般为权限不足,可使用如下命令进行权限提升:

# su

使用 makedev 软件包,创建并更新默认的静态设备文件:

# cd /dev
# MAKEDEV generic
  • 手动创建指定的设备文件,使用 MAKEDEV

  • host 系统上加载的 /dev 绑定到 target 系统的 /dev

注意:

有些软件包的 postinst 脚本会创建设备文件,因此,要小心使用改选项。

设置时区

使用以下命令进行时区的设置:

# ln -sf /usr/share/zoneinfo/*Region(地区名)*/*City(城市名)* /etc/localtime

提示:

以要设置为上海时区为例,请运行

# ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

然后运行 hwclock 以生成 /etc/adjtime

# hwclock --systohc

这个命令假定已设置硬件时间为 UTC 时间。

本地化设置:

程序和库若需要本地化文本,都依赖区域设置,后者明确规定了地域、货币、时区日期的格式、字符排列方式和其他本地化标准。

需在这两个文件设置:locale.gen 与 locale.conf

编辑 /etc/locale.gen,并取消掉 en_US.UTF-8 UTF-8 和其他需要的 区域设置 前的注释(#)。

接着执行 locale-gen 以生成 locale 信息:

# locale-gen

创建 locale.conf 文件,并 编辑设定 LANG 变量,比如:

# editor /etc/locale.conf
LANG="en_US.UTF-8""

提示:

  • 用户可自行设置 locale

  • 将系统 locale 设置为 en_US.UTF-8 ,系统的 log 就会用英文显示,这样更容易判断和处理问题;

    • 亦可设置为 en_GB.UTF-8 或 en_SG.UTF-8,附带以下优点:

      • 进入桌面环境后以 24 小时制显示时间;
      • LibreOffice 等办公软件的纸张尺寸会默认为 A4 而非 Letter(US)
      • 可尽量避免不必要且可能造成处理麻烦的英制单位。
    • 设置的 LANG 变量需与 locale 设置一致,否则会出现以下错误:

      - `Cannot set LC_CTYPE to default locale: No such file or directory`
      

警告:

不推荐在此设置任何中文 locale,会导致 tty 乱码。

亦可使用的locales 支持软件包,进行配置:

# apt install locales
# dpkg-reconfigure locales

若需要修改 控制台键盘布局,可编辑 vconsole.conf 使其长期生效,例如:

# editor /etc/vconsole.conf
KEYMAP=*de-latin1*

若需修改键盘布局,亦可使用console-setup软件包,进行配置:

# apt install console-setup
# dpkg-reconfigure keyboard-configuration 

网络配置

要配置网络,编辑 /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

创建 hostname 文件,输入系统的主机名(2到63个字符):

# editor /etc/hostname

myhostname(主机名)

简单的带 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 文件内以适当的顺序排列驱动程序模块名。

在启动期间,每张卡将会获得期望的接口名称(eth0eth1,等等)。

请接着完成新安装的环境的网络配置,配置过程中可能需要安装合适的网络管理软件。

配置 Apt

debootstrap 会创建一个非常基本的 /etc/apt/sources.list 文件用于安装额外的软件包。

但还可以增加一些其他的源,比如源码包和安全更新:

deb-src http://ftp.us.debian.org/debian bullseye main

deb http://security.debian.org/ bullseye-security main
deb-src http://security.debian.org/ bullseye-security main

注意:

① 修改源列表之后一定要执行 apt update

② 亦可使用其他镜像源的源码包和安全更新源。

内核安装

要想启动这个系统,还需要一个 Linux 内核和一个启动加载程序。

可以用下面指令找到那些预先打包的内核:

# apt search linux-image

根据所选取的软件包名称安装内核软件包。

# apt install linux-image-

Boot Loader 设置

要让 Debian GNU/Linux 系统能够启动,还要创建 boot loader,以便让加载安装的内核并用上新的根分区。

注意 debootstrap 不会安装 boot loader,因此要在 Debian 的 chroot 中使用 apt 完成。

通过查阅 info grub 可以得到一些有关设置 bootloader 的提示。

若希望继续保留曾经安装 Debian 的系统,安装到现有的 grub2 grub.cfg 中。

使用如下命令,安装和建立 grub2 :

  • BIOS系统引导安装:
# apt install grub-pc
# grub-install --target=i386-pc 

其中 /dev/sdX 是要安装 GRUB磁盘(不是分区),

比如磁盘 /dev/sda/dev/nvme0n1或者/dev/mmcblk0,而 不是 分区 /dev/sda1

  • UEFI系统引导安装:

注意:

  • 不同硬件厂商的 UEFI 实现方式不一样,下面描述的步骤应该可在大部分 UEFI 系统上面正常应用。

    • 对于用了下面的方法却遇到问题的用户,请将在特定的硬件上所遇到的问题的细节,以及可能的解决办法分享出来。

    • 这些案例可添加到页面 GRUB/EFI examples (简体中文) 上面。

  • 本节假设正在 x86_64 系统上安装 GRUB。

    • 对于 IA32 (32 位) UEFI 系统(不要和 32 位 CPU 相混淆), 将x86_64-efi替换成i386-efi

根据如上步骤安装软件包 grub 和 efibootmgr

其中“GRUB”是启动引导器,“efibootmgr”被 GRUB 脚本用来将启动项写入 NVRAM

按照下列步骤将GRUB安装到硬盘上:

  1. 挂载 EFI 系统分区。需要注意的是在本节的内容里,把 *esp* 替换成ESP分区挂载点;
  2. 选择一个启动引导器标识,在本例被称为 GRUB。这将在 *esp*/EFI/ 中创建一个与标识同名的目录来储存 EFI 二进制文件,而且这个名字还会用于在 UEFI 启动菜单中区分 GRUB 启动项;
  3. 执行下面的命令来将 GRUB EFI 应用 grubx64.efi 安装到 *esp*/EFI/GRUB/,并将其模块安装到 /boot/grub/x86_64-efi/

注意:

确保安装 GRUB 软件包和运行命令的系统是想用 GRUB 引导的系统。

即,若是通过安装介质引导,则需要 chroot 之后再运行 grub-install

若因某些原因不得不在安装的系统之外运行 grub-install,则在后面加上 --boot-directory= 选项来指定挂载 /boot 目录的路径,如 --boot-directory=/mnt/boot

# grub-install --target=x86_64-efi --efi-directory=*esp* --bootloader-id=GRUB

上述安装完成后 GRUB 的主目录将位于 /boot/grub/

注意上述例子中,grub-install 还将在固件启动管理器中创建一个条目,名叫 GRUB

若启动项已满,这个命令会执行失败。

需要使用 efibootmgr 来删除不必要的条目。

在配置完成后,记得#生成主配置文件。

提示:

若使用了 --removable 选项,GRUB 将被安装到 *esp*/EFI/BOOT/BOOTX64.EFI (当使用 i386-efi 时是 *esp*/EFI/BOOT/BOOTIA32.EFI ),此时即使 EFI 变量被重设或该驱动器接到其他电脑上,仍可从该驱动器上启动。

通常来说,只要像操作 BIOS 设备一样在启动时选择这个驱动器即可。

若设备是同时安装了Windows的多引导启动,注意 Windows 通常会在这里安装一个 EFI 可执行程序,该程序的目的是仅重建WindowsUEFI启动项。

若想在Mac上安装GRUB,则必须要使用该选项。

注意:

  • --efi-directory 和 --bootloader-id 是 GRUB UEFI 特有的。

    • --efi-directory 替代了已经废弃的 --root-directory
  • 可能注意到在 grub-install 命令中没有 device_path 选项(如 /dev/sda)。

    • 事实上即使提供了 device_path,也会被 GRUB UEFI 安装脚本忽略,因为 UEFI 启动加载器不使用 MBR 启动代码或启动扇区。

完成安装之后,GRUB 在每次启动的时候载入配置文件 /boot/grub/grub.cfg

可使用工具来#生成 grub.cfg,或者可可动#定制 grub.cfg。

生成 grub.cfg

Note:

请记住,每当修改 /etc/default/grub 或者 /etc/grub.d/ 中的文件之后,都需要再次生成主配置文件。

生成主配置文件

安装后,需要生成主配置文件 /boot/grub/grub.cfg

配置文件的生成过程受到 /etc/default/grub 中的选项和 /etc/grub.d/ 下脚本的影响。

若未进行额外配置,自动生成程序会在当前启动的系统的根文件系统中侦测配置文件。

所以请确保系统已经启动或者已经通过 chroot 进入。

注意:

  • 默认的文件路径是 /boot/grub/grub.cfg,而非 /boot/grub/i386-pc/grub.cfg

  • 若在 chroot 或者 systemd-nspawn 容器中运行 grub-mkconfig,可能会报 grub-probe 无法获取 “canonical path of /dev/sdaX” 错误而无法正常执行。此时可尝试使用 chroot

  • 若在使用了 LVMchroot 环境中安装 GRUBgrub-mkconfig 会无限期挂起。

使用 grub-mkconfig 工具来生成 /boot/grub/grub.cfg

# grub-mkconfig -o /boot/grub/grub.cfg

自动生成脚本默认将在生成的配置文件中为所有已安装的 内核添加条目。

设置 Root 密码

默认禁用 root 登录密码,因此可以通过设置密码来设置访问权限,并用密码重新启用 root 登录:

# passwd

新建个人用户

使用如下命令,新建一个非root的个人用户,以提高安全性:

# useradd -m  -s /bin/bash <用户名>

设置个人用户密码

使用如下命令,设置个人用户的账号密码:

# passwd <用户名>

编辑个人用户权限

若使用vim,可使用如下命令进行简单设置:

# EDITOR=vim visudo

若使用nano,则需要修改sudoers文件,命令如下:

# nano /etc/sudoers

root下添加如下内容,以使得个人用户可以提权:

<用户名>    ALL=(ALL)    ALL

最后一笔

如前所述,安装的是很基本的系统。

若想更成熟一些,有一个简单的方法,使用 “standard” 优先级来安装所有的软件包:

# tasksel install standard

当然,也可以用 apt 来安装单独的软件包。

安装之后,/var/cache/apt/archives/ 里面会有大量下载的软件包。

可以运行下面命令释放空间:

# apt clean

为防止开机后没有网络可用而导致很多功能无法使用,在LiveCDChroot环境下先设置好网络环境。

使用systemd将网络设置为开机自启动:

# systemctl enable Network-Manager 

卸载文件系统

使用如下命令卸载之前挂载的文件系统:

# chroot退出前
sync
umount /proc
umount /sys
umount /boot
exit
# 退出后
cd /
umount -R /mnt

输入 exit 或按 Ctrl+d 退出 chroot 环境。

可选用 umount -R /mnt 手动卸载被挂载的分区:

这有助于发现任何“繁忙”的分区,并通过 fuser 查找原因。

重启使用新系统:

通过执行 reboot 重启系统,systemd 将自动卸载仍然挂载的任何分区。

不要忘记移除安装介质,使用 root 帐户或创建的新账户登录到新系统。


参考文献:

  • D.3. 通过 Unix/Linux 系统来安装 Debian GNU/Linux

  • 安装指南 - Arch Linux 中文维基

  • Gentoo Linux 安装及使用指南 - bitbili.net

  • 通过debootstrap安装debian系统笔记

你可能感兴趣的:(debian,linux,unix,gnu)