<input id="ohw05"></input>
  • <table id="ohw05"><menu id="ohw05"></menu></table>
  • <var id="ohw05"></var>
  • <code id="ohw05"><cite id="ohw05"></cite></code>
    <label id="ohw05"></label>
    <var id="ohw05"></var>
  • 永久解決 WSL vm.max_map_count 65530 is too low 的問題

    問題

    在使用基于 WSL 的 Docker 的時候,啟動 ES 總是會出現 vm.max_map_count 65530 is too low 問題,導致容器無法啟動,網上答案基本就兩種,例如 stackoverflow 這個鏈接給出的答案是:

    $ wsl -d docker-desktop
    $ sysctl -w vm.max_map_count=262144
    

    值得注意的是,以上修改只在當前會話有效,重啟 Windows 和 WSL 都要重新設置,后面作者也給出回答:

    If you want to set this permanently, you need to edit /etc/sysctl.conf and set vm.max_map_count to 262144.

    但是該設置在 WSL 中并不生效,因為 WSL 并不會讀取 /etc/sysctl.conf 配置文件

    解決方案

    在嘗試 N 種方案沒有效果后,決定另辟蹊徑,從其他方面考慮,既然每次啟動都要執行 sysctl -w vm.max_map_count=262144 命令,那就想辦法讓它自動執行。通過以下兩種方式可以實現

    一:在 WSL2 ubuntu 里面設置啟動參數,命令如下:

    $ vim /etc/init.wsl
    #! /bin/sh
    sysctl -w vm.max_map_count=262144
    

    然后切回到 Windows 中,創建文件,并且加入以下內容:

    Set ws = WScript.CreateObject("WScript.Shell")        
    ws.run "wsl -d Ubuntu-20.04 -u root /etc/init.wsl"
    

    以上的 Ubuntu-20.04 可以改為你的 WSL Linux 發行版名稱,你可以通過 wsl --list 查看

    然后將文件通過 *.vbs 格式保存,例如我的是 WSL-linux-start.vbs 文件,然后按 "Win + R" 輸入 shell:startup 打開啟動目錄,將 *.vbs 放入即可,如下:

    image-20220616212735536

    驗證

    通過以上設置,在重啟電腦后,打開 WSL 輸入命令,可以看到分配的虛擬內存為 262144:

    $ sysctl vm.max_map_count
    vm.max_map_count = 262144
    

    這樣就解決了每次啟動都需要重復輸入命令的問題了

    posted @ 2022-06-16 21:31  小二十七  閱讀(19)  評論(0編輯  收藏  舉報
    国产美女a做受大片观看