通过debootstrap安装debian系统笔记

准备安装镜像:debian-live-10.9.0-amd64-standard.iso 945M

需要额外安装的软件包有

linux-image-amd64
systemd
systemd-coredump
dnsmasq
htop
grub-efi-amd64
makedev
locales
vim
openssh-server
sudo
bash-completion

前期先制作启动盘,对于支持UEFI启动的PC,直接把iso内容解压到一个fat32格式的U盘根目录即可(保证U盘根目录下有个EFI文件夹),或者使用制作工具把iso制作成u盘启动盘

前期准备

1、启动进入临时的debian系统

启动菜单后,进入standard镜像的一个live系统,它是一个没有GUI的临时维护系统,拥有debian的基础软件。启动后选择

Debian GNU/Linux Live(kernel xxxxx)

启动系统后,进入系统,切换root用户

sudo su

2、确认网络状态

debian的live镜像使用ifupdown包的networking.service管理网络,在DHCP下的路由下自动分配IP比较容易管理,启动系统后直接就可以通过DHCP获取到IP,如果特殊情况下没有网,或者需要手动管理,我们使用systemd-networkd.service 代替networking.service管理网络,以下为设置参考:

先查看网卡和MAC地址

root@debian:~# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:15:5d:1f:1b:27 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::215:5dff:fe1f:1b27/64 scope link
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:15:5d:1f:1b:29 brd ff:ff:ff:ff:ff:ff
    inet 192.168.33.182/24 brd 192.168.33.255 scope global dynamic eth1
       valid_lft 35935sec preferred_lft 35935sec
    inet6 fe80::215:5dff:fe1f:1b29/64 scope link
       valid_lft forever preferred_lft forever

此处找到有2个网卡(2和3)eht0、eth1,mac地址为00:15:5d:1f:1b:2700:15:5d:1f:1b:29

新建一个systemd网络管理的模板/etc/systemd/network/01-lan.network,通过MAC地址匹配,这是DHCP分配IP的模板,一个网卡一个配置文件。

[Match]
MACAddress=00:15:5d:1f:1b:27

[Network]
DHCP=yes

如果是静态IP则需要指定IP、网关、DNS,

[Match]
MACAddress=00:15:5d:1f:1b:27

[Network]
Address=192.168.1.2/3
Gateway=192.168.1.1
DNS=223.5.5.5

保存后,启动systemd-networkd服务

systemctl start systemd-networkd

查看网络管理服务状态

root@debian:~# systemctl status systemd-networkd
● systemd-networkd.service - Network Service
   Loaded: loaded (/lib/systemd/system/systemd-networkd.service; disabled; vendor preset: enabled)
   Active: active (running) since Thu 2021-05-20 14:10:53 UTC; 9min ago
     Docs: man:systemd-networkd.service(8)
 Main PID: 2928 (systemd-network)
   Status: "Processing requests..."
    Tasks: 1 (limit: 4681)
   Memory: 4.3M
   CGroup: /system.slice/systemd-networkd.service
           └─2928 /lib/systemd/systemd-networkd

systemd-networkd状态正常,通过networkctl查看网络状态

root@debian:~# networkctl
IDX LINK             TYPE               OPERATIONAL SETUP
  1 lo               loopback           carrier     unmanaged
  2 eth0             ether              degraded    configuring
  3 eth1             ether              routable    configured

绿色的routable、说明链路正常,此处用eth1上网。多个网卡上网优先级,使用Metric= 设定跃点值,跃点值越低,优先级越高。

3、更换软件换源

使用nano编辑/etc/apt/sources.list

sudo nano  /etc/apt/sources.list

替换成清华源的

deb http://mirrors.tuna.tsinghua.edu.cn/debian/ buster main contrib non-free

ctrl+o 保存文件,ctrl+x 退出nano,更新索引

sudo apt update

4、安装装系统时需要的软件

debootstrap

sudo apt install debootstrap dosfstools

dosfstools 用于格式化vfat格式分区(EFI分区)

debootstrap 用于安装新系统

5、使用fdisk对硬盘进行分区与格式化

**格式化硬盘前应该备份数据****

确定硬盘

root@debian:/mnt# lsblk
NAME  MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
loop0   7:0    0 611.2M  1 loop /usr/lib/live/mount/rootfs/filesystem.squashfs
sda     8:0    0    50G  0 disk
sr0    11:0    1   945M  0 rom  /usr/lib/live/mount/medium

发现sda硬盘就是需要装系统的硬盘

root@debian:/mnt# sudo fdisk /dev/sda

