一. 准备

  • USB设备(U盘,推荐16GB以上)
  • VMware(本文使用16.2.5版本),需要安装在 Windows 11 操作系统上
  • Rufus(本文使用3.22版本)
  • Ubuntu Server ISO镜像(本文使用ubuntu-22.04.2-live-server-amd64)

二. 格式化USB设备

Rufus选项

注意:启动模式组合有 UEFI+GPTLegacy+MBR 两种

三. 使用Vmware安装Ubuntu

3.1 基础配置

管理员身份打开VMware Workstation 16,点击创建新的虚拟机

进入向导后,选择的步骤如下:

STEP1:自定义 -> 默认(硬件兼容性) -> 稍后安装操作系统 -> Linux(Ubuntu 64位)-> 默认(虚拟机名称) -> 看情况选择(处理器数量)-> 看情况选择(内存量)-> 使用NAT -> 选择控制器类型(SCSI,注意不要选错!)-> 虚拟磁盘类型SCSI -> 使用物理磁盘 -> 选择U盘对应的分区(可以在磁盘管理中查看,例如磁盘3对应PhysicalDrive3)-> 默认(磁盘文件)-> 完成

STEP2(很重要的三步):

  • 编辑虚拟机设置 -> 选择CD/DVD驱动器 -> 使用ISO映像文件 -> 选择镜像后确认

  • 编辑虚拟机设置 -> 选择USB控制器 -> USB兼容性选择3.1

  • 编辑虚拟机设置 -> 选项 -> 高级 -> 硬件类型选择UEFI

STEP3:

开启此虚拟机,进入Ubuntu的安装界面。重点在于磁盘分区设置,在选择安装设备的界面点击custom storage layout选项,然后进入的页面如下图所示。

分区设置

选择分区挂载(如上图所示),其中,/挂载的是系统的根目录,/boot/efi则是UEFI启动需要的EFI文件。如果这一步不太懂,请看3.2小节的详细步骤展示。

3.2 挂载EFI的具体步骤

特别注意!!!:如果能识别到USB设备,在列表中是可以看到设备名字的,例如3.1小节中的Kingston,或者接下来我用到的SanDiskCruzer U盘。如果找不到USB设备,需要在VMware右下角点击USB图标,然后点击 连接(断开与主机的连接),然后重新进入这个界面。

找不到U盘解决方法

首先,选择USB设备,回车后选择reformat操作,如下图所示。

对USB设备reformat

然后,选中USB设备,将USB设备设置为启动设备(Use As Boot Device),如下图所示。

将USB设备设置为启动设备

可以看到下图中 FILE SYSTEM SUMMARY 中自动挂载了 /boot/efi,接着我们选中 free space,然后Add GPT Partition。

1679912776633isAsog

将剩余所有空间挂载到 / 根目录,文件格式选择ext4,如下图所示。

挂载剩余空间

最后,点击Done按钮,挂载配置(MOUNT POINT)如下图所示。

存储空间配置

四. U盘启动

将USB设备插入一台电脑,进入该电脑的BIOS,选择U盘的EFI引导。

例如惠普电脑一般是开机的时候连续按ESC键,然后根据菜单进入引导选择。

引导文件路径(从EFI文件启动):选择USB设备 -> EFI-> ubuntu -> grubx64.efi

题外话:shimx64.efi是一个相对简单的程序,它提供了一种在安全启动(Secure Boot)开启的状态下使用的方法。安全启动(Secure Boot)开启的状态下,未签名的 GRUB 版本(grubx64.efi)将无法启动,因此 shim 弥补了缺陷并添加了自己的安全工具,与安全启动(Secure Boot)类似。

五. 安装软件(非必需)

安装Docker

https://blog.csdn.net/qq_53217531/article/details/127646728

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# tomcat(不建议装在docker里)
docker run -d -p 8080:8080 --name tomcat01 -v /home/zxiong/docker-data/tomcat01/webapps:/usr/local/tomcat/webapps --restart=always tomcat:8.5.87

# 创建网络
docker network create -d bridge --subnet 172.20.0.0/24 bananaNet

# 修改网络
docker network disconnect 网络名称 容器名称
docker network connect 网络名称 容器名称

# es
docker run -d \
--name es \
-e "ES_JAVA_OPTS=-Xms512m -Xmx2g" \
-e "discovery.type=single-node" \
-v /home/zxiong/docker-data/es/data:/usr/share/elasticsearch/data \
-v /home/zxiong/docker-data/es/plugin:/usr/share/elasticsearch/plugins \
--privileged \
--network bananaNet \
-p 9200:9200 \
-p 9300:9300 \
elasticsearch:7.12.1

docker run -d -p 9100:9100 docker.io/mobz/elasticsearch-head:5

# kibana
docker run -d \
--name kibana \
-e ELASTICSEARCH_HOSTS=http://es:9200 \
--network bananaNet \
-p 5601:5601 \
kibana:7.12.1

# mysql
docker run -d -p 3306:3306 --privileged=true -e MYSQL_ROOT_PASSWORD='xiongzhi' --name mysql mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci

# redis
docker run --restart=always --log-opt max-size=1024m --log-opt max-file=2 -p 6379:6379 --name myredis -v /home/zxiong/docker-data/myredis/redis.conf:/etc/redis/redis.conf -v /home/zxiong/docker-data/myredis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes --requirepass xiongzhi

# mongodb
docker run -d --name mymongo -v /home/zxiong/docker-data/mongodb/data:/data/db -p 27017:27017 mongo:4.4 --auth

docker exec -it mymongo mongo admin

db.createUser({ user:'root',pwd:'xiongzhi',roles:[ { role:'userAdminAnyDatabase', db: 'admin'},'readWriteAnyDatabase']});