在wsl2中安装archlinux

news2024/12/28 0:16:07

在之前的博客中,我介绍了如何在虚拟机或者真实机上安装archlinux并且进行一定的配置,但是实际上Linux不管怎么配置在日常使用中都没有Windows简单便利,在开发有关Linux的程序时过去用虚拟机或者直接在Windows上使用ssh在远程服务器上进行开发。但是微软发布了wsl以及后续更新的wsl2,可以很方便的实现在Windows中拥有两个系统,并且两个系统可以进行互联。在不改变Windows操作习惯的基础之上操作Linux。进一步提升了Linux的便捷易用性。

晚上的教程大多数都是使用wsl安装Ubuntu的,作为一个铁archlinux党,我不太用得惯Ubuntu,那么就要想办法安装自己习惯的arch,好在在网上有现成的教程。终于完成了这一工作

准备工作

安装wsl2,需要Windows 11或者Windows 10 的19041 及更高版本。因此如果系统版本不够需要提前进行系统的更新操作

我们需要在Windows功能中开启 “适用于Linux的Windows子系统”,如下图所示
在这里插入图片描述

勾选之后可能需要重启。

或者也可以在应用商店进行安装。这里就不得不吐槽一下微软的应用商店了,它居然能做到挂梯子和不挂梯子一样卡。我这里死活登录不上,就不演示这种方式了

安装完成之后可以在powershell中查看它的版本

wsl -v

在这里插入图片描述
从图上可以看到,我们已经安装上了wsl2

安装 archlinux

安装完wsl2 之后,我们可以在GitHub官网上下载最新的ArchWSL。这里我们要下载两个东西,一个是不带online 标识的appx文件以及同名的cer文件。
下载完成之后双击 .cer 文件,点击“安装证书”,选择“本地计算机”,在下一个页面中选择“将所有的证书都放入下列存储”,点击“浏览”,选择“受信任的根证书颁发机构”,执行安装。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
证书安装完成之后,我们双击下载的appx 文件,直接点击安装

appx文件安装完成之后,可以使用

wsl --list

来查看当前wsl中的Linux子系统
在这里插入图片描述
此时已经有了对应的系统了

我们在命令行输入 arch 即可进入archlinux子系统,此时是以root的身份进入的

配置arch

配置普通用户

新系统安装之后的第一件事就是创建一个普通用户,并且永远以这个普通用户进行登录,在需要的时候使用 sudo 来申请某些管理员权限进行操作

我们在之前安装archlinux的教程中已经提到过对应的操作方式

useradd -m -G wheel -s /bin/bash arch

我们创建一个名为 arch 的用户,并指定shellbash
接下来我们使用

passwd arch
passwd root

来设置rootarch两个用户的密码。

因为archlinux中安装的编辑器是vim,所以我们先将vim设置一个名为vi的别名

ln -sf /usr/bin/vim /usr/bin/vi

然后 使用visudo 将文件中 #%whell ALL=(ALL) ALL 这行的注释去掉,以便当前用户能够使用 sudo 命令

接着可以使用su arch 将当前用户切换到arch。并且使用命令sudo pacman -Syyu来更新系统,同时测试一下输入用户密码之后能否执行一些root命令

之后我们推出 arch 子系统,在powershell中执行

Arch.exe config --default-user arch

来指定默认使用arch 来登录系统

设置完登录用户之后,在powershell中输入 arch 进入archlinux子系统中,此时我们发现,登录用户已经变成arch了

初始化密钥环和更新源

接着我们执行以下命令,来初始化密钥环

sudo pacman-key --init
sudo pacman-key --populate
sudo pacman -Syy archlinux-keyring
sudo pacman -Su

鉴于目前国内的网络环境,上述几条命令有可能执行出问题或者卡着不动,我们可以进行换源的操作,这里我采用清华源
/etc/pacman.d/mirrorlist 文件的最顶端添加

Server = https://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch

开启32位软件库支持与ArchLinuxCN库的支持

按照之前博客中的内容,我们先打开 32位软件的支持,在 /etc/pacman.conf 中去掉[multilib]一节中两行的注释,来开启 32 位库支持。

然后在该文件的结尾处加入下面的文字,来开启 ArchLinuxCN 源

[archlinuxcn]
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinuxcn/$arch

之后通过以下命令安装 archlinuxcn-keyring 包导入 GPG key。

pacman -Sy archlinuxcn-keyring

具体的使用可以看镜像的官方文档

如果报错可以看官网或者看我博客的办法是否能解决

上述命令都成功之后使用 sudo pacman -S yay 来安装 yay

成功之后我们可以试着安装一下neofetch