Welcome to fdisk (util-linux 2.33.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help):

进入fdisk命令行界面。按m键回车获得命令行提示,先创建GPT分区表

Command (m for help): g
Created a new GPT disklabel (GUID: D53ADE4F-6160-824F-B517-15DC2D513E3E).

创建一个300M的主分区

Command (m for help): n
Partition number (1-128, default 1):
First sector (2048-104857566, default 2048):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-104857566, default 104857566): +300M

Created a new partition 1 of type 'Linux filesystem' and of size 300 MiB.
Partition #1 contains a vfat signature.

Do you want to remove the signature? [Y]es/[N]o: Y

The signature will be removed by a write command.

Command (m for help): t
Selected partition 1
Partition type (type L to list all types): 1
Changed type of partition 'Linux filesystem' to 'EFI System'.
  • n命令创建主分区
  • 选择分区编号,默认为1,直接回车
  • 选择分区起始扇区,默认为2048,直接回车
  • 选择分区的结束扇区,用+/-可以通过大小来设定,+300M,创建一个300M的分区
  • 由于此前已经创建了一个EFI分区,移除signature
  • t命令更改分区标识,输入1,回车,更改成EFI类型

剩余的空间创建linux根目录的分区

Command (m for help): n
Partition number (2-128, default 2):
First sector (616448-104857566, default 616448):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (616448-104857566, default 104857566):

Created a new partition 2 of type 'Linux filesystem' and of size 49.7 GiB.
Partition #2 contains a ext4 signature.

Do you want to remove the signature? [Y]es/[N]o: Y

The signature will be removed by a write command.

Command (m for help):
  • n命令创建主分区,回车
  • 选择分区编号,第二个分区默认为2,直接回车
  • 选择分区的起始扇区和结束扇区,直接回车即可
  • 由于此前已经创建了一个EFI分区,移除signature
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

w命令真正写入分区表后退出fdisk,查看已有的硬盘,针对硬盘/dev/sda分区,

root@debian:/mnt# fdisk -l /dev/sda
Disk /dev/sda: 50 GiB, 53687091200 bytes, 104857600 sectors
Disk model: Virtual Disk
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: D53ADE4F-6160-824F-B517-15DC2D513E3E

Device      Start       End   Sectors  Size Type
/dev/sda1    2048    616447    614400  300M EFI System
/dev/sda2  616448 104857566 104241119 49.7G Linux filesystem

格式化分区

root@debian:/mnt# mkfs.vfat /dev/sda1
root@debian:/mnt# mkfs.ext4 /dev/sda2

6、挂载分区

在/mnt下创建挂载点,root文件夹为根目录的挂载点

 mkdir /mnt/root

挂载

sudo mount -t ext4 -o defaults,rw /dev/sda2 /mnt/root/

7、使用debootstrap下载基本系统并释放文件

使用debootstrap工具构建一个基础的debian系统。镜像选择清华源。官网参考用法

debootstrap 版本名 ./释放目录 镜像网址
debootstrap wheezy ./wheezy-chroot http://http.debian.net/debian/

以buster为例

debootstrap --arch=amd64 buster /mnt/root https://mirrors.tuna.tsinghua.edu.cn/debian/

因为需要安装一些软件包,所以包含进去,最终这样的

debootstrap --arch=amd64 --include=linux-image-amd64,systemd,systemd-coredump,grub-efi-amd64,makedev,locales,vim,openssh-server,man,sudo,bash-completion buster /mnt/root https://mirrors.tuna.tsinghua.edu.cn/debian/

如果速度太慢,也可以用网易云的,如下:

debootstrap --arch=amd64 --include=linux-image-amd64,systemd,systemd-coredump,grub-efi-amd64,makedev,locales,vim,openssh-server,sudo,bash-completion buster /mnt/root http://mirrors.163.com/debian/

debootstrap执行成功后提示,这个下载过程可能很漫长。

I: Base system installed successfully.

创建EFI挂载点,并挂载

root@debian:/mnt/root# mkdir /mnt/root/boot/EFI
root@debian:/mnt/root# mount -t vfat -o defaults,rw /dev/sda1 /mnt/root/boot/EFI/

8、编辑文件系统挂载配置

查看分区的ID

root@debian:/mnt/root# blkid
/dev/sr0: UUID="2021-03-27-14-49-37-00" LABEL="d-live 10.9.0 st amd64" TYPE="iso9660" PTUUID="30d6eb01" PTTYPE="dos"
/dev/loop0: TYPE="squashfs"
/dev/sda1: SEC_TYPE="msdos" UUID="7D8E-ABEB" TYPE="vfat" PARTUUID="52089f8b-ee5d-5e4d-ae74-3249d10cc478"
/dev/sda2: UUID="1a909d07-88bb-4419-8e53-9640287111dd" TYPE="ext4" PARTUUID="a715432e-436a-6e45-ac60-eab59f2dff26"

