linux 启蒙——安装

[复制链接]
694|1
手机看帖
扫描二维码
随时随地手机跟帖
lindoug|  楼主 | 2020-6-12 10:30 | 显示全部楼层 |阅读模式
linux, AC, sd, ev, rc
先创建一个 VirtualBox 虚拟机。打开 VirtualBox,点击“新建”图标,填入虚拟机名称并选择 ArchLinux,
v2-e785ba9120e89bfcb3be19af2c2bcccd_720w.jpg
然后点“下一步”,选择内存。因为是学习,内存不必太大,但不能少于 512M 。
v2-ccaf37c6ea0cb2144eb011284ac36f90_720w.jpg
再点“下一步”,开始创建虚拟硬盘。
v2-1b3497c6234ae00c6605153eb29f020d_720w.jpg
点创建,磁盘类型选默认的 VDI 就行了。
v2-17645c441b5da0fb7302ab374f51ac64_720w.jpg
点下一步,选动态分配,
v2-316f3d24784a56c9a05238876056b891_720w.jpg
最后认置硬盘大小,选 8G 就行。
v2-0c0367748fbeaed2c61407f1c99de03e_720w.jpg
虚拟机创建成功后长这个样子:
v2-5a49c037e90905be4a51a75230e8c9e9_720w.jpg
在开始安装之前我们需要调一下虚拟机的网络配置。选中虚拟机,点“设置”图标,切换到“网络”标签,将网卡连接方式改成“桥接网卡”,
v2-dcf9b4397199a1d9ecb7d9dcfd906ae4_720w.jpg
这里简单介绍一下 VirtualBox 虚拟网卡的连接方式,主要有三种:
  • NAT
  • Host-Only 网络
  • 桥接网络
NAT 是默认的连接方式。在此模式下,宿主电脑会充当虚拟机的路由器,会给虚拟机分配 IP,并做为虚拟机转发网络数据。使用此种方式最为简单。但是你没法在宿主电脑上直接通过网络访问虚拟机。与之对应的则是 Host-Only 网络。在 Host-Only 下,宿主机和虚拟机可以相互通信,但是宿主机不会通过这类网络为虚拟机转发网络数据。
我最喜欢的方式就是为虚拟机分配两一个网卡,一个设成 NAT 用来上外网,一个认成 Host-Only 用来跟宿主机相互通信,这种配置兼容性最好,但配置有点繁琐。
桥接网络则是最好的一种连接方式。在此种模式下,虚拟机和宿主机是平级的,虚拟机会利用宿主机的网卡直接跟外界通信,虚拟机跟宿主机处于同一个网段。这是配置最简单、使用最方便的网络模式。只是,并不是所有的电脑网卡都直持桥接。大家可以跟据自己的情况选择合式的网络模式。

好了,点击“启动”,选择我们下载好的 ISO 镜像,
v2-79bb7817d297088602cefaf03f229a6a_720w.jpg
我没有 Windows 认备。本想在 Mac 下装一个 Windows 虚拟机,再在虚拟的 Windows 中安装 VirtualBox 并演示安装 ArchLinux。可是Windows 虚拟机中的 ArchLinux 没法启动,我也没找到原因。所以接下来我将会在 Mac 下的 VirtualBox 上演示。系统启动后如下图所示
v2-4caa96d29c92612b621e4ae833ffea14_720w.jpg
选第一项 Boot Arch Linux,按回车,屏幕上会打印一系列神秘的字符,最终会进入如下状态:
v2-d59677d656392917adc0f7479dc9099f_720w.jpg
这是一个临时的 Linux 系统,我们不妨稳之为 archiso。archiso 是从 ISO 光盘镜像加载到内存的,是只读系系统。我们可以在 archiso 下将一个真正的 Linux 系统安装到虚拟机的硬盘上。
屏幕上光标一闪一闪的,是在等待你的指令。我们先输入 pwd 并按回车,屏幕会显示 /root。pwd 全称是 Present Working Directory。pwd 会打印我们当前所在的目录。这个 /root 目录是 root 专有的目录。大家先不必深究。为行文方便,下文统一将输入xxx并按回车表述为执行xxx。

