riag/manjaro-linux-for-wsl

能不能做一个独立管理manjaro配置信息的[manjaro.exe]工具?

dishenwx opened this issue · 1 comments

能不能制作一个名叫manjaro.exe的工具或者等效的工具,可以设置manjaro的default user。
参考 microsoft docs

While WSL Config is helpful for settings that span or coordinate distributions, each Linux distribution independently manages its own configurations. To see distribution-specific commands, run [distro.exe] /?. For example ubuntu /?.

详细步骤见 WSL-DistroLauncher
配置信息貌似记录在了wslapi.dll这个动态库中。
参考 WslApiLoader.cpp

WslApiLoader::WslApiLoader(const std::wstring& distributionName) :
    _distributionName(distributionName)
{
    _wslApiDll = LoadLibraryEx(L"wslapi.dll", nullptr, LOAD_LIBRARY_SEARCH_SYSTEM32);
    if (_wslApiDll != nullptr) {
        _isDistributionRegistered = (WSL_IS_DISTRIBUTION_REGISTERED)GetProcAddress(_wslApiDll, "WslIsDistributionRegistered");
        _registerDistribution = (WSL_REGISTER_DISTRIBUTION)GetProcAddress(_wslApiDll, "WslRegisterDistribution");
        _configureDistribution = (WSL_CONFIGURE_DISTRIBUTION)GetProcAddress(_wslApiDll, "WslConfigureDistribution");
        _launchInteractive = (WSL_LAUNCH_INTERACTIVE)GetProcAddress(_wslApiDll, "WslLaunchInteractive");
        _launch = (WSL_LAUNCH)GetProcAddress(_wslApiDll, "WslLaunch");
    }
}

好吧,我解决了。那个distributionName只是一个字符串,也就意味着只要让这个字符串一致,其他的launcher.exe也可以使用。因此我找了一个Arch.exe的工具,重命名为manjaro.exe,就可以使用manjaro.exe来管理manjaro了。
Step1: 正常的安装:
LxRunOffline.exe install -n manjaro -f ../manjaro-linux-wsl-x86_64-2018-11-05.tar.gz -d G:\devel\wsl\manjaro-linux -r root.x86_64
Step2: 下载Arch.zip并解压
Step3: 将Arch.exe重命名为manjaro.exe
Step4: 测试运行.\manjaro.exe get --lxuid
发现完美兼容!进入manjaro的bash当中新建user,之后就可以运行.\manjaro.exe config --default-user username来配置默认登录账号了。