创建fstab,注意替换UUID

root@debian:/mnt/root# vim /mnt/root/etc/fstab

/etc/fstab内容如下:#开头的为注释,为后续添加挂载点方便,还是添加一个格式注释。

# UNCONFIGURED FSTAB FOR BASE SYSTEM
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
UUID=1a909d07-88bb-4419-8e53-9640287111dd /               ext4    errors=remount-ro 0       1
UUID=7D8E-ABEB  /boot/efi       vfat    umask=0077      0       1

修改系统源添加contrib和non-free分支

nano /mnt/root/etc/apt/sources.list

内容为

deb https://mirrors.tuna.tsinghua.edu.cn/debian buster main contrib non-free

9、chroot到新系统根目录

chroot前先挂载特殊的文件系统/proc /dev /sys等

mount -t proc proc /mnt/root/proc
mount -t sysfs sysfs /mnt/root/sys

设置locales

root@debian:~#  dpkg-reconfigure locales

选择语言为en_US.UTF-8,切换根目录,更新软件索引

root@debian:/mnt/root# chroot /mnt/root/
root@debian:~# apt updateapt update

更新dev

cd /dev
MAKEDEV sda

10、安装BootLoader

将grub安装到EFI分区

grub-install -v  --efi-directory=/boot/EFI  --boot-directory=/boot --no-uefi-secure-boot --target=x86_64-efi

安装成功后提示

Installation finished. No error reported.

编辑grub配置文件。

nano vim /etc/default/grub

修改grub参数,注意root分区的UUID和新分区的uuid相同

GRUB_CMDLINE_LINUX_DEFAULT="vga root=UUID=\"1a909d07-88bb-4419-8e53-9640287111dd\" init=/usr/bin/systemd ro vga vt"

更新grub配置,更新initramfs

update-initramfs -u
update-grub

11、对新系统进行设置

临时更改root用户密码

passwd root

新系统因为没有配置网络,是没有网卡的配置,此处换回systemd-networkd

复制之前network配置文件到新系统的etc/systemd/network

修改允许root登陆ssh

root@debian:/etc/ssh# vim /etc/ssh/sshd_config

修改内容

PermitRootLogin yes

12、卸载文件系统、关闭临时系统

# chroot退出前
sync
sync
sync
cd /
umount /proc
umount /sys
umount /boot/efi
exit
# 退出后
cd /
umount /mnt/root
systemctl poweroff

13、启动新系统及配置

启动后登陆系统root用户。

由于新系统中没有使用ifupdownnetworking.service 管理网络,使用systemd-networkd,参考临时系统配置网络的方法,/etc/systemd/network/01-lan.network内容:

[Match]
MACAddress=00:15:5d:1f:1b:27

[Network]
DHCP=yes

处理系统服务

systemctl enable systemd-networkd ssh systemd-resolvd
systemctl start systemd-networkd

通过networkctl确认网络状态。

root@debian:~# networkctl status
●        State: routable
       Address: 192.168.33.183 on eth0
                fe80::215:5dff:fe1f:1b2a on eth0
       Gateway: 192.168.33.1 (Shenzhen Winyao Electronic Limited) on eth0
           DNS: 192.168.33.1
           NTP: 203.107.6.88

可以尝试ping一个网址检测网络连通

root@debian:~# ping www.baidu.com
PING www.a.shifen.com (14.215.177.39) 56(84) bytes of data.
64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=1 ttl=55 time=8.68 ms
64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=2 ttl=55 time=9.53 ms

到此,不带桌面环境的debian安装完毕,一般通过ssh登录操作。

14、安装桌面环境

安装桌面环境和显示管理器完成整个桌面安装,包比较多。

apt install cinnamon lightdm

启动显示管理器后通过登录以启动桌面

systemctl start lightdm

参考文献

deboostrap wiki

通过Unix/Linux系统安装debian wiki

systemd 中文手册 (译者金步国)

systemd.network 中文手册

systemctl 中文手册

networkctl 中文手册

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,454评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,553评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,921评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,648评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,770评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,950评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,090评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,817评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,275评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,592评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,724评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,409评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,052评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,815评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,043评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,503评论 2 361
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,627评论 2 350

推荐阅读更多精彩内容