要想安装 Linux,第一关就是理解 Linux 的文件系统。
Linux 和 UNIX 一样,有一套分层文件系统。系统的最顶层叫根目录,用 / 表示。每个目录下可以有多个子目录和文件,目录之间用 / 连接示路径。比如,/var/log/nginx.log 表示根目录下有个 var 目录,而 var 目录下又有一个 log 目录,最终的 log 目录下有一个 nginx.log 文件。Windows其实也类似,只是 Windows 下需要分成 C 盘、D 盘等不同的盘,Windows 下不同的目录用 \ 连接。
Linux 与 Windows 另一个不同的地方就是使用文件组织硬件设备。在 Linux 或 UNIX 下,硬件一般以文件的形式出现。比如,我们给虚拟机创建的硬盘对应的就是 /dev/sda。sd 全称是 SCSI Hard-disk,a 表示第一块硬盘。如果你有第二块,内核会创建对应的 /dev/sdb 文件。
既然是文件,那我们可不可以往这个 /dev/sda 里写内容呢?其实是可以的,虽然我们很少会这么做。你可以执行以下命令:
echo "hello arch linux" > /dev/sda
这个命令对初学者来说有点复杂了。首先,echo “hello arch linux" 是让系统在屏幕打印 hello arch linux 这三个单词。后面的大于号是告诉系统将要显示的内容写到别的地方,而大于号之后的 /dev/sda 则表示要写入的目的地。连在一起就是将 hello arch linux 三个单词写入 /dev/sda 文件,这是个硬盘。这里用到的大于号学名叫IO重定向。我们后面还会讲,不必在此纠结。
这个时候你可以执行 reboot 重启虚拟机,再执行 head -n 1 /dev/sda,屏幕会显示 hello arch linux。显然是磁盘 /dev/sda 记住了我们的改动。/dev/sda 的容量有 8G。把它当成一个大文件在某些场景下是有用的(如数据据库),但对于普通用户而言这种做法就没多大的意义了。毕竟我们还是要在硬盘上创建文件夹和保存文件的。为此我们需要对磁盘进行分区。
对硬盘分区,实质上就是向硬盘的特定位置写入一些数据,这些数据记录了当前硬盘上有那些分区,每个分区的起始位置。不同的系统有不同的记录方式。最常见的就是 MBR,全称 Master Boot Record。硬盘用扇区(sector)来读写数扰,一般每个扇区 512 字节。扇区从零开始编号。其中每零号扇区存放着引导程序和分区表。MBR 的分区表只有 64 字节,每条记录占 16 字节。所以 MBR 最多支持 4 个分区。4 个看起来有点少呀。所以 MBR 引入了所谓的扩展分区(extended),没有扩展的就叫主分区(primary)。大家先记住这个概念就好。以后我会专门写**讨论这个问题。
网上有些教程要大家分成 swap、/boot、/ 和 /home 四个分区:
  • swap 是所谓的交换分区,说白了就是虚拟内存。操作系统在内存不足的情况下会将部分内存数据转移到 swap 分区上。因为我们只是日常学习,可以不设这个分区。如果以后直得需要 swap(比如要编译 Android 这类大型项目),也以使用一个文件代替。
  • /boot 独立分区是因为引导程序加载系统内核文件的时候只能从硬盘的前 2TiB 范围读取。如果硬盘很大,内核文件在 2TiB 之后,就无法启动。而我们用的是 8G 虚以硬盘,完全不用考虑这个问题。
  • / 类似于 Windows 的 c 盘,不必多说。
  • /home 是 Linux/Unix 专有的目录,每创建一个系统用户都会在此目录下创建对应文件夹。用户自己的文件都存放在这里。独立分区是为了重装系统能保留用户数据。因为是学习使用,我们不会在此目录下保存关键内容,所以也不需要这个分区。
综上所述,一个 / 分区(根分区)足矣。
MBR 分区使用 fdisk 工具。大家执行 fdisk /dev/sda,会进入交互式分区界面。输入 m 按回车会显示帮助菜单。输入 o 按回车初始化 MBR 分区表。再输入 n 然后一路按回车就完成分区操作了。MBR 分区是从 2048 号扇区开始的。因为只需一个分区,所以选主分区。最后,输入 w 按回车,保存并退出。
这个时候 /dev 目录下会多出一个 /dev/sda1 的文件。这就是我们为硬盘加的分区。注意后面的 1。如果分成两个分区,则还会出现 /dev/sda1。/dev/sda1比原来的 /dev/sda1也好不了哪去,我们还是不能像在 Windows 下哪样创建文件和文件夹。
为了达到我们目的,我们还需要对分区进行格式化。格式化其实跟分区操作有点类似,也是在分区的特定位置保存一些数据,用于记录分区中保存为哪些文件和文件夹以及它们的对应关系。不同的记录方式有不同的名字,Linux 下比较流行的就是 ext4 了。格式化操作也很简单,执行 mkfs.ext4 /dev/sda1 即可。注意,这里的参数是 /dev/sda1,后面带数字表示分区。到此我们的根分区就准备好了。Finally!
那我们现在可以在 /dev/sda1分区创建文件了吗?对不起,还不行。对于 Linux 则还需要另外一个步骤挂载(mount)。无论 /dev/sda 还是 /dev/sda1 都对应的是原始磁盘和原始分区。如果我们直接向里面写数据就会破坏分区和格式化信息。如果我们想在 /dev/sda1 创建文件,我们还需要将其挂载到一个文件夹。传统上在安装阶段,根分区是挂载到 /mnt 目录的。我们执行 mount /dev/sda1 /mnt。到这个时候,我们在 /mnt 目录创建的任何文件和文件夹都会保存到 /dev/sda1 中。
挂载是 Linux/Unix 同 Windows 最大的区别之一。因为 Windows 没有类似的概念,所以也最不容易理解。
终于完成了分区,休息一下。我们接下来就要能过网络将 ArchLinux 安装到新格式化的根分区了。archiso 为我们自动配置好了网络,一般是可以直接上网的。

