zoukankan      html  css  js  c++  java
  • WSL重装、内核编译和编写驱动、系统调用笔记

    WSL + VS Code 使用LINUX环境

    WSL + VS Code Remote真香


    备份

    1、远程下载关键文件夹进行备份
    2、在进行任何操作前,都进行备份,以便回滚

    重置WSL(只对Ubuntu进行重置)

    1、对ubuntu的APP直接进行重置操作

    重装WSL(重装lxss)

    参考官方指南
    思路:关闭子功能,删除lxss内容,接着就是重新安装了
    注:
    1、建议完全根据说明走一遍
    2、授予管理员权限
    3、个别文件造成的损坏可以考虑直接复制别人的正常 lxll文件夹内容替换

    更新WSL 内核

    更新 WSL 2 Linux 内核

    编译Linux内核

    1. WSL 2(Ubuntu18.04)编译Linux内核(5.7.9)并替换掉WSL 2原有内核

    2. 为你的WSL 2编译一个最新的Linux内核吧!

    配置

    1、打开ubuntu等待重启几分钟关掉
    2、使用root权限

    sudo passwd
    su root
    

    3、Ubuntu更换国内源(坑点:根据Ubuntu的版本切换源)
    具体见:Ubuntu 20.04换阿里源

    3、Ubuntu更换国内源

    首先备份一下默认的源
    cp /etc/apt/sources.list /etc/apt/sourses.list.bak
    知道当前系统的代号,可以用以下命令:
    lsb_release -a
    更换默认源为阿里源,

    使用 sudo vim /etc/apt/sources.list 命令编辑,删除原来的内容,添加下面的阿里源信息(20.04版本 focal)

    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
    

    更换源之后,使用下面的命令更新一下

    sudo apt-get update
    sudo apt-get dist-upgrade
    
    4、内核编译、更新与安装软件(编译必备)
    参考:[为你的WSL 2编译一个最新的Linux内核吧](https://blog.csdn.net/qq_40856284/article/details/106535962)
    参考:实验说明书
    安装解决依赖的软件 `sudo apt install aptitude`
    我们需要安装编译内核所必要的依赖:
    `sudo apt-get install libncurses5-dev g++ make openssl libssl-dev bison flex libelf-dev bc`
    
    Ubuntu使用apt-get install安装软件时候,提示:
    

    E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)
    E: Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?

    出现原因:apt进程仍在或未正常退出,需要关闭apt进程,运行以下命令即可解决:
    `kill  | ps -aux | grep apt | awk '{print $2}'`
    或者 rm -rf /var/lib/dpkg/lock
    
    - 删除无用的文件
    sudo make mrproper
    sudo make clean
    - 设置配置文件
    获取WSL2-Linux-Kernel/edit/wsl-xyb-port-5.7.y/Microsoft/config-wsl
    - 编译内核
    - 安装内核模块(此部分有了bulid文件夹,可以进行驱动的编译了)
    - 加载模块(期间可能会遇到权限的问题,提权即可。)
    先给脚本文件增加可执行权限:chmod +x ./test_drv_load
    再以管理员身份运行加载脚本:sudo ./test_drv_load
    
    完成编译后,创建软链接:
    sudo ln -s /home/yao/WSL2-Linux-Kernel-4.19.84-microsoft-standard /usr/src/linux-headers-4.19.84-microsoft-standard
    
    $ makeclean;make
    
    $./test_drv_load
    
    接下来,编译并运行测试程序
    
    $gcc–o test test.c
    $./test
    测试程序运行效果如下:
    xxxxx
    
    最后,卸载驱动程序
    
    $./test_drv_unload
    
    通过dmesg命令可以查看内核打印的信息:
    
    $dmesg|tail–n10
    
    
    
    ---------------------------------
    
    

    aptitude

    常用命令

    aptitude update     更新可用的包列表
    aptitude upgrade    升级可用的包
    aptitude dist-upgrade   将系统升级到新的发行版
    aptitude install pkgname    安装包
    aptitude remove pkgname     删除包
    aptitude purge pkgname  删除包及其配置文件
    aptitude search string  搜索包
    aptitude show pkgname   显示包的详细信息
    aptitude clean  删除下载的包文件
    aptitude autoclean  仅删除过期的包文件
    
    sudo apt-get install aptitude
    # 安装 aptitude 包管理器
    sudo aptitude install libgtk2.0-dev
    # 提示未满足依赖关系,给出了类似1) libcairo2-dev [未安装的] 等提示,问是否接受该解决方案?[Y/n/q/?]
    n
    # 不接受该解决方案,然后会提示降级下列软件包,问是否接受该解决方案?[Y/n/q/?] 
    y
    # 接受降级,此时会发现新安装包列表里果然有libgtk2.0-dev,然后会提示您要继续吗?[Y/n/?]
    y
    # 继续,确认安装
    # 安装成功!其他搞不定的包也可以如此尝试,不过降级之前需要仔细看下版本号变化,如果差太多还需要慎重考虑
    
  • 相关阅读:
    Linux 安装 iptables防火墙
    CentOS最常用命令及快捷键整理
    WebAPI 和 webservice接口
    Linux 文件权限
    Linux查看系统信息的一些命令及查看已安装软件包的命令
    navicat连接虚拟机(centos)中的mysql
    Nmap扫描与Tcpdump抓包分析
    python 识别验证码自动登陆
    iptables开通某些端口
    hive的安装和使用
  • 原文地址:https://www.cnblogs.com/assignment/p/13945763.html
Copyright © 2011-2022 走看看