一、背景
之前已经写过两篇在移动硬盘/U盘中安装Debian系统的帖子,详见:
Debian 12移动硬盘安装完全指南https://blog.csdn.net/Asgard_Hu/article/details/131221474移动硬盘制作随身Debian(GPT+UEFI)https://blog.csdn.net/Asgard_Hu/article/details/131700377
上面两篇帖子已经实现了移动硬盘中安装一个随身系统,走哪儿插哪儿,是不是很方便!我真是太有才了!但是发现没有,移动硬盘的性能跟PC的硬盘性能还是有差距,所以有时候就很想:给电脑也装个系统!!!但是还要刻盘(刻U盘启动盘也是刻盘)很麻烦,所以一直就拖着没装!!!所以这篇帖子也就一直没出!!!所以,你们想吐槽也没有机会!
好吧,上面的连锁反应归根结底就两个字:懒~
二、目标
今天要说的目标有三:
目标一:在线方式实现单分区安装Debian(网络安装,整块硬盘安装Debian)
目标二:在线方式实现多分区安装Debian(网络安装,指定分区安装Debian)
【这不可以扩展成双系统么,具体自行研究~】
目标三:离线方式实现多分区安装Debian(无网络安装,满足无网络用户需求)
注:以上目标实现均从U盘Debian中开始,所以,没装U盘Debian系统的赶紧先装起来~体验很重要
(估计已经有人想说:“我干嘛不直接刻个启动盘直接装,干嘛还要脱裤子放P”。我想说的是:你说的对,但是作为技术宅,折腾一下不也减肥嘛!况且我把移动硬盘利用起来做个随身系统,这是优势,再买个U盘专门刻盘,这不又得消费20?enmmm~~又有写下去的新理由了!)
三、准备工具
1.随身Debian系统 × 1
2.记得给随身系统里下载一个Debian镜像
3.给随身系统里下载一个工具:debootstrap(后面有介绍)
准备开干 ~~
四、在线单分区安装Debian
1.目标硬盘分区
1)将U盘插入目标机,并进入随身Debian系统,切换到root用户(拿到最高权限安装,避免出错)
su - root
2)查看所有硬盘情况
lsblk
确认哪一块是要操作的目标硬盘(这很重要,千万别搞错了),本案例中U盘系统硬盘被识别为sda,目标硬盘为sdb
3)打开fdisk加载硬盘,并创建分区
fdisk /dev/sdb
# n:用于创建新分区
Command(m for help):n
# p:用于设置主分区
select(default p):回车
# w:用于将更改写入磁盘并退出fdisk
Command(m for help):w
注意:这里是给目标盘sdb创建分区,创建分区会删除以前的分区表哦,注意提前备份好数据
4)再次打开fdisk激活分区
fdisk /dev/sdb
# a:用于标记分区为活动状态
Command(m for help):a
# w:用于将更改写入磁盘并退出fdisk
Command(m for help):w
未保存分区表前直接使用a命令激活分区也行,但是可能会导致不确定行为,因此二次进入再激活分区,保险点
5)查看sdb磁盘的分区情况
fdisk -l /dev/sdb
可以看到已经创建了sdb1分区,这就是我们要安装的系统分区
6)格式化sdb1分区
mkfs.ext4 /dev/sdb1
7)查看硬盘情况
lsblk
此时sda硬盘存在sda1分区、sdb硬盘存在sdb1分区
8)挂载第二块硬盘的主分区到mnt文件夹上
mount /dev/sdb1 /mnt
这里是将刚才创建的分区(目标硬盘的目标分区)挂载到我们U盘的/mnt文件夹上,方便给里面写数据(写系统进去),所以注意别挂错了
9)再次查看硬盘挂载情况
lsblk
确认第二块硬盘分区已挂载成功
2.安装系统到目标分区
1)安装系统部署工具(已安装了就可以跳过)
apt install debootstrap
如果已经安装过的就可以跳过这步,没必要反复安装。软件说明如下:
详情可查看官网:Debootstrap说明
2)安装系统到目标分区
debootstrap stable /mnt http://mirrors.qvq.net.cn/debian
这里就是连接软件仓库服务器下载并解压一个系统到目标硬盘分区,相关参数说明:
stable:指稳定版
/mnt:指安装路径(目标硬盘分区)
后面站点是一个镜像仓库,你也可以根据自己的网络特点自己选择仓库,如官方地址:
http://http.debian.net/debian/
执行这步时应该可以看到有很多软件被下载
3)编辑fstab文件
手动编辑fstab挂载文件,写入硬盘挂载信息(就是让电脑能识别到目标硬盘)
# 生成UUID(记录一下该UUID)
blkid /dev/sdb1
# 编辑fstab文件
vi /mnt/etc/fstab
# 添加刚才记录的UUID信息到/mnt/etc/fstab中(xxxx-xxxx-xxxx-xxxx为要替换的UUID信息,要对应填写并且没有多余字符)
UUID=xxxx-xxxx-xxxx-xxxx / ext4 defaults 0 1
# 查看fstab文件(确认信息已写入)
cat /mnt/etc/fstab
# 测试所有挂载点可以正确挂载
mount -a
这里有两步很重要,第一步一定要生成sdb1硬盘分区对应的UUID;第二步替换相应的UUID,写完后保存;我个人习惯性再查看确认一下写入信息是否正确
3.更新目标系统引导
1)切换到chroot环境
chroot /mnt
进入新安装的系统根目录,以便在其中运行命令,如同从该系统本身启动一样
2)编辑更新源
vi /etc/apt/sources.list
# 添加源信息
deb http://mirrors.qvq.net.cn/debian stable main contrib non-free non-free-firmware
这里添加了主要仓库和非开源仓库(有些硬件驱动没有开源,需从非开源仓库下载)
3)更新系统引导
# 更新系统源缓存
apt update
# 安装系统内核和其他软件包
apt install linux-image-amd64 grub2 tasksel neofetch aptitude -y
# 安装系统引导
grub-install /dev/sdb
# 查看系统引导文件(确保引导文件安装成功,此时处于未配置状态,需更新引导)
ls /boot/grub/g*
# 更新引导
update-grub
# 查看系统引导文件(确保引导文件更新成功)
ls /boot/grub/g*
4.配置目标系统
1)安装桌面(可选)
tasksel
这里是图形化选择安装,根据个人喜好选择相应桌面,我个人喜欢KDE桌面,因此选择“桌面服务”+“KDE desktop environment”即可
若不想要桌面也可以跳过不装
2)设置用户
# 设置系统密码(设置Root用户密码)
passwd
# 添加新用户(会提示设置新用户密码)
adduser xxx
5.收尾工作
# 退出chroot环境
exit
# 卸载目标硬盘
umount -R /mnt
# 确保所有数据都写入了硬盘
sync
# 重启系统
reboot
安装完成,退出chroot环境并重启系统看效果。
以上就是给第二块硬盘安装一个完整Debian的全过程,是不是很简单!
接下来我们继续实现多分区目标,其实多分区方案就是分区多点,安装引导时注意一点,大多数步骤可以参考上文。
五、在线多分区安装Debian
1.目标硬盘分区
1)将U盘插入目标机,并进入随身Debian系统,切换到root用户(拿到最高权限安装,避免出错)
su - root
2)查看所有硬盘情况
lsblk
确认哪一块是要操作的目标硬盘(这很重要,千万别搞错了),本案例中U盘系统硬盘被识别为sda,目标硬盘为sdb
3)目标硬盘分区
# 打开fdisk加载硬盘,并创建EFI分区(建议大小为512M,用于存储引导加载程序文件)
fdisk /dev/sdb
# n:用于创建新分区
Command(m for help):n
# p:用于设置主分区(EFI分区)
select(default p):回车
# 第一个扇区默认,最后一个扇区输入+512M以创建512MB的EFI分区
First sector (default): 回车
Last sector: +512M
# t:更改分区类型为EFI系统 (代码为 ef00)
Command(m for help):t
# 分区号:1
Partition number: 1
Hex code or GUID (type L to list all): ef00
# w:用于将更改写入磁盘并退出fdisk
Command(m for help):w
# 打开fdisk加载硬盘,并创建SWAP分区(建议大小为RAM大小的1-2倍,若有足够RAM,也可以设置为512M或1G,虚拟内存分区)
fdisk /dev/sdb
# n:用于创建新分区
Command(m for help):n
# p:用于设置主分区(SWAP分区)
select(default p):回车
# 第一个扇区默认,最后一个扇区输入+2G以创建2GB的SWAP分区(根据需要调整大小)
First sector (default): 回车
Last sector: +2G
# t:更改分区类型为Linux swap (代码为 82 或 8200)
Command(m for help):t
# 分区号:2
Partition number: 2
Hex code or GUID (type L to list all): 82
# w:用于将更改写入磁盘并退出fdisk
Command(m for help):w
# 打开fdisk加载硬盘,并创建根分区(使用剩余所有空间)
fdisk /dev/sdb
# n:用于创建新分区
Command(m for help):n
# p:用于设置主分区(根分区)
select(default p):回车
# 接受所有默认值以使用剩余空间创建根分区
First sector (default): 回车
Last sector: 回车
# a:标记根分区为活动状态
Command(m for help):a
# 分区号:3
Partition number: 3
# w:保存并退出
Command(m for help):w
# 查看sdb磁盘的分区情况(可以看到创建了sdb1、sdb2、sdb3分区)
fdisk -l /dev/sdb
# 格式化分区
# 格式化EFI分区为FAT32
mkfs.vfat -F32 /dev/sdb1
# 设置SWAP分区
mkswap /dev/sdb2
# 格式化根分区为ext4
mkfs.ext4 /dev/sdb3
# 查看硬盘情况(此时sda硬盘存在sda1分区、sdb硬盘存在sdb1、sdb2、sdb3分区)
lsblk
上面创建了三个分区,分别用于EFI、系统分区、交换分区,当然,你也可以根据个人喜好增加更多分区,用于管理不同的文件结构。
注意:分区时一定要小心,别分错区、选错分区格式
4)挂载硬盘分区
# 挂载第二块硬盘的主分区到/mnt文件夹上
mount /dev/sdb3 /mnt
# 挂载EFI引导分区到/mnt/boot/efi文件夹上
mkdir -p /mnt/boot/efi
mount /dev/sdb1 /mnt/boot/efi
# 启用SWAP分区
swapon /dev/sdb2
# 查看硬盘挂载情况(确认第二块硬盘所有分区已挂载成功)
lsblk
2.安装系统到目标分区
1)安装系统部署工具(已安装了就可以跳过)
apt install debootstrap
2)安装系统到目标分区
debootstrap stable /mnt http://mirrors.qvq.net.cn/debian
3)手动编辑fstab文件
# 手动编辑fstab文件
# 生成UUID(记录一下生成的UUID,对应记下来)
blkid /dev/sdb1
blkid /dev/sdb2
blkid /dev/sdb3
# 编辑fstab文件
vi /mnt/etc/fstab
# 添加刚才记录的UUID信息到/mnt/etc/fstab中(xxxx-xxxx-xxxx-xxxx为要替换的UUID信息,要对应填写并且没有多余字符)
UUID=xxxx-xxxx-xxxx-xxxx / ext4 defaults 0 1
UUID=xxxx-xxxx-xxxx-xxxx /boot/efi vfat umask=0077 0 2
UUID=xxxx-xxxx-xxxx-xxxx none swap sw 0 0
# 查看fstab文件(确认信息已写入)
cat /mnt/etc/fstab
# 测试所有挂载点可以正确挂载
mount -a
3.更新目标系统引导
1)切换到chroot环境
chroot /mnt
进入新安装的系统根目录,以便在其中运行命令,如同从该系统本身启动一样
2)编辑更新源
vi /etc/apt/sources.list
# 添加源信息
deb http://mirrors.qvq.net.cn/debian stable main contrib non-free non-free-firmware
这里添加了主要仓库和非开源仓库(有些硬件驱动没有开源,需从非开源仓库下载)
3)更新系统引导
# 更新系统
apt update
# 安装系统内核和其他软件包
apt install linux-image-amd64 grub2 tasksel neofetch aptitude -y
# 安装系统引导(一定要指向EFI分区所在的磁盘)
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=debian
# 查看系统引导文件(确保引导文件安装成功,此时处于未配置状态,需更新引导)
ls /boot/grub/g*
# 更新引导
update-grub
# 查看系统引导文件(确保引导文件更新成功)
ls /boot/grub/g*
此处注意安装引导时指定引导分区,这是与单分区安装的重要区别,设置错误会无法正常进入系统
4.配置目标系统
1)安装桌面(可选)
tasksel
这里是图形化选择安装,根据个人喜好选择相应桌面,我个人喜欢KDE桌面,因此选择“桌面服务”+“KDE desktop environment”即可
若不想要桌面也可以跳过不装
2)设置用户
# 设置系统密码(设置Root用户密码)
passwd
# 添加新用户(会提示设置新用户密码)
adduser xxx
5.收尾工作
# 退出chroot环境
exit
# 卸载目标硬盘
umount -R /mnt
# 确保所有数据都写入了硬盘
sync
# 重启系统
reboot
安装完成,退出chroot环境并重启系统看效果。
六、离线多分区安装Debian
对于没有网络的同学来说,上面两种解决方案就不可用了,所以我们在离线安装前要准备好Debian系统镜像文件,我放在U盘系统的/path/to/debian.iso路径下,现在开始安装:
1.目标硬盘分区并挂载分区
详情参考 5.1
# 切换root用户
su - root
# 查看硬盘情况(确认那一块是要操作的目标硬盘,此处本系统硬盘为sda,目标硬盘为sdb)
lsblk
# 打开fdisk加载硬盘,并创建EFI分区(建议大小为512M,用于存储引导加载程序文件)
fdisk /dev/sdb
# n:用于创建新分区
Command(m for help):n
# p:用于设置主分区(EFI分区)
select(default p):回车
# 第一个扇区默认,最后一个扇区输入+512M以创建512MB的EFI分区
First sector (default): 回车
Last sector: +512M
# t:更改分区类型为EFI系统 (代码为 ef00)
Command(m for help):t
# 分区号:1
Partition number: 1
Hex code or GUID (type L to list all): ef00
# w:用于将更改写入磁盘并退出fdisk
Command(m for help):w
# 打开fdisk加载硬盘,并创建SWAP分区(建议大小为RAM大小的1-2倍,若有足够RAM,也可以设置为512M或1G,虚拟内存分区)
fdisk /dev/sdb
# n:用于创建新分区
Command(m for help):n
# p:用于设置主分区(SWAP分区)
select(default p):回车
# 第一个扇区默认,最后一个扇区输入+2G以创建2GB的SWAP分区(根据需要调整大小)
First sector (default): 回车
Last sector: +2G
# t:更改分区类型为Linux swap (代码为 82 或 8200)
Command(m for help):t
# 分区号:2
Partition number: 2
Hex code or GUID (type L to list all): 82
# w:用于将更改写入磁盘并退出fdisk
Command(m for help):w
# 打开fdisk加载硬盘,并创建根分区(使用剩余所有空间)
fdisk /dev/sdb
# n:用于创建新分区
Command(m for help):n
# p:用于设置主分区(根分区)
select(default p):回车
# 接受所有默认值以使用剩余空间创建根分区
First sector (default): 回车
Last sector: 回车
# a:标记根分区为活动状态
Command(m for help):a
# 分区号:3
Partition number: 3
# w:保存并退出
Command(m for help):w
# 查看sdb磁盘的分区情况(可以看到创建了sdb1、sdb2、sdb3分区)
fdisk -l /dev/sdb
# 格式化分区
# 格式化EFI分区为FAT32
mkfs.vfat -F32 /dev/sdb1
# 设置SWAP分区
mkswap /dev/sdb2
# 格式化根分区为ext4
mkfs.ext4 /dev/sdb3
# 查看硬盘情况(此时sda硬盘存在sda1分区、sdb硬盘存在sdb1、sdb2、sdb3分区)
lsblk
# 挂载第二块硬盘的主分区到/mnt文件夹上
mount /dev/sdb3 /mnt
# 挂载EFI引导分区到/mnt/boot/efi文件夹上
mkdir -p /mnt/boot/efi
mount /dev/sdb1 /mnt/boot/efi
# 启用SWAP分区
swapon /dev/sdb2
# 查看硬盘挂载情况(确认第二块硬盘所有分区已挂载成功)
lsblk
2.安装系统到目标分区
1)安装系统部署工具(已安装了就可以跳过)
apt install debootstrap
2)挂载ISO镜像
# 创建挂载文件夹
mkdir -p /mnt/isomount
# 挂载镜像文件到挂载文件夹上(我的ISO文件位于/path/to/debian.iso)
mount -o loop /path/to/debian.iso /mnt/isomount
3)安装系统到目标分区
# 使用debootstrap下载并解压一个基本的Debian系统到挂载点/mnt中
debootstrap --arch=amd64 stable /mnt file:/mnt/isomount
此时的安装源是我们的镜像,不再是网络源
4)手动编辑fstab文件
# 手动编辑fstab文件
# 生成UUID(记录一下生成的UUID,对应记下来)
blkid /dev/sdb1
blkid /dev/sdb2
blkid /dev/sdb3
# 编辑fstab文件
vi /mnt/etc/fstab
# 添加刚才记录的UUID信息到/mnt/etc/fstab中(xxxx-xxxx-xxxx-xxxx为要替换的UUID信息,要对应填写并且没有多余字符)
UUID=xxxx-xxxx-xxxx-xxxx / ext4 defaults 0 1
UUID=xxxx-xxxx-xxxx-xxxx /boot/efi vfat umask=0077 0 2
UUID=xxxx-xxxx-xxxx-xxxx none swap sw 0 0
# 查看fstab文件(确认信息已写入)
cat /mnt/etc/fstab
# 测试所有挂载点可以正确挂载
mount -a
3.更新目标系统引导
详情参考 5.3
# 切换到chroot环境(进入新安装的系统根目录,以便在其中运行命令,如同从该系统本身启动一样)
chroot /mnt
# 编辑更新源
vi /etc/apt/sources.list
# 添加本地源信息并信任改源
deb [trusted=yes] file:/mnt/isomount ./
# 更新系统
apt update
# 安装系统内核和其他软件包
apt install linux-image-amd64 grub2 tasksel neofetch aptitude -y
# 安装系统引导(一定要指向EFI分区所在的磁盘)
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=debian
# 查看系统引导文件(确保引导文件安装成功,此时处于未配置状态,需更新引导)
ls /boot/grub/g*
# 更新引导
update-grub
# 查看系统引导文件(确保引导文件更新成功)
ls /boot/grub/g*
注意:上面我们编辑源的时候还使用镜像作为源,后面我们还要装桌面
4.配置目标系统
详细情况参考5.4
# 安装桌面(图形化选择安装,根据个人喜好选择相应桌面,我个人喜欢KDE桌面,因此选择桌面服务+KDE desktop environment即可)
tasksel
# 设置系统密码
passwd
# 添加新用户
adduser xxx
5.收尾工作
# 退出chroot环境
exit
# 卸载目标硬盘
umount -R /mnt
# 卸载ISO镜像
umount /mnt/isomount
# 确保所有数据都写入了硬盘
sync
# 重启系统
reboot
注意:这里多了一步卸载ISO镜像。
安装完成,退出chroot环境并重启系统看效果
以上,就是我们三个目标的实现详细步骤,系统对你有所帮助,祝你玩的愉快!