yay -S neofetch

安装成功之后,执行neofetch 就可以看到系统信息了
在这里插入图片描述

配置终端

基础内容安装完成之后,我们可以对终端进行一下美化和配置,毕竟日常使用上大部分时间都是直接在终端中使用,有一个漂亮点的终端用起来也舒服一点

我们首先安装一下必要的组件

sudo pacman -S net-tools man-db man-pages man-pages-zh_cn texinfo ntfs-3g tree pacman-contrib neofetch wget git usbutils pciutils acpi base-devel

接着我们安装一下相应的字体

sudo pacman -S adobe-source-han-serif-cn-fonts wqy-zenhei
sudo pacman -S noto-fonts-cjk noto-fonts-emoji noto-fonts-extra

## 这里我把官方推荐的所有带unicode标识的全装上了,这样后续就不太会出现乱码的情况了
yay -S ttf-ubraille ttf-symbola otf-cm-unicode ttf-arphic-ukai ttf-arphic-uming ttf-dejavu gnu-free-fonts ttf-google-fonts-git nerd-fonts-complete ttf-hack ttf-joypixels

默认的bash 功能比较弱,我们采用zsh

sudo pacman -S zsh

然后将默认的shell 设置为 zsh

chsh -l # 列出系统中存在的所有shell
chsh -s /bin/zsh #根据上一个命令得到的shell路径,设置当前shell

我们推出系统再次登录的时候,shell已经切换到zsh了,我们按照提示生成一个默认的 .zshrc 文件即可

为了支持终端上显示一些图形,我们需要安装 nerd-font 。可以在GitHub上找到 nerd-font

可以通过

git clone https://github.com/ryanoasis/nerd-fonts.git --depth=1

来克隆,也可以通过在宿主机上下载zip包,然后传入archlinux 中。我们可以直接在Windows的文件资源管理器上输入 \\wsl$ 来访问archlinux的文件系统

在获取项目之后,在项目的根目录执行 sh ./install.sh 来执行安装
需要注意的是,如果你是通过本地的windows terminal 来ssh到远程archlinux化,本地也需要安装 nerd-font 因为这个时候显示的责任在宿主机的终端程序。需要宿主机本身也有那些字体。Windows上可以使用 .\install.ps1 来安装

字体准备好后,我们可以使用 powerlevel10k 来美化终端

git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ~/powerlevel10k
echo 'source ~/powerlevel10k/powerlevel10k.zsh-theme' >>~/.zshrc
source ~/.zshrc

接着按照它的提示选择样式即可,如果不满意了,可以在 .zshrc 中对应的配置,直接重新选择样式即可。完成之后,可以看到终端相对来说比较好看了
在这里插入图片描述
接下来我们对zsh 进行一些简单的配置
安装 zsh-autosuggestions ,它是一个命令提示插件,当你输入命令时,会自动推测你可能需要输入的命令,按下右键可以快速采用建议

git clone https://github.com/zsh-users/zsh-autosuggestions ~/.zsh/zsh-autosuggestions

.zshrc 中添加下列代码

source ~/.zsh/zsh-autosuggestions/zsh-autosuggestions.zsh

安装完成之后效果如下
在这里插入图片描述
我们可以按TAB自动补全

zsh-syntax-highlighting 是一个命令语法校验插件,在输入命令的过程中,若指令不合法,则指令显示为红色,若指令合法就会显示为绿色。

git clone https://github.com/zsh-users/zsh-syntax-highlighting.git
echo "source ${(q-)PWD}/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh" >> ${ZDOTDIR:-$HOME}/.zshrc

安装完成之后效果如下
在这里插入图片描述
autojump 是一个懒人神奇,有了它,当我们此前跳转过某个路径之后,可以很方便的跳转到之前路径。例如我们之前跳转到

/usr/bin
/home/arch

那么我们可以直接使用 j b 跳转到 /usr/bin 中,或者在其他目录使用 j a 跳转到家目录中,如果跳转的目录路径有相似的字符,可能需要多输入一些字符来区分

我们下面来安装它

git clone https://github.com/wting/autojump.git
cd autojump
./install.py

安装好之后,它会提示我们需要手动将下列命令加入到 /zshrc 中,我们添加就好了

thefuck 这也是一个懒人神奇,当命令输入错误的时候只要fuck一下就好了
在archlinux中,我们可以直接使用

sudo pacman -S thefuck

我们将下列代码放入到 .zshrc

eval $(thefuck --alias)

安装完成之后,效果如下
在这里插入图片描述

使用gui程序

在Windows11和Windows 10 的内部版本在19045以上的时候,wsl本身就可以直接在打开Linux的gui程序。这里我们安装一个firefox作为测试例子

