目录
1. VMware 笔记
1.1. VMware Fusion 与 VMware WorkStation 的区别
VMware Fusion 是 VMware 在 MacOS 上的虚拟机, 而 VMware WorkStation 是 VMware 在 Windows 和 Linux 上的虚拟机。
VMware Fusion 对个人免费, 有单独的密钥。VMware WorkStation 没有免费一说, 但是可以在网上找到可用的密钥。
1.2. VMware Fusion 支持的 Linux 版本
有些 Linux 发行版兼容性存在很大问题, 需要进行魔改, 这里列出兼容的版本:
Can I run Linux virtual machines on my M1/M2 Mac?
Popular arm64 Linux versions that have been reported as successfully installed include:
- Fedora
- CentOS Stream 9
- Red Hat Enterprise Linux/Oracle Linux/Rocky Linux 9
- OpenSUSE Tumbleweed
- OpenSUSE Leap
- Kali Linux
- Ubuntu
- Debian
参考自 Running Fusion on an Intel Mac and upgrading to an M1/M2 Mac? Read this first.
为什么不支持?
CentOS 7 or 8 will not boot on the Tech Preview because their kernels are built with a 64KB page size that Apple Silicon hardware does not support. RHEL 7 and 8 suffer from the same issue.
RHEL 9 changed the page size on ARM architectures to 4KB. CentOS 9 Stream made the same change. They both will boot ( well they did before the recent round of kernel releases that cause pretty much all Linux distros to not boot on the TP - that’s another story altogether)
- Paul (Technogeezer)
Editor of the Unofficial Fusion Companion Guides
参考自 Unable to install CentOS 7 on VMWare fusion for Macbook M1
1.2.1. 魔改: arm64(aarch64) 安装 centos 7.5.1804 (不推荐, 直接使用 CentOS 9 不香么)
转载自: arm64(aarch64)安装centos 7.5.1804
- 总体说明
Arm64 的 centos 版本自 7.5.1804 以后不再和 7.4、7.3、7.2 等之前的一样直接提供一个 rootfs.tar.xz 的压缩包, 全部变成了 ISO 的安装文件, 因此需要 EFI 来引导安装, 如果 Aarch64 的 cpu 用的是 uboot 就只有干瞪眼了, 笔者花了一翻功夫, 终于找到如何从 ISO 中提取出 centos 7.5.1804 文件系统的方法, 方便使用 uboot 的用户可以使用 centos7.5.1804。
- 提取 centos rootfs
下载 centos7.51804 的安装包 CentOS-7-aarch64-Everything-1804.iso 或 CentOS-7-aarch64-Minimal-1804.iso 均可, 网址: http://mirror.centos.org/altarch/7.5.1804/isos/aarch64/, 两者下一个即可, 建议下载 CentOS-7-aarch64-Minimal-1804.iso, 体积更小下载更方便。
mount CentOS-7-aarch64-Minimal-1804.iso 或 CentOS-7-aarch64-Everything-1804.iso 后提取镜像内部文件: LiveOS/squashfs.img, 此文件实际上即是 centos 的 rootfs 文件, 但是不能直接使用。继续将 squashfs.img mount 起来, 然后进入 mount 的路径继续 mount 文件 LiveOS/rootfs.img, 然后即可看到 centos 的整个内部文件系统了, 如下图:
如果仅复制这些文件到根系统, 通过 uboot 加载启动, 你会发现系统根本无法启动, 这是因为此 rootfs 默认启动方式为 anaconda 启动, uboot 引导进入 anaconda 模式后会直接卡死。复制目录下的所有文件到根系统目录, 删除
/etc/systemd/system/default.target
建立软连接
ln -s /usr/lib/systemd/system/multi-user.target etc/systemd/system/default.target
引导系统启动后进入 multi-user 模式。此时即可进入到 centos 系统, 用户 root, 密码无, 此时 centos 为纯净系统, 除了基本命令外不带其他任何第三方命令, 包括 passwd、sudo、openssh、telnet、net-tools 等等均没有, 且 yum 命令报错找不到 import yummain 模块, 无法使用。
复制 CentOS-7-aarch64-Minimal-1804.iso 或 CentOS-7-aarch64-Everything-1804.iso 中, Packages 目录与 yum 相关的四个 rmp 包
yum-3.4.3-158.el7.centos.noarch.rpm、
yum-metadata-parser-1.1.4-10.el7.aarch64.rpm、
yum-plugin-fastestmirror-1.1.31-45.el7.noarch.rpm
centos-release-7-5.1804.el7.centos.a.aarch64.rpm
然后启动进入 centos 后执行:
rpm2cpio yum-3.4.3-158.el7.centos.noarch.rpm|cpio -idumv
rpm2cpio yum-metadata-parser-1.1.4-10.el7.aarch64.rpm|cpio -idumv
rpm2cpio yum-plugin-fastestmirror-1.1.31-45.el7.noarch.rpm|cpio -idumv
rpm2cpio centos-release-7-5.1804.el7.centos.a.aarch64.rpm|cpio -idumv
修改文件 /etc/yum.repos.d/CentOS-Base.repo
中所有 $releasever
为 7
(可在 vim 中输入: %s/$releaseve/7/g
来全局替换)
然后 yum -help
, yum 命令已经可以使用, 通过 ip addr 配置 ip 后, 即可用 yum 安装基本的命令和一些第三方常用库如: passwd、sudo、openssh、telnet、net-tools 等。
如果 yum 需要使用代理修改: /etc/yum.conf 文件, 最末尾添加:
proxy=http://linux:linux@192.168.100.80:808/
其中 linux 为代理的用户名和密码, 808 为代理的端口, 192.168.100.80 为代理网址, 代理只能使用 http
PS: 好些人留言说做出来的系统用不了, 实际上按我的步骤操作最后是肯定能跑起来的, 下面我提供一个自己做好的系统, 由于写文章的时候 centos 还是 7.5, 现在都已经升级为 7.6 了, 我就直接提供打包好的 7.6 了(系统账号: root 密码: admin)
注意: 这样使用的 aarch64 centos 系统 yum 安装社区的命令等等均没有什么问题, 唯一需要清除一点, 因为内核用的是自己的, 而不是官方的, 所以如果安装的第三方命令需要内核支持的话需要自己打开相关选项重新编译自己的内核。
百度网盘:
链接: https://pan.baidu.com/s/1a-lQcLt_Bim8kSm4ZCO8mw 提取码: 86te
最后上个 arm64 单板启动后的截图:
1.3. vmtool 挂载
在点击挂载的时候, 实际上 vmtools 的 ISO 是挂载到 /dev/cdrom
下边, 所以挂载后先查看文件是否存在:
ls /dev/cdrom
如果存在创建一个临时文件夹, 挂载到 /dev/cdrom
:
# 创建临时文件
mkdir /mnt/cdrom
# 挂载到临时文件
mount -t auto /dev/cdrom /mnt/cdrom
然后把 ISO 中的 vmtools 的安装包拷贝出来:
cd /mnt/cdrom
# 把对用的安装包拷贝到根目录 (gz, rpm)
cp vmtools-* /root
然后退出 /mnt/cdrom
文件, 再 umount:
umount /mnt/cdrom
1.4. VMware Tools 共享目录
注意: 不要使用 VMware 共享 mysql docker 的数据目录, 权限不够。试了下面的权限设置方法, 没用, 不折腾了。
# 查看共享文件夹
vmware-hgfsclient
# 创建挂载文件夹
mkdir /mnt/hgfs
# 挂载
vmhgfs-fuse /mnt/hgfs
1.5. VMware 共享目录权限问题
默认情况下, 是不允许 guest 机修改宿主机目录权限的, guest 机的 root 用户也不行。
Permission denied
这在某些情况下会成为一个问题, 所以需要设置允许 guest 机修改。
解决方法是:
- 修改
/etc/fuse.conf
vi /etc/fuse.conf
将 user_allow_other
取消注释 (删除最前面的 #
)
# mount_max = 1000
user_allow_other
- 执行命令
执行下列命令挂载, 即可实现所有的用户都可以访问 /mnt/hgfs
vmhgfs-fuse -o allow_other .host:/ /mnt/hgfs
# 或者
vmhgfs-fuse -o nonempty -o allow_other /mnt
如果已经挂载, 通过下列命令进行卸载后, 再进行挂载
umount /mnt/hgfs
1.5.1. 设置用户归属
vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other -o uid=0 -o gid=0 -o umask=022
注意: 上面命令中的 uid 和 gid 需要根据 Linux 用户 uid 来决定, 在 home 目录输入 id 命令即可查询:
[root@localhost mysql8]# id
uid=0(root) gid=0(root) groups=0(root)
[root@localhost mysql8]# umask
0022
1.6. vmware 完全使用内存不使用硬盘
查了很多资料, 发现下面这个可用, 来自 官方。
在 vmware 的配置文件 C:\ProgramData\VMware\VMware Workstation\settings.ini
(Win7) 或者 C:\Documents and Settings\All Users\Application Data\VMware\VMware Workstation\settings.ini
(WinXP) 或者单个虚拟机的 .vmx
文件最下面增加如下:
sched.swap.vmxSwapEnabled = "FALSE"
注意事项:
- 在启动的时候务必保证内存够用, 否则会报 “内部错误” 的错误;
- 不能重复, 否则会报无效的虚拟机文件。
一般情况下加入以下进行最大优化:
sched.swap.vmxSwapEnabled = "FALSE"
mainMem.backing = "swap"
sched.mem.pshare.enable = "FALSE"
mainMem.useNamedFile = "FALSE"
prefvmx.minVmMemPct = "100"
prefvmx.useRecommendedLockedMemSize = "TRUE"
mainMem.partialLazySave = "FALSE"
mainMem.partialLazyRestore = "FALSE"
priority.grabbed = "high"
priority.ungrabbed = "normal"