Tag: Linux

  • 快速入门:ZeroNSD DNS服务器指南

    快速入门:ZeroNSD DNS服务器指南

    你是否曾经遇到DNS问题,而最后的答案总是”这一定是DNS问题”?ZeroNSD是专为ZeroTier用户设计的DNS服务器,它可以帮助你解决与ZeroTier网络相关的DNS查询问题。本文将引导你快速入门使用ZeroNSD,以便在ZeroTier网络上提供高效的DNS服务。

    简介

    ZeroNSD是一个专为ZeroTier用户设计的DNS服务器,它允许你为ZeroTier网络提供定制的DNS解析服务。通过ZeroNSD,你可以实现以下目标:

    • 为ZeroTier网络提供高性能的DNS解析服务。
    • 自定义DNS记录以满足你的需求。
    • 通过ZeroTier网络轻松访问DNS服务器。

    请注意,ZeroNSD目前仍处于Beta测试阶段,但它已经可以在你的ZeroTier网络上提供可靠的DNS解析服务。

    先决条件

    在开始使用ZeroNSD之前,请确保你已经满足以下先决条件:

    概念上的先决条件

    • 当ZeroTier加入一个网络时,它会创建一个虚拟网络接口。
    • 当ZeroTier加入多个网络时,将会存在多个网络接口。
    • 当ZeroNSD启动时,它会绑定到一个ZeroTier网络接口。
    • 当ZeroTier加入多个网络时,需要多个ZeroNSD实例,每个网络接口对应一个实例。

    这意味着:

    • ZeroNSD将从运行它的节点访问。
    • ZeroNSD将从ZeroTier网络上的其他节点访问。
    • ZeroNSD将与节点可能连接的其他网络隔离开来。

    技术上的先决条件

    本快速入门使用了两台机器 – 一个是在Digital Ocean上的Ubuntu虚拟机,另一个是在住宅ISP上的OSX笔记本电脑。为了一步一步跟随本文,你需要提供类似的基础设施。如果你使用不同的平台,你应该能够以最少的努力弄清楚应该怎么做。

    步骤

    创建一个ZeroTier网络

    首先,你需要手动通过ZeroTier Central WebUI创建一个ZeroTier网络。

    1. 登录ZeroTier Central WebUI。
    2. 创建一个新的网络。

    安装ZeroTier

    接下来,你需要安装ZeroTier并将其加入你打算提供DNS服务的网络中。以下是在大多数平台的CLI上执行的命令。Windows用户可以从ZeroTier下载页面下载MSI安装程序。在本文的其余部分,请将示例网络ID“af78bf94364e2035”替换为你自己的网络ID。

    在Ubuntu上执行以下命令:

    $ curl -s https://install.zerotier.com | sudo bash
    $ sudo zerotier-cli join af78bf94364e2035
    $ sudo zerotier-cli set af78bf94364e2035 allowDNS=1

    授权节点

    在ZeroTier Central WebUI的成员部分,通过点击“Auth”按钮,将节点授权加入网络。

    获取ZeroTier Central的API令牌

    在开始之前,我们需要登录到my.zerotier.com并在“帐户”部分创建一个API令牌。ZeroNSD将使用此令牌读取网络成员以生成记录,并更新DNS设置。

    执行以下命令将API令牌存储到文件中,以便ZeroNSD读取:

    $ sudo bash -c "echo YOUR_ZEROTIER_CENTRAL_TOKEN > /var/lib/zerotier-one/token"
    $ sudo chown zerotier-one:zerotier-one /var/lib/zerotier-one/token
    $ sudo chmod 600 /var/lib/zerotier-one/token

    安装ZeroTier Systemd Manager

    ZeroTier Systemd Manager发布了rpm和deb软件包,可以在这里下载。

    下载并安装ZeroTier Systemd Manager:

    $ wget https://github.com/zerotier/zerotier-systemd-manager/releases/download/v0.1.9/zerotier-systemd-manager_0.1.9_linux_amd64.deb
    $ sudo dpkg -i zerotier-systemd-manager_0.1.9_linux_amd64.deb

    最后,重新启动所有的ZeroTier服务:

    $ sudo systemctl daemon-reload
    $ sudo systemctl restart zerotier-one
    $ sudo systemctl enable zerotier-systemd-manager.timer
    $ sudo systemctl start zerotier-systemd-manager.timer

    安装ZeroNSD

    ZeroNSD应该只在网络中的一个节点上运行。由于DNS的延迟非常重要,请尽量将其放置在距离客户端最近的位置。

    使用软件包安装

    ZeroNSD发布了rpm、deb和msi软件包,可以在这里找到最新版本。以下是示例命令,注意要替换为最新版本:

    $ wget https://github.com/zerotier/zeronsd/releases/download/v0.1.7/zeronsd_0.1.7_amd64.deb
    $ sudo dpkg -i zeronsd_0.1.7_amd64.deb

    使用Cargo安装

    如果对于你的平台没有提供软件包,你仍然可以使用Cargo进行安装:

    $ sudo /usr/bin/apt-get -y install net-tools librust-openssl-dev pkg-config cargo
    $ sudo /usr/bin/cargo install zeronsd --root /usr/local

    提供DNS服务

    对于你希望提供DNS服务的每个网络,请执行以下操作(将“af78bf94364e2035”替换为你的网络ID):

    $ sudo zeronsd supervise -t /var/lib/zerotier-one/token -w -d YOUR_DOMAIN af78bf943
    
    64e2035
    $ sudo systemctl start zeronsd-af78bf94364e2035
    $ sudo systemctl enable zeronsd-af78bf94364e2035

    验证功能

    你应该能够通过DNS名称ping到笔记本电脑(或任何前置子域名,因为我们设置了通配符标志):

    $ ping laptop.YOUR_DOMAIN
    PING laptop.YOUR_DOMAIN (172.22.192.177) 56(84) bytes of data.
    64 bytes from 172.22.192.177 (172.22.192.177): icmp_seq=1 ttl=64 time=50.1 ms
    64 bytes from 172.22.192.177 (172.22.192.177): icmp_seq=2 ttl=64 time=49.5 ms
    64 bytes from 172.22.192.177 (172.22.192.177): icmp_seq=3 ttl=64 time=48.6 ms

    或者:

    $ ping travel.laptop.YOUR_DOMAIN
    PING travel.laptop.YOUR_DOMAIN (172.22.192.177) 56(84) bytes of data.
    64 bytes from 172.22.192.177 (172.22.192.177): icmp_seq=1 ttl=64 time=50.1 ms
    64 bytes from 172.22.192.177 (172.22.192.177): icmp_seq=2 ttl=64 time=49.5 ms
    64 bytes from 172.22.192.177 (172.22.192.177): icmp_seq=3 ttl=64 time=48.6 ms

    更新标志设置

    如果要更改设置(例如TLD),请执行以下操作(将“af78bf94364e2035”替换为你的网络ID):

    $ sudo zeronsd supervise -t /var/lib/zerotier-one/token -w -d YOUR_DOMAIN af78bf94364e2035
    $ sudo systemctl daemon-reload
    $ sudo systemctl enable zeronsd-af78bf94364e2035

    测试DNS查询

    要在没有zerotier-systemd-manager的情况下测试与ZeroNSD的DNS查询,请找到ZeroNSD绑定的IP地址,并使用dig命令明确对其进行查询。执行以下命令:

    $ sudo lsof -i -n | grep ^zeronsd | grep UDP | awk '{ print $9 }' | cut -f1 -d:
    172.22.245.70

    然后使用dig命令直接查询DNS服务器:

    对Ubuntu机器执行:

    $ dig +short @172.22.245.70 zt-3513e8b98d.YOUR_DOMAIN
    172.22.245.70
    $ dig +short @172.22.245.70 server.YOUR_DOMAIN
    172.22.245.70

    对OSX笔记本电脑执行:

    $ dig +short @172.22.245.70 zt-eff05def90.YOUR_DOMAIN
    172.22.245.70
    $ dig +short @172.22.245.70 laptop.YOUR_DOMAIN
    172.22.192.177

    添加到/etc/hosts并再次查询

    如果要添加自定义DNS记录,请执行以下操作:

    $ sudo bash -c 'echo "1.2.3.4 test" >> /etc/hosts'
    $ dig +short @172.22.245.70 test.YOUR_DOMAIN
    1.2.3.4

    验证通向公共DNS的查询

    为了验证失败的情况下,查询会落到公共DNS服务器,执行以下命令:

    $ dig +short @172.22.245.70 example.com
    93.184.216.34

    附加信息

    OSX上的DNS解析

    在OSX上,DNS解析使用dns-sd。遗憾的是,nslookup、host和dig在OSX上可能无法正常工作,但ping可以。

    $ ping server.YOUR_DOMAIN
    PING server.YOUR_DOMAIN (172.22.245.70): 56 data bytes
    64 bytes from 172.22.245.70: icmp_seq=0 ttl=64 time=37.361 ms
    64 bytes from 172.22.245.70: icmp_seq=1 ttl=64 time=38.129 ms
    64 bytes from 172.22.245.70: icmp_seq=2 ttl=64 time=37.569 ms

    要检查系统解析器设置,使用以下命令:scutil --dns。

    对于Ubuntu机器,可以执行以下查询:

    $ dns-sd -G v4 server.YOUR_DOMAIN
    $ dns-sd -G v4 zt-3513e8b98d.YOUR_DOMAIN

    对于OSX机器,可以执行以下查询:

    $ dns-sd -G v4 laptop.YOUR_DOMAIN
    $ dns-sd -G v4 zt-eff05def90.YOUR_DOMAIN

    Windows

    如果你是Windows用户,请尝试使用默认设置。如果有任何问题,请提供反馈或提交拉取请求以帮助改进ZeroNSD在Windows上的兼容性。

    提供非ZeroTier记录

    注意: 以下部分主要面向希望充分利用zeronsd的服务的高级用户。

    zeronsd还将在两种情况下提供非ZeroTier记录:

    1. 在TLD不匹配时,它将转发/etc/resolv.conf中的名称服务器。此行为类似于Linux上常用的DNS服务器dnsmasq。

    2. 为了提供自定义记录,你可以使用-f标志和一个hosts格式的文件,它将在提供的TLD下提供来自该文件的记录,与ZeroTier节点合并。以下是示例。

    注意: 如果按照上述步骤进行了操作,请在继续之前执行以下命令以停止ZeroNSD的服务和监督:

    $ systemctl stop zeronsd-<network id>
    $ zeronsd unsupervise <network id>

    创建一个名为hosts的文件,将以下内容放入其中:

    1.1.1.1 cloudflare-dns

    然后,我们将只使用zeronsd的start子命令启动一个临时服务器。这将在前台运行,因此请在新终端中运行或使用&运行。

    $ zeronsd start -t
    
     /var/lib/zerotier-one/token -f ./hosts -d YOUR_DOMAIN <network id>

    最后,我们可以查询cloudflare-dns.YOUR_DOMAIN以查找CloudFlare的DNS服务器,速度非常快!

    $ host cloudflare-dns.YOUR_DOMAIN 1.2.3.4
    cloudflare-dns.YOUR_DOMAIN has address 1.1.1.1

    结论

    使用ZeroNSD,你可以为你的ZeroTier网络提供高性能的DNS解析服务,并根据需要自定义DNS记录。这可以帮助你更好地管理你的网络,提高性能,减少DNS查询的延迟,并提供更好的用户体验。

    如果你是ZeroTier用户,ZeroNSD绝对值得一试。通过按照本指南的步骤进行操作,你可以轻松地将ZeroNSD集成到你的网络中,并提供可靠的DNS解析服务。

  • Linux Kernel 6.5发布:初步支持Wi-Fi 7和USB4

    Linux Kernel 6.5发布:初步支持Wi-Fi 7和USB4

    是时候迎来新的Linux内核发布了!

    Linux 6.5内核已经发布,它在之前的Linux 6.4内核基础上进行了改进,并引入了一些显著的变化和新增功能。

    Linus Torvalds提到这次发布非常顺利:

    过去的一周没有发生特别奇怪或可怕的事情,因此没有理由推迟6.5版本的发布。

    我仍然有一种烦人的感觉,认为很多人都在度假,事情之所以安静,部分原因是因为这个。但这次发布进展顺利,所以这可能只是我多疑。上周最大的补丁只是针对我们自己的自测。

    ? Linux Kernel 6.5:有什么新特性?
    用户应该注意,这是一个非LTS版本。如果你想要尝试最新功能,那么这个版本适合你。否则,升级是不必要的,除非它修复了特定问题或提高了性能。

    以下是新内核版本的主要亮点:

    1. 支持AMD FreeSync视频的开箱即用:在此版本中,重新引入了对AMD FreeSync视频模式的支持,并默认启用。它早在Linux内核5.8中引入过,但由于存在错误而被撤销。启用AMD FreeSync模式后,可以通过将显示器的刷新率与显卡的帧率匹配来大大减少游戏和视频中的画面撕裂和卡顿。

    2. 默认的P-State “Active”模式适用于AMD CPU:现代AMD CPU,特别是那些使用Zen 2及以上架构的CPU,现在将使用amd-pstate作为默认的CPU性能调节驱动程序。此前,默认情况下由CPUFreq管理CPU缩放机制。现在,amd-pstate提供了三种模式:active、passive和guided autonomous。在这个版本中,默认启用了”active”模式,取代了先前Linux内核6.4中使用的guided autonomous模式。据Phoronix的一些基准测试显示,amd-pstate的性能优于CPUFreq。

    3. ASUS ROG Ally声音优化:ASUS ROG Ally是AMD Z1和Z1 Extreme SoCs驱动的Windows掌上游戏电脑的直接竞争对手。它于今年7月发布。拥有ASUS ROG Ally的Linux玩家可以期待看到该系统音频设备的补丁发布,多亏了这个提交。

    4. USB4 v2和WiFi 7的初步支持:下一代无线标准WiFi 7的工作已经进行了相当长的时间。作为一个快速的事实,WiFi 7支持6GHz频段,最大数据传输速率为23Gbps!此外,下一代USB4标准的开发工作也已经开始。USB4支持80Gbps的数据传输速率!通过WiFi的合并和WiFi 7的请求,早期支持已经集成到Linux 6.5内核中。

    ?️ 其他变更和改进
    除了主要亮点之外,还有一些需要提及的事项:

    • 修复了Intel P-State的CPU缩放问题
    • 对Btrfs的性能改进和其他存储优化
    • 对最新的Xbox控制器提供了震动支持
    • 为AMD Radeon RX 7000系列显卡提供了超频支持
    • 为AMD和英特尔图形驱动程序提供了各种改进和优化
    • 增加了更多的Rust代码转换

    官方发布公告会提供自上一次发布候选版以来的简短日志。如果你对技术细节感兴趣,可以参考更新日志。

    安装Linux Kernel 6.5
    你可以使用像Arch或Fedora这样的滚动发布的发行版轻松升级到Linux Kernel 6.5。这些发行版在发布后不久就会提供最新的内核。

    另一方面,使用Ubuntu及其衍生发行版的用户应该期待在Ubuntu 23.10中看到这个Linux内核版本的使用。通过使用Pop OS和Linux Lite等发行版,你可以更早地期待这个内核版本。

    你可以从官方网站下载最新Linux Kernel的tarball(发布后需要一些时间才能获得)。

    ? 在评论中分享你对最新内核发布的看法。

  • 如何在Ubuntu Linux上释放/boot分区的空间

    如何在Ubuntu Linux上释放/boot分区的空间

    最近,我收到了一个警告,提示/boot分区几乎已满或没有剩余空间了。是的,我使用的是一个单独的/boot分区,不过现在不太多的人这样做了。

    这是我第一次看到这样的错误,让我感到困惑。现在,有几种方法可以在Ubuntu(或基于Ubuntu的发行版)上释放空间,但并不是所有方法都适用于这种情况。

    因此,我决定写一篇文章,介绍我采取的步骤,以释放/boot分区的一些空间。

    在Ubuntu上释放/boot分区的空间(如果你的/boot分区快满了)

    我建议你仔细阅读这些解决方案,并选择最适合你情况的方法。这些方法都很简单,但在生产系统上执行其中一些操作时,你需要格外谨慎。

    方法1:使用apt autoremove

    你不需要成为终端专家来执行这个操作,只需一个命令,你就可以删除未使用的内核,从而释放/boot分区的空间。

    你只需要输入以下命令:

    sudo apt autoremove

    这不仅会删除未使用的内核,还会删除你不需要的依赖项,或者不被任何已安装工具所需要的依赖项。

    输入命令后,系统将列出将要被删除的内容,你只需确认操作。如果你好奇的话,你可以仔细查看它到底删除了什么。

    你需要按下Y键以继续。

    值得注意的是,如果/boot分区剩余的空间很少并且你收到了警告,这种方法只会起作用。但是,如果/boot分区已满,APT可能根本无法工作。

    在下一种方法中,我将介绍两种不同的方式,通过这两种方式你可以使用GUI和终端来删除旧的内核,以释放空间。

    方法2:手动删除未使用的内核(如果apt autoremove无效)

    在尝试删除旧的内核以释放空间之前,你需要确定当前活动的内核,并确保你不删除它。

    要检查你的内核版本,请在终端中输入以下命令:

    uname -r

    uname命令通常用于获取Linux系统信息。这个命令显示了当前正在使用的Linux内核。

    现在,你知道了你当前的Linux内核是什么,你只需要删除与此版本不匹配的内核。你应该将它记录在某个地方,以确保你不会意外删除它。

    接下来,你可以使用终端或GUI来删除它。

    警告!

    在删除内核时要特别小心。只删除旧内核,不要删除你当前正在使用的内核,否则你的系统将会损坏。

    使用GUI工具删除旧的Linux内核

    你可以使用Synaptic软件包管理器或类似Stacer的工具来开始操作。在我遇到/boot分区已满且apt不可用的情况下,我使用Stacer来删除旧的内核。让我来演示一下它是如何工作的。

    首先,你需要启动“Stacer”,然后按照下面的截图所示导航到软件包卸载器。

    在这里,搜索“image”,你将找到你拥有的Linux内核的图像。你只需要删除旧的内核版本,而不是你当前的内核镜像。

    在上面的截图中,我标出了我的当前内核和旧的内核,所以你必须小心你系统上的内核版本。

    你不需要删除其他任何东西,只需删除旧的内核版本。

    类似地,在软件包列表中搜索“headers”,并删除如下所示的旧内核。

    只是提醒一下,你不想删除“linux-headers-generic”。只关注带有版本号的那些。

    就是这样,你完成了,apt将再次正常工作,你已成功从/boot分区中释放了一些空间。同样,你可以使用任何其他你熟悉的软件包管理器来执行此操作。

    使用命令行删除旧的内核

    这与使用终端是一样的。因此,如果你没有使用GUI的选项(如果是远程机器/服务器),或者如果你只是习惯使用终端,那么你可以按照下面的步骤操作。

    首先,使用以下命令列出所有已安装的内核:

    ls -l /boot

    那些被标记为“old”的或与你当前的内核版本不匹配的内核,就是你可以删除的未使用内核。

    现在,你可以使用rm命令来从/boot分区删除特定的内核,使用以下命令(每个内核一个命令):

    sudo rm /boot/vmlinuz-5.4.0-7634
    
    -generic

    请确保检查你系统的版本 – 对于你的系统可能会有所不同。

    如果你有很多未使用的内核,这将需要时间。因此,你也可以使用以下命令来删除多个内核:

    sudo rm /boot/*-5.4.0-{7634}-*

    澄清一下,你需要用逗号分隔的方式写出内核版本的最后部分/代码,以便一次删除所有内核。

    假设我有两个旧内核5.4.0-7634-generic和5.4.0-7624,那么命令将是:

    sudo rm /boot/*-5.4.0-{7634,7624}-*

    如果你不想在grub引导菜单中看到旧的内核版本,你可以使用以下命令来更新grub:

    sudo update-grub

    就是这样。你完成了。你已经释放了空间,如果/boot分区已满并且引起了APT的问题,你也可能已经解决了这个问题。

    在某些情况下,你可能需要输入以下命令来修复损坏的apt(我在论坛上看到一些人这样做):

    sudo dpkg --configure -a
    sudo apt install -f

    请注意,除非你发现APT损坏,否则不需要输入上述命令。就我个人而言,我不需要这些命令,但我发现它们对一些人来说在论坛上非常有用。

    故障排除:
    如果你在执行这些操作时遇到问题,请在评论中告诉我,我将尽力提供帮助。

    这就是如何在Ubuntu Linux上释放/boot分区的空间。如果你的系统提示/boot分区没有剩余空间,这些方法应该可以帮助你解决问题。

  • 让你的Windows系统准备好运行虚拟机

    让你的Windows系统准备好运行虚拟机

    你是否曾经遇到过在使用VirtualBox时出现“无法打开虚拟机会话”的错误?这可能是因为你的系统没有启用虚拟化技术。

    为了在Windows系统上创建虚拟机,你需要确保系统已经做好了一些准备工作。在本篇文章中,我将为你介绍如何准备你的Windows系统以运行虚拟机。

    开篇故事

    想象一下这个场景:你正准备在Windows系统上运行一个重要的虚拟机,但突然出现了一个让你束手无策的错误信息。这是每个使用虚拟机的人都可能遇到的问题。但是不要担心,我将向你展示如何准备你的Windows系统,以避免这些问题的发生,并顺利运行虚拟机。

    第一步:启用虚拟化技术

    如果你使用的是预装了Windows 10/11的系统,那么很可能已经启用了虚拟化技术,你无需进行任何设置。但如果你手动安装了Windows操作系统,那么你需要检查BIOS设置,看看是否支持虚拟化技术。

    虚拟化技术的启用对于虚拟机程序的正常运行至关重要。如果未启用虚拟化技术,虚拟机程序将无法工作并显示错误信息。

    以下是检查虚拟化技术是否启用的基本步骤:

    1. 进入UEFI固件设置(或BIOS菜单)。通常,你可以通过按下“Del”键或F1、F2、F10或F12键来访问它。

      根据主板制造商的不同,用户界面可能会有所不同。但在大多数情况下,你需要导航到其中的“高级”选项,并访问“CPU配置”设置。

    2. 在CPU配置中,你需要启用“Intel (VMX)虚拟化技术”或“SVM模式”(适用于AMD处理器)。

    启用虚拟化技术后,你就可以顺利使用虚拟机程序了。

    第二步:选择虚拟机程序

    要创建和管理虚拟机,你需要选择一个虚拟机程序。在Windows系统中,有两个主要选择:Hyper-V和第三方虚拟机程序。

    Hyper-V

    Hyper-V是Microsoft内置的虚拟机程序,如果你使用的是Windows Pro/Education/Enterprise版本,那么可以很容易地启用它。以下是启用Hyper-V的步骤:

    1. 在控制面板中搜索“Windows功能”或通过“控制面板” -> “程序” -> “打开或关闭Windows功能”来找到它。

    2. 点击“Hyper-V”并点击“确定”。

    3. 系统将自动应用更改并获取所需的文件。你只需要等待一段时间。

    4. 完成后,系统会要求你重新启动以生效新功能。

    请注意,Hyper-V不适用于Windows 10/11家庭版。

    第三方虚拟机程序

    虽然使用Hyper-V可以获得更好的虚拟机性能,但它不太容易使用。因此,我们建议普通用户使用第三方虚拟机程序。

    其中,VirtualBox是一个不错的选择。它是一个开源程序,具有丰富的功能和用户友好的界面。你可以在Windows、Linux和macOS上使用它。

    你还可以选择像VMware Workstation这样的专有选项,它也非常流行。

    第三步:检查系统资源和要求

    创建和使用虚拟机并不是非常消耗资源的过程。然而,有一些变量可能需要你关注:

    • 确保你的系统至少有4 GB的RAM(越多越好)。
    • 64位处理器,具有双核或更多核心。

    如果你不知道,虚拟机会使用你系统的资源,即使它们是独立的虚拟机。大多数最低规格建议包括4 GB的RAM,但我建议使用8 GB以上。

    如果你想运行两个虚拟机,那么在Windows上可能需要更多的RAM。

    除了内存外,你应该拥有一个拥有多个核心的处理器。这样,一些核心可以用于虚拟机,另一些可以用于主机上的其他任务。

    最后,要注意磁盘空间。对于虚拟机,磁盘通常是动态分配的,这意味着随着操作系统和文件的增加,物理存储驱动器上的空间会被占用。

    在某些类型的虚拟磁盘中,它会保留你指定的整个空间。因此,在执行此操作之前,请检查启动之前的可用磁盘空间。通常情况下,选择一个不安装Windows系统的分区作为虚拟机磁盘是一个不错的选择。

    结论

    通过按照以上步骤来准备你的Windows系统,你可以轻松地运行和管理虚拟机。现在,你可以在Windows上轻松安装Linux虚拟机,开始你的虚拟化之旅。

    如果你还有其他关于虚拟机的问题或想要了解更多信息,欢迎在下面的评论中与我们分享你的想法。

  • 如何用Python编写一个有趣的贪吃蛇小游戏

    如何用Python编写一个有趣的贪吃蛇小游戏

    在这个快节奏的时代,人们总是寻找能够娱乐和挑战自己的方式。其中,小游戏一直是大家喜欢的消遣方式之一。在这篇文章中,我们将带你一起探索如何使用Python编写一个有趣的贪吃蛇小游戏。无需编程经验,只要跟随本教程,你就能轻松创建自己的游戏。接下来,让我们开始这个游戏开发之旅吧!

    准备工作

    在开始编写贪吃蛇游戏之前,你需要确保已经安装了Python和Pygame库。如果你还没有安装,可以按照以下步骤进行操作:

    1. 安装Python:访问Python官方网站,下载并安装最新版本的Python。

    2. 安装Pygame库:打开命令行(Windows用户可以使用命令提示符,Mac和Linux用户可以使用终端),运行以下命令来安装Pygame库:

      pip install pygame

      这将自动下载并安装Pygame库。

    现在,我们已经准备好开始编写贪吃蛇游戏了。

    编写游戏代码

    导入所需的库

    首先,我们需要导入Pygame库以及一些其他必要的库。这些库将帮助我们创建游戏窗口、处理用户输入和管理游戏逻辑。

    import pygame
    import random

    初始化游戏

    在我们开始创建游戏窗口之前,我们需要初始化Pygame。

    pygame.init()

    设置游戏窗口

    我们将定义游戏窗口的尺寸和标题。

    window_width = 400
    window_height = 400
    window = pygame.display.set_mode((window_width, window_height))
    pygame.display.set_caption("贪吃蛇游戏")

    定义游戏颜色

    为了在游戏中使用颜色,我们需要定义一些常见的颜色。

    black = (0, 0, 0)
    green = (0, 255, 0)

    定义蛇的初始位置和速度

    我们需要为蛇定义初始位置、长度和移动速度。

    snake_x = 50
    snake_y = 50
    snake_speed = 10

    定义蛇的初始长度和方向

    蛇的初始长度为1,方向为向右移动。

    snake_length = 1
    snake_direction = 'right'

    主循环

    游戏的核心部分是一个无限循环,该循环在用户关闭游戏窗口之前一直运行。在每次循环中,我们需要检查用户的输入,移动蛇并更新游戏界面。

    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                quit()

    绘制蛇和食物

    我们需要编写函数来绘制蛇和食物。这些元素将在游戏窗口上显示。

    def draw_snake(snake_x, snake_y, snake_list):
        for segment in snake_list:
            pygame.draw.rect(window, green, [segment[0], segment[1], 10, 10])
    
    def draw_food(food_x, food_y):
        pygame.draw.rect(window, green, [food_x, food_y, 10, 10])

    移动蛇

    在主循环中,我们将根据用户输入来移动蛇。

    if snake_direction == 'right':
        snake_x += snake_speed
    elif snake_direction == 'left':
        snake_x -= snake_speed
    elif snake_direction == 'up':
        snake_y -= snake_speed
    elif snake_direction == 'down':
        snake_y += snake_speed

    检测碰撞

    我们需要编写函数来检测蛇是否碰到了边界或食物。如果蛇吃到了食物,我们将增加蛇的长度并生成新的食物。

    def check_collision(snake_x, snake_y, snake_list, food_x, food_y):
        if snake_x >= window_width or snake_x < 0 or snake_y >= window_height or snake_y < 0:
            return True
        for segment in snake_list:
            if segment == [food_x, food_y]:
                return True
        return False

    游戏结束

    如果游戏结束,我们将显示游戏结束消息,并在用户按下空格键后重新开始游戏。

    def game_over():
        font = pygame.font.Font(None, 36)
        text = font.render("游戏结束!", True, black)
        window.blit(text, [window_width / 2 - 100, window_height / 2 - 50])
        pygame.display.update()
        pygame.time.wait(2000)
    
        # 重新初始化游戏
        snake_x = 50
        snake_y = 50
        snake_length = 1
        snake_direction = 'right'
        snake_list = []

    主游戏循环

    现在,我们需要将上面的所有代码整合到主游戏循环中。在每个循环中,我们将检查用户的输入,移动蛇,检测碰撞并更新游戏窗口。

    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                quit()
    
        # 检测用户输入并改变蛇的方向
        keys = pygame.key.get_pressed()
        if keys[pygame.K_RIGHT]:
            snake_direction = 'right'
        if keys[pygame.K_LEFT]:
            snake_direction = 'left'
        if keys[pygame.K_UP]:
            snake_direction = 'up'
        if keys[pygame.K_DOWN
    
    ]:
            snake_direction = 'down'
    
        # 移动蛇
        if snake_direction == 'right':
            snake_x += snake_speed
        elif snake_direction == 'left':
            snake_x -= snake_speed
        elif snake_direction == 'up':
            snake_y -= snake_speed
        elif snake_direction == 'down':
            snake_y += snake_speed
    
        # 检测碰撞
        if check_collision(snake_x, snake_y, snake_list, food_x, food_y):
            game_over()
    
        # 更新蛇的位置
        snake_head = [snake_x, snake_y]
        snake_list.append(snake_head)
        if len(snake_list) > snake_length:
            del snake_list[0]
    
        # 生成新的食物
        if snake_x == food_x and snake_y == food_y:
            food_x = random.randrange(0, window_width, 10)
            food_y = random.randrange(0, window_height, 10)
            snake_length += 1
    
        # 清空游戏窗口
        window.fill(black)
    
        # 绘制蛇和食物
        draw_snake(snake_x, snake_y, snake_list)
        draw_food(food_x, food_y)
    
        pygame.display.update()

    运行游戏

    现在,你已经完成了贪吃蛇游戏的编写。要运行游戏,只需在命令行中运行你的Python脚本,你将看到一个小窗口中的贪吃蛇游戏。

    结语

    通过本教程,你学会了如何使用Python和Pygame库编写一个简单的贪吃蛇小游戏。这只是游戏开发的入门,你可以进一步扩展和改进游戏,添加更多功能和特效,使其更加有趣和挑战性。

    希望你喜欢这个项目,玩得开心!如果你有任何问题或想要了解更多游戏开发的内容,请随时留言,我们会尽力提供帮助。


    这篇文章教你如何使用Python编写一个有趣的贪吃蛇小游戏,无需编程经验,只要跟随本教程,你就能轻松创建自己的游戏。我们首先介绍了准备工作,然后详细讲解了游戏代码的编写过程,包括初始化游戏、设置游戏窗口、定义游戏颜色、蛇的初始位置和速度、蛇的初始长度和方向、主循环、绘制蛇和食物、移动蛇、检测碰撞、游戏结束以及主游戏循环。最后,我们教你如何运行游戏,并鼓励你扩展和改进游戏,添加更多功能和特效,使其更加有趣和挑战性。希望这个教程对你有所帮助,玩得开心!

  • 打造个性化声音转换工具 – Retrieval-based Voice Conversion WebUI

    打造个性化声音转换工具 – Retrieval-based Voice Conversion WebUI

    在数字时代,声音成为了我们生活中不可或缺的一部分。无论是在社交媒体上分享生活片段,还是在工作中使用语音助手进行沟通,声音都扮演着重要的角色。然而,有没有一次你想要改变自己的声音,让它听起来像你最喜欢的歌手或电影角色?现在,有了Retrieval-based Voice Conversion WebUI,你可以轻松实现这一愿望。

    了解项目

    Retrieval-based Voice Conversion WebUI是一个基于VITS(Variational Inference Text-to-Speech)的声音转换框架,旨在让你能够将自己的声音转换成你喜欢的声音。这个项目具有一系列强大的功能,使其成为一个引人注目的工具:

    1. 减少音调泄漏:通过使用检索集特征替换源特征,有效减少音调泄漏。
    2. 简单快捷的训练:即使在相对较差的显卡上,也可以轻松快速训练。
    3. 小数据量也能获得好结果:即使只有少量数据,也能获得相对良好的结果(建议至少10分钟的低噪声演讲)。
    4. 支持模型融合:可以通过模型融合来改变音色。
    5. 易于使用的Web界面:提供了直观的Web界面,让操作更加便捷。
    6. 使用UVR5模型分离声音和乐器:可以使用UVR5模型迅速分离声音和乐器。
    7. 使用高音提取算法:采用了最强大的高音提取算法InterSpeech2023-RMVPE,避免了消声问题,并且速度更快,资源消耗更低。
    8. 支持多种图形卡加速:包括Nvidia、AMD、Intel ARC等图形卡的加速。

    项目准备

    在开始使用Retrieval-based Voice Conversion WebUI之前,你需要做一些准备工作。以下是准备环境的步骤:

    1. 安装Python 3.8或更高版本。
    2. 安装PyTorch相关核心依赖项(如果未安装)。
      pip install torch torchvision torchaudio
    3. 使用Poetry工具或pip安装其他依赖项,具体取决于你的显卡类型。
      • Nvidia显卡:
        pip install -r requirements.txt
      • AMD/Intel显卡:
        pip install -r requirements-dml.txt
      • Intel ARC显卡(在Linux / WSL上使用Python 3.10):
        pip install -r requirements-ipex.txt
    4. 如果你是Mac用户,可以通过运行sh ./run.sh来安装依赖项。

    准备预训练模型

    Retrieval-based Voice Conversion需要一些预训练模型来进行推断和训练。你需要从项目的Huggingface空间下载这些模型和其他文件。以下是需要的文件列表:

    • ./assets/hubert/hubert_base.pt
    • ./assets/pretrained
    • ./assets/uvr5_weights

    如果你想测试模型的v2版本,还需要下载以下文件:

    • ./assets/pretrained_v2

    如果你使用Windows,可能还需要下载以下两个文件,如果已安装FFmpeg和FFprobe则可以跳过:

    如果要使用最新的SOTA RMVPE声音音高提取算法,你需要下载RMVPE权重并将其放置在RVC根目录中,具体下载链接请参考项目文档。

    对于AMD/Intel显卡用户,还需要下载相应的权重文件,具体下载链接请参考项目文档。

    对于Intel ARC显卡用户,在启动WebUI之前需要运行source /opt/intel/oneapi/setvars.sh命令。

    最后,使用以下命令启动WebUI:

    python infer-web.py

    如果你使用Windows或macOS,你可以下载并解压RVC-beta.7z文件,然后在Windows上使用go-web.bat,在macOS上使用sh ./run.sh来直接使用RVC。

    结语

    Retrieval-based Voice Conversion WebUI是一个令人兴奋的项目,它为你提供了一个独特的方式来改变你的声音,创造出个性化的音频体验。无论是用于娱乐、创意制作还是其他用途,这个项目都能为你带来无限可能。不要犹豫,立即尝试吧!

  • 发掘 Linux 上的创意:2023 年最佳视频编辑软件

    发掘 Linux 上的创意:2023 年最佳视频编辑软件

    你是否想过自己成为一名电影导演,创造出令人印象深刻的视频作品?或者只是想为社交媒体制作一些有趣的视频内容?无论你的视频编辑需求是什么,Linux 操作系统为你提供了一些强大的免费工具。在这篇文章中,我们将介绍 2023 年最佳 Linux 视频编辑软件,让你释放创造力,制作令人惊艳的视频项目。

    想象一下,你正在探索一个神秘的森林,阳光透过树叶洒在地面上,形成斑驳的光影。你拿起你的相机,开始捕捉这一刻的美丽。然后,你回到家,坐在电脑前,准备将这些片段编辑成一部精美的短片,与世界分享。这时,你需要一个功能强大的视频编辑软件来实现你的创意。

    Linux 操作系统一直以来都是开发者和创意人士的首选,因为它开源、自由,并且具有强大的定制性。在 Linux 上,你可以找到许多优秀的视频编辑软件,无需花费一分钱。这些工具提供了各种功能,从简单的剪辑到复杂的视觉效果,让你的视频项目更具创意和吸引力。

    现在,让我们深入了解一下 2023 年最佳 Linux 视频编辑软件,帮助你选择适合自己需求的工具。

    1、Blender

    Blender 是这个列表中功能最强大的视频编辑器之一。值得注意的是,它是自由开源软件,同时也是一个 3D 建模工具。使用 Blender,你可以制作令人印象深刻的电影、动画电影、模拟以及进行动作追踪。

    其多功能性使其成为许多用户的首选,包括工作室、个人艺术家、专业人士、爱好者、科学家、学生、视觉效果专家、动画师、游戏艺术家、改装者等等。

    庞大的全球社区不断支持和丰富这个强大的编辑器,有众多贡献者不断增强其功能和能力。然而,由于它提供了一整套工具,新手可能需要一些时间来有效利用其全部潜能。但一旦掌握了它的功能,你将会对它能释放出无限创意而感到惊讶。

    Blender Video Editor 功能列表:

    • 建模
    • 雕刻
    • 动画与绑定
    • 油笔Grease Pencil
    • 渲染
    • 模拟
    • 视频编辑
    • 脚本编写
    • 视觉效果
    • 用户界面
    • 工作流程

    下载 Blender

    2、Lightworks

    体验 Lightworks,一款多功能的免费增值freemium的视频编辑器,可帮助你编辑社交媒体视频、4K 质量甚至完整的电影。非凡的是,这款非线性视频编辑器已在好莱坞电影编辑领域打下了自己的烙印,证明了其专业能力。

    请记住,尽管免费版提供了丰富的工具和功能,但某些专业功能可能仅在付费版本中提供。

    因此,无论你是渴望成为社交媒体影响者、专业电影制片人,还是喜欢制作高质量视频的人,Lightworks 可能成为你在视频编辑世界释放创造力的通行证。

    Lightworks Video Editor 功能快速概述:

    • 简单直观的用户界面
    • 访问出色的免版税音频和视频内容
    • 轻松进行时间轴编辑和修剪
    • 用于 4K 的低分辨率代理工作流程
    • 实时即用的音频和视频特效
    • 导出适用于 YouTube/Vimeo、SD/HD 的视频,高达 4K
    • 广泛的文件格式支持,包括可变帧率媒体
    • 使用高达 32 位 GPU 精度和直方图工具专业地调整序列

    下载 Lightworks

    3、Shotcut

    介绍一下 Shotcut,这是一款出色的自由开源的视频编辑器,能够在各种平台上无缝运行。Shotcut 具备许多功能,为用户带来了很多便利。其中一个突出的特点是其对各种格式的出色支持,让你可以轻松处理各种媒体文件。它的独特之处在于本地时间轴编辑,意味着你可以直接编辑文件,

    而无需进行耗时的导入操作。

    Shotcut 的显著功能:

    • 支持 4K 分辨率
    • 音频、视频和摄像头捕捉
    • 广泛的文件格式支持
    • 4K 分辨率支持
    • 插件
    • 音频和视频滤镜

    下载 Shotcut

    4、Avidemux

    对于初学者或仅作为业余爱好者的视频编辑者来说,Avidemux 是一个完美的选择。这款自由开源的视频编辑器专为简单的任务设计,如剪辑、应用滤镜和编码。它拥有用户友好的界面,为刚开始学习编辑的人提供流畅且易于操作的体验。

    Avidemux 使用简单,并且支持广泛的文件格式,确保与各种媒体类型兼容。如果你有一些重复的任务或特定的工作流程,Avidemux 的项目和作业队列功能可以帮助你自动化编辑过程。

    此外,Avidemux 还提供强大的脚本功能,适用于喜欢深入技术细节的用户,可以根据个人喜好自定义和微调编辑任务。

    然而,需要注意的是,Avidemux 可能缺少一些其他专业级视频编辑器中的高级功能和复杂性。然而,对于初学者、学习者和业余爱好者来说,Avidemux 是一个直观且免费的解决方案,非常适合开始视频编辑之旅,为你的创作努力铺平道路。

    Avidemux Video Editor 功能快速概述:

    • 用户友好的界面
    • 广泛的文件格式支持
    • 项目和作业队列功能
    • 强大的脚本功能

    下载 Avidemux

    5、HitFilm Express

    寻找一个免费且出色的视频编辑器?试试 HitFilm Express,这是一款顶级的免费编辑软件。顾名思义,“express” 版本在功能上毫不逊色,非常适合初学者、YouTube 创作者和有抱负的电影制作者。有一支专业的开发团队支持,你可以期待无缝而精细的编辑体验。

    然而,需要注意的是,目前 HitFilm Express 仅与 Windows 和 Mac 系统兼容。目前还没有 Linux 版本可用。开发团队根据用户群体做出了这个决定,因为在目前情况下,支持 Linux 可能在经济上不可行。

    HitFilm Express Video Editor 功能概述:

    • 适用于初学者和专业用户
    • 丰富的编辑工具和效果
    • 专业开发团队支持

    下载 HitFilm Express

    6、DaVinci Resolve

    DaVinci Resolve 是专业视频编辑的代表,具备精湛处理 8K 编辑的令人印象深刻能力。这款强大的软件跨越多个平台,使得 Linux、Mac 和 Windows 用户都能使用。然而,需要了解的是,DaVinci Resolve 是专有的商业软件。

    凭借其全面的功能和出色的性能,DaVinci Resolve 是视频编辑爱好者和行业专业人士的强大选择。该软件提供了附加付费功能的工作室版本,包括许多插件和附加组件,以增强你的编辑能力。

    如果你不想花费一分钱就能入门,也不必担心 – DaVinci Resolve 还提供免费版本。对于许多普通用户来说,免费版本已经完全足够满足他们的视频编辑需求。即使是免费版本,凭借其强大的工具和功能,也提供了丰富的选项,可以创建令人惊艳的视频,展现创意的想象力。

    DaVinci Resolve Video Editor 主要功能:

    • 双时间轴
    • 源磁带
    • 专用修剪界面
    • 智能编辑模式
    • 快速回顾
    • 变换、变速和稳定
    • 快速导出
    • 媒体导入
    • 便携编辑
    • 自定义时间轴设置
    • 人脸识别
    • 速度加速变速
    • 图像稳定
    • 关键帧曲线编辑器
    • 磁带式音频刮动
    • 更快、更智能的编码

    下载 DaVinci Resolve

    7、OpenShot

    如果你正在寻找一个简单强大、具有用户友好界面的免费视频编辑软件,那么 OpenShot 是你的不二选择。这款出色的软件以简洁为设计理念,确保即使是初次接触视频编辑的人也能轻松上手。OpenShot 的直观设计提供了低学习曲线,适用于各个层次的用户。

    最棒的是,OpenShot 适用于 Windows、Linux 和 Mac 等各种操作系统。因此,无论你喜欢哪个平台,都可以享受到 OpenShot 视频编辑能力带来的便利和强大功能。

    因此,如果你正在寻找一个将用户友好功能与强大编辑能力相结合的免费视频编辑软件,OpenShot 应该是你的首选。拥抱其简洁性,投入编辑过程,轻松看到你的视频项目焕发生机。

    OpenShot Video Editor 功能快速概述:

    • 用户友好的界面
    • 多平台支持
    • 丰富的编辑功能

    下载 OpenShot 视频编辑器

    8、KDenlive

    认识一下 KDenlive,这是一款经过 15 年开发的经验丰富的视频编辑器。作为一款自由开源的应用程序,KDenlive 是社区合作和创新力量的典范。它基于 QT 框架构建,在 FFMpeg、frei0r、movie、ladspa 和 sox 等一流框架的支持下,确保了无缝可靠的编辑体验。

    KDenlive 面向广泛的用户群体,非常适合想要尝试视频编辑的普通用户。它的独特之处在于考虑周到地包含了高级功能,实现了功能和易用性的完美平衡。你将找到丰富的工具,可以增强你的视频项目,而无需过多学习复杂的技术知识。

    使用 KDenlive,你可以释放创造力,而无需被复杂的过程所困扰。这款编辑器使你能够制作引人入胜的视频,而无需掌握过多的技术知识。

    KDenlive Video Editor 主要功能:

    • 多轨视频编辑
    • 使用任何音频/视频格式
    • 可配置的界面和快捷键
    • 使用带有 2D 标题的标题工具
    • 多种效果和转场
    • 音频和视频范围检测
    • 代理编辑
    • 自动备份
    • 可在界面直接下载在线资源
    • 时间轴预览
    • 可关键帧化的效果
    • 主题界面

    下载 KDenlive

    9、Flowblade

    “快速、精确、稳定” – 这正是最能概括 Flowblade 的标语,这是一款非线性视频编辑器,旨在以最高效的方式满足目标用户的需求。通过提供一种无缝快速的编辑体验,保证每个细节的精确性,并为你的创意努力提供稳定的平台,这款编辑器兑现了它的承诺。

    Flowblade 在功能方面毫不保留。它配备了一套全面的工具,以促进你的编辑过程。从简化工作流程的编辑工具到平滑排序的时间轴功能,该编辑器应有尽有。

    为了进一步提高你的编辑效率,Flowblade 包含了一个范围记录,方便你管理剪辑并精确选择所需的片段。此外,它支持代理编辑,这是一个有价值的功能,可在处理高分辨率媒体时优化性能。

    Flowblade Video Editor 主要功能:

    • 编辑工具
    • 时间轴功能
    • 合成器
    • 滤镜
    • 范围记录
    • 代理编辑
    • 批量渲染队列
    • G’mic 特效工具
    • 音频混音器
    • 媒体链接处理
    • 标题制作
    • 其它功能
    • 渲染
    • 支持 MLT 视频和音频编解码器

    下载 Flowblade

    10、Olive

    介绍一下 Olive,这是一款非常出色的免费非线性视频编辑器,旨在成为高端专业视频编辑软件的全功能替代品。目前 Olive 处于活跃开发阶段,处于 ALPHA 阶段。尽管处于早期阶段,这个编辑器已经引起了广泛关注,并且已经在使用 Olive 进行视频创作的用户中表现出色。

    凭借其雄心勃勃的目标和不断壮大的社区,Olive 展示出了成为视频编辑领域强大竞争对手的潜力。已经有用户开始使用这个新兴编辑器制作视频,他们的经验展示了它所具备的能力。

    Olive Video Editor 主要功能:

    • 开发中的非线性视频编辑器
    • 高端专业视频编辑功能
    • 活跃的社区支持

    下载 Olive

    总结

    在这个汇编中,我们重点介绍了 Linux 上的十大专业视频编辑器,为不同的编辑需求提供了多样化的选择。某些编辑器在熟练使用时甚至可以媲美甚至取代高价专业软件。

    例如,Blender、KDenlive 和 DaVinci Resolve 是功能强大且全面的视频编辑工具,适用于那些有经验的用户和专业编辑人员。与此同时,Shotcut、OpenShot 和 Olive 提供了直观且易于上手的界面,适合初学者和需要快速编辑的用户。Lightworks 和 HitFilm Express 提供了出色的免费版本,但也提供了更多高级功能的付费版本,使其成为独立制片人和业余制作者的理想选择。最后,Avidemux 是一个简单但强大的编辑器,非常适合需要快速编辑和处理视频的任务。

    不论你是一名专业的视频制片人、一位创意爱好者还是一个电影编辑初学者,这些 Linux 视频编辑软件都可以帮助你实现创作梦想。开始编辑,释放你的创造力,并制作出令人惊叹的视频作品!

  • 探索八月最热门的 Fedora Linux Flatpak 应用

    探索八月最热门的 Fedora Linux Flatpak 应用

    你是否曾经想要在你的 Fedora Linux 发行版上轻松获取并运行各种各样的应用程序?Flathub 正是你所需要的!Flathub 是一个由 Flatpak 提供支持的应用分发平台,它为 Fedora Linux 提供了一个令人印象深刻的应用生态系统。在本文中,我们将介绍 Flathub 中八月份最热门的 Fedora Linux Flatpak 应用,让你探索这些精彩的应用程序。

    Flathub:Fedora Linux 的应用宝库

    Flathub 是一个集中的平台,用于获取和分发适用于所有 Linux 发行版的应用程序。它基于 Flatpak,这意味着你可以在几乎任何 Linux 发行版上轻松运行这些应用程序,而无需担心依赖性问题。现在,让我们一起来看看八月份 Flathub 上的一些精选应用。

    Authenticator:你的双因素身份验证助手

    Authenticator 是一个简单而强大的应用程序,它的功能之一是生成双因素身份验证代码。无论是为了保护你的在线账户还是访问敏感信息,Authenticator 都能帮助你加强安全性。这款应用的特点包括:

    • 支持基于时间、基于计数器和 Steam 方法的身份验证。
    • 支持 SHA-1、SHA-256 和 SHA-512 等多种加密算法。
    • 可以使用相机或截屏来扫描二维码。
    • 支持密码锁定应用,确保你的身份验证信息安全。
    • 能够从其他双因素认证应用程序如 FreeOTP+、Aegis 和 OTP、谷歌验证器中备份和恢复数据。

    你可以通过以下命令来安装 Authenticator:

    flatpak install flathub com.belmoussaoui.Authenticator

    Authenticator 的简洁界面和强大功能使其成为 Fedora Linux 用户的不可或缺的工具之一。

    Secrets:你的密码管理专家

    在数字时代,我们需要管理许多不同的密码来保护我们的账户和数据。Secrets 是一个出色的密码管理器,它与 GNOME 集成,并使用 KeePass 文件格式来保存密码。这款应用的特点包括:

    • 支持多种加密算法,如 AES 256 位、Twofish 256 位和ChaCha20 256 位。
    • 提供多种密码衍生算法选择,包括Argon2 KDBX4、Argon2id KDBX4和AES-KDF KDBX 3.1。
    • 可以创建或导入 KeePass safes 数据库,方便管理密码。
    • 允许你将附件添加到加密数据库,确保相关信息的完整性。
    • 能够生成高强度加密的密码,帮助你保护新的账户。
    • 支持快速搜索你喜欢的密码条目,提高了效率。
    • 在不活动一段时间后自动锁定数据库,增强了安全性。
    • 支持双因素认证,进一步提高了安全性。

    你可以通过以下命令来安装 Secrets:

    flatpak install flathub org.gnome.World.Secrets

    Secrets 的功能丰富性和安全性使其成为 Fedora Linux 用户的首选密码管理工具。

    Flatsweep:清理残留文件的得力助手

    Flatpak 应用程序的一个常见问题是在卸载后留下一些残留文件。Flatsweep 是一个简单而有效的应用,旨在解决这个问题。它采用了 GTK4 和 Libadwaita,提供了一致的用户界面,与 GNOME 桌面环境完美契合,但也可以在其他桌面环境中使用。

    你可以通过以下命令来安装 Flatsweep:

    flatpak install flathub io.github.giantpinkrobots.flatsweep

    Flatsweep 可以帮助你轻松地清理掉 Flatpak 应用卸载后留下的残留文件,保持你的系统整洁。

    Solanum:跟踪时间的好帮手

    Solanum 是一款使用番茄工作法的时间跟踪应用。它使用 GTK4,与 GNOME 桌面环境完美融合。这款应用可以帮助你提高工作效率,有效地管理你的时间。

    你可以通过以下命令来安装 Solanum:

    flatpak install flathub org.gnome.Solanum

    Solanum 的简单而直观的界面使你能够轻松跟踪你的工作时间,提高生产力。

    结语

    Flathub 提供了一种简便的方式,让 Fedora Linux 用户轻松获取和运行各种各样的应用程序。在八月份,我们介绍了一些最受欢迎的 Flatpak 应用程序,它们将增强你的安全性、提高你的生产力,并帮助你保持系统的整洁。无论你是新手还是经验丰富的 Linux 用户,这些应用都值得一试。

    通过 Flatpak 和 Flathub,你可以在 Fedora Linux 上畅享无限的可能性。赶快尝试这些应用,看看它们如何改善你的日常生活!


    希望这篇文章能帮助你发现并尝试一些有趣的 Fedora Linux Flatpak 应用!无论你是想提高安全性、提高生产力还是保持系统整洁,这些应用都能满足你的需求。不妨花点时间探索它们,并享受在 Fedora Linux 上的数字生活。

    请注意,要安装这些应用,你需要启用 Flathub 作为你的 Flatpak 提供商,具体步骤可以在 Flatpak 站点上找到。祝你在 Fedora Linux 上尽情探索这些精彩的应用!

  • 在WSL2-Linux中安装NVIDIA CUDA

    在WSL2-Linux中安装NVIDIA CUDA

    如果你是在Windows子系统WSL2-Linux中使用Ubuntu,并且想要安装NVIDIA CUDA以加速计算工作,你来对地方了。本教程将带你一步步完成CUDA的安装和配置,确保一切顺利运行。尽管安装CUDA本身并不复杂,但由于WSL子系统的一些特殊性,需要额外的配置步骤,尤其是解决libcuda.so文件找不到的问题。

    前置条件

    在开始之前,请确保你已经完成以下前置条件:

    1. 安装了WSL2-Linux子系统。如果你尚未安装,请查阅相关教程。
    2. 打开一个新的命令行窗口,以确保环境是干净的。

    步骤1:进入WSL虚拟机

    如果你只有一个WSL虚拟机,请执行以下命令进入虚拟机:

    wsl

    如果你有多个WSL虚拟机,请用以下命令替换“虚拟机名称”:

    wsl -d 虚拟机名称

    步骤2:切换为root用户

    执行以下命令,将用户切换为root用户:

    su root

    你可能会被要求输入密码,输入后按回车(密码输入过程中不可见)。

    步骤3:准备工作

    执行以下命令,将当前目录切换到root用户的主目录下:

    cd ~

    步骤4:下载并安装CUDA

    现在,我们将下载和安装CUDA。首先,确定你需要的CUDA版本。不同的软件可能需要特定版本的CUDA,所以请确保你选择正确的版本。

    1. 访问NVIDIA官方网站上的CUDA下载页面。
    2. 找到你想要的CUDA版本,例如CUDA 11.8,并点击该版本下的链接。
    3. 在版本页面中,找到适用于你的系统的选项:
      • Operating System(系统平台):选择Linux。
      • Architecture(系统架构):选择X86_64。
      • Distribution(系统版本):选择WSL-Ubuntu。
      • Version(版本):通常只有一个选项,不用担心。
      • Installer Type(安装方式):选择deb(local)以下载并完整安装CUDA。

    生成的代码类似于以下内容:

    wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin
    sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600
    wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda-repo-wsl-ubuntu-11-8-local_11.8.0-1_amd64.deb
    sudo dpkg -i cuda-repo-wsl-ubuntu-11-8-local_11.8.0-1_amd64.deb
    sudo cp /var/cuda-repo-wsl-ubuntu-11-8-local/cuda-*-keyring.gpg /usr/share/keyrings/
    sudo apt-get update
    sudo apt-get -y install cuda

    请注意,如果你选择的是不同版本的CUDA,生成的代码将不同。请根据你的选择修改代码。

    步骤5:配置环境变量

    安装完CUDA后,我们需要配置环境变量,以便系统可以正确访问CUDA。

    首先,创建一个环境变量以引用CUDA的版本。使用以下命令:

    CUDA_VERSION="cuda-11.8"  # 如果你安装的是不同版本的CUDA,请将11.8修改为你的实际版本

    然后,执行以下命令,将CUDA的路径添加到环境变量中:

    echo "export PATH=\"/usr/local/$CUDA_VERSION/bin:\$PATH\"" | sudo tee -a /etc/profile.d/somefile.sh

    由于WSL的特殊性,我们需要使用软链接来解决libcuda.so无法找到的问题。执行以下命令:

    sudo ln -s /usr/lib/wsl/lib/libcuda.so /usr/local/$CUDA_VERSION/targets/x86_64-linux/lib/libcuda.so

    最后,执行以下命令以将链接后的位置添加到LD_LIBRARY_PATH环境变量中:

    echo "export LD_LIBRARY_PATH=\"/usr/local/$CUDA_VERSION/targets/x86_64-linux/lib:\$LD_LIBRARY_PATH\"" | sudo tee -a /etc/profile.d/somefile.sh

    最后,刷新系统环境以使更改生效:

    source /etc/profile.d/somefile.sh

    步骤6:验证CUDA

    现在,我们已经完成了CUDA的安装和配置。你可以执行以下命令来验证CUDA是否成功安装:

    nvcc --version

    如果一切设置正确,你应该看到类似以下内容:

    nvcc: NVIDIA (R) Cuda compiler driver
    Copyright (c) 2005-2022 NVIDIA Corporation
    Built on Wed_Sep_21_10:33:58_PDT_2022
    Cuda compilation tools, release 11.8, V11.8.89
    Build cuda_11.8.r11.8/compiler.31833905_0

    如果你想查看CUDA的安装路径,可以执行以下命令:

    dirname $(which nvcc)

    你将看到类似以下内容:

    /usr/local/cuda-11.8/bin

    这表示CUDA已成功安装在/usr/local/cuda-11.8/bin目录下。

    恭喜!你已经成功在WSL2-Linux中安装和配置了NVIDIA CUDA,现在可以在你的项目中加速计算了。

    总结

    CUDA的安装虽然简单,但在WSL2子系统中需要特殊的配置。通过本教程,你学会了如何下载、安装和配置NVIDIA CUDA,以便在WSL2-Linux中

    加速计算任务。现在,你可以轻松地在CUDA支持的项目中发挥其强大的计算能力。

  • OpenWrt编译教程:打造定制化路由器固件

    OpenWrt编译教程:打造定制化路由器固件

    在网络世界中,拥有一个定制化的路由器固件可以提供更多的功能和自定义选项,让您更好地控制您的网络。本教程将向您展示如何编译和定制OpenWrt路由器固件,以满足您的特定需求。

    步骤1:准备工作

    在开始编译之前,您需要准备好以下内容:

    • 一台运行Linux的计算机,建议使用Debian 11或Ubuntu LTS。
    • 确保您的计算机已经安装了所需的依赖项。您可以使用以下命令来安装它们:
    sudo apt update -y
    sudo apt full-upgrade -y
    sudo apt install -y ack antlr3 asciidoc autoconf automake autopoint binutils bison build-essential \
    bzip2 ccache cmake cpio curl device-tree-compiler fastjar flex gawk gettext gcc-multilib g++-multilib \
    git gperf haveged help2man intltool libc6-dev-i386 libelf-dev libglib2.0-dev libgmp3-dev libltdl-dev \
    libmpc-dev libmpfr-dev libncurses5-dev libncursesw5-dev libreadline-dev libssl-dev libtool lrzsz \
    mkisofs msmtp nano ninja-build p7zip p7zip-full patch pkgconf python2.7 python3 python3-pyelftools \
    libpython3-dev qemu-utils rsync scons squashfs-tools subversion swig texinfo uglifyjs upx-ucl unzip \
    vim wget xmlto xxd zlib1g-dev python3-setuptools

    步骤2:获取OpenWrt源代码

    接下来,您需要获取OpenWrt的源代码。使用以下命令来克隆OpenWrt的GitHub存储库:

    git clone https://github.com/coolsnowwolf/lede
    cd lede

    步骤3:更新和配置

    一旦您克隆了OpenWrt的源代码,您需要更新feeds并进行配置。在终端中运行以下命令:

    ./scripts/feeds update -a
    ./scripts/feeds install -a
    make menuconfig

    这将打开一个菜单,允许您选择您希望在固件中包括的功能和软件包。

    步骤4:下载和编译固件

    接下来,您可以下载所需的库并开始编译固件。请注意,第一次编译建议使用单线程(-j1)以避免潜在的问题。运行以下命令:

    make -j8 download V=s
    make -j1 V=s

    这些命令将下载所需的库和编译固件。请耐心等待编译完成,这可能需要一些时间,具体取决于您的计算机性能和互联网连接速度。

    步骤5:重新配置和重新编译

    如果您需要更改配置或更新源代码,可以执行以下步骤:

    1. 首先,进入OpenWrt源代码目录:
    cd lede
    1. 更新源代码并重新配置:
    git pull
    ./scripts/feeds update -a
    ./scripts/feeds install -a
    make defconfig
    make download -j8
    1. 如果需要重新配置,请运行以下命令:
    rm -rf ./tmp && rm -rf .config
    make menuconfig
    1. 最后,重新编译固件:
    make V=s -j$(nproc)

    步骤6:获取编译后的固件

    编译完成后,您可以在bin/targets目录中找到生成的固件。将该固件文件烧录到您的路由器设备上,然后享受定制化的OpenWrt固件。

    结论

    通过按照以上步骤,您可以成功地编译和定制OpenWrt路由器固件,以满足您的特定需求。请注意,这个过程可能会有一些复杂性,但它允许您完全控制您的路由器并添加自定义功能。