sudo pacman -S firefox firefox-i18n-zh-cn

我们启动firefox,这个时候报错了
在这里插入图片描述
不要慌,这里我们需要链接wslg的接口套接字到x11

sudo rm -r /tmp/.X11-unix
ln -s /mnt/wslg/.X11-unix /tmp/.X11-unix

这个时候再打开就能在Windows上看到firefox的界面了
在这里插入图片描述
还有一个惊喜,那就是我们可以从开始菜单中找到对应的Linux gui程序,并且直接点击就能打开。
在这里插入图片描述

使用rdp连接

除了这种使用方式,我们还可以使用rdp通过Windows的远程连接来进入archlinux子系统。这里我不太推荐这种方式,因为上面那种方式可以直接在Windows上使用linux gui程序,已经特别方便了,而且这种方式需要有桌面环境,需要消耗资源,但是当你的Windows版本不够的时候,可以考虑使用这种方式来使用gui程序

这里我们先安装桌面环境

sudo pacman -S xfce4 xfce4-goodies

这里我采用轻量的xfce4,不管是使用kde 还是gnome,感觉都比较重

接着我们下载rdp相关的软件

yay -S xrdp xorgxrdp-glamor pulseaudio-module-xrdp

根据 arch wiki 的说法,xrdp 仅支持使用XVNC作为后端,所以这里我们需要安装一下 vnc

sudo pacman -S tigervnc

安装完成之后,需要在home目录下,添加一个.xinitrc 文件,这个文件会在rdp新建一个虚拟桌面的时候执行,文件的内容如下

unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
exec dbus-launch startxfce4

最后我们启动一个rdp服务

sudo systemctl start xrdp.service

最后我们就可以使用Windows远程桌面连接上Linux的桌面了
在这里插入图片描述
好了,配置到这里也就基本结束了,希望各位小伙伴在其中玩的愉快。总体来说Windows的wsl用起来还是很香的,特别是使用wslg服务在Windows中使用Linux的gui程序。它用起来就跟在Windows上开启一个gui程序一样丝滑,可以很好的将Linux程序融入到Windows的工作流中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2253505.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python毕业设计选题:基于大数据的淘宝电子产品数据分析的设计与实现-django+spark+spider

开发语言:Python框架:djangoPython版本:python3.7.7数据库:mysql 5.7数据库工具:Navicat11开发软件:PyCharm 系统展示 管理员登录 管理员功能界面 电子产品管理 系统管理 数据可视化分析看板展示 摘要 本…

点动和自锁混合控制

中继:KA 线圈有电,常开吸合,常闭断开 SB1——>电机转(自锁)——>KA1(自锁标志位) SB2——>电机停 SB3——>电机点动——>KA2(点动标志位) 严禁出现双…

Linux权限机制深度解读:系统安全的第一道防线

文章目录 前言‼️一、Linux权限的概念‼️二、Linux权限管理❕2.1 文件访问者的分类(人)❕2.2 文件类型和访问权限(事物属性)✔️1. 文件类型✔️2. 基本权限✔️3. 权限值的表示方法 ❕2.3 文件访问权限的相关设置方法✔️1. ch…

代码随想录算法训练营第51期第8天 | 344. 反转字符串、541.反转字符串 II、卡码网:54.替换数字

344. 反转字符串 344. 反转字符串https://leetcode.cn/problems/reverse-string/1.这道题很简单,直接使用双指针就可以 2.这里有一个可以优化的点,left和right-- 可以放在字符串替换的时候完成,没必要单独写 void reverseString(char* s, …

Linux CentOS

​阿里云开源镜像下载链接 https://mirrors.aliyun.com/centos/7/isos/x86_64/ VMware 安装 CentOS7 自定义 下一步 选择稍后安装操作系统 选择 输入 查看物理机CPU内核数量 CtrlShiftEsc 总数不超过物理机内核数量 推荐内存 自选 推荐 推荐 默认 拆分成多个 默认 自定义硬件…

NineData云原生智能数据管理平台新功能发布|2024年11月版

本月发布 8 项更新,其中重点发布 2 项、功能优化 6 项。 重点发布 数据库 Devops - 数据生成支持多个数据源 NineData 支持在数据库中自动生成符合特定业务场景的随机数据,用于模拟实际生产环境中的数据情况,帮助用户在不使用真实数据的情况…

Altium Designer基础知识2:交互式差分布线

Altium Designer基础知识2:交互式差分布线 一、本文内容与前置知识点1. 本文内容2. 所用软件 二、差分式布线介绍1. 介绍2. 使用场景 三、布线流程1. 创建差分式布线对2. 布线 一、本文内容与前置知识点 1. 本文内容 Altium Designer的基础知识,差分布…

