0%

记录在虚拟机安装最小化Ubuntu的过程

目前虽然在我的主机上已经安装了双系统Windows+Ubuntu,但是两个系统切换来切换去也比较麻烦。于是考虑在Window上装虚拟机的方案,不过以前虚拟机装Ubuntu 分配1GB内存应该是足够的,现在估计不行。另外用WSL2虽然性能上可以有所提升,但是除了避免不了内存占用大的通病外还不好管理,安装过程也不能够定制。于是这里尝试一种在虚拟机里安装精简版的Debian/Ubuntu(或者说手动制作一个WSL),实现极小的硬盘和内存占用。

基础环境

这里使用的是免费的虚拟机软件Virtualbox 6.1,为了节约安装的时间下载用的镜像是网络启动的最小镜像,后续所有的安装都需要联网(虽然需要下载,但是能够保证装完的系统不需要进行额外的更新),以下是可用一些安装镜像的方案

  • Ubuntu 18.08 LTS Minimal ISO 根据官方解释在18.04之后就不再提供最小安装ISO而用Ubuntu Server替代了
  • Ubuntu Server 这个是最新的服务器版本,实际上在安装选项里也可以选择最小安装,只不过它似乎最终安装出来硬盘占用比上面这个大
  • Ubuntu Cloud Image 一步到位的解决方案,直接下载VMDK镜像到虚拟机后直接启动,这也是WSL使用的Ubuntu镜像。不过需要插入Seed.iso镜像进行用户名和密码等的配置。

以下安装流程主要针对Minimal ISO的安装和Ubuntu Server版本的安装,Cloud Image的配置可以直接跳到最后系统配置一步。

安装流程

首先设置好虚拟机配置,典型的配置为硬盘10GB内存1GB。光驱选择上面下载的mini.iso,启动安装盘后在GRUB菜单选择Advanced options -> Expert install,进入如下所示菜单

后面安装将按照以下步骤选择菜单中的选项

  1. Choose language
    这里按照默认选择英文(一直回车即可),中文在纯命令行界面显示不出来
  2. Configure the keyboard
    第一步Detect keyboard layout选No。后面国家和布局选Chinese即可
  3. Detect network hardware
  4. Configure the network
    按照默认选项一直回车就可以了,弹出来文是否连接到VLAN选No,后面Auto-configure networking选Yes,其他需要输入的地方按照默认。
  5. Choose a mirror of Ubuntu archive
    第一步选择默认http协议,第二步选国家China,最后看镜像列表,如果有得选的话建议选一些速度快的软件源比如说清华源没得选就按照默认的,后面的http proxy回车跳过就可以了
  6. Download installer components
    弹出来Installer component to load的列表,全不选直接回车进入下一步。这一步完成之后安装菜单应该会增加了许多选项。
  7. Set up users and passwords
    Enable shadow password按默认选Yes,Allow login as root选Yes后面一步设置root的密码。打开root用户主要针对虚拟机优化的,这样可以提权可以不用输入密码方便一些。
    后面Create a normal user account now?选Yes,后面输入用户名和密码创建一个普通用户。最后Encrypt your home directory选No
  8. Detect Disk
  9. Partition disks
    第一步选Guided - use entire disk,选择使用整个硬盘,后面按照默认一直回车,到最后一步Wirte the changes to disks?选择Yes,执行硬盘分区。后面还会问swap文件的大小,按照默认大小就可以。
  10. Install the base system
    这一步基本没有没有操作,只需要等待安装程序从网络下载文件并且安装。进度条走到快结束的时候会弹出问kernel to install,按照默认的即可。另外后面弹出Drivers to include in the initrd选择targeted。
  11. Configure the package manager
    前面按照默认一直回车,后面弹出Services to use依然按照默认选项下一步
  12. Install the GRUB boot loader on a hard disk
    注意11步之后是跳过了”Select and install software”,原因是这一步即使什么都不选安装程序依然会装不少软件,这些软件按照需要可以在安装完成之后用apt手动安装。
    在Install the GRUB boot loader to the master boot record?选择Yes,后面一步选择当前的硬盘安装,其余的按照默认
  13. Finish the installation
    这一步是安装流程的最后一个环节。前面可能会弹出来问时钟是否设置为UTC,选Yes(Virtualbox虚拟机设置里有一项是硬件时钟为UTC,按照默认的选项应该是勾上的)
    最后看到弹出Installation Complete,弹出光驱的安装盘并且回车重启即可进入系统。看到Ubuntu Login界面即为启动成功

系统配置

安装增强功能&启用共享文件夹

首先以root用户登录进入系统后,先安装增强功能所需依赖,执行以下命令

1
2
apt-get update
apt-get install gcc make perl

安装完成后,在Virtualbox菜单栏下的“设备”选择“安装增强功能”,在命令行内执行

1
2
3
mount /dev/sr0 /mnt
cd /mnt
./VBoxLinuxAdditions.run

成功完成安装增强功能后的输出应该是这样的

重启之后,在Virtualbox里设置共享文件夹,如图所示,共享名和文件夹路径可以定义配置。

最后执行以下命令手动挂载共享文件夹,这里需要在新建文件夹/media/shared

1
mount -t vboxsf Shared /media/shared

即可在/media/shared目录下看到宿主机共享文件夹里的内容

配置SSH远程连接

其实在虚拟机界面直接输入命令已经可以完成大多数操作了,只不过不是太方便,主要是是增强功能的复制粘贴共享没有办法使用。要解决这个问题,我们可以使用宿主机的SSH连接到虚拟机,在宿主机的终端上进行操作。
首先我们需要配置一个host-only的网卡,并且设置虚拟机为固定IP方便连接。在Virtualbox主界面菜单栏上的“管理”下选择“主机网络管理器”,如果没有网卡就需要新建一个Host-only的网卡,DHCP可开可不开

然后用root用户登录虚拟机,执行ip addr应该可以看到多了一张网卡,这里是没有配置的因此是关闭的状态。

/etc/netplan/下找到网络配置文件,我这里的名称是01-netcfg.yaml
vi /etc/netplan/01-netcfg.yaml编辑文件添加刚才用ip addr看到的接口名称
增加按照刚才主机网络管理器的网段添加一个静态IP的配置

保存文件后执行netplan apply使配置生效,这样再执行ip addr应该可以看到网卡enp0s8已经在正常工作。

然后就可以在虚拟机里安装SSH服务器

1
2
apt-get update
apt-get install openssh-server

最后在宿主机一端用刚才设定的静态IP+你的用户名通过SSH登录即可。
另外在我现在安装好的系统里新增加的用户不在sudoer文件里,而root用户不能远程登录,导致通过SSH不能够提权执行命令。这里需要在虚拟机里以root身份修改/etc/sudoer文件,增加一行user ALL=(ALL) ALL,才能让普通用户可以用sudo提权。

参考