news 2026/10/4 1:17:51

VirtualBox安装Ubuntu虚拟机教程:零基础打造Linux开发环境

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
VirtualBox安装Ubuntu虚拟机教程:零基础打造Linux开发环境

最近后台收到不少朋友问同一个问题:想在自己的电脑上装一套 Linux 环境来学习或开发,但又不想把主力机系统搞乱,应该怎么办。我的建议一直很简单——用虚拟机,而且是用 VirtualBox 装 Ubuntu。这套组合我前前后后给同事、学生、以及我自己的几台不同配置的电脑上都配过,踩过的坑加起来能写满一页纸。这篇文章就把完整的下载、安装、系统安装、常用配置和问题排查全部拆开讲清楚,照着做基本能一遍过。

不管你是刚接触虚拟化的小白,还是想在 Windows 上搞一个干净 Linux 开发环境的程序员,这篇文章都适用。它能帮你省掉双系统切换的麻烦,也能让你随时备份恢复系统,尤其适合用来练命令行、搭 MySQL、Git、Node.js 这些服务。下面进入正题。

1. 为什么用 VirtualBox 跑 Ubuntu

1.1 虚拟化方案的取舍:VirtualBox 和 VMware 怎么选

虚拟机的主流方案其实就那几家:VMware Workstation 和 Oracle 的 VirtualBox 是桌面端用得最多的。我之前长期用过 VMware Workstation,后来换到 VirtualBox,不是因为 VMware 不好,而是 VirtualBox 在绝大多数场景下已经够用,并且它开源免费,许可对个人用户非常友好,不需要到处找许可证,更新也勤快。

从功能角度看,VirtualBox 对日常学习、跑 Linux 服务器环境、做网络实验完全没问题。它支持快照、克隆、共享文件夹、多种网络模式,足以覆盖 90% 的需求。VMware 强在商业环境下的性能和兼容性更稳,但在普通电脑上跑一两个 Ubuntu 虚拟机,两者体验差距并不大。所以我给新手的建议很明确:先装 VirtualBox,省心也省资源。

这里顺便提一句,很多人在搜索引擎里还会看到 VirtualBox 5.2.44 这个老版本。这个版本确实经典,专门针对 Windows 7 做了优化,如果你的电脑还在用 Win7 或者配置很低,可以选它;如果是 Win10/11,直接装新版就好,没必要为了“经典”折腾老版本,新版本对高分辨率屏幕和 USB 设备的支持要好很多。

1.2 安装前必须确认的硬件条件

在开始下载之前,先花两分钟确认电脑的状态,能避免后面一堆莫名其妙的问题。

首先要确认 CPU 的虚拟化功能已经开启。Intel 平台对应 VT-x,AMD 平台对应 SVM/AMD-V。大部分电脑出厂默认是开启的,但有些品牌机默认关闭。怎么确认?打开任务管理器,切到“性能”标签,点击 CPU,看右下角的“虚拟化”状态,显示“已启用”就没问题。如果显示“已禁用”,需要重启电脑进 BIOS,在 CPU 配置里找到“Intel Virtualization Technology”或者“SVM Mode”并打开。

其次是内存和硬盘。Ubuntu 桌面版本身占用不大,但你要是开浏览器、跑编辑器,再指望虚拟机流畅,建议给虚拟机分配至少 4GB 内存,实际体验最好在 8GB 以上。硬盘空间方面,Ubuntu 的干净安装大概需要 10GB 到 15GB,但后续安装开发工具、Docker 镜像这些很容易涨到 30GB 以上,建议至少预留 40GB 给虚拟机。另外优先把虚拟机文件放在 SSD 上,否则启动和安装过程会明显慢。

2. VirtualBox 下载与安装实操

2.1 到哪下载、怎么避开捆绑和旧版本坑