【从零开始的LeetCode-算法】74. 搜索二维矩阵

给你一个满足下述两条属性的 m x n 整数矩阵: 每行中的整数从左到右按非严格递增顺序排列。每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target ,如果 target 在矩阵中,返回 true ;否则,返回 false 。…

人工智能助力SEO优化关键词策略提升网站流量

内容概要 在当今数字化迅速发展的时代,人工智能(AI)已成为SEO优化中不可或缺的工具。通过使用先进的智能算法,AI可以分析用户行为数据,从而洞察用户的搜索意图和偏好。这样的分析不仅能帮助网站管理者了解目标受众&am…

GPT vs Claude到底如何选?

美国当地时间6月20日,OpenAI的“劲敌”Anthropic公司发布了最新模型Claude 3.5 Sonnet。据Anthropic介绍,该模型是Claude 3.5系列模型中的首个版本,也是Anthropic迄今为止发布的“最强大、最智能”的模型。它不仅在性能上超越了竞争对手和自家…

设计模式——Chain(责任链)设计模式

摘要 责任链设计模式是一种行为设计模式,通过链式调用将请求逐一传递给一系列处理器,直到某个处理器处理了请求或所有处理器都未能处理。它解耦了请求的发送者和接收者,允许动态地将请求处理职责分配给多个对象,支持请求的灵活传…

SQLite:DDL(数据定义语言)的基本用法

SQLite:DDL(数据定义语言)的基本用法 1 主要内容说明2 相关内容说明2.1 创建表格(create table)2.1.1 SQLite常见的数据类型2.1.1.1 integer(整型)2.1.1.2 text(文本型)2…

【Elasticsearch】实现分布式系统日志高效追踪

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,…

WEB安全 PHP学习

PHP基础 PHP编码显示问题 header ("Content-type: text/html; charsetgb2312"); header("Content-Type: text/html;charsetutf-8"); windows需要使用gbk编码显示 源码是 <?php header ("Content-type: text/html; charsetgb2312"); sys…

MySQL 单表练习

DQL练习1-学生表 创建如下学生表 create table student( id int, name varchar(20), gender varchar(20), chinese int, math int, english int ); insert into student values (1,张明,男,89,78,90), (2,李进,男…

详解Java数据库编程之JDBC

目录 首先创建一个Java项目 在Maven中央仓库下载mysql connector的jar包 针对MySQL版本5 针对MySQL版本8 下载之后&#xff0c;在IDEA中创建的项目中建立一个lib目录&#xff0c;然后把刚刚下载好的jar包拷贝进去&#xff0c;然后右键刚刚添加的jar包&#xff0c;点击‘添…

第32天:安全开发-JavaEE应用Servlet路由技术JDBCMybatis数据库生命周期

时间轴&#xff1a; 32天主要学习内容&#xff1a; 1、JavaEE-HTTP-Servlet技术 2、JavaEE-数据库-JDBC&Mybatis java技术使用历史&#xff08;2023 &#xff09;&#xff1a; JavaEE-HTTP-Servlet&路由&周期: java学习范围&#xff1a; 3、Java: 功能:数据…

【大数据技术基础】 课程 第3章 Hadoop的安装和使用 大数据基础编程、实验和案例教程(第2版)

第3章 Hadoop的安装和使用 3.1 Hadoop简介 Hadoop是Apache软件基金会旗下的一个开源分布式计算平台&#xff0c;为用户提供了系统底层细节透明的分布式基础架构。Hadoop是基于Java语言开发的&#xff0c;具有很好的跨平台特性&#xff0c;并且可以部署在廉价的计算机集群中。H…

VTK中矩阵vtkMatrix4x4类的介绍和使用

1、矩阵-齐次坐标介绍 常见的点一般是Pt&#xff08;X,Y,Z&#xff09;&#xff0c;相当于一个13矩阵&#xff0c;而矩阵相乘的话一般是第一个矩阵的列数要等于第二个矩阵的行数。此处需要引入齐次坐标的概念&#xff1a;从广义上讲&#xff0c;齐次坐标就是用n1维向量表示n 维…

RoGS: Large Scale Road Surface Reconstruction based on 2D Gaussian Splatting

RoGS 摘要简介RoGS基于高斯面元的道路表面表示(Road Surface Representation Based on Guassian Surfel)2D Gaussian Surfel:Road Surface Modeling:Why use 2D Gaussian Surfels? 基于轨迹的初始化&#xff08;Trajectory-base Initialization&#xff09;优化&#xff08;Op…