• Windows安装Ubuntu、Docker


    1 安装Ubuntu

    简单安装 wsl --install

    1.1 启动子系统

    控制面板 -> 程序 -> 程序和功能 -> 启用或关闭Windows功能:勾选适用于Linux的Windows子系统,确定,重启电脑
    在这里插入图片描述

    1.2 下载

    打开win10的Microsoft Store,搜索Ubuntu,下18.04LTS版本
    在 windows商店中搜索 “wsl” (Windows Subsystem for Linux 适用于Linux的Windows子系统),点击获取这些应用

    在这里插入图片描述

    1.3 安装

    启动Ubuntu(桌面可能没有,在开始菜单栏找),需要等一会,安装
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    配置用户名和密码
    在这里插入图片描述

    1.4 升级WSL2

    Windows中WSL2(子系统)安装前提条件
    版本:win10专业版
    对于 x64 系统:版本 1903 或更高版本,采用 内部版本 18362 或更高版本。
    低于 18362 的版本不支持 WSL 2。 使用 Windows Update 助手更新 Windows 版本。
    cmd ->ver
    在这里插入图片描述

    Windows中WSL2(子系统)安装步骤(默认安装C盘)
    以管理员权限运行 powershell
    在这里插入图片描述
    启用Windows10子系统功能,再打开的powershell窗口中输入如下命令:

    dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
    
    • 1

    启用虚拟机平台功能,再打开的powershell窗口中输入如下命令:

    dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
    
    • 1

    或者如下打开
    在这里插入图片描述

    重启电脑
    下载 Linux 内核更新包(适用于 x64 计算机的 WSL2 Linux 内核更新包)
    https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
    将 WSL 2 设置为默认版本,再打开的powershell窗口中输入如下命令:

    wsl --set-version Ubuntu-18.04 2
    wsl --set-default-version 2
    
    • 1
    • 2

    在这里插入图片描述
    ubuntu1804.exe config --default-user root

    1.5 设置默认root用户登入

    Windows中WSL2(子系统)设置默认root用户登入
    C:\Users\88578\AppData\Local\Microsoft\WindowsApps\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\ubuntu1804.exe

    cmd到此目录下,执行以下命令
    ubuntu.exe config --default-user root
    重启WSL子系统即可看到效果,默认登入的就是root账户了

    1.6 无法访问网络的解决办法

    打开PowerShell窗口,编辑/etc/wsl.conf文件,添加如下内容

    [network]
    generateResolvConf = false
    
    • 1
    • 2

    PowerShell重启WSL

    wsl.exe --shutdown
    
    • 1

    打开PowerShell窗口,编辑/etc/resolv.conf文件,添加如下内容

    nameserver 223.5.5.5
    nameserver 223.6.6.6
    
    • 1
    • 2

    1.7 开机启动配置

    在子系统中创建脚本
    打开PowerShell窗口,编辑/etc/init.wsl

    sudo vim /etc/init.wsl
    
    • 1

    添加如下内容

    #! /bin/sh
    /etc/init.d/ssh start
    /etc/init.d/mysql start
    /etc/init.d/php-fpm start
    /etc/init.d/nginx start 
    
    • 1
    • 2
    • 3
    • 4
    • 5

    授权

    sudo chmod +x /etc/init.wsl
    
    • 1

    在Windows中创建脚本
    在这里插入图片描述
    打开Windows 启动脚本目录,在该目录下新建 linux-start.vbs,添加如下内容(wsl -d后面的参数是你所安装的子系统的版本 ,可通过wsl -l查看)

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

    在这里插入图片描述
    重启Windows即可

    1.8 安装ssh

    卸载同时清除openssh-server软件包和软件的配置文件,(没有安装就不用卸载重装,直接安装)

    sudo apt-get purge openssh-server
    
    • 1

    下载并安装openssh-server服务

    sudo apt-get install openssh-server
    
    • 1

    编辑/etc/ssh/sshd_config配置文件,并修改如下内容

    sudo vim /etc/ssh/sshd_config
    #需要修改的地方
    Port 22 #默认即可,如果有端口占用可以自己修改
    PubkeyAuthentication yes #默认是Public Key登录,我这里注释掉改为用户名密码登录
    PasswordAuthentication yes #允许用户名密码方式登录
    
    • 1
    • 2
    • 3
    • 4
    • 5

    启动ssh-server

    sudo service ssh start
    
    • 1

    查看ssh服务状态,是否启动成功

    sudo service ssh status
    
    • 1

    1.9 window和WSL2(子系统)如何互传文件

    示例:将window系统下的D:software/mongodb-linux-x86_64-rhel70-4.4.13.tgz上传到WSL2(子系统)的/usr/local目录下
    在WSL2(子系统)中执行如下命令,即可
    cp /mnt/d/software/nmongodb-linux-x86_64-rhel70-4.4.13.tgz /usr/local

    1.10

    第一步:备份源文件
    sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup
    第二步:编辑/etc/apt/sources.list文件
    在文件最前面添加以下条目,之后保存即可生效(以阿里云镜像为例,操作前请做好相应备份):

    vi /etc/apt/sources.list
    
    deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    wsl2地址每次重新开机之后都会发生变化
    一般来说这不是什么大问题,但是别忘了我们要wsl是干啥的,我们总是希望能够在windows中访问wsl中的一些服务,比如安装的mysql、redis等,如果wsl的ip地址总是变化,岂不是每次开机都要在windows中手动设置一次ip地址[ 1 ]?固定ip地址的方法比较简单,直接运行以下脚本即可,我这里安装了docker,有些小伙伴没安装docker则需要修改下脚本才行。

    @echo off
    setlocal enabledelayedexpansion
    
    wsl -u root service docker start | findstr "Starting Docker" > nul
    if !errorlevel! equ 0 (
        echo docker start success
        :: set wsl2 ip
        wsl -u root ip addr | findstr "192.168.169.2" > nul
        if !errorlevel! equ 0 (
            echo wsl ip has set
        ) else (
            wsl -u root ip addr add 192.168.169.2/28 broadcast 192.168.169.15 dev eth0 label eth0:1
            echo set wsl ip success: 192.168.169.2
        )
    
        :: set windows ip
        ipconfig | findstr "192.168.169.1" > nul
        if !errorlevel! equ 0 (
            echo windows ip has set
        ) else (
            netsh interface ip add address "vEthernet (WSL)" 192.168.169.1 255.255.255.240
            echo set windows ip success: 192.168.169.1
        )
    )
    pause
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    将它保存到文件,比如划分虚拟局域网&启动docker.bat,然后将其放到windows启动目录下[ 2 ]:
    C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup
    之后,每次电脑启动之后就会自动执行该脚本了

    局域网远程登陆wsl2
    关闭防火墙或者设置入站规则
    其中设置入站规则是推荐的方式,网上教程较多,不赘述。
    设置端口转发,让windows转发来自特定端口的请求到wsl2
    设置端口转发的方法如下:

    interface portproxy add v4tov4 listenport=【宿主机windows平台监听端口】 listenaddress=0.0.0.0 connectport=【wsl2平台监听端口】 connectaddress=【wsl2平台ip】
    
    • 1

    比如,我这里使用如下命令配置了win10 IpV4协议端口号2222转发到地址为192.168.169.2的wsl端口号2222

    netsh interface portproxy add v4tov4 listenport=2222 listenaddress=0.0.0.0 connectport=2222 connectaddress=192.168.169.2
    
    • 1

    查看端口转发

    netsh interface portproxy show all
    
    • 1

    删除端口转发

    netsh interface portproxy delete v4tov4 listenport=9696 listenaddress=0.0.0.0
    
    • 1

    完成以上四步设置,即可在局域网使用securityCRT工具或者putty远程连接wsl了。

    1.11 卸载WSL

    PowerShell:
    rm -Recurse $env:localappdata/lxss/

    Cmd:
    DEL /S %localappdata%\lxss\

    2 安装docker

    sudo apt-get update
    sudo apt-get install \
        apt-transport-https \
        ca-certificates \
        curl \
        software-properties-common
    curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
    sudo add-apt-repository \
        "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu \
        $(lsb_release -cs) \
        stable"
    sudo apt-get update
    sudo apt-get install docker-ce docker-ce-cli containerd.io
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
    sudo chmod +x /usr/local/bin/docker-compose
    
    • 1
    • 2
    使用最方便的方法安装docker
    curl -fsSL get.docker.com -o get-docker.sh
    sudo sh get-docker.sh --mirror Aliyun
    设置不使用sudo运行docker
    如果不设置,每次使用docker命令都需要加上sudo很麻烦
    把当前用户加入docker组就可以了
    sudo groupadd docker
    sudo gpasswd -a ${USER} docker
    newgrp - docker
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    WSL2 是基于虚拟机的,所以可以在后台运行各种任务,比如 Docker 等等,但是带来的相应问题就是会占用一部分内存,使用 wsl --shutdown 可以再不使用的时候停止它,以节约资源

    在windows资源管理器内输入\wsl$,就可以是root根目录了

    访问\wsl$后,在windows中做一个网络隐射,比如Z盘
    在这里插入图片描述

    wslconfig配置文件限制wsl的效率

    1、新建一个文本文件,重命名为.wslconfig,文本编辑器打开输入:
    [wsl2]
    memory=8GB
    processors=4
    swap=0
    localhostForwarding=true
    说明:
    memory为系统内存上限,这里我限制最大8gb,可根据自身电脑配置设置
    processors为虚拟处理器上限,这里我限制最大为4,可根据自身电脑配置设置
    2、将文件拷贝到windows用户文件夹根目录
    C:\Users.wslconfig
    3、关闭wsl
    wsl --shutdown

    更换为国内源
    查看系统版本:命令(可拷贝后到Ubuntu界面鼠标右键赋值)
    lsb_release -a
    这里把镜像换成国内的阿里源

    找到C:\Users***\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\LocalState\rootfs\etc\apt\

    ====上面是未迁移的时候,如果已迁移,适用下面的=

    Z:\etc\apt\

    目录下的sources.list 文件

    用记事本打开文件,将内容替换成下面的内容

    deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    保存,关闭记事本
    然后在Ubuntu窗口执行 sudo apt-get update

    以上就完成了windows10安装Ubuntu18.04子系统,并升级到WSL2,且迁移了路径,更换了国内源;然后就可以获取OpenHarmony源码进行编译了

  • 相关阅读:
    【LeetCode】每日一题 2023_11_16 最长奇偶子数组(枚举,模拟)
    M4Singer CUDA error: no kernel image is available for execution on the device
    postgresql源码学习(十四)—— 行锁②-update操作与行锁
    CSS中的层叠上下文
    深入学习 Redis Sentinel - 基于 DockerCompose 编排哨兵分布式架构,理解工作原理
    Unity3D之动态生成指定数量带间隔的地面
    tensor的mode-n展开和mode-n乘积
    Windows常用快捷键与查询命令
    Arduino WIFI智能小车 无线视频遥控小车(论文+程序+原理图+驱动+安装手册等)
    数据挖掘期末复习
  • 原文地址:https://blog.csdn.net/qq_37705525/article/details/127767770