Ubuntu 論壇一個(gè)帖子指出,Windows 的 Linux 子系統(tǒng) WSL 1 在運(yùn)行 Ubuntu 20.04 LTS 時(shí)將會出現(xiàn)問題,提醒用戶注意相關(guān)版本的使用。
問題來自glibc 2.31 中的補(bǔ)丁,該補(bǔ)丁以類似于 UNIX 的方式實(shí)現(xiàn)了基于 CLOCK_REALTIME 的nanosleep() 庫調(diào)用。在 NT 內(nèi)核上模擬 UNIX 系統(tǒng)時(shí)鐘非常棘手。WSL 1 實(shí)現(xiàn)了最流行的基于時(shí)鐘的系統(tǒng)調(diào)用,但并非全部都實(shí)現(xiàn),并且沒有將 CLOCK_REALTIME 支持構(gòu)建到 nanosleep 中。
WSL 1 完全實(shí)現(xiàn)這一支持還需要一些時(shí)間,而除非是 Windows Insider 用戶,否則可能幾個(gè)月內(nèi)都不會見到問題修復(fù)。沒有此修復(fù)程序,WSL 1 上的 Ubuntu 20.04 往往會崩潰,甚至在升級到 Ubuntu 20.04 的過程中也會有問題。
用戶可以怎么做呢?對于 WSL 1 用戶,建議暫時(shí)停留在 Ubuntu 18.04 LTS,不向上升級到 20.04(幾周后發(fā)布)。
對于 WSL 2 用戶,Ubuntu 20.04 發(fā)布時(shí)可以隨意升級,甚至更早就可以使用非穩(wěn)定版本進(jìn)行測試。
對于升級到 WSL 2 的 WSL 1 用戶,當(dāng) Ubuntu 20.04 可用時(shí),應(yīng)首先使用以下命令將 Ubuntu 18.04 鏡像轉(zhuǎn)換為 WSL 2:
$ wsl.exe --set-version Ubuntu 2
再將其升級到 20.04。
而如果無論如何就是想要從 WSL 1 升級 Ubuntu 20.04,那么在升級前,先阻止 libc6 更新:
$ sudo apt-mark hold libc6
更多細(xì)節(jié)查看原帖:https://discourse.ubuntu.com/t/ubuntu-20-04-and-wsl-1/15291