准备工作(两个安装包):
下载 VMware Workstation Pro 17.5.2
VMware Workstation Pro:现已免费供个人使用 - VMware Workstation Zealot
官网下载地址(需登录):
ProductFiles - Support Portal - Broadcom support portal
VMware Workstation Pro for Personal Use (For Windows)
Release 17.5.2
Release Level Info 520448
File Name | Last Updated | SHA2 | MD5 |
---|---|---|---|
VMware Workstation Pro for Windows VMware-workstation-full-17.5.2-23775571.exe(618.26 MB) Build Number: 23775571 | May 10, 2024 11.06AM | 2c3a40993a450dc9a059563d07664fc0fb85ae398a57d22b1b4bf0e602417bf7 | c0a0353c1dade2089b55ce04ca942964 |
网上找到的其他下载地址,嫌麻烦可用:
Download VMware Workstation Pro (Latest Version Installer) (winningpc.com)
下载 Ubuntu Server 24.04 LTS
官网下载:
其他架构:
直达:
https://releases.ubuntu.com/24.04/ubuntu-24.04-live-server-amd64.iso
其他镜像下载:
Index of /ubuntu-releases/24.04/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
教程
检查网络
在教程开始之前,先检查网络,查看物理机上的dns服务器配置,
更改成以下,我连的是wifi,有线网络同理:
查看虚拟网络VMnet8的NAT设置中的子网IP、子网掩码、网关IP,后面需要用到:
此时为了保证没有问题,可以关闭VMware重新打开该软件
自定义虚拟机配置
点击浏览选择你的镜像
在下一步前,到官网下载Ubuntu桌面系统 | Ubuntu看个说明:
桌面版镜像大小比服务器版多3点多G,我用的是服务器版本,从上面选的镜像也能看出来,
为了节省磁盘容量,下面我就选22G,本人把它作为本地测试机用的,不够用以后还可以扩容:
到这里可以看到刚才的配置:
取消勾选,点击完成,可以在这里备注虚拟机描述:
点击编辑虚拟机设置,然后如下操作,确定(这是为了虚拟机在显示器的屏占比更大,易看):
安装 Ubuntu Server 24.04 LTS
确定后,点击开启此虚拟机,这一步当然是第一个
下一步选择English:
下一步,美式键盘布局和中式键盘布局一样,为了更广泛的适配性,选美式,也就是默认选项:
选择最小化安装:
网络配置
默认为DHCP自动获取IP地址,这里设置为静态IP,这样,在我们重启系统后,远程访问虚拟机的IP地址也不会变
Save后,Done
save后可以看到此时的静态IP信息
备注:DNS服务器用于域名解析,如果你的虚拟机需要访问Internet上的域名,那么正确配置DNS服务器以确保其能正常解析域名,并避免不必要的查询和延迟。使用与物理网络相同的DNS服务器方便我们在物理网络上验证该域名能否在该DNS服务器上正常解析并访问。如果你使用到了IPv6,配置的基本的原则和逻辑是相似的。
代理配置
这一步不作自定义配置代理,Done
Ubuntu 镜像源配置
下一步这里能正常访问默认的Ubuntu镜像源的域名并返回结果:
这里建议修改为阿里云的Ubuntu镜像:
https://mirrors.aliyun.com/ubuntu/
接下来是引导式存储布局配置,默认即可,done
磁盘分区向导
默认即可,这里为自动分区:
Continue,保存分区方案:
Ubuntu 服务器名和用户配置
升级到 ubuntu pro
这里跳过,Continue
安装 SSH 服务器
选中Install OpenSSH server,安装此服务包可远程访问该服务器,直接Done
选择Snap服务软件包(可选)
我这里不选,Done
将开始安装系统
安装结束后,选择Reboot Now重启
重启时出现该错误,这是由于启动虚拟机时加载安装镜像导致的,它这里建议您移除安装介质,然后按压ENTER键:
单击鼠标右键选择设置可以查看此虚拟机当前的设备状态
然后取消勾选启动时连接
安装完成
点击屏幕右下方"我已完成安装”按钮,告知VMware该系统已完成安装。
这里可以先做下面的终端工具MobaXterm的安装、配置以实现远程连接,但对本人来说,多敲命令是加强记忆,作为一名开发人员敲linux命令的机会是越来越少,先安装这个可以实现粘贴复制下面的命令:
用户登录
root密码设置
Ubuntu server 其他配置
查看我们刚才的网络配置
ip route
sudo cat /etc/netplan/50-cloud-init.yaml
如果你需要修改 DNS 服务器地址或更改其他网络配置,在修改完文件保存后(当然你需要安装一个命令行文本编辑器),然后可以使用以下命令来应用配置:
sudo netplan apply
移除Snap及其包并防其被重装
查看所有已安装的Snap包列表:(这里没有安装过)
切换到root用户
以下是在root下操作的,否则应在命令前加上sudo
这里尚未安装过,如果有,可用以下命令逐一删除这些Snap包:
snap remove <package_name>
停止、禁用、屏蔽、卸载Snapd服务:
# 1. 停止 snapd.socket
systemctl stop snapd.socket
# 2. 停止 snapd 服务
systemctl stop snapd
# 3. 停止 snapd.seeded.service (如果存在)
systemctl stop snapd.seeded.service
# 4. 禁用 snapd.socket
systemctl disable snapd.socket
# 5. 禁用 snapd 服务
systemctl disable snapd
# 6. 禁用 snapd.seeded.service
systemctl disable snapd.seeded.service
# 7. 屏蔽 snapd.socket
systemctl mask snapd.socket
# 8. 屏蔽 snapd 服务
systemctl mask snapd
# 9. 屏蔽 snapd.seeded.service
systemctl mask snapd.seeded.service
# 检查状态
systemctl status snapd.socket
systemctl status snapd
systemctl status snapd.seeded.service
执行效果:
删除snapd
包及其配置文件
apt purge snapd
删除因卸载snapd
而不再需要的依赖包
apt autoremove
将snapd
标记为被禁止安装
apt-mark hold snapd
创建一个APT Pinning文件,将snapd
的优先级设置为-1,确保它不会被安装。
sh -c 'printf "Package: snapd\nPin: release a=*\nPin-Priority: -1\n" > /etc/apt/preferences.d/nosnap.pref'
执行完这两个命令之后,检查hold状态和pinning设置
- Installed: (none): 表示
snapd
没有安装。 - Candidate: (none): 表示没有候选版本可以安装(因为所有版本的优先级都被设置为
-1
)。 - Version table:
2.62+24.04build1 -1
: 表示该版本的优先级被设置为-1
,不会被安装。500 https://mirrors.aliyun.com/ubuntu noble/main amd64 Packages
: 表示这个版本存在于指定的镜像源中。
双重保险,防止snapd
被意外地重新安装
安装 Vim 文本编辑器
其他软件安装和查看也是类似
在许多现代 Linux 发行版中,vim
常常被预装并设置为默认的文本编辑器,或者以 vi
的名义存在(实际上是 vim
的一个符号链接)
更新本地的包索引列表
apt update
安装 vim
编辑器
apt install vim
显示 Vim 的版本信息
vim --version | grep "VIM -"
重新安装Vim命令
apt update
apt --reinstall install vim
检查软件包状态,如果Vim的状态显示为 ii
,表示已安装且可用
dpkg -l | grep vim
查看Vim的版本信息
vim --version | grep "VIM -"
查看Vim可执行文件的路径
which vim
查看在系统中安装或更新Vim的历史记录
cat /var/log/apt/history.log | grep vim
执行效果:
清除已下载的包文件缓存
apt clean
apt相关的一些其他常用命令,上面出现过的不再展示
# 搜索包含指定关键字的软件包
apt search package_name
# 展示指定软件包的详细信息
apt show package_name
# 升级所有已安装的软件包到最新版本
apt upgrade
# 尝试修复破损的依赖关系
apt --fix-broken install
# 删除指定的包,但保留配置文件
apt remove package_name
查看安装引导中选择安装的OpenSSH服务器是否状态正常
systemctl status ssh
下载终端工具 MobaXterm
下载地址:
MobaXterm Xserver with SSH, telnet, RDP, VNC and X11 - Download (mobatek.net)
配置 MobaXterm
打开Settings/Configuration
更改软件界面DPI大小,我4K屏,默认选项时,菜单按键太小
保持ssh连接不中断,勾选 ssh keepalive,OK 保存
终端字体大小修改
控制台日志保存到本地
MobaXterm产生的临时文件,临时文件可能随时被删除或丢失,建议指定home和root目录,避免出现异常。
开始愉快的使用
输入密码登录
sudo(superuser do)命令免密码配置
输入sudo命令编辑该路径文件
sudo vim /etc/sudoers
输入当前用户密码,可以看到现在的sudo命令是需要密码的,键入密码回车
输入:wq会报文件只读,输入:wq!(强制执行)保存退出即可
再次输入sudo命令查看该文件,可以看到已经不需要输入密码了
安装rsyslog查看sudo命令使用记录
安装系统日志服务(rsyslog),minimized 安装选项中并不包含。
# 更新软件包索引
sudo apt update
# 安装rsyslog
sudo apt install rsyslog
执行效果:
输入下面的命令可以查看使用 sudo
权限的用户及其执行的命令等信息
sudo grep 'sudo' /var/log/auth.log
可以看到sudo权限的时间、命令和用户名等使用记录,并且此时的时区不是东八区(UTC+8)。接下来我们安装时间同步工具:
安装及配置chrony来进行时间同步
安装Chrony。Chrony是一个现代的时间同步工具,通常比传统的NTP更快速和准确。
# 更新软件包索引
sudo apt update
# 安装chrony
sudo apt install chrony
执行效果:
编辑 /etc/chrony/chrony.conf
文件
sudo vim /etc/chrony/chrony.conf
将时区设置为中国标准时间(CST)
# 设置为中国标准时间(CST)
sudo timedatectl set-timezone Asia/Shanghai
# 检查时区设置
timedatectl
# 显示当前的日期和时间
date
重启系统并检查安装的服务和日志时间
sudo reboot
执行后,等一会,远程虚拟机重启后,按下R键重启会话
系统重启后,检查刚才安装的rsyslog和chrony是否开机自启且状态正常
# 检查 rsyslog 服务的状态
systemctl status rsyslog
# 检查 chrony 服务的状态
systemctl status chrony
接下来看看该日志中的时间是否为北京时间
如果你需要查看特定用户的 sudo
命令使用情况,可以以下的命令:
sudo grep 'username' /var/log/auth.log | grep 'sudo'
系统至此已准备完毕,以上都是必备的。
可以以此为副本来克隆使用
以下为补充内容
仅主机模式:
查看默认配置的状态可知如何正确配置仅主机模式,仅主机模式下,vmnet1的IP地址通常被设置为主机上的默认网关,先通过更改设置获取权限修改子网IP(叫网络地址更合适,标识整个网络或子网)和子网掩码来更改网关IP。
比如你可以设置:子网IP: 192.168.1.0,子网掩码: 255.255.254.0,vmnet1的IP地址(虚拟机需要设置的网关):192.168.0.1(将网关地址设置为“.1”是一种常见的做法,管理员和用户更易识别和记忆,在早期的网络规划中,这种设定就被广泛采用,并成为了一种标准做法,有助于简化子网规划,提高网络管理的效率,简化了网络管理和维护)。
网关IP:通常选择在子网内部靠前或靠后的地址,比如 192.168.0.1
或 192.168.1.254
,但绝不能是网络地址(192.168.0.0
)或广播地址(192.168.1.255
)。
当然这篇教程不是讲网络知识的,学过计算机网络的应该都有点印象,只讲一些关键。
将网络适配器设置为仅主机模式,可以避免克隆的虚拟机启动后被原始虚拟机的ssh会话连接上(克隆虚拟机和原始虚拟机ip相同),当然我们这里不需要,因为我们用来作为原始镜像的系统是不启动的,克隆的虚拟机启动后也会修改原始虚拟机的配置。
系统克隆
克隆开始
右边对应的界面打开时才有管理可选,否则管理选项是灰色的,然后
克隆虚拟机向导
按我固态硬盘(ssd)的速度,两秒就好了
至此已克隆完毕
克隆后需要修改的配置
修改主机名
# 重新设置主机名
sudo hostnamectl set-hostname newhostname
# 查看 /etc/hostname 文件
sudo cat /etc/hostname
# 检查当前主机名
hostname
# 编辑 /etc/hosts 文件
sudo vim /etc/hosts
# 查看 /etc/hosts 文件前两行
head -n 2 /etc/hosts
# 重启网络服务,以使新的主机名生效
sudo systemctl restart systemd-networkd
# 退出当前登录会话
exit
因为是克隆的,用之前原虚拟机的ssh会话就能连接上
修改成您的主机名
按R重新登录,即可看到改变后的命令提示符中的主机名
配置IP地址
sudo tail -n 14 /etc/netplan/50-cloud-init.yaml
修改后的ip地址
出现Network error: Software caused connection abort后,ssh会话中断,修改当前会话ip地址
输入密码登录,查看路由表
更新服务器端的SSH主机密钥对
# 删除旧的SSH主机密钥
sudo rm /etc/ssh/ssh_host_*
# 重新配置SSH服务器以生成新的密钥
sudo dpkg-reconfigure openssh-server
查看新克隆虚拟机的主机密钥(可对比原始虚拟机)
ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub
这里不给截图了。
更新机器ID
# 查看当前机器ID
cat /etc/machine-id
这里也不给截图了。
# 删除当前机器ID
sudo rm /etc/machine-id
# 生成新的机器ID
sudo systemd-machine-id-setup
重启虚拟机或相关服务以确保新的机器ID生效:
sudo reboot
重连会话时选择接受即可。
到这里整个教程就结束了,可以愉快地开始使用新克隆虚拟机。