在 Mac 上使用 lima 作為 Linux 環境
目錄
前言
因為最近想打看看 picoCTF,需要使用 Linux 環境。由於我使用的是 MacOS,他畢竟不是 Linux,雖然有些指令可以通用,但在程式執行結果上有很大的不同。於是我決定使用 lima 作為我的 Linux container,原本有想過要用 VMWare 虛擬機的方式,但是一想到每次我想打打 CTF 就要讓這台老 MacBook pro(late 2013)受苦就於心不忍。
事實也是如此,我一開 VMWare,老夥伴的風扇就又開始叫了🤧。
安裝
我是使用 homebrew 安裝的,記得到官方網站下載喔。先輸入以下指令。
$ brew install lima # 安裝 lima
$ limactl start # 安裝虛擬機
當出現以下畫面,使用方向鍵上下來選擇配置,我們只要用預設的就行了,所以直接按 enter,看到READY就是完成了!
? Creating an instance "default" [Use arrows to move, type to filter]
> Proceed with the default configuration
Open an editor to override the configuration
Exit
...
INFO[0111] READY. Run `lima` to open the shell.
下載完成可以執行lima uname -a
來確認虛擬機已經在執行
$ Linux lima-default 5.15.0-39-generic #42-Ubuntu SMP Thu Jun 9 23:42:32 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
使用方式
直接在終端機輸入lima
就可以執行了,若要離開就直接輸入exit
。
(剛裝好時我還不知道怎麼離開,所以都用兩個 terminal 視窗,一個是 lima 一個是 zsh,不要跟我一樣蠢喔qq)
如果沒有要使用虛擬機也記得關掉它,不然他會默默吃掉你的記憶體,輸入lima stop [虛擬機名稱]
來關閉虛擬機。
至於容器的部分我還沒研究,這是 lima 的強項,它被號稱可以成為取代 docker 的 macOS Subsystem Linux。但畢竟我只是需要一個方便的 Linux 環境來練CTF,有興趣的朋友請參考lima原始碼。
問題一(無法讀寫的問題)
如果你在 lima 想要用mkdir
指令,或者用vim
簡單改一下檔案,可能會出現這行。lima mkdir cannot create directory Read-only file system
我在找資料時發現了這篇問答,原本也以為是系統資料出問題,但我的情況好像和他不太一項。後來我找到這篇 lima 的 Github issue,發現其實是 lima 設定檔的問題。以下的指令在 zsh 或 bash 中都能使用,如果你在 lima shell 中使用會發現找不到這個檔案喔。總之就是開 mac 原本的 terminal 就對了。解決方式如下。
- 修改設定檔
$ vim ~/.lima/default/lima.yaml # 先用 vim 編輯設定檔。
# 有點長我就不貼上來了,找到 writable: null 並改成 writable: true
writable: null -> writable: true
- 重新跑 lima
$ limactl list 這個指令可以列出所有正在執行的虛擬機,我看到的是名為 default 的虛擬機
$ limactl stop default 將它停止運行,default 可以替換成你的虛擬機名稱
$ limactl start default 同上,default 可以替換成你的虛擬機名稱
- 恭喜你成功了!