在开始之前,我需要简单说一下 pacman 工具。pacman 是 ArchLinux 的包管理工具。ArchLinux 的维护人员会将内核跟各种开源软件编译后打成 pacman 安装包放到官方服务器。用户可以使用 pacman 通过 http 协议下载所需的软件包。因为官方服务器网络代宽不够或者网络延迟较大,一般不同的地区会有很多镜像服务器。国内著名的有阿里云镜像,中科大镜像等。我们以阿里云为例解。执行以下命令:
echo 'Server = http://mirrors.aliyun.com/archlinux/$repo/os/$arch' > /etc/pacman.d/mirrorlist
这里一定要使用单引号。这一步的目的是告诉 pacman 从阿里云的服务器下载软件。然后执行 pacstrap /mnt base。屏幕会不断闪现下载进度条。pacstrap 是 archiso 提供的安装专用工具,安装好的 archlinux 系统是没有这个命令的。pacstrap 的第一个参数是目标文件夹也就是我们的根目录路径,第二个参数是要下载的软件包。这里的 base 是个虚拟包,包含 ArchLinux 的内核与基础软件包。
用不了几钟,安装过程就结束了。这个时候我们又执行一个神操作,arch-chroot /mnt。初学者要理解这个命几乎是不可能的。执行这个命令会让我们切换到一个临时的 shell 环境,这个 shell 的根目录就是我们的 /dev/sda1 分区。执行 arch-chroot 可以认为是启动了刚才安装的 ArchLinux 系统,虽然我们并没有重启。这个时候我们做的所有操作都会保存到我们的根分区。
然后,我们需要安装 grub。执行 pacman -S grub。grub 著名的 Linux 引导程序,用来启动 Linux 系统。具体的启动过程我会再写**说明。这里我只说安装方法。
grub 装好之后我们需将 grub 引导程序安装到 /dev/sda 上。还记得我们前面说的 MBR 分区吗。MBR 第 0 号扇区是引导扇区,里面记录分区表和引导程序。一个扇区只有 512 字节,分区表点用了 64 字节,校验位有两字节,还剩 446 字节。对于现在的引导程序而言,446 字节太少了。MBR 分区表的第一个分区是从 2048 扇区开始的,所以第 1 号到第 2047 扇区是保留的。所以 grub 将引导程序分成两部分,一部分部分写入第 0 号扇区,叫 stage1,另一部分写入第 1 号到 2048 号之间的扇区,称之为 stage2。电脑启动的时候先加载并执行stage1,这个程序会再次另载并执行 stage2,stage2会从磁盘加载并执行 Linux 内核。我们现在要做的就是把 stage1和stage2写入硬盘。这个过程需要执行 grub-install /dev/sda。注意,就里的参数是硬盘,而不是分区。
将 grub 装到引导分区之后,我们还需完成最后一个步骤——生成 grub 配置。这个过程也是自动的,执行 grub-mkconfig -o /boot/grub/grub.cfg 即可。好了,到此安装工作就大功告成。执行 exit 退出 arch-chroot 环境,再执行 poweroff 关闭虚拟机。然后移除 iso 镜像:
v2-98f090974b8b6ef70b68b3f54c7a36e9_720w.jpg
然后就可以启动我们刚刚安装好的 ArchLinux 了。不一会就会显示登录窗口,输入 root 按回车即可登录,初始安装没有密码。

使用特权

评论回复

相关帖子

Margon| | 2020-10-22 22:17 | 显示全部楼层
特别麻烦

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

468

主题

472

帖子

17

粉丝