由于公司笔记本的隐私问题前阵子购买了自用的 M1 Max 芯片的 MacBook Pro,64G 内存,心想着好好利用一下,装个虚拟机,然后运行 Oracle,结果很悲催。
–
先是尝试在 Parallels Desktop 上加载之前下载的 Linux iso 镜像文件,根本不能用。原来基于 Intel x86 架构的 Linux 不能装在基于 ARM 架构的 M1 芯片的笔记本上。
尝试下载最新的基于 ARM 架构的 Oracle Linux,https://download.oracle.com/otn-pub/otn_software/linux/OracleLinux-R9-U0-aarch64-dvd.iso ,安装没问题。装好以后抱有侥幸心理装一下 Oracle 12c,runInstaller 直接报错。
一顿谷歌,搜索了很多文章,总结一下有几种可行方案。
- 用 Parallel,VMware 或者 UTM 安装基于 ARM 的 Windows 11,然后在 Windows 11 里安装 Oracle。
直接放弃,我要的是在 Linux 下的 Oracle db。 - 用 docker。 直接放弃,不想弄个黑盒子。
- 用 UTM 安装基于 x86 平台的 Linux,然后再装 Oracle。 这个看起来不错,开心去尝试。结果安装 Redhat Linux 就用了非常之久,性能问题太严重了。放弃。
以上探索过程花了几个小时,我已经基本上放弃在笔记本上安装 Oracle 实验环境的打算了。
–
于是只好转换思路,不在本地安装虚拟机,能 ssh 到远程的 db server 上也可以。
首先想到的是自己在 “搬瓦工” 上买的两个 VPS,平时只用来 “科学上网”,正好利用一下。找到原来的账号密码 ssh 上去一看,只有 1G 内存,放弃。
尝试注册 Oracle Cloud,有文章说它可以提供永久免费的主机。注册搞了半天,最后通不过,应该是信用卡的问题。放弃。
尝试 AWS,注册成功,看一下 4G 内存的云机器,不便宜,放弃。
又看了下阿里云,4G 内存的主机每个月也要六七十块钱,偶尔用一下,不是很划算,放弃。
–
最后,竟然在最后,才想到自己改造成家用服务器的 2013 年买的 MacBook Pro。只要在上面安装 VMware,然后直接加载以前保存的虚拟机文件就可以飞速得到一个 Oracle 实验环境。
剩下的问题就是如何访问 Home Server (旧 MacBook Pro) 上的虚拟机,特别是不在家的时候该如何访问。
基本思路就是先 ssh 到 Home Server,然后再 ssh 到虚拟机里的 Linux,这样就可以运行 sqlplus 了。
在家里、同一个网段下访问很方便。
ssh -t -l <username> 10.0.0.6 ssh -o StrictHostKeyChecking=no [email protected]
外网访问的话有两个问题要解决,一是如何访问家里局域网里的 Home Server,二是安全问题。
因为我有公网 IP,在路由器上简单做个端口映射就好。没有公网 IP 的话需要去研究一下内网穿透方案。
ssh -t -l <username> -p <port> <public ip or dns name> ssh -o StrictHostKeyChecking=no [email protected]
因为我的 IP 是暴露在公网上,所以安全问题尤为重要。
- 路由器端开启了防火墙,只开放了两个必要的端口,一个是 sceen sharing,还有一个是 ssh,都端口映射到非默认端口。
- 先把 M1 笔记本上的 public key 复制到 Home Server 上的
~/.ssh/authorized_keys
,然后关闭 Home Server 的密码登录,只允许使用 public key 登录。这样安全性会更高。
vi /etc/ssh/sshd_config
MaxAuthTries 6
MaxSessions 10
PubkeyAuthentication yes
PasswordAuthentication no
ChallengeResponseAuthentication no
PermitRootLogin no
PermitEmptyPasswords no
-- restart sshd
sudo launchctl stop com.openssh.sshd
sudo launchctl start com.openssh.sshd
在另外的机器上测试 ssh,会得到下面的报错。
➜ ~/.ssh > ssh -t -l <username> -p <port> <public ip or dns name>
xxx@xxxx: Permission denied (publickey).
– 先这样吧,不折腾了。