VirtualBox 的下载我只有一个建议:去官网。官网地址很好记,直接搜 “VirtualBox download” 就能找到官方入口。没必要去第三方下载站或者博客里给的网盘,那些地方的安装包版本混乱,有些还被改过,装完还给你塞一堆推广软件。

官网首页会显示当前最新版本号和对应的 Windows / macOS / Linux 安装包。下载时要看清楚架构,x86_64 对应 64 位系统,现在绝大多数电脑都选这个。如果你用的是 Linux 发行版作为宿主机,也可以从发行版仓库装,但官网的 .deb 或 .rpm 包通常更新更快。

官方页面还会提供一个“Oracle VM VirtualBox Extension Pack”,也就是扩展包。这个一定要下载,而且要选择和 VirtualBox 主程序版本一致的版本,否则会提示版本不匹配无法安装。扩展包提供了 USB 2.0/3.0 设备支持、VirtualBox RDP 远程桌面、磁盘加密、NVMe 支持等能力。如果不装它,虚拟机里插 U 盘经常会识别不到,分辨率也可能受限制。

2.2 安装过程的几个注意点

Windows 下安装 VirtualBox 基本都是默认下一步,但有几个细节值得留意。

安装路径建议保持默认,或者装到一个路径里没有中文、没有空格的目录,比如D:\Programs\Oracle\VirtualBox。早期版本对中文路径的处理不够好,虽然新版改善了很多,但为了避免玄学问题,还是别在路径里放中文和空格。

安装过程中有个弹窗会提示“警告:网络接口”,大概意思是安装时会重置网络适配器,可能导致网络短暂断开。这个不用担心,点击“是”继续就行。因为 VirtualBox 要安装虚拟网卡驱动,这步是必须的,如果不装,虚拟机的网络模式会缺失很大一部分功能。

组件选择上,如果你之前没装过 VirtualBox,建议把所有的组件都勾上,尤其是 USB 驱动和 Host-Only 网络驱动,后面配置网络时会用到。装完之后桌面会出现 “Oracle VM VirtualBox” 图标,打开它会看到一个相对简洁的主界面,左边是虚拟机列表,右边是详细信息面板,这个界面后面会天天打交道。

3. 创建 Ubuntu 虚拟机

3.1 先选对 Ubuntu 镜像版本

装完 VirtualBox 后,下一步是准备 Ubuntu 的安装镜像。镜像同样建议从 Ubuntu 官网下载。Ubuntu 官网会优先推荐最新的 LTS 版本,也就是长期支持版。LTS 版本的好处是维护周期长达五年,软件源稳定,社区资料多,遇到问题随便一搜就是答案。

桌面版和服务器版的区别一句话说清:桌面版带图形界面,适合日常使用和学习;服务器版没有图形界面,更省资源,适合部署服务。如果是第一次接触 Linux,我建议先装桌面版,图形化界面能大幅降低入门门槛;以后要跑生产服务或者学习运维,再换服务器版也不迟。

下载镜像时保留.iso文件即可,不需要解压。这个文件大小通常在 4GB 到 6GB 之间,所以硬盘空间一定要提前留好。下载完成后最好校验一下 SHA256 校验值,官网会给出对应文件,用命令行工具对一下,防止下载损坏。这一步很多人会跳过,但如果装到一半提示文件损坏,回头再排查就浪费时间了。

3.2 新建虚拟机:内存、硬盘、显存的合理配置

在 VirtualBox 主界面点击“新建”,会弹出创建向导。名称可以随便填,比如 “Ubuntu-Learn”,重点是“文件夹”和“ISO 映像”这两项。“文件夹”决定虚拟机文件保存位置,建议放在剩余空间充足的盘里;“ISO 映像”选择刚才下载的 Ubuntu 镜像。

类型选择 Linux,版本选择 Ubuntu 64-bit。如果你的机器比较老,也可能是 32 位版本,但 2024 年以后 Ubuntu 官方已经基本放弃 32 位镜像,直接选 64 位即可。

内存大小这一步需要认真规划。Ubuntu 桌面版最小建议是 2GB,但想用得流畅,我通常给 8GB。注意虚拟机分配的内存是宿主机“借”出来的,别贪多,如果宿主机自己只有 8GB,虚拟机给 8GB 之后宿主机会卡到没法看。一个经验值:宿主机 16GB 内存,虚拟机分 8GB;宿主机 8GB 内存,虚拟机分 4GB,这是比较平衡的配置。

处理器核心数看 CPU 线程数。如果 CPU 是 6 核 12 线程,给虚拟机分 4 核基本够了。显存建议分配 128MB,别低于 32MB。因为 Ubuntu 桌面版的动画和放大效果也需要一点图形内存,给少了会明显掉帧。勾选“启用 3D 加速”,后续界面会更跟手。

接下来创建虚拟硬盘,有两种方式:动态分配和固定大小。动态分配的意思是虚拟硬盘文件先只占很小空间,随着虚拟机里数据变多再慢慢增大;固定大小则是一开始就占用全部指定空间。从性能上讲,固定大小稍好一点点,因为不会在运行中反复扩展文件,但从灵活性上讲,动态分配更省空间。我的建议是选择动态分配,容量给 40GB 或更多,这样以后不用重新创建硬盘。

4. 安装 Ubuntu 系统全程图解

4.1 启动虚拟机并进入安装程序

虚拟机创建完成后,选中虚拟机,点击“启动”。第一次启动会自动从 ISO 镜像引导,进入 GRUB 引导菜单。用键盘上下键选择“Try or Install Ubuntu”,回车。如果屏幕长时间黑屏或者卡在启动界面,常见原因是显存设置太低,或者没有开启 3D 加速,可以先把虚拟机设置里的显存调高一点,再试一次。

随后系统会进入试用桌面,桌面背景是 Ubuntu 默认的壁纸,上方有一条菜单栏,桌面上有两个图标,其中一个是“Install Ubuntu”。双击它,安装向导就启动了。这一步需要注意的是语言选择,左边语言列表里有“中文(简体)”,选它可以让整个安装界面变成中文,后面配置起来更省事。

安装类型里有“正常安装”和“最小安装”两个选项。我的建议是选“正常安装”,因为最小安装裁剪了不少常用软件,比如 LibreOffice,新手刚开始可能会觉得缺东西。下面的“为图形或无线硬件安装第三方软件”选项,建议勾上,因为它会安装一些专有驱动和解码器,能避免不少 Wi-Fi、NVIDIA 显卡相关的后续问题。不过要留意,这个选项在安装过程中需要联网,网络速度慢的话安装会久一些。

4.2 磁盘分区怎么处理最省心

分区是很多人最头疼的部分。Ubuntu 安装向导提供了两种默认方式:一个是“清除整个磁盘并安装 Ubuntu”,另一个是“手动分区”(Something Else)。

对虚拟机来说,我的建议是用“清除整个磁盘并安装 Ubuntu”。因为虚拟硬盘就是一块独立的大文件,里面没有别的数据,直接让安装程序自动分区完全没问题。这会自动创建 ESP 引导分区、根分区和交换分区等,不需要我们操心。千万不要选“手动分区”增加不必要的复杂性,除非你想了解 Linux 分区结构。

手动分区其实也不难,主要是搞清楚几个挂载点:/是根分区,所有系统文件所在;/boot/efi是引导分区,装 UEFI 启动要用;swap是交换分区,相当于扩展内存。但新手没必要一上手就折腾这些,等跑通一次之后再用“Something Else”实验。

安装程序最后一步会让你设置计算机名称和用户名,还会要求输入密码。这里没什么特殊要求,用户名建议用不带空格的英文,因为这个用户名会成为你的主目录名,比如/home/yourname,以后写代码、建 Git 仓库都会用到。勾选“自动登录”可以省去开机输密码的步骤,但如果是练习环境无所谓,如果是学习服务器管理,建议保留密码登录。

安装完成后,安装程序会提示重启。这时候虚拟机可能会弹出一个窗口,说“请移除安装介质”,如果移除准确操作是点选“设备”->“光盘”,把 ISO 文件从光驱里卸载,或者在 VM 设置里把启动顺序改成硬盘优先。否则虚拟机重启后又会从 ISO 启动。

4.3 安装增强功能:这一步不做事倍功半

第一次进入 Ubuntu 桌面后,屏幕分辨率往往很小,窗口没法自适应,鼠标也无法自由从虚拟机里移动到宿主机。原因很明确:虚拟机里缺一组驱动,也就是 VirtualBox 的 Guest Additions,中文常叫“增强功能”。

安装增强功能的操作:在 VirtualBox 窗口顶部菜单栏点“设备”->“安装增强功能”,虚拟机会挂载一个虚拟光盘。在 Ubuntu 里,打开文件管理器,找到这个光盘设备,通常在侧边栏显示为“VBox_GAs_x.x.x”,里面有一个autorun.sh脚本。但要直接双击运行多半不行,更稳的方式是打开终端,执行:

sudo apt update sudo apt install -y build-essential dkms linux-headers-$(uname -r)

安装完编译所需的依赖后,再到挂载目录下执行:

cd /media/$USER/VBox_GAs* sudo ./VBoxLinuxAdditions.run

等脚本跑完,重启虚拟机。重启后你会看到分辨率可以跟随窗口自动调整了,鼠标也能自由穿梭,共享剪贴板才真正生效。

共享文件夹也需要这组驱动配合才能工作。先在 VirtualBox 的虚拟机设置里,打开“共享文件夹”,添加一个宿主机目录,比如D:\share,再指定挂载名,比如share。在虚拟机里把它挂载上来:

mkdir -p ~/share sudo mount -t vboxsf share ~/share

如果你希望每次开机自动挂载,可以把这行命令写到/etc/fstab里,或者干脆直接在共享文件夹设置面板里勾选“自动挂载”。

5. 虚拟机网络配置与日常使用优化

5.1 三种网络模式到底怎么选

VirtualBox 默认给虚拟机提供的是 NAT 网络,即虚拟机可以访问外网,但宿主机和其他设备无法直接访问虚拟机。这种模式对正常 apt 装软件、上网查资料来说没问题,也是推荐新手先保持默认的原因。

但如果你想在宿主机浏览器里访问虚拟机里跑的一个网站,比如你在 Ubuntu 里用npm run dev起了个前端服务,默认 NAT 模式下宿主机直接访问不到。解决办法有两种:第一种是改网络模式为“桥接模式”,让虚拟机直接和宿主机在同一个局域网里,虚拟机有自己的 IP,宿主机直接访问这个 IP 即可;第二种是保留默认网络,用端口转发。

端口转发的设置在虚拟机设置 -> 网络 -> 高级 -> 端口转发规则里。举个例子,你虚拟机里有个服务监听 8080 端口,设置规则:协议 TCP,宿主机的 IP 留空,端口设为 8080,子系统的 IP 留空,端口设为 8080。之后宿主机浏览器访问http://127.0.0.1:8080,请求就被转发到了虚拟机里的 8080 端口。这个方式在 NAT 模式下特别常用,尤其是搭网站或者测试接口时。

三种模式的核心差别可以这样记:NAT 适合虚拟机上网但不对外提供服务;桥接相当于虚拟机变成局域网里的一台独立机器,会被分配独立的 IP,最接近于真实主机;仅主机(Host-Only)意味着虚拟机只能和宿主机通信,不能上外网,适合做隔离实验。

5.2 SSH 连不上虚拟机的排查思路

很多朋友装完 Ubuntu 第一件事是想从宿主机用 SSH 连进去,因为终端操作更方便。但连接失败很常见,原因也就那几个,按顺序排查就好。

先检查虚拟机里有没有安装 SSH 服务。Ubuntu 桌面版默认不装 SSH 服务端,需要自己装:

sudo apt update sudo apt install -y openssh-server sudo systemctl status ssh

如果服务状态显示 active,再查虚拟机的 IP:

ip addr

在宿主机上ping一下这个 IP,能通再试 SSH。如果 ping 不通,先确认是否选择了正确的网络模式。NAT 模式下,宿主机 SSH 到虚拟机默认是进不去的,需要端口转发。桥接模式下,注意虚拟机 IP 和宿主机 IP 是否在同一网段,不在同一网段也是连不上的。

还有一个容易被忽略的点:Ubuntu 自带的防火墙 ufw。如果你之前开启过防火墙,默认策略会拒绝外部 SSH 连接。可以用以下命令放行:

sudo ufw allow from 192.168.1.0/24 to any port 22 sudo ufw enable

注意别把规则范围开太大,生产环境千万不要对所有人开放 22 端口。

5.3 换软件源、装中文输入法和基础开发环境

Ubuntu 默认源在国外,在国内网络环境下执行apt update往往很慢。解决办法是改成国内镜像源。操作很简单:打开“软件和更新”应用,在“下载自”下拉框里选择“其他站点”,然后点“选择最佳服务器”,系统会自动测速选一个快的;也可以直接手动编辑源列表,将archive.ubuntu.com替换成可用的镜像源地址,比如mirrors.aliyun.com这种。之后执行:

sudo apt update sudo apt upgrade -y

中文输入法是很多人刚装完 Ubuntu 会遇到的坎。桌面版在“设置”->“键盘”->“输入源”里添加“中文”,选择“智能拼音”或“谷歌拼音”。如果装完没有拼音选项,先安装:

sudo apt install -y fcitx5 fcitx5-chinese-addons

然后注销再登录,一般就能在输入源里看到拼音了。

开发环境方面,如果你打算在虚拟机里写代码,建议先把 Git、Node.js、MySQL 这些基础组件装好。Git 的安装很直接:

sudo apt install -y git git config --global user.name "yourname" git config --global user.email "you@example.com"

Node.js 的安装注意别用 Ubuntu 自带的版本,那个通常太老。建议用 NodeSource 或 nvm 方式安装。nvm 的好处是可以随时切换 Node 版本,命令也很简单:

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash source ~/.bashrc nvm install --lts

MySQL 的安装需要注意,Ubuntu 默认仓库里的 mysql-server 包在安装时不会再弹窗让你设 root 密码,而是使用了 auth_socket 插件。这意味着你只能用sudo mysql进入,如果你需要设置 root 密码,安装完成后再执行:

sudo mysql ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码'; FLUSH PRIVILEGES;

这些装完之后,虚拟机的日常开发环境基本就齐了。接着你可能会想换一套更接近 macOS 风格的字体,在终端里选一个开源等宽字体,比如 JetBrains Mono、Fira Code,Ubuntu 的设置界面里可以手动添加字体文件,整体观感立刻会好很多。

6. 常见问题速查与个人踩坑记录

6.1 高频问题速查表

下面这个表格是按我过往回答和操作中遇到的情况整理的,列出最常见的现象、原因和解决办法,方便你以后翻出来直接对照。

现象大概率原因解决办法
虚拟机启动后黑屏或卡死显存不够、未开启 3D 加速设置 -> 显示,调高显存到 128MB,勾选 3D 加速
USB 设备无法识别未安装 Extension Pack下载与 VirtualBox 版本一致的扩展包并安装
共享剪贴板不生效未安装增强功能在虚拟机内安装 Guest Additions 并重启
分辨率不能自适应未安装增强功能执行 VBoxLinuxAdditions.run 后重启
宿主机访问不了虚拟机的网站NAT 模式没有开端口转发用桥接模式或添加端口转发规则
SSH 连不上虚拟机SSH 服务没装、防火墙拦截安装 openssh-server,放行 22 端口
apt 更新太慢默认源网络延迟高换成国内可用镜像源
虚拟机没有声音声卡驱动未正确识别设置 -> 声音,音频控制器选 ICH AC97 并重新安装增强功能
启动报 VT-x/AMD-V 不可用BIOS 里虚拟化被关闭重启进 BIOS 打开虚拟化开关

除了上面这些,还有一个容易被忽略的老大难问题:有些网络模拟软件,比如某些国产网络实验工具,会提示 “与 VirtualBox 不兼容”。这种一般是因为 VirtualBox 版本太新,软件期待的虚拟网卡驱动没适配。解决思路是降级到旧版 VirtualBox,比如 5.2.44 版本,或者改虚拟机的网络适配器类型。遇到这类问题,先记录下报错文字,去搜索引擎按“软件名 + VirtualBox + 不兼容”查,比盲试快得多。

6.2 我的一点经验之谈

装虚拟机这件事,表面上是一步步点“下一步”,但真正决定你能不能长期用下去的,往往是一些不起眼的习惯。

第一,善用快照。VirtualBox 支持快照,就是在某个安装配置完成后,记录下当前虚拟机的状态。以后系统玩坏了,可以直接恢复到快照点,比重装系统快得多。我在装完增强功能、换完源、装好开发环境后,分别打了快照,这样后面怎么折腾都不慌。

第二,备份虚拟硬盘文件。虚拟机的所有数据都存在.vdi文件里,位置默认在用户目录下的VirtualBox VMs文件夹。如果你要重装宿主机或者换电脑,只需要把这个文件夹打包带走,新机器上安装 VirtualBox 后,用“控制”->“注册”添加这个 .vbox 文件即可。这个操作比重新配置环境省太多时间。

第三,遇到问题时先看日志。VirtualBox 的日志文件位于虚拟机文件夹里,名为Logs/VBox.log。每次启动失败,这个文件会记录下详细的报错原因。比如之前装 Ubuntu 一直卡在 GRUB,我打开日志看到有个 ACPI 相关的警告,虚拟机的“系统”设置里把“启用 ACPI”改了一下就能正常启动了。很多问题在日志里都有线索,不要凭感觉乱改配置。

第四,修改虚拟机的硬件配置前要关机。在 VirtualBox 里,内存、CPU、显存、网卡这些设置,虚拟机关机状态下才能改。很多朋友发现配置按钮是灰的,就是因为虚拟机还开着,把它关机或强制断电后再看就正常了。

最后再补充一个小技巧:如果你在虚拟机里打开了几个终端,同时又要看文件管理器,建议先把增强功能的“无缝模式”用起来。这个模式下,虚拟机里的窗口会直接融合在宿主机的桌面上,看起来就像原生窗口一样,省去来回切换虚拟机的麻烦。快捷键是宿主机键(默认是右 Ctrl)+ L,随时可以用。

装完这一套,你已经拥有一台随时可以折腾的 Ubuntu 系统了。后续不管你是学 Python、搭 Docker、练 Linux 运维,还是编译开源项目,都是在这台虚拟机里继续深入。我这个配置方案跑了好几年,最大的心得就是:虚拟机别怕折腾,留好快照,大胆试错,它比物理机耐造得多。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/4 1:17:43

深度强化学习驱动的柔性作业车间动态调度实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/4 1:16:07

MRAM替代EEPROM:PIC18F47K42驱动MR25H40CDF的工业存储方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/4 1:15:47

相高模型标定:从相位到毫米级三维高度的精准映射

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/4 1:15:23

嵌入式MRAM实用指南:SPI接口、掉电保存与工业数据记录设计

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/4 1:15:18

基于MR25H40CDF与STM32L021K4的工业嵌入式存储方案设计

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华