<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>hublog</title><link>https://hu.778445.xyz/</link><description>hublog</description><generator>Hugo 0.165.0 &amp; FixIt v1.0.0-alpha-mtcmp1fx</generator><language>zh-CN</language><lastBuildDate>Thu, 01 Aug 2024 16:55:17 +0800</lastBuildDate><atom:link href="https://hu.778445.xyz/index.xml" rel="self" type="application/rss+xml"/><item><title>网站 Favicon url 获取方法</title><link>https://hu.778445.xyz/posts/58874bc/</link><pubDate>Thu, 01 Aug 2024 16:55:17 +0800</pubDate><guid>https://hu.778445.xyz/posts/58874bc/</guid><category domain="https://hu.778445.xyz/categories/url/">Url</category><description>&lt;h2 class="heading-element" id="1在网站首页链接后面添加-facvionico"&gt;&lt;span&gt;1、在网站首页链接后面添加 facvion.ico&lt;/span&gt;&#10; &lt;a href="#1%e5%9c%a8%e7%bd%91%e7%ab%99%e9%a6%96%e9%a1%b5%e9%93%be%e6%8e%a5%e5%90%8e%e9%9d%a2%e6%b7%bb%e5%8a%a0-facvionico" class="heading-mark"&gt;&lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"&gt;&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&#10;&lt;/h2&gt;&lt;p&gt;最常用的方法（适用于 90% 的站点）是：直接在访问网址首页链接后加上 &lt;code&gt;/favicon.ico&lt;/code&gt;，例如：&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;https://www.baidu.com/favicon.ico&lt;/code&gt;&lt;/pre&gt;&lt;h2 class="heading-element" id="2从网站源代码获取"&gt;&lt;span&gt;2、从网站源代码获取&lt;/span&gt;&#10; &lt;a href="#2%e4%bb%8e%e7%bd%91%e7%ab%99%e6%ba%90%e4%bb%a3%e7%a0%81%e8%8e%b7%e5%8f%96" class="heading-mark"&gt;&lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"&gt;&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&#10;&lt;/h2&gt;&lt;p&gt;F12 或者右键查看网页源代码，然后再网页头部找到 ，链接指向即为 favicon.ico 的地址&#10;例如：&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;&amp;lt;link href=&amp;#34;/sa/simg/favicon-v2-gra.ico&amp;#34; data-orighref=&amp;#34;&amp;#34; rel=&amp;#34;icon&amp;#34;&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;h2 class="heading-element" id="3第三方工具-the-favicon-finder"&gt;&lt;span&gt;3、第三方工具 The Favicon Finder&lt;/span&gt;&#10; &lt;a href="#3%e7%ac%ac%e4%b8%89%e6%96%b9%e5%b7%a5%e5%85%b7-the-favicon-finder" class="heading-mark"&gt;&lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"&gt;&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&#10;&lt;/h2&gt;&lt;p&gt;第三方工具 &lt;a href="https://favicons.teamtailor-cdn.com/" target="_blank" rel="external nofollow noopener noreferrer"&gt;Favicon Finder&lt;i class="fa-solid fa-external-link-alt fa-xs ms-1 text-secondary" aria-hidden="true"&gt;&lt;/i&gt;&lt;/a&gt; 可以在线获取目标网站的 Logo 图标，并且能够获取到不同大小的 Logo 图标。&lt;/p&gt;&#10;&lt;h2 class="heading-element" id="4使用-api"&gt;&lt;span&gt;4、使用 API&lt;/span&gt;&#10; &lt;a href="#4%e4%bd%bf%e7%94%a8-api" class="heading-mark"&gt;&lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"&gt;&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&#10;&lt;/h2&gt;&lt;h4 class="heading-element" id="google-api"&gt;&lt;span&gt;Google API&lt;/span&gt;&#10; &lt;a href="#google-api" class="heading-mark"&gt;&lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"&gt;&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&#10;&lt;/h4&gt;&lt;p&gt;使用 &lt;code&gt;https://www.google.com/s2/favicons&lt;/code&gt; 的 Google API，并且可以使用几个不同的参数。&lt;/p&gt;&#10;&lt;p&gt;&lt;code&gt;domain&lt;/code&gt; 参数：&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;https://www.google.com/s2/favicons?domain=google.com&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;code&gt;sz&lt;/code&gt; 和 &lt;code&gt;domain_url&lt;/code&gt; 参数：&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;https://www.google.com/s2/favicons?sz=64&amp;amp;domain_url=yahoo.com&lt;/code&gt;&lt;/pre&gt;&lt;h4 class="heading-element" id="allesedv-api"&gt;&lt;span&gt;AllesEDV API&lt;/span&gt;&#10; &lt;a href="#allesedv-api" class="heading-mark"&gt;&lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"&gt;&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&#10;&lt;/h4&gt;&lt;p&gt;&lt;a href="https://favicon.allesedv.com/" target="_blank" rel="external nofollow noopener noreferrer"&gt;Free Favicon-Service by AllesEDV.at&lt;i class="fa-solid fa-external-link-alt fa-xs ms-1 text-secondary" aria-hidden="true"&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;例子：&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;https://f1.allesedv.com/stackoverflow.com&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>Rclone挂载onedrive</title><link>https://hu.778445.xyz/posts/bf8b4d5/</link><pubDate>Mon, 15 Apr 2024 11:19:18 +0800</pubDate><guid>https://hu.778445.xyz/posts/bf8b4d5/</guid><category domain="https://hu.778445.xyz/categories/rclone/">Rclone</category><description>&lt;p&gt;在 linux 上没有 onedrive 客户端，但是可以使用 rclone 挂载 onedrive 到本地目录。&lt;/p&gt;&#10;&lt;h2 class="heading-element" id="rclone-安装命令"&gt;&lt;span&gt;rclone 安装命令：&lt;/span&gt;&#10; &lt;a href="#rclone-%e5%ae%89%e8%a3%85%e5%91%bd%e4%bb%a4" class="heading-mark"&gt;&lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"&gt;&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&#10;&lt;/h2&gt;&lt;p&gt;在基于 Debian/Ubuntu 的发行版中，使用：&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;sudo apt install rclone&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;对于基于 Arch 的发行版，使用：&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;sudo pacman -S rclone&lt;/code&gt;&lt;/pre&gt;&lt;h2 class="heading-element" id="添加-remote"&gt;&lt;span&gt;添加 remote&lt;/span&gt;&#10; &lt;a href="#%e6%b7%bb%e5%8a%a0-remote" class="heading-mark"&gt;&lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"&gt;&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&#10;&lt;/h2&gt;&lt;p&gt;在终端输入：&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;rclone config&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;按 n 添加新的远程配置&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;n) New remote&#10;s) Set configuration password&#10;q) Quit config&#10;n/s/q&amp;gt; &lt;/code&gt;&lt;/pre&gt;&lt;p&gt;输入远程配置名&lt;/p&gt;&#10;&lt;p&gt;选择存储供应商，我这里的 onedrive 是 33，所以这一步输入 33&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;Option Storage.&#10;Type of storage to configure.&#10;Choose a number from below, or type in your own value.&#10; 1 / 1Fichier&#10; \ (fichier)&#10; 2 / Akamai NetStorage&#10; \ (netstorage)&#10; 3 / Alias for an existing remote&#10; \ (alias)&#10; 4 / Amazon S3 Compliant Storage Providers including AWS, Alibaba, ArvanCloud, Ceph, ChinaMobile, Cloudflare, DigitalOcean, Dreamhost, GCS, HuaweiOBS, IBMCOS, IDrive, IONOS, LyveCloud, Leviia, Liara, Linode, Minio, Netease, Petabox, RackCorp, Rclone, Scaleway, SeaweedFS, StackPath, Storj, Synology, TencentCOS, Wasabi, Qiniu and others&#10; \ (s3)&#10; 5 / Backblaze B2&#10; \ (b2)&#10; 6 / Better checksums for other remotes&#10; \ (hasher)&#10; 7 / Box&#10; \ (box)&#10; 8 / Cache a remote&#10; \ (cache)&#10; 9 / Citrix Sharefile&#10; \ (sharefile)&#10;10 / Combine several remotes into one&#10; \ (combine)&#10;11 / Compress a remote&#10; \ (compress)&#10;12 / Dropbox&#10; \ (dropbox)&#10;13 / Encrypt/Decrypt a remote&#10; \ (crypt)&#10;14 / Enterprise File Fabric&#10; \ (filefabric)&#10;15 / FTP&#10; \ (ftp)&#10;16 / Google Cloud Storage (this is not Google Drive)&#10; \ (google cloud storage)&#10;17 / Google Drive&#10; \ (drive)&#10;18 / Google Photos&#10; \ (google photos)&#10;19 / HTTP&#10; \ (http)&#10;20 / Hadoop distributed file system&#10; \ (hdfs)&#10;21 / HiDrive&#10; \ (hidrive)&#10;22 / ImageKit.io&#10; \ (imagekit)&#10;23 / In memory object storage system.&#10; \ (memory)&#10;24 / Internet Archive&#10; \ (internetarchive)&#10;25 / Jottacloud&#10; \ (jottacloud)&#10;26 / Koofr, Digi Storage and other Koofr-compatible storage providers&#10; \ (koofr)&#10;27 / Linkbox&#10; \ (linkbox)&#10;28 / Local Disk&#10; \ (local)&#10;29 / Mail.ru Cloud&#10; \ (mailru)&#10;30 / Mega&#10; \ (mega)&#10;31 / Microsoft Azure Blob Storage&#10; \ (azureblob)&#10;32 / Microsoft Azure Files&#10; \ (azurefiles)&#10;33 / Microsoft OneDrive&#10; \ (onedrive)&#10;34 / OpenDrive&#10; \ (opendrive)&#10;35 / OpenStack Swift (Rackspace Cloud Files, Blomp Cloud Storage, Memset Memstore, OVH)&#10; \ (swift)&#10;36 / Oracle Cloud Infrastructure Object Storage&#10; \ (oracleobjectstorage)&#10;37 / Pcloud&#10; \ (pcloud)&#10;38 / PikPak&#10; \ (pikpak)&#10;39 / Proton Drive&#10; \ (protondrive)&#10;40 / Put.io&#10; \ (putio)&#10;41 / QingCloud Object Storage&#10; \ (qingstor)&#10;42 / Quatrix by Maytech&#10; \ (quatrix)&#10;43 / SMB / CIFS&#10; \ (smb)&#10;44 / SSH/SFTP&#10; \ (sftp)&#10;45 / Sia Decentralized Cloud&#10; \ (sia)&#10;46 / Storj Decentralized Cloud Storage&#10; \ (storj)&#10;47 / Sugarsync&#10; \ (sugarsync)&#10;48 / Transparently chunk/split large files&#10; \ (chunker)&#10;49 / Union merges the contents of several upstream fs&#10; \ (union)&#10;50 / Uptobox&#10; \ (uptobox)&#10;51 / WebDAV&#10; \ (webdav)&#10;52 / Yandex Disk&#10; \ (yandex)&#10;53 / Zoho&#10; \ (zoho)&#10;54 / premiumize.me&#10; \ (premiumizeme)&#10;55 / seafile&#10; \ (seafile)&#10;Storage&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;接下来是 client ID or secret ID，这两个可以不输入，直接回车即可&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;Option client_id.&#10;OAuth Client Id.&#10;Leave blank normally.&#10;Enter a value. Press Enter to leave empty.&#10;client_id&amp;gt; &#10;&#10;Option client_secret.&#10;OAuth Client Secret.&#10;Leave blank normally.&#10;Enter a value. Press Enter to leave empty.&#10;client_secret&amp;gt; &lt;/code&gt;&lt;/pre&gt;&lt;p&gt;选择地区，默认为 Microsoft Cloud Global，如果你是世纪互联账户就填 4&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;Option region.&#10;Choose national cloud region for OneDrive.&#10;Choose a number from below, or type in your own string value.&#10;Press Enter for the default (global).&#10; 1 / Microsoft Cloud Global&#10; \ (global)&#10; 2 / Microsoft Cloud for US Government&#10; \ (us)&#10; 3 / Microsoft Cloud Germany&#10; \ (de)&#10; 4 / Azure and Office 365 operated by Vnet Group in China&#10; \ (cn)&#10;region&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;是否进行高级设置，按需选择，默认为 no&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;Edit advanced config?&#10;y) Yes&#10;n) No (default)&#10;y/n&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;是否使用浏览器进行登陆，如果当期机器可以使用浏览器就 yes，如果是远程机器无法使用浏览器就 no，我这里选择 yes 并在浏览器中授权登陆&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;Use web browser to automatically authenticate rclone with remote?&#10; * Say Y if the machine running rclone has a web browser you can use&#10; * Say N if running rclone on a (remote) machine without web browser access&#10;If not sure try Y. If Y failed, try N.&#10;&#10;y) Yes (default)&#10;n) No&#10;y/n&amp;gt; &lt;/code&gt;&lt;/pre&gt;&lt;p&gt;选择账户类型，如果是普通个人账户选择 1&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;Option config_type.&#10;Type of connection&#10;Choose a number from below, or type in an existing string value.&#10;Press Enter for the default (onedrive).&#10; 1 / OneDrive Personal or Business&#10; \ (onedrive)&#10; 2 / Root Sharepoint site&#10; \ (sharepoint)&#10; / Sharepoint site name or URL&#10; 3 | E.g. mysite or https://contoso.sharepoint.com/sites/mysite&#10; \ (url)&#10; 4 / Search for a Sharepoint site&#10; \ (search)&#10; 5 / Type in driveID (advanced)&#10; \ (driveid)&#10; 6 / Type in SiteID (advanced)&#10; \ (siteid)&#10; / Sharepoint server-relative path (advanced)&#10; 7 | E.g. /teams/hr&#10; \ (path)&#10;config_type&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;选择配置驱动器 id，一般就一个选项，回车即可&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;Option config_driveid.&#10;Select drive you want to use&#10;Choose a number from below, or type in your own string value.&#10;Press Enter for the default (xxxxxxxx).&#10; 1 / (personal)&#10; \ (xxxxxxxx)&#10;config_driveid&amp;gt; &lt;/code&gt;&lt;/pre&gt;&lt;p&gt;再次确认，没问题回车即可&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;Drive OK?&#10;&#10;Found drive &amp;#34;root&amp;#34; of type &amp;#34;personal&amp;#34;&#10;URL: https://onedrive.live.com/?cid=xxxxxxxx&#10;&#10;y) Yes (default)&#10;n) No&#10;y/n&amp;gt; &lt;/code&gt;&lt;/pre&gt;&lt;p&gt;接下来会展示全部配置信息，如果没问题就回车，也可以修改配置（e），或者直接删除配置（d）&lt;/p&gt;&#10;&lt;p&gt;回车后会回到主配置页面按 q 退出&lt;/p&gt;&#10;&lt;h2 class="heading-element" id="使用-rclone-挂载-onerive-到本地目录"&gt;&lt;span&gt;使用 rclone 挂载 onerive 到本地目录&lt;/span&gt;&#10; &lt;a href="#%e4%bd%bf%e7%94%a8-rclone-%e6%8c%82%e8%bd%bd-onerive-%e5%88%b0%e6%9c%ac%e5%9c%b0%e7%9b%ae%e5%bd%95" class="heading-mark"&gt;&lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"&gt;&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&#10;&lt;/h2&gt;&lt;p&gt;创建文件夹&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;mkdir ~/OneDrive&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;挂载&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;rclone --vfs-cache-mode writes mount &amp;#34;onedrive&amp;#34;: ~/OneDrive&lt;/code&gt;&lt;/pre&gt;&lt;div class="details admonition note open"&gt;&#10; &lt;div class="details-summary admonition-title"&gt;&lt;i class="icon fa-solid fa-pencil" aria-hidden="true"&gt;&lt;/i&gt;注意&lt;i class="details-icon fa-solid fa-angle-right" aria-hidden="true"&gt;&lt;/i&gt;&lt;/div&gt;&lt;div class="details-content"&gt;&#10; &lt;div class="admonition-content"&gt;这里的 &amp;ldquo;onedrive&amp;rdquo; 是你的远程配置名称，&amp;quot;:&amp;quot; 后面是你要挂载到的位置&lt;/div&gt;&#10; &lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;卸载&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;umount ~/OneDrive&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>Arch 安装旧版本软件包</title><link>https://hu.778445.xyz/posts/adb5e01/</link><pubDate>Wed, 14 Feb 2024 21:58:10 +0800</pubDate><guid>https://hu.778445.xyz/posts/adb5e01/</guid><category domain="https://hu.778445.xyz/categories/arch/">Arch</category><description>&lt;h2 class="heading-element" id="arch-源软件包"&gt;&lt;span&gt;arch 源软件包&lt;/span&gt;&#10; &lt;a href="#arch-%e6%ba%90%e8%bd%af%e4%bb%b6%e5%8c%85" class="heading-mark"&gt;&lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"&gt;&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&#10;&lt;/h2&gt;&lt;h3 class="heading-element" id="找到包并手动下载安装"&gt;&lt;span&gt;找到包并手动下载安装&lt;/span&gt;&#10; &lt;a href="#%e6%89%be%e5%88%b0%e5%8c%85%e5%b9%b6%e6%89%8b%e5%8a%a8%e4%b8%8b%e8%bd%bd%e5%ae%89%e8%a3%85" class="heading-mark"&gt;&lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"&gt;&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&#10;&lt;/h3&gt;&lt;p&gt;从 &lt;a href="https://archive.archlinux.org/packages/" target="_blank" rel="external nofollow noopener noreferrer"&gt;Arch Linux Archive&lt;i class="fa-solid fa-external-link-alt fa-xs ms-1 text-secondary" aria-hidden="true"&gt;&lt;/i&gt;&lt;/a&gt; 找到包，然后用 pacman -U 安装指定版本&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;pacman -U https://archive.archlinux.org/packages/.../packagename.pkg.tar.xz&lt;/code&gt;&lt;/pre&gt;&lt;h3 class="heading-element" id="从缓存中安装"&gt;&lt;span&gt;从缓存中安装&lt;/span&gt;&#10; &lt;a href="#%e4%bb%8e%e7%bc%93%e5%ad%98%e4%b8%ad%e5%ae%89%e8%a3%85" class="heading-mark"&gt;&lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"&gt;&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&#10;&lt;/h3&gt;&lt;p&gt;对于之前安装过的包，如果没被清理掉，安装包会保存在&lt;code&gt;/var/cache/pacman/pkg/&lt;/code&gt;下，例如可以直接运行&lt;code&gt;sudo pacman -U /var/cache/pacman/pkg/go-2:1.14.6-1-x86_64.pkg.tar.zst&lt;/code&gt;来安装旧版的golang工具集合。&lt;/p&gt;&#10;&lt;h2 class="heading-element" id="aur-源软件包"&gt;&lt;span&gt;aur 源软件包&lt;/span&gt;&#10; &lt;a href="#aur-%e6%ba%90%e8%bd%af%e4%bb%b6%e5%8c%85" class="heading-mark"&gt;&lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"&gt;&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&#10;&lt;/h2&gt;&lt;h3 class="heading-element" id="找到包并手动下载安装-1"&gt;&lt;span&gt;找到包并手动下载安装&lt;/span&gt;&#10; &lt;a href="#%e6%89%be%e5%88%b0%e5%8c%85%e5%b9%b6%e6%89%8b%e5%8a%a8%e4%b8%8b%e8%bd%bd%e5%ae%89%e8%a3%85-1" class="heading-mark"&gt;&lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"&gt;&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&#10;&lt;/h3&gt;&lt;p&gt;如果缓存中没有：&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;打开 AUR 包仓库 &lt;a href="https://aur.archlinux.org/packages" target="_blank" rel="external nofollow noopener noreferrer"&gt;https://aur.archlinux.org/packages&lt;i class="fa-solid fa-external-link-alt fa-xs ms-1 text-secondary" aria-hidden="true"&gt;&lt;/i&gt;&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;通过「关键字」找到要安装的包详情页面&lt;/li&gt;&#10;&lt;li&gt;在包详情页面右侧，点击「查看更改」&lt;/li&gt;&#10;&lt;li&gt;找到对应的版本，点击「Commit message」，进入版本详情&lt;/li&gt;&#10;&lt;li&gt;找到「download」链接，下载&lt;/li&gt;&#10;&lt;li&gt;解压下载的压缩包，并在解压后的目录内执行以下命令安装：&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;pre&gt;&lt;code&gt;makepkg -s&#10;sudo pacman -U *.pkg.tar.zst&lt;/code&gt;&lt;/pre&gt;&lt;h3 class="heading-element" id="从缓存中安装-1"&gt;&lt;span&gt;从缓存中安装&lt;/span&gt;&#10; &lt;a href="#%e4%bb%8e%e7%bc%93%e5%ad%98%e4%b8%ad%e5%ae%89%e8%a3%85-1" class="heading-mark"&gt;&lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"&gt;&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&#10;&lt;/h3&gt;&lt;p&gt;用paru安装的aur也是可以用这个方法安装。&lt;/p&gt;&#10;&lt;p&gt;比如想安装旧版本的 google-chrome aur，用 paru 安装这个 aur 时，会下载 deb 安装包，并重新打包成 archlinux 的安装包格式，后缀名pkg.tar.zst。&lt;/p&gt;&#10;&lt;p&gt;下载的deb包和重新打包之后的 pkg.tar.zst 都在 &lt;code&gt;~/.cache/paru/clone/google-chrome&lt;/code&gt; 目录下，可以去看看旧版的包还在不在，形如 &lt;code&gt;google-chrome-109.0.5414.74-1-x86_64.pkg.tar.zst&lt;/code&gt;。&lt;/p&gt;&#10;&lt;p&gt;如果在的话，直接执行下面的命令就可以安装：&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;paru -U ~/.cache/paru/clone/google-chrome/google-chrome-109.0.5414.119-1-x86_64.pkg.tar.zst&lt;/code&gt;&lt;/pre&gt;&lt;h3 class="heading-element" id="禁止特定软件包更新"&gt;&lt;span&gt;禁止特定软件包更新&lt;/span&gt;&#10; &lt;a href="#%e7%a6%81%e6%ad%a2%e7%89%b9%e5%ae%9a%e8%bd%af%e4%bb%b6%e5%8c%85%e6%9b%b4%e6%96%b0" class="heading-mark"&gt;&lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"&gt;&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&#10;&lt;/h3&gt;&lt;p&gt;为了防止下次 &lt;code&gt;pacman -Syu&lt;/code&gt; 时不小心又升级到最新版，在 &lt;code&gt;/etc/pacman.conf&lt;/code&gt; 中的 &lt;code&gt;IgnorePkg =&lt;/code&gt; 中添加对应的包名，用空格分隔多个包名。&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;参考：&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://zhuanlan.zhihu.com/p/260993724" target="_blank" rel="external nofollow noopener noreferrer"&gt;在archlinux中如何安装老版本软件&lt;i class="fa-solid fa-external-link-alt fa-xs ms-1 text-secondary" aria-hidden="true"&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://jerry.red/1009/aur-%E5%AE%89%E8%A3%85%E6%97%A7%E7%89%88-%E6%8C%87%E5%AE%9A%E7%89%88%E6%9C%AC" target="_blank" rel="external nofollow noopener noreferrer"&gt;AUR 安装旧版/指定版本&lt;i class="fa-solid fa-external-link-alt fa-xs ms-1 text-secondary" aria-hidden="true"&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://jerry.red/1009/aur-%E5%AE%89%E8%A3%85%E6%97%A7%E7%89%88-%E6%8C%87%E5%AE%9A%E7%89%88%E6%9C%AC" target="_blank" rel="external nofollow noopener noreferrer"&gt;Manjaro 如何安装旧版本软件&lt;i class="fa-solid fa-external-link-alt fa-xs ms-1 text-secondary" aria-hidden="true"&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://wiki.archlinux.org/title/Downgrading_packages" target="_blank" rel="external nofollow noopener noreferrer"&gt;Downgrading packages&lt;i class="fa-solid fa-external-link-alt fa-xs ms-1 text-secondary" aria-hidden="true"&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Wayland Flatpak 字体问题</title><link>https://hu.778445.xyz/posts/20a4029/</link><pubDate>Wed, 07 Feb 2024 10:23:51 +0800</pubDate><guid>https://hu.778445.xyz/posts/20a4029/</guid><category domain="https://hu.778445.xyz/categories/linux/">Linux</category><description>&lt;p&gt;在 arch kde wayland 中使用打开 flatpak 应用 gearlever，字体非常模糊，而且界面也不正常。在 x11 下就完全没有问题。&lt;/p&gt;&#10;&lt;p&gt;原因：Flatpak应用运行在一个隔离的环境中，使用 GTK 的 flatpak 应用，需要使用 GTK 前端（即&lt;code&gt;xdg-desktop-portal-gtk&lt;/code&gt;）作为 Wayland 生态系统中的一个中介服务，提供了标准化的方式来请求和授权对如文件、摄像头、麦克风、显示器等资源的访问。&lt;/p&gt;&#10;&lt;p&gt;解决方法：&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;sudo pacman -S xdg-desktop-portal-gtk&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>Linux环境变量配置</title><link>https://hu.778445.xyz/posts/10383c6/</link><pubDate>Sat, 27 Jan 2024 13:00:11 +0800</pubDate><guid>https://hu.778445.xyz/posts/10383c6/</guid><category domain="https://hu.778445.xyz/categories/linux/">Linux</category><description>&lt;h2 class="heading-element" id="linux环境变量配置"&gt;&lt;span&gt;Linux环境变量配置&lt;/span&gt;&#10; &lt;a href="#linux%e7%8e%af%e5%a2%83%e5%8f%98%e9%87%8f%e9%85%8d%e7%bd%ae" class="heading-mark"&gt;&lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"&gt;&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&#10;&lt;/h2&gt;&lt;p&gt;在自定义安装软件的时候，经常需要配置环境变量，下面列举出各种对环境变量的配置方法。&lt;/p&gt;&#10;&lt;p&gt;下面所有例子的环境说明如下：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;系统：Ubuntu 14.0&lt;/li&gt;&#10;&lt;li&gt;用户名：uusama&lt;/li&gt;&#10;&lt;li&gt;需要配置MySQL环境变量路径：/home/uusama/mysql/bin&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 class="heading-element" id="linux读取环境变量"&gt;&lt;span&gt;Linux读取环境变量&lt;/span&gt;&#10; &lt;a href="#linux%e8%af%bb%e5%8f%96%e7%8e%af%e5%a2%83%e5%8f%98%e9%87%8f" class="heading-mark"&gt;&lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"&gt;&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&#10;&lt;/h3&gt;&lt;p&gt;读取环境变量的方法：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;export&lt;/code&gt;命令显示当前系统定义的所有环境变量&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;echo $PATH&lt;/code&gt;命令输出当前的&lt;code&gt;PATH&lt;/code&gt;环境变量的值&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;这两个命令执行的效果如下&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;uusama@ubuntu:~$ export&#10;declare -x HOME=&amp;#34;/home/uusama&amp;#34;&#10;declare -x LANG=&amp;#34;en_US.UTF-8&amp;#34;&#10;declare -x LANGUAGE=&amp;#34;en_US:&amp;#34;&#10;declare -x LESSCLOSE=&amp;#34;/usr/bin/lesspipe %s %s&amp;#34;&#10;declare -x LESSOPEN=&amp;#34;| /usr/bin/lesspipe %s&amp;#34;&#10;declare -x LOGNAME=&amp;#34;uusama&amp;#34;&#10;declare -x MAIL=&amp;#34;/var/mail/uusama&amp;#34;&#10;declare -x PATH=&amp;#34;/home/uusama/bin:/home/uusama/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin&amp;#34;&#10;declare -x SSH_TTY=&amp;#34;/dev/pts/0&amp;#34;&#10;declare -x TERM=&amp;#34;xterm&amp;#34;&#10;declare -x USER=&amp;#34;uusama&amp;#34;&#10;&#10;uusama@ubuntu:~$ echo $PATH&#10;/home/uusama/bin:/home/uusama/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;其中&lt;code&gt;PATH&lt;/code&gt;变量定义了运行命令的查找路径，以冒号&lt;code&gt;:&lt;/code&gt;分割不同的路径，使用&lt;code&gt;export&lt;/code&gt;定义的时候可加双引号也可不加。&lt;/p&gt;&#10;&lt;h3 class="heading-element" id="linux环境变量配置方法一export-path"&gt;&lt;span&gt;Linux环境变量配置方法一：&lt;code&gt;export PATH&lt;/code&gt;&lt;/span&gt;&#10; &lt;a href="#linux%e7%8e%af%e5%a2%83%e5%8f%98%e9%87%8f%e9%85%8d%e7%bd%ae%e6%96%b9%e6%b3%95%e4%b8%80export-path" class="heading-mark"&gt;&lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"&gt;&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&#10;&lt;/h3&gt;&lt;p&gt;使用&lt;code&gt;export&lt;/code&gt;命令直接修改&lt;code&gt;PATH&lt;/code&gt;的值，配置MySQL进入环境变量的方法:&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;export PATH=/home/uusama/mysql/bin:$PATH&#10;&#10;# 或者把PATH放在前面&#10;export PATH=$PATH:/home/uusama/mysql/bin&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;注意事项：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;生效时间：立即生效&lt;/li&gt;&#10;&lt;li&gt;生效期限：当前终端有效，窗口关闭后无效&lt;/li&gt;&#10;&lt;li&gt;生效范围：仅对当前用户有效&lt;/li&gt;&#10;&lt;li&gt;配置的环境变量中不要忘了加上原来的配置，即&lt;code&gt;$PATH&lt;/code&gt;部分，避免覆盖原来配置&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 class="heading-element" id="linux环境变量配置方法二vim-bashrc"&gt;&lt;span&gt;Linux环境变量配置方法二：&lt;code&gt;vim ~/.bashrc&lt;/code&gt;&lt;/span&gt;&#10; &lt;a href="#linux%e7%8e%af%e5%a2%83%e5%8f%98%e9%87%8f%e9%85%8d%e7%bd%ae%e6%96%b9%e6%b3%95%e4%ba%8cvim-bashrc" class="heading-mark"&gt;&lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"&gt;&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&#10;&lt;/h3&gt;&lt;p&gt;通过修改用户目录下的&lt;code&gt;~/.bashrc&lt;/code&gt;文件进行配置：&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;vim ~/.bashrc&#10;&#10;# 在最后一行加上&#10;export PATH=$PATH:/home/uusama/mysql/bin&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;注意事项：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;生效时间：使用相同的用户打开新的终端时生效，或者手动&lt;code&gt;source ~/.bashrc&lt;/code&gt;生效&lt;/li&gt;&#10;&lt;li&gt;生效期限：永久有效&lt;/li&gt;&#10;&lt;li&gt;生效范围：仅对当前用户有效&lt;/li&gt;&#10;&lt;li&gt;如果有后续的环境变量加载文件覆盖了&lt;code&gt;PATH&lt;/code&gt;定义，则可能不生效&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 class="heading-element" id="linux环境变量配置方法三vim-bash_profile"&gt;&lt;span&gt;Linux环境变量配置方法三：&lt;code&gt;vim ~/.bash_profile&lt;/code&gt;&lt;/span&gt;&#10; &lt;a href="#linux%e7%8e%af%e5%a2%83%e5%8f%98%e9%87%8f%e9%85%8d%e7%bd%ae%e6%96%b9%e6%b3%95%e4%b8%89vim-bash_profile" class="heading-mark"&gt;&lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"&gt;&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&#10;&lt;/h3&gt;&lt;p&gt;和修改&lt;code&gt;~/.bashrc&lt;/code&gt;文件类似，也是要在文件最后加上新的路径即可：&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;vim ~/.bash_profile&#10;&#10;# 在最后一行加上&#10;export PATH=$PATH:/home/uusama/mysql/bin&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;注意事项：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;生效时间：使用相同的用户打开新的终端时生效，或者手动&lt;code&gt;source ~/.bash_profile&lt;/code&gt;生效&lt;/li&gt;&#10;&lt;li&gt;生效期限：永久有效&lt;/li&gt;&#10;&lt;li&gt;生效范围：仅对当前用户有效&lt;/li&gt;&#10;&lt;li&gt;如果没有&lt;code&gt;~/.bash_profile&lt;/code&gt;文件，则可以编辑&lt;code&gt;~/.profile&lt;/code&gt;文件或者新建一个&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 class="heading-element" id="linux环境变量配置方法四vim-etcbashrc"&gt;&lt;span&gt;Linux环境变量配置方法四：&lt;code&gt;vim /etc/bashrc&lt;/code&gt;&lt;/span&gt;&#10; &lt;a href="#linux%e7%8e%af%e5%a2%83%e5%8f%98%e9%87%8f%e9%85%8d%e7%bd%ae%e6%96%b9%e6%b3%95%e5%9b%9bvim-etcbashrc" class="heading-mark"&gt;&lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"&gt;&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&#10;&lt;/h3&gt;&lt;p&gt;该方法是修改系统配置，需要管理员权限（如root）或者对该文件的写入权限：&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;# 如果/etc/bashrc文件不可编辑，需要修改为可编辑&#10;chmod -v u&amp;#43;w /etc/bashrc&#10;&#10;vim /etc/bashrc&#10;&#10;# 在最后一行加上&#10;export PATH=$PATH:/home/uusama/mysql/bin&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;注意事项：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;生效时间：新开终端生效，或者手动&lt;code&gt;source /etc/bashrc&lt;/code&gt;生效&lt;/li&gt;&#10;&lt;li&gt;生效期限：永久有效&lt;/li&gt;&#10;&lt;li&gt;生效范围：对所有用户有效&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 class="heading-element" id="linux环境变量配置方法五vim-etcprofile"&gt;&lt;span&gt;Linux环境变量配置方法五：&lt;code&gt;vim /etc/profile&lt;/code&gt;&lt;/span&gt;&#10; &lt;a href="#linux%e7%8e%af%e5%a2%83%e5%8f%98%e9%87%8f%e9%85%8d%e7%bd%ae%e6%96%b9%e6%b3%95%e4%ba%94vim-etcprofile" class="heading-mark"&gt;&lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"&gt;&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&#10;&lt;/h3&gt;&lt;p&gt;该方法修改系统配置，需要管理员权限或者对该文件的写入权限，和&lt;code&gt;vim /etc/bashrc&lt;/code&gt;类似：&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;# 如果/etc/profile文件不可编辑，需要修改为可编辑&#10;chmod -v u&amp;#43;w /etc/profile&#10;&#10;vim /etc/profile&#10;&#10;# 在最后一行加上&#10;export PATH=$PATH:/home/uusama/mysql/bin&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;注意事项：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;生效时间：新开终端生效，或者手动&lt;code&gt;source /etc/profile&lt;/code&gt;生效&lt;/li&gt;&#10;&lt;li&gt;生效期限：永久有效&lt;/li&gt;&#10;&lt;li&gt;生效范围：对所有用户有效&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 class="heading-element" id="linux环境变量配置方法六vim-etcenvironment"&gt;&lt;span&gt;Linux环境变量配置方法六：&lt;code&gt;vim /etc/environment&lt;/code&gt;&lt;/span&gt;&#10; &lt;a href="#linux%e7%8e%af%e5%a2%83%e5%8f%98%e9%87%8f%e9%85%8d%e7%bd%ae%e6%96%b9%e6%b3%95%e5%85%advim-etcenvironment" class="heading-mark"&gt;&lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"&gt;&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&#10;&lt;/h3&gt;&lt;p&gt;该方法是修改系统环境配置文件，需要管理员权限或者对该文件的写入权限：&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;# 如果/etc/bashrc文件不可编辑，需要修改为可编辑&#10;chmod -v u&amp;#43;w /etc/environment&#10;&#10;vim /etc/profile&#10;&#10;# 在最后一行加上&#10;export PATH=$PATH:/home/uusama/mysql/bin&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;注意事项：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;生效时间：新开终端生效，或者手动&lt;code&gt;source /etc/environment&lt;/code&gt;生效&lt;/li&gt;&#10;&lt;li&gt;生效期限：永久有效&lt;/li&gt;&#10;&lt;li&gt;生效范围：对所有用户有效&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 class="heading-element" id="linux环境变量加载原理解析"&gt;&lt;span&gt;Linux环境变量加载原理解析&lt;/span&gt;&#10; &lt;a href="#linux%e7%8e%af%e5%a2%83%e5%8f%98%e9%87%8f%e5%8a%a0%e8%bd%bd%e5%8e%9f%e7%90%86%e8%a7%a3%e6%9e%90" class="heading-mark"&gt;&lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"&gt;&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&#10;&lt;/h2&gt;&lt;p&gt;上面列出了环境变量的各种配置方法，那么Linux是如何加载这些配置的呢？是以什么样的顺序加载的呢？&lt;/p&gt;&#10;&lt;p&gt;特定的加载顺序会导致相同名称的环境变量定义被覆盖或者不生效。&lt;/p&gt;&#10;&lt;h3 class="heading-element" id="环境变量的分类"&gt;&lt;span&gt;环境变量的分类&lt;/span&gt;&#10; &lt;a href="#%e7%8e%af%e5%a2%83%e5%8f%98%e9%87%8f%e7%9a%84%e5%88%86%e7%b1%bb" class="heading-mark"&gt;&lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"&gt;&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&#10;&lt;/h3&gt;&lt;p&gt;环境变量可以简单的分成用户自定义的环境变量以及系统级别的环境变量。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;用户级别环境变量定义文件：&lt;code&gt;~/.bashrc&lt;/code&gt;、&lt;code&gt;~/.profile&lt;/code&gt;（部分系统为：&lt;code&gt;~/.bash_profile&lt;/code&gt;）&lt;/li&gt;&#10;&lt;li&gt;系统级别环境变量定义文件：&lt;code&gt;/etc/bashrc&lt;/code&gt;、&lt;code&gt;/etc/profile&lt;/code&gt;(部分系统为：&lt;code&gt;/etc/bash_profile&lt;/code&gt;）、&lt;code&gt;/etc/environment&lt;/code&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;另外在用户环境变量中，系统会首先读取&lt;code&gt;~/.bash_profile&lt;/code&gt;（或者&lt;code&gt;~/.profile&lt;/code&gt;）文件，如果没有该文件则读取&lt;code&gt;~/.bash_login&lt;/code&gt;，根据这些文件中内容再去读取&lt;code&gt;~/.bashrc&lt;/code&gt;。&lt;/p&gt;&#10;&lt;h3 class="heading-element" id="测试linux环境变量加载顺序的方法"&gt;&lt;span&gt;测试Linux环境变量加载顺序的方法&lt;/span&gt;&#10; &lt;a href="#%e6%b5%8b%e8%af%95linux%e7%8e%af%e5%a2%83%e5%8f%98%e9%87%8f%e5%8a%a0%e8%bd%bd%e9%a1%ba%e5%ba%8f%e7%9a%84%e6%96%b9%e6%b3%95" class="heading-mark"&gt;&lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"&gt;&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&#10;&lt;/h3&gt;&lt;p&gt;为了测试各个不同文件的环境变量加载顺序，我们在每个环境变量定义文件中的第一行都定义相同的环境变量&lt;code&gt;UU_ORDER&lt;/code&gt;，该变量的值为本身的值连接上当前文件名称。&lt;/p&gt;&#10;&lt;p&gt;需要修改的文件如下：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;/etc/environment&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;/etc/profile&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;/etc/profile.d/test.sh&lt;/code&gt;，新建文件，没有文件夹可略过&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;/etc/bashrc&lt;/code&gt;，或者&lt;code&gt;/etc/bash.bashrc&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;~/.bash_profile&lt;/code&gt;，或者&lt;code&gt;~/.profile&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;~/.bashrc&lt;/code&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;在每个文件中的第一行都加上下面这句代码，并相应的把冒号后的内容修改为当前文件的绝对文件名。&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;export UU_ORDER=&amp;#34;$UU_ORDER:~/.bash_profile&amp;#34;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;修改完之后保存，新开一个窗口，然后&lt;code&gt;echo $UU_ORDER&lt;/code&gt;观察变量的值：&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;uusama@ubuntu:~$ echo $UU_ORDER&#10;$UU_ORDER:/etc/environment:/etc/profile:/etc/bash.bashrc:/etc/profile.d/test.sh:~/.profile:~/.bashrc&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;可以推测出Linux加载环境变量的顺序如下：&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&lt;code&gt;/etc/environment&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;/etc/profile&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;/etc/bash.bashrc&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;/etc/profile.d/test.sh&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;~/.profile&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;~/.bashrc&lt;/code&gt;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h3 class="heading-element" id="linux环境变量文件加载详解"&gt;&lt;span&gt;Linux环境变量文件加载详解&lt;/span&gt;&#10; &lt;a href="#linux%e7%8e%af%e5%a2%83%e5%8f%98%e9%87%8f%e6%96%87%e4%bb%b6%e5%8a%a0%e8%bd%bd%e8%af%a6%e8%a7%a3" class="heading-mark"&gt;&lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"&gt;&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&#10;&lt;/h3&gt;&lt;p&gt;由上面的测试可容易得出Linux加载环境变量的顺序如下，：&lt;/p&gt;&#10;&lt;p&gt;系统环境变量 -&amp;gt; 用户自定义环境变量&#10;&lt;code&gt;/etc/environment&lt;/code&gt; -&amp;gt; &lt;code&gt;/etc/profile&lt;/code&gt; -&amp;gt; &lt;code&gt;~/.profile&lt;/code&gt;&lt;/p&gt;&#10;&lt;p&gt;打开&lt;code&gt;/etc/profile&lt;/code&gt;文件你会发现，该文件的代码中会加载&lt;code&gt;/etc/bash.bashrc&lt;/code&gt;文件，然后检查&lt;code&gt;/etc/profile.d/&lt;/code&gt;目录下的&lt;code&gt;.sh&lt;/code&gt;文件并加载。&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))&#10;# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).&#10;&#10;if [ &amp;#34;$PS1&amp;#34; ]; then&#10; if [ &amp;#34;$BASH&amp;#34; ] &amp;amp;&amp;amp; [ &amp;#34;$BASH&amp;#34; != &amp;#34;/bin/sh&amp;#34; ]; then&#10; # The file bash.bashrc already sets the default PS1.&#10; # PS1=&amp;#39;\h:\w\$ &amp;#39;&#10; if [ -f /etc/bash.bashrc ]; then&#10; . /etc/bash.bashrc&#10; fi&#10; else&#10; if [ &amp;#34;`id -u`&amp;#34; -eq 0 ]; then&#10; PS1=&amp;#39;# &amp;#39;&#10; else&#10; PS1=&amp;#39;$ &amp;#39;&#10; fi&#10; fi&#10;fi&#10;&#10;if [ -d /etc/profile.d ]; then&#10; for i in /etc/profile.d/*.sh; do&#10; if [ -r $i ]; then&#10; . $i&#10; fi&#10; done&#10; unset i&#10;fi&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;其次再打开&lt;code&gt;~/.profile&lt;/code&gt;文件，会发现该文件中加载了&lt;code&gt;~/.bashrc&lt;/code&gt;文件。&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;# if running bash&#10;if [ -n &amp;#34;$BASH_VERSION&amp;#34; ]; then&#10; # include .bashrc if it exists&#10; if [ -f &amp;#34;$HOME/.bashrc&amp;#34; ]; then&#10;&#9;. &amp;#34;$HOME/.bashrc&amp;#34;&#10; fi&#10;fi&#10;&#10;# set PATH so it includes user&amp;#39;s private bin directories&#10;PATH=&amp;#34;$HOME/bin:$HOME/.local/bin:$PATH&amp;#34;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;从&lt;code&gt;~/.profile&lt;/code&gt;文件中代码不难发现，&lt;code&gt;/.profile&lt;/code&gt;文件&lt;strong&gt;只在用户登录的时候读取一次&lt;/strong&gt;，而&lt;code&gt;/.bashrc&lt;/code&gt;会在每次运行&lt;code&gt;Shell&lt;/code&gt;脚本的时候读取一次。&lt;/p&gt;&#10;&lt;h3 class="heading-element" id="一些小技巧"&gt;&lt;span&gt;一些小技巧&lt;/span&gt;&#10; &lt;a href="#%e4%b8%80%e4%ba%9b%e5%b0%8f%e6%8a%80%e5%b7%a7" class="heading-mark"&gt;&lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"&gt;&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&#10;&lt;/h3&gt;&lt;p&gt;可以自定义一个环境变量文件，比如在某个项目下定义&lt;code&gt;uusama.profile&lt;/code&gt;，在这个文件中使用&lt;code&gt;export&lt;/code&gt;定义一系列变量，然后在&lt;code&gt;~/.profile&lt;/code&gt;文件后面加上：&lt;code&gt;sourc uusama.profile&lt;/code&gt;，这样你每次登陆都可以在Shell脚本中使用自己定义的一系列变量。&lt;/p&gt;&#10;&lt;p&gt;也可以使用&lt;code&gt;alias&lt;/code&gt;命令定义一些命令的别名，比如&lt;code&gt;alias rm=&amp;quot;rm -i&amp;quot;&lt;/code&gt;（双引号必须），并把这个代码加入到&lt;code&gt;~/.profile&lt;/code&gt;中，这样你每次使用&lt;code&gt;rm&lt;/code&gt;命令的时候，都相当于使用&lt;code&gt;rm -i&lt;/code&gt;命令，非常方便。&lt;/p&gt;</description></item><item><title>Ufw 防火墙的使用</title><link>https://hu.778445.xyz/posts/bf63d9d/</link><pubDate>Sat, 27 Jan 2024 11:42:28 +0800</pubDate><guid>https://hu.778445.xyz/posts/bf63d9d/</guid><category domain="https://hu.778445.xyz/categories/firewall/">Firewall</category><description>&lt;h2 class="heading-element" id="一前提条件"&gt;&lt;span&gt;一、前提条件&lt;/span&gt;&#10; &lt;a href="#%e4%b8%80%e5%89%8d%e6%8f%90%e6%9d%a1%e4%bb%b6" class="heading-mark"&gt;&lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"&gt;&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&#10;&lt;/h2&gt;&lt;p&gt;仅仅 root 或者其他有 sudo 权限的用户可以管理系统防火墙。最佳实践就是以 sudo 用户来运行管理员任务。&lt;/p&gt;&#10;&lt;h2 class="heading-element" id="二安装-ufw"&gt;&lt;span&gt;二、安装 UFW&lt;/span&gt;&#10; &lt;a href="#%e4%ba%8c%e5%ae%89%e8%a3%85-ufw" class="heading-mark"&gt;&lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"&gt;&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&#10;&lt;/h2&gt;&lt;p&gt;UFW 是标准 Ubuntu 20.04 安装过程中的一部分，它应该已经在你的系统上存在。如果因为某些原因，它没有被安装，你可以通过输入下面的命令安装它：&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;sudo apt update&#10;sudo apt install ufw&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;安装 GUI 程序&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;sudo apt install gufw&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;UFW安装后，可以通过以下命令来启动UFW服务并使其在启动时启动（一般在完成默认配置后再重启）：&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;# ufw enable&lt;/code&gt;&lt;/pre&gt;&lt;blockquote&gt;&#10;&lt;p&gt;在开启防火墙后，修改防火墙配置后可以使用&lt;code&gt;ufw reload&lt;/code&gt;重新加载防火墙&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;如果运行ufw命令时报&lt;code&gt;Command Not Found&lt;/code&gt;错误，可以使用&lt;code&gt;whereis ufw&lt;/code&gt;来确定ufw的位置，之后你也可以顺手设置一下alias。&#10;接下来，使用以下命令检查UFW的状态，可以看到以下输出：&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;# ufw status&#10;Status: active&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;还可以通过运行以下命令来禁用UFW防火墙（后面可以通过enable命令随时启用服务）：&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;# ufw disable&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;如果你决定要重新开始，则可以使用reset命令：&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;# ufw reset&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;这将禁用UFW并删除之前定义的任何规则。&lt;/p&gt;&#10;&lt;p&gt;最新版的UFW默认启用了IPV6配置，你也可以通过以下命令进行检查，可以看到以下输出：&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;# cat /etc/default/ufw | grep -i ipv6&#10;IPV6=yes&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;如果输出为&lt;code&gt;IPV6=no&lt;/code&gt;，可以使用vim编辑该文件将其改为yes。&lt;/p&gt;&#10;&lt;h2 class="heading-element" id="三检查-ufw-的状态"&gt;&lt;span&gt;三、检查 UFW 的状态&lt;/span&gt;&#10; &lt;a href="#%e4%b8%89%e6%a3%80%e6%9f%a5-ufw-%e7%9a%84%e7%8a%b6%e6%80%81" class="heading-mark"&gt;&lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"&gt;&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&#10;&lt;/h2&gt;&lt;p&gt;安装过程不会自动激活防火墙，以避免服务器被锁住。你可以检查 UFW 的状态，输入：&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;sudo ufw status verbose&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;输出如下：&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;Status: inactive&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;如果 UFW 激活了，输入应该类似下面这样：&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;Status: active&#10;Logging: on (low)&#10;Default: deny (incoming), allow (outgoing), disabled (routed)&#10;New profiles: skip&#10;&#10;To Action From&#10;-- ------ ----&#10;22/tcp ALLOW IN Anywhere&#10;22/tcp (v6) ALLOW IN Anywhere&lt;/code&gt;&lt;/pre&gt;&lt;h2 class="heading-element" id="四ufw-默认策略"&gt;&lt;span&gt;四、UFW 默认策略&lt;/span&gt;&#10; &lt;a href="#%e5%9b%9bufw-%e9%bb%98%e8%ae%a4%e7%ad%96%e7%95%a5" class="heading-mark"&gt;&lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"&gt;&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&#10;&lt;/h2&gt;&lt;p&gt;默认情况下，UFW默认策略设置为阻止所有传入流量并允许所有传出流量。默认的策略定义在&lt;code&gt;/etc/default/ufw&lt;/code&gt;文件中。&lt;/p&gt;&#10;&lt;p&gt;默认策略可以通过使用&lt;code&gt;sudo ufw default &amp;lt;policy&amp;gt; &amp;lt;chain&amp;gt;&lt;/code&gt;命令来修改。你可以使用以下命令来设置自己的默认策略：&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;# ufw default allow outgoing&#10;# ufw default deny incoming&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;防火墙策略是用来构建更多详细的和用户自定义的规则的基础。通常情况下，初始的默认策略是一个很好的起点。&lt;/p&gt;&#10;&lt;p&gt;如果现在重启机器（这会儿不要这么做），UFW配置会在重启后生效，它将拒绝所有传入的连接。因为我们没有允许SSH连接，这意味着，重启过后我们将无法远程连接到服务器。如果我们希望服务器响应这些类型的请求，我们就需要明确指定允许传入连接的规则 （例如SSH或HTTP连接）。&lt;/p&gt;&#10;&lt;p&gt;要将防火墙配置为允许传入SSH连接，可以使用以下命令：&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;# ufw allow ssh&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;这将创建防火墙规则-允许端口22上的所有连接，这是SSH守护程序默认监听的端口，类似的快捷指令还有 &lt;code&gt;ufw allow http&lt;/code&gt;、&lt;code&gt;ufw allow https&lt;/code&gt;。&lt;/p&gt;&#10;&lt;p&gt;实际上也可以通过直接指定端口来创建等效规则，下面这条命令将产生相同的结果：&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;# ufw allow 22&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;如果你的SSH守护程序配置在其他端口，则需要手动指定相应的端口。&lt;/p&gt;&#10;&lt;h2 class="heading-element" id="五应用配置"&gt;&lt;span&gt;五、应用配置&lt;/span&gt;&#10; &lt;a href="#%e4%ba%94%e5%ba%94%e7%94%a8%e9%85%8d%e7%bd%ae" class="heading-mark"&gt;&lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"&gt;&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&#10;&lt;/h2&gt;&lt;p&gt;大部分应用都附带一份应用配置，它描述了服务，并且包含了 UFW 设置。这个规则在软件包安装的时候，被自动创建在&lt;code&gt;/etc/ufw/applications.d&lt;/code&gt;目录下。&lt;/p&gt;&#10;&lt;p&gt;想要列举出你系统上所有的应用配置，输入：&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;sudo ufw app list&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;与你系统上安装的软件包有关系，输出应该看起来像下面这样：&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;Available applications:&#10; Nginx Full&#10; Nginx HTTP&#10; Nginx HTTPS&#10; OpenSSH&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;想要查找更多关于指定配置和包含规则的信息，使用下面的命令：&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;sudo ufw app info &amp;#39;Nginx Full&amp;#39;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;输出应该显示&amp;quot;Nginx Full&amp;quot;配置打开了端口&amp;quot;80&amp;quot;和&amp;quot;443”。&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;Profile: Nginx Full&#10;Title: Web Server (Nginx, HTTP &amp;#43; HTTPS)&#10;Description: Small, but very powerful and efficient web server&#10;&#10;Ports:&#10; 80,443/tcp&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;你也可以为你的应用创建自定义的配置。&lt;/p&gt;&#10;&lt;h2 class="heading-element" id="六打开端口"&gt;&lt;span&gt;六、打开端口&lt;/span&gt;&#10; &lt;a href="#%e5%85%ad%e6%89%93%e5%bc%80%e7%ab%af%e5%8f%a3" class="heading-mark"&gt;&lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"&gt;&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&#10;&lt;/h2&gt;&lt;p&gt;取决于运行在你服务器上的应用，你需要根据服务打开不同的端口。&lt;/p&gt;&#10;&lt;p&gt;通用的打开端口的语法如下：&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;ufw allow port_number/protocol&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;下面是一些关于如何允许 HTTP 连接的方法。&lt;/p&gt;&#10;&lt;p&gt;第一个选项就是使用服务名。UFW 检查&lt;code&gt;/etc/services&lt;/code&gt;文件，其中指定服务的端口和协议：&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;sudo ufw allow http&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;你也可以指定端口号和协议：&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;sudo ufw allow 80/tcp&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;当没有给出协议的时候，UFW 同时创建&lt;code&gt;tcp&lt;/code&gt;和&lt;code&gt;udp&lt;/code&gt;的规则。&lt;/p&gt;&#10;&lt;p&gt;另外一个选项就是使用应用程序配置。在这个例子中，是&amp;quot;Nginx HTTP”：&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;sudo ufw allow &amp;#39;Nginx HTTP&amp;#39;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;UFW 还支持另外一种语法，使用 &lt;code&gt;proto&lt;/code&gt; 关键字来指定协议。&lt;/p&gt;&#10;&lt;h3 class="heading-element" id="71-端口范围"&gt;&lt;span&gt;7.1 端口范围&lt;/span&gt;&#10; &lt;a href="#71-%e7%ab%af%e5%8f%a3%e8%8c%83%e5%9b%b4" class="heading-mark"&gt;&lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"&gt;&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&#10;&lt;/h3&gt;&lt;p&gt;UFW 允许你打开端口范围。使用分号分隔开端口的起点和终点，当你指定协议时，或者是 &lt;code&gt;tcp&lt;/code&gt;，或者是&lt;code&gt;udp&lt;/code&gt;。&lt;/p&gt;&#10;&lt;p&gt;例如，如果你想允许端口从&lt;code&gt;7100&lt;/code&gt;到&lt;code&gt;7200&lt;/code&gt;，同时支持&lt;code&gt;tcp&lt;/code&gt;和&lt;code&gt;udp&lt;/code&gt;，你将要运行下面的命令：&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;sudo ufw allow 7100:7200/tcp&#10;sudo ufw allow 7100:7200/udp&lt;/code&gt;&lt;/pre&gt;&lt;h3 class="heading-element" id="72-允许指定-ip-地址访问指定端口"&gt;&lt;span&gt;7.2 允许指定 IP 地址访问指定端口&lt;/span&gt;&#10; &lt;a href="#72-%e5%85%81%e8%ae%b8%e6%8c%87%e5%ae%9a-ip-%e5%9c%b0%e5%9d%80%e8%ae%bf%e9%97%ae%e6%8c%87%e5%ae%9a%e7%ab%af%e5%8f%a3" class="heading-mark"&gt;&lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"&gt;&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&#10;&lt;/h3&gt;&lt;p&gt;想要允许指定源 IP 的所有端口上的所有连接通过，使用&lt;code&gt;from&lt;/code&gt;关键字，加上源地址。&lt;/p&gt;&#10;&lt;p&gt;这里是一个 IP 地址白名单的例子：&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;sudo ufw allow from 64.63.62.61&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;如果你指向允许给定 IP 访问指定的端口，使用&lt;code&gt;to any port&lt;/code&gt;关键字加上端口号。&lt;/p&gt;&#10;&lt;p&gt;例如，允许从 IP&lt;code&gt;64.63.62.61&lt;/code&gt;的机器，通过&lt;code&gt;22&lt;/code&gt;端口访问,输入：&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;sudo ufw allow from 64.63.62.61 to any port 22&lt;/code&gt;&lt;/pre&gt;&lt;h3 class="heading-element" id="73-允许子网"&gt;&lt;span&gt;7.3 允许子网&lt;/span&gt;&#10; &lt;a href="#73-%e5%85%81%e8%ae%b8%e5%ad%90%e7%bd%91" class="heading-mark"&gt;&lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"&gt;&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&#10;&lt;/h3&gt;&lt;p&gt;允许一个子网 IP 地址的访问和允许一个单个 IP 地址的访问，命令是一样的。唯一的不同是需要指定网络掩码。&lt;/p&gt;&#10;&lt;p&gt;下面是一个例子，显示如何允许 IP 地址(192.168.1.1 到 192.168.1.254)，通过 3360(MySQL)，你可以使用这个命令：&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;sudo ufw allow from 192.168.1.0/24 to any port 3306&lt;/code&gt;&lt;/pre&gt;&lt;h3 class="heading-element" id="74-允许指定网络接口的连接"&gt;&lt;span&gt;7.4 允许指定网络接口的连接&lt;/span&gt;&#10; &lt;a href="#74-%e5%85%81%e8%ae%b8%e6%8c%87%e5%ae%9a%e7%bd%91%e7%bb%9c%e6%8e%a5%e5%8f%a3%e7%9a%84%e8%bf%9e%e6%8e%a5" class="heading-mark"&gt;&lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"&gt;&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&#10;&lt;/h3&gt;&lt;p&gt;想要允许连接通过指定网络接口，使用&lt;code&gt;allow in on&lt;/code&gt; 和 网络接口的名字：&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;sudo ufw allow in on eth2 to any port 3306&lt;/code&gt;&lt;/pre&gt;&lt;h2 class="heading-element" id="七禁止连接"&gt;&lt;span&gt;七、禁止连接&lt;/span&gt;&#10; &lt;a href="#%e4%b8%83%e7%a6%81%e6%ad%a2%e8%bf%9e%e6%8e%a5" class="heading-mark"&gt;&lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"&gt;&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&#10;&lt;/h2&gt;&lt;p&gt;对于所有进来连接的默认的策略被设置为&lt;code&gt;deny&lt;/code&gt;，如果你没有修改它，UFW 将会屏蔽所有进来的连接，除非你指定打开连接。&lt;/p&gt;&#10;&lt;p&gt;写禁止规则和写允许规则是一样的，你需要的仅仅是使用&lt;code&gt;deny&lt;/code&gt;关键字替换&lt;code&gt;allow&lt;/code&gt;。&lt;/p&gt;&#10;&lt;p&gt;比如说你打开了端口&lt;code&gt;80&lt;/code&gt;和&lt;code&gt;443&lt;/code&gt;，并且你的服务器处于来自&lt;code&gt;23.24.25.0/24&lt;/code&gt;网络的攻击。想要禁止来自&lt;code&gt;23.24.25.0/24&lt;/code&gt;的所有连接，使用下面的命令：&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;sudo ufw deny from 23.24.25.0/24&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;这里是一个例子，关于禁止从&lt;code&gt;23.24.25.0/24&lt;/code&gt;对&lt;code&gt;80&lt;/code&gt;和&lt;code&gt;443&lt;/code&gt;端口的访问，你可以使用下面的命令：&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;sudo ufw deny proto tcp from 23.24.25.0/24 to any port 80,443&lt;/code&gt;&lt;/pre&gt;&lt;h2 class="heading-element" id="八删除-ufw-规则"&gt;&lt;span&gt;八、删除 UFW 规则&lt;/span&gt;&#10; &lt;a href="#%e5%85%ab%e5%88%a0%e9%99%a4-ufw-%e8%a7%84%e5%88%99" class="heading-mark"&gt;&lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"&gt;&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&#10;&lt;/h2&gt;&lt;p&gt;有两种不同的方式可以删除 UFW 规则。通过规则序号和通过指定的规则。&lt;/p&gt;&#10;&lt;p&gt;通过规则序号来删除 UFW 规则很简单，特别是你刚接触 UFW。&lt;/p&gt;&#10;&lt;p&gt;想要通过规则序号来删除，你需要找到你想删除的规则序号。想要这么做，运行下面的命令：&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;sudo ufw status numbered&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;输出：&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;Status: active&#10;&#10; To Action From&#10; -- ------ ----&#10;[ 1] 22/tcp ALLOW IN Anywhere&#10;[ 2] 80/tcp ALLOW IN Anywhere&#10;[ 3] 8080/tcp ALLOW IN Anywhere&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;想要删除规则，序号为3，这个规则允许对端口8080的连接，你可以使用下面的命令：&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;sudo ufw delete 3&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;删除规则的第二种方法就是指定实际的规则。例如，如果你添加过一个打开端口&lt;code&gt;8069&lt;/code&gt;的规则，你可以通过下面的命令删除它：&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;sudo ufw delete allow 8069&lt;/code&gt;&lt;/pre&gt;&lt;h2 class="heading-element" id="参考文档"&gt;&lt;span&gt;参考文档&lt;/span&gt;&#10; &lt;a href="#%e5%8f%82%e8%80%83%e6%96%87%e6%a1%a3" class="heading-mark"&gt;&lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"&gt;&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&#10;&lt;/h2&gt;&lt;p&gt;1、&lt;a href="https://zhuanlan.zhihu.com/p/139381645" target="_blank" rel="external nofollow noopener noreferrer"&gt;如何在 Ubuntu 20.04 上使用 UFW 来设置防火墙&lt;i class="fa-solid fa-external-link-alt fa-xs ms-1 text-secondary" aria-hidden="true"&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;2、&lt;a href="https://zhuanlan.zhihu.com/p/98880088" target="_blank" rel="external nofollow noopener noreferrer"&gt;简明教程｜Linux中UFW的使用&lt;i class="fa-solid fa-external-link-alt fa-xs ms-1 text-secondary" aria-hidden="true"&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;3、 &lt;a href="https://manpages.ubuntu.com/manpages/focal/man8/ufw.8.html" target="_blank" rel="external nofollow noopener noreferrer"&gt;Ubuntu manuals UFW&lt;i class="fa-solid fa-external-link-alt fa-xs ms-1 text-secondary" aria-hidden="true"&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;4、[Uncomplicated Firewall (ufw)](&lt;a href="https://wiki.debian.org/Uncomplicated" target="_blank" rel="external nofollow noopener noreferrer"&gt;https://wiki.debian.org/Uncomplicated&lt;i class="fa-solid fa-external-link-alt fa-xs ms-1 text-secondary" aria-hidden="true"&gt;&lt;/i&gt;&lt;/a&gt; Firewall (ufw))&lt;/p&gt;</description></item><item><title>UEFI引导和启动项</title><link>https://hu.778445.xyz/posts/c30f9ee/</link><pubDate>Fri, 26 Jan 2024 13:54:49 +0800</pubDate><guid>https://hu.778445.xyz/posts/c30f9ee/</guid><category domain="https://hu.778445.xyz/categories/%E5%BC%95%E5%AF%BC%E5%90%AF%E5%8A%A8/">引导启动</category><description>&lt;h2 class="heading-element" id="efi系统分区"&gt;&lt;span&gt;EFI系统分区&lt;/span&gt;&#10; &lt;a href="#efi%e7%b3%bb%e7%bb%9f%e5%88%86%e5%8c%ba" class="heading-mark"&gt;&lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"&gt;&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&#10;&lt;/h2&gt;&lt;p&gt;UEFI规范里，在GPT分区表的基础上，规定了一个EFI系统分区（EFI System Partition，ESP），ESP要格式化成FAT32，EFI启动文件要放在&lt;code&gt;\EFI\&amp;lt;厂商&amp;gt;&lt;/code&gt;文件夹下面。&lt;/p&gt;&#10;&lt;p&gt;比如Windows的UEFI启动文件，都在“\EFI\Microsoft”下面。&#10;比如Clover的东西，全都放在“\EFI\Clover”下面。&lt;/p&gt;&#10;&lt;h2 class="heading-element" id="文件启动项"&gt;&lt;span&gt;文件启动项&lt;/span&gt;&#10; &lt;a href="#%e6%96%87%e4%bb%b6%e5%90%af%e5%8a%a8%e9%a1%b9" class="heading-mark"&gt;&lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"&gt;&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&#10;&lt;/h2&gt;&lt;p&gt;文件启动项，大约记录的是某个磁盘的某个分区的某个路径下的某个文件。UEFI的文件启动项的配置信息跟UEFI固件设置存放在一起。&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Windows 引导文件&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;在EFI系统中，Windows引导文件通常存储在EFI系统分区的 &lt;strong&gt;EFI\Microsoft\Boot&lt;/strong&gt; 目录中，文件名为 &lt;strong&gt;bootmgfw.efi&lt;/strong&gt;。&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Linux 引导文件：&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;debian 的引导文件为 &lt;strong&gt;EFI\debian\shimx64.efi&lt;/strong&gt; 或者&lt;strong&gt;EFI/debian/grubx64.efi&lt;/strong&gt;&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;shimx64.efi&lt;/code&gt; 是一个预引导加载程序，用于验证并加载 GRUB (&lt;code&gt;grubx64.efi&lt;/code&gt;)，启动时会读取 &lt;code&gt;/boot/grub/grub.cfg&lt;/code&gt; 中的配置文件。&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;grubx64.efi&lt;/code&gt; 通过读取 GRUB 配置文件（通常位于 &lt;code&gt;/boot/grub/grub.cfg&lt;/code&gt;）来加载系统。配置文件的内容由 &lt;code&gt;/etc/grub.d&lt;/code&gt; 中的脚本和配置片段生成。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;shimx64.efi 是一个相对简单的程序，它提供了一种在安全启动（Secure Boot）开启的状态下使用的方法。&lt;/p&gt;&#10;&lt;p&gt;安全启动（Secure Boot）开启的状态下，未签名的 GRUB 版本(&lt;code&gt;grubx64.efi&lt;/code&gt;)将无法启动，因此 shim 弥补了缺陷并添加了自己的安全工具，与 安全启动（Secure Boot) 类似。&lt;/p&gt;&#10;&lt;p&gt;实际上，shim 会在固件中注册自己，然后在它的目录中启动一个名为 &lt;code&gt;grubx64.efi&lt;/code&gt; 的程序，在没有启用 安全启动（Secure Boot） 的计算机中，启动 shimx64.efi 和启动 grubx64.efi是一样的。&lt;/p&gt;&#10;&lt;h2 class="heading-element" id="设备启动项"&gt;&lt;span&gt;设备启动项&lt;/span&gt;&#10; &lt;a href="#%e8%ae%be%e5%a4%87%e5%90%af%e5%8a%a8%e9%a1%b9" class="heading-mark"&gt;&lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"&gt;&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&#10;&lt;/h2&gt;&lt;p&gt;设备启动项，大约记录的就是“某个U盘”、“某个硬盘”。（此处只讨论U盘、硬盘）对于设备启动项，UEFI标准规定了默认的路径 &lt;strong&gt;\EFI\Boot\bootX64.efi&lt;/strong&gt;。UEFI会加载磁盘上的这个文件。文件不存在则失败。&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;\EFI\Boot&lt;/strong&gt; 这个文件夹。这个文件夹，放谁家的程序都行。无论是“\EFI\Microsoft\Boot\Bootmgfw.efi”，还是 &lt;strong&gt;\EFI\Clover\CloverX64.efi&lt;/strong&gt;，只要放到**\EFI\Boot&lt;strong&gt;下并且改名&lt;/strong&gt;bootX64.efi**，就能在没添加文件启动项的情况下，默认加载对应的系统。&lt;/p&gt;&#10;&lt;p&gt;参考：&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://blog.csdn.net/yaxuan88521/article/details/124902921" target="_blank" rel="external nofollow noopener noreferrer"&gt;Linux中GRUBX64.EFI和SHIMX64.EFI有什么区别？_使用grubx64.efi还是shimx64.efi-CSDN博客&lt;i class="fa-solid fa-external-link-alt fa-xs ms-1 text-secondary" aria-hidden="true"&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://zhuanlan.zhihu.com/p/31365115" target="_blank" rel="external nofollow noopener noreferrer"&gt;科普贴：BIOS和UEFI的启动项 - 知乎 (zhihu.com)&lt;i class="fa-solid fa-external-link-alt fa-xs ms-1 text-secondary" aria-hidden="true"&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Git子模块管理</title><link>https://hu.778445.xyz/posts/ae24c29/</link><pubDate>Fri, 26 Jan 2024 10:11:21 +0800</pubDate><guid>https://hu.778445.xyz/posts/ae24c29/</guid><category domain="https://hu.778445.xyz/categories/git/">Git</category><description>&lt;p&gt;克隆的项目下有easydk子模块，下载完之后会发现easydk文件夹是空的，有两种方法下载子模块&lt;/p&gt;&#10;&lt;h2 class="heading-element" id="方法一git-clone-recursive"&gt;&lt;span&gt;方法一：git clone &amp;ndash;recursive&lt;/span&gt;&#10; &lt;a href="#%e6%96%b9%e6%b3%95%e4%b8%80git-clone-recursive" class="heading-mark"&gt;&lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"&gt;&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&#10;&lt;/h2&gt;&lt;pre&gt;&lt;code&gt;git clone --recursive https://github.com/Cambricon/CNStream&lt;/code&gt;&lt;/pre&gt;&lt;h2 class="heading-element" id="方法二git-submodule-update-init"&gt;&lt;span&gt;方法二：git submodule update &amp;ndash;init&lt;/span&gt;&#10; &lt;a href="#%e6%96%b9%e6%b3%95%e4%ba%8cgit-submodule-update-init" class="heading-mark"&gt;&lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"&gt;&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&#10;&lt;/h2&gt;&lt;pre&gt;&lt;code&gt;git clone https://github.com/Cambricon/CNStream&#10;cd CNStream&#10;git submodule update --init --recursive&lt;/code&gt;&lt;/pre&gt;&lt;h2 class="heading-element" id="添加子模块"&gt;&lt;span&gt;添加子模块&lt;/span&gt;&#10; &lt;a href="#%e6%b7%bb%e5%8a%a0%e5%ad%90%e6%a8%a1%e5%9d%97" class="heading-mark"&gt;&lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"&gt;&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&#10;&lt;/h2&gt;&lt;pre&gt;&lt;code&gt;git submodule add https://github.com/hugo-fixit/FixIt.git themes/FixIt&lt;/code&gt;&lt;/pre&gt;&lt;h2 class="heading-element" id="更新子模块"&gt;&lt;span&gt;更新子模块&lt;/span&gt;&#10; &lt;a href="#%e6%9b%b4%e6%96%b0%e5%ad%90%e6%a8%a1%e5%9d%97" class="heading-mark"&gt;&lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"&gt;&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&#10;&lt;/h2&gt;&lt;pre&gt;&lt;code&gt;git submodule update --remote --merge&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>修复 grub 引导</title><link>https://hu.778445.xyz/posts/af65970/</link><pubDate>Fri, 26 Jan 2024 09:18:21 +0800</pubDate><guid>https://hu.778445.xyz/posts/af65970/</guid><category domain="https://hu.778445.xyz/categories/%E5%BC%95%E5%AF%BC%E5%90%AF%E5%8A%A8/">引导启动</category><description>&lt;h2 class="heading-element" id="开机进入-grub"&gt;&lt;span&gt;开机进入 grub&lt;/span&gt;&#10; &lt;a href="#%e5%bc%80%e6%9c%ba%e8%bf%9b%e5%85%a5-grub" class="heading-mark"&gt;&lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"&gt;&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&#10;&lt;/h2&gt;&lt;p&gt;修改引导区可能是一个高风险操作。最好运行命令时要仔细查看，计算机有重要数据时把重要的数据备份，或是提前备份好引导分区，还有硬盘分区表，或是做好整个硬盘的资料备份。数据备份很重要。&lt;/p&gt;&#10;&lt;p&gt;有时我们可有需要在多台电脑上安装ubuntu 20.04，但像使用ghost一样，可以使用分区还原功能，来快速安装很多软件。&lt;/p&gt;&#10;&lt;p&gt;这时可以备份分区到另外一台电脑上还原。&lt;/p&gt;&#10;&lt;p&gt;但各个电脑上因为可能硬盘号不同，会出现引导不了ubuntu的现象，如开机出现ubuntu的grub提示符。&lt;/p&gt;&#10;&lt;p&gt;这时我们可以手工修复，其实也不复杂。&lt;/p&gt;&#10;&lt;p&gt;用下面的 ls 命令，显示出有那些硬盘分区，hd代表硬盘，gpt0这种代表分区&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;grub&amp;gt;ls&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;(hd0,gpt0),(hd0,gpt1),(hd0,gpt2),(hd0,gpt3)&lt;/p&gt;&#10;&lt;p&gt;再一个个查看ls (hd0,gpt2)/，每个分区下面，有没有类似ubuntu的文件根目录的文件夹，如果有就是这个分区。&lt;/p&gt;&#10;&lt;p&gt;这里假设为(hd0,gpt2)，那么ls (hd0,gpt2)/就会显示这个分区下面的文件目录信息，有类似ubuntu的文件夹信息&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;grub&amp;gt;ls (hd0,gpt2)/&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;再设置变量，开启正常进入&lt;/p&gt;&#10;&lt;p&gt;grub&amp;gt;set root= # 这里指定根分区&lt;/p&gt;&#10;&lt;p&gt;grub&amp;gt;set prefix= # 这里指定GRUB的安装目录，如果boot在主分区中，就是主分区/boot/grub，如果boot单独分区，就是boot分区的/grub。&lt;/p&gt;&#10;&lt;p&gt;如果未更改 vmlinuz、initrd 位置，可以不设置 linux 或者 initrd&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;grub&amp;gt;set root=(hd0,gpt2)&#10;grub&amp;gt;set prefix=(hd0,gpt2)/boot/grub&#10;grub&amp;gt;linux /vmlinuz root=/dev/sdaA #vmlinuz必须使用TAB补全（可能有后缀），注意A的值，sda或sdb需要看自己的实际情况&#10;grub&amp;gt;initrd /initrd.img-xxx #TAB补全，多内核情况下版本需统一&#10;grub&amp;gt;insmod normal&#10;grub&amp;gt;normal&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;进入ubuntu 20.04后，在终端命令行下运行下面的命令修复grub&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;sudo update-grub&#10;sudo grub-install /dev/sda&#9;# 将 sda 换成你的包含 /boot 的分区&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;重启后，可以正常引导启动进入ubuntu的图形界面系统。&lt;/p&gt;&#10;&lt;p&gt;在双系统win10+ubuntu20.04上实际测试有效，但因为修改引导区可能是一个高风险操作，最好运行命令时要仔细查看，必要时把重要的数据备份，或是提前备份好引导分区，还有硬盘分区表，或是做好整个硬盘的资料备份。数据备份很重要。&lt;/p&gt;&#10;&lt;p&gt;这种方法的好处是可以快速安装ubuntu20.04在多个电脑上，特别是有很多复杂设置的运行环境下，可以更加高效安装，不用浪费时间一台台去安装复杂的配置。目前只是用于硬件构造差不多的（一样的主板）电脑上，估计如果是差异比较大的电脑上可能会出现驱动问题。&lt;/p&gt;&#10;&lt;p&gt;参考：&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://zhuanlan.zhihu.com/p/510476641" target="_blank" rel="external nofollow noopener noreferrer"&gt;手工修复ubuntu 20.04的grub引导&lt;i class="fa-solid fa-external-link-alt fa-xs ms-1 text-secondary" aria-hidden="true"&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://www.jianshu.com/p/708f12472b85" target="_blank" rel="external nofollow noopener noreferrer"&gt;Ubuntu开机进入GRUB手动引导&lt;i class="fa-solid fa-external-link-alt fa-xs ms-1 text-secondary" aria-hidden="true"&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;h2 class="heading-element" id="开机进入-grub-rescue"&gt;&lt;span&gt;开机进入 grub rescue&lt;/span&gt;&#10; &lt;a href="#%e5%bc%80%e6%9c%ba%e8%bf%9b%e5%85%a5-grub-rescue" class="heading-mark"&gt;&lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"&gt;&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&#10;&lt;/h2&gt;&lt;p&gt;很多时候，特别是在linux调整分区后，开机重启时会出现&lt;/p&gt;&#10;&lt;p&gt;​ error : unknow filesystem&lt;/p&gt;&#10;&lt;p&gt;​ grub rescue&amp;gt;&lt;/p&gt;&#10;&lt;p&gt;​ 的字样，系统就是进不去。这表示你的grub2的配置文件坏了……&lt;/p&gt;&#10;&lt;p&gt;​ 由于分区调整或分区UUID改变造成grub2不能正常启动，从而进入修复模式了（grub rescue)，也称救援模式。&lt;/p&gt;&#10;&lt;p&gt;​ 在救援模式下只有很少的命令可以用：set , ls , insmod , root , prefix&lt;/p&gt;&#10;&lt;p&gt;​ (1)set 查看环境变量，这里可以查看启动路径和分区。&lt;/p&gt;&#10;&lt;p&gt;​ (2)ls 查看设备&lt;/p&gt;&#10;&lt;p&gt;​ (3)insmod 加载模块&lt;/p&gt;&#10;&lt;p&gt;​ (4)root 指定用于启动系统的分区,在救援模式下设置grub启动分区&lt;/p&gt;&#10;&lt;p&gt;​ (5)prefix 设定grub启动路径&lt;/p&gt;&#10;&lt;p&gt;具体修复步骤如下：&lt;/p&gt;&#10;&lt;p&gt;1、查看分区：grub rescue&amp;gt; ls 回车&lt;/p&gt;&#10;&lt;p&gt;​ 会出现如下字样：&lt;/p&gt;&#10;&lt;p&gt;​ (hd0) (hd0,msdos9) (hd0,msdos8) (hd0,msdos7) (hd0,msdos6) (hd0,msdos5) (hd0,msdos2) (hd0,msdos1)&lt;/p&gt;&#10;&lt;p&gt;​ 注：上面是我的分区设备，每个人可能不一样，但原理都是一样的。&lt;/p&gt;&#10;&lt;p&gt;2、寻找ubuntu所在分区：&lt;/p&gt;&#10;&lt;p&gt;​ （就是寻找你的Linux系统是装在以上哪个分区里）&lt;/p&gt;&#10;&lt;p&gt;​ grub rescue&amp;gt; ls (hd0,msdos1)/&lt;/p&gt;&#10;&lt;p&gt;​ 若出现unknown filesystem字样，则尝试下一个&lt;/p&gt;&#10;&lt;p&gt;​ ……&lt;/p&gt;&#10;&lt;p&gt;​ 若出现的是你的ubuntu主文件夹下的文件夹和文件的名字，那就是的要找的分区了。&lt;/p&gt;&#10;&lt;p&gt;3、修改启动分区：&lt;/p&gt;&#10;&lt;p&gt;​ （假如你找到的启动分区是hd0,msdos8）&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;grub rescue&amp;gt;root=(hd0,msdos8)&#10;grub rescue&amp;gt;prefix=/boot/grub //grub路径设置&#10;grub rescue&amp;gt;set root=(hd0,msdos8)&#10;grub rescue&amp;gt;set prefix=(hd0,msdos8)/boot/grub&#10;grub rescue&amp;gt;insmod normal //启动normal启动&#10;grub rescue&amp;gt;normal&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;​ 之后你就会看到熟悉的启动菜单栏了&lt;/p&gt;&#10;&lt;p&gt;4、进入命令行启动ubuntu&lt;/p&gt;&#10;&lt;p&gt;​ 进入系统启动选项界面后还是进不去，&lt;/p&gt;&#10;&lt;p&gt;​ 因为你还没有真正的修改grub,这个要到ubuntu里修改&lt;/p&gt;&#10;&lt;p&gt;进入系统启动项界面后，按C进入命令行模式&lt;/p&gt;&#10;&lt;p&gt;​ grub &amp;gt;set root=hd0,msdos8&lt;/p&gt;&#10;&lt;p&gt;​ grub &amp;gt;set prefix=(hd0,msdos8)/boot/grub&lt;/p&gt;&#10;&lt;p&gt;​ grub &amp;gt;linux /vmlinuz-xxx-xxx root=/dev/sda8 //里边的xxxx可以按Tab键，如果有acpi问题,在最后加一句acpi=off&#10;​ grub &amp;gt;initrd /initrd.img-xxx-xxx&#10;​ grub &amp;gt;boot&lt;/p&gt;&#10;&lt;p&gt;​ 这样就可以进入了&lt;/p&gt;&#10;&lt;p&gt;5、进入ubuntu修复grub&lt;/p&gt;&#10;&lt;p&gt;在终端里运行&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;sudo update-grub&#10;sudo grub-install /dev/sda&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;6、重启，搞定！！&lt;/p&gt;&#10;&lt;p&gt;注：我当时只是修改了1～3步骤，然后在菜单栏就可以进入系统了，且一切正常。&lt;/p&gt;&#10;&lt;p&gt;​ 可惜，在重启时，系统就只有一个光标在左上角不停的闪，咋也进不了系统。后来开机按F2，开机启动项改为硬盘启动就好了。&lt;/p&gt;&#10;&lt;p&gt;来源：&lt;a href="https://www.cnblogs.com/jins-note/p/9513335.html" target="_blank" rel="external nofollow noopener noreferrer"&gt;怎样修复grub开机引导(grub rescue)&lt;i class="fa-solid fa-external-link-alt fa-xs ms-1 text-secondary" aria-hidden="true"&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;h2 class="heading-element" id="使用-live-cd-挂载分区"&gt;&lt;span&gt;使用 live cd 挂载分区&lt;/span&gt;&#10; &lt;a href="#%e4%bd%bf%e7%94%a8-live-cd-%e6%8c%82%e8%bd%bd%e5%88%86%e5%8c%ba" class="heading-mark"&gt;&lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"&gt;&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&#10;&lt;/h2&gt;&lt;p&gt;制作启动 u盘，我这里是安装了 ventoy，然后把 linux live 包放入 u盘，dell电脑开机按 f12 选择启动设备&lt;/p&gt;&#10;&lt;p&gt;进入 linux 挂载分区，设置 chroot ，执行命令安装 grub 并生成 grub.cfg 配置文件&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;sudo mount Ubuntu系统分区 /mnt&#10;sudo mount EFI分区 /mnt/boot/efi&#10;for i in /dev /dev/pts /proc /sys /run; do sudo mount -B $i /mnt$i; done&#10;sudo chroot /mnt&#10;grub-install boot分区所在&#10;update-grub&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;grub-install 时，如果引导文件已经存在，可以先删除或者加上 &lt;code&gt;--removable&lt;/code&gt; 参数&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;grub-install --target=x86_64-efi --efi-directory=/boot --removable&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;参考:&lt;/p&gt;&#10;&lt;p&gt;[&lt;a href="https://superuser.com/questions/1738694/linux-from-scratch-efi-variables-are-not-supported-on-this-system" target="_blank" rel="external nofollow noopener noreferrer"&gt;Linux from Scratch - EFI variables are not supported on this system&lt;i class="fa-solid fa-external-link-alt fa-xs ms-1 text-secondary" aria-hidden="true"&gt;&lt;/i&gt;&lt;/a&gt;](&lt;a href="https://superuser.com/questions/1738694/linux-from-scratch-efi-variables-are-not-supported-on-this-system" target="_blank" rel="external nofollow noopener noreferrer"&gt;https://superuser.com/questions/1738694/linux-from-scratch-efi-variables-are-not-supported-on-this-system&lt;i class="fa-solid fa-external-link-alt fa-xs ms-1 text-secondary" aria-hidden="true"&gt;&lt;/i&gt;&lt;/a&gt;)&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://blog.csdn.net/weixin_54026671/article/details/118106335" target="_blank" rel="external nofollow noopener noreferrer"&gt;Ubuntu20.04 引导修复&lt;i class="fa-solid fa-external-link-alt fa-xs ms-1 text-secondary" aria-hidden="true"&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;h2 class="heading-element" id="补充和解释"&gt;&lt;span&gt;补充和解释&lt;/span&gt;&#10; &lt;a href="#%e8%a1%a5%e5%85%85%e5%92%8c%e8%a7%a3%e9%87%8a" class="heading-mark"&gt;&lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"&gt;&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&#10;&lt;/h2&gt;&lt;p&gt;debian 中 EFI/debian/grub.cfg 中写明了 boot 分区的 uuid，这里的uuid决定了谁是第一启动项，如果同时有debian和lmde，因为不会在EFI里面同时有 debian 和 lmde，所以 lmde也会把efi文件放在debian里&lt;/p&gt;&#10;&lt;p&gt;debian /boot/grub/grub.cfg 中记录了机器上其他的系统，如果其他系统有更改，例如删除，重装等，可能需要 update-grub 来更新此文件&lt;/p&gt;&#10;&lt;p&gt;update-grub：更新分区信息，如果开启了 os-prober，会查找所有磁盘的系统信息并更新到 /boot/grub/grub.cfg文件。&lt;/p&gt;&#10;&lt;p&gt;grub-install：将 grub 安装到包含 /boot的分区，根据分区不同，可能是主分区，也可能是 boot分区里面，对于 UEFI 引导，grub-install 会将 GRUB 安装到 UEFI （ESP）分区的特定位置。通常是 /boot/efi/EFI 目录下创建 GRUB 相关的文件和目录，其中的 grubx64.efi 文件是 GRUB 的 UEFI 引导加载程序。&lt;/p&gt;&#10;&lt;p&gt;/boot/grub 目录： 同样，GRUB 的配置文件和一些必要的模块会被复制到 /boot/grub 目录中。&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;vmlinuz 和 initrd&lt;/strong&gt;&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&lt;strong&gt;vmlinuz:&lt;/strong&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;vmlinuz&lt;/code&gt; 是 Linux 内核的压缩版本。内核是操作系统的核心部分，负责管理系统资源、调度任务、提供系统调用接口等。&lt;code&gt;vmlinuz&lt;/code&gt; 文件包含了压缩过的 Linux 内核，用于启动操作系统。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;initrd (initial ramdisk):&lt;/strong&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;initrd&lt;/code&gt; 是一个临时的根文件系统，其目的是在 Linux 内核引导过程中提供必要的初始化文件和驱动程序，以便能够挂载实际的根文件系统。&lt;code&gt;initrd&lt;/code&gt; 包含了一些必要的工具和模块，使系统能够在引导过程中加载并运行。一旦真正的根文件系统准备好，&lt;code&gt;initrd&lt;/code&gt; 就会被卸载。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;&lt;a href="https://www.zhihu.com/question/610484788" target="_blank" rel="external nofollow noopener noreferrer"&gt;如何手动安装(并配置)GRUB？&lt;i class="fa-solid fa-external-link-alt fa-xs ms-1 text-secondary" aria-hidden="true"&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://zhuanlan.zhihu.com/p/84159775" target="_blank" rel="external nofollow noopener noreferrer"&gt;了解 UEFI与Legacy、硬盘分区MBR和GPT&lt;i class="fa-solid fa-external-link-alt fa-xs ms-1 text-secondary" aria-hidden="true"&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;h2 class="heading-element" id="修改引导"&gt;&lt;span&gt;修改引导&lt;/span&gt;&#10; &lt;a href="#%e4%bf%ae%e6%94%b9%e5%bc%95%e5%af%bc" class="heading-mark"&gt;&lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"&gt;&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&#10;&lt;/h2&gt;&lt;p&gt;调整引导启动项，windows 可用软件 DiskGenius、EasyUEFI，linux 用 efibootmgr 命令，GRUB Customizer的图形界面工具&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://www.cnblogs.com/pipci/p/8862292.html" target="_blank" rel="external nofollow noopener noreferrer"&gt;用efibootmgr管理UEFI启动项，添加丢失的启动项 - pipci - 博客园 (cnblogs.com)&lt;i class="fa-solid fa-external-link-alt fa-xs ms-1 text-secondary" aria-hidden="true"&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;h2 class="heading-element" id="grub-安装命令"&gt;&lt;span&gt;grub 安装命令&lt;/span&gt;&#10; &lt;a href="#grub-%e5%ae%89%e8%a3%85%e5%91%bd%e4%bb%a4" class="heading-mark"&gt;&lt;svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"&gt;&lt;path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"&gt;&lt;/path&gt;&lt;/svg&gt;&lt;/a&gt;&#10;&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;grub-install&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;安装到 UEFI 引导的系统，&amp;ndash;efi-directory 指定 efi 根路径，&amp;ndash;bootloader-id 指定引导加载器的名称，这个也会是ESP分区中，/EFI 中相应目录名称，一般是发行版名称&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=arch&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;grub-mkconfig&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;生成系统内核菜单条目并加入到 /boot/grub/grub.cfg&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;grub-mkconfig -o /boot/grub/grub.cfg&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;update-grub&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;code&gt;update-grub&lt;/code&gt; 是 grub-mkconfig 的包装器，grub-mkconfig 是用于检测 /boot 中的内核的实用程序。因为使用挂载的 /boot（也许它也可以基于 /etc/fstab 挂载 /boot），并且您的 Linux 安装使用单独的 /boot 分区， &lt;code&gt;grub-mkconfig&lt;/code&gt; 因此 &lt;code&gt;grub-mkconfig&lt;/code&gt; 只会为您当前正在运行的 Linux 发行版生成配置。这就是为什么在 Debian 中，Mint 没有被检测到，反之亦然。&lt;/p&gt;&#10;&lt;p&gt;参考&lt;a href="https://unix.stackexchange.com/questions/652191/grub-mkconfig-adding-entry-for-other-linux-system-but-ignoring-its-grub-config" target="_blank" rel="external nofollow noopener noreferrer"&gt;grub-mkconfig adding entry for other Linux system but ignoring its Grub config &lt;i class="fa-solid fa-external-link-alt fa-xs ms-1 text-secondary" aria-hidden="true"&gt;&lt;/i&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Linux 用 davfs 挂载坚果云 Webdav</title><link>https://hu.778445.xyz/posts/1290b4f/</link><pubDate>Wed, 17 Jan 2024 14:37:00 +0800</pubDate><guid>https://hu.778445.xyz/posts/1290b4f/</guid><category domain="https://hu.778445.xyz/categories/linux/">Linux</category><description>&lt;p&gt;需求：在 debian12 上利用 webdav 挂载坚果云&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;安装 davfs2&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;debian 12 安装命令：&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;sudo apt install davfs2&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;挂载和卸载：&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;# root 权限挂载&#10;sudo mount -t davfs &amp;lt;WebDAV服务器URL&amp;gt; /mnt/webdav&#10;sudo mount.davfs &amp;lt;WebDAV服务器URL&amp;gt; /mnt/webdav&#10;# 卸载&#10;sudo umount /mnt/webdav&lt;/code&gt;&lt;/pre&gt;&lt;ol start="2"&gt;&#10;&lt;li&gt;设置非特权用户登陆&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;pre&gt;&lt;code&gt;sudo dpkg-reconfigure davfs2 # 选择非特权用户登陆&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;# 复制配置文件到 ~/.davfs2&#10;mkdir ~/.davfs2&#10;cd /etc/davfs2/&#10;sudo cp davfs2.conf secrets ~/.davfs2&#10;# 修改用户名和组&#10;cd ~/.davfs2&#10;sudo chown username:username davfs2.conf secrets&lt;/code&gt;&lt;/pre&gt;&lt;ol start="3"&gt;&#10;&lt;li&gt;配置免密码挂载&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;编辑 &lt;code&gt;~/.davfs2/secrets&lt;/code&gt; 文件以将凭据添加到远程 WebDAV 目录。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;在文件末尾添加一行，样式如下： &lt;code&gt;https://&amp;lt;WebDav URI&amp;gt; &amp;lt;username&amp;gt; &amp;lt;password&amp;gt;&lt;/code&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;设置权限： &lt;code&gt;chmod 600 ~/.davfs2/secrets&lt;/code&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;修改 &lt;code&gt;~/.davfs2/davfs2.conf&lt;/code&gt; 将这一行取消注释 &lt;code&gt;secrets ~/.davfs2/secrets&lt;/code&gt; 仅使用用户 secrets 文件配置&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;修改 &lt;code&gt;~/.davfs2/davfs2.conf&lt;/code&gt; 忽略 dav 头请求头&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;pre&gt;&lt;code&gt;# 将 ignore_dav_header 这一行取消注释并将值改为 1&#10;ignore_dav_header 1&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;这是因为坚果云的 WebDAV 服务器不支持 Class 1，修改之后可以使 davfs 跳过 Class 1 的验证&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;在 &lt;code&gt;/etc/fstab&lt;/code&gt; 添加行，类似 &lt;code&gt;https://&amp;lt;WebDav URI&amp;gt; /mnt/dav/ davfs user,noauto,file_mode=600,dir_mode=700 0 1&lt;/code&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;pre&gt;&lt;code&gt;# 使用 `mount /mnt/webdav` 自动挂载 `https://dav.jianguoyun.com/dav/` 到 `/mnt/webdav`&#10;https://dav.jianguoyun.com/dav/ /mnt/webdav/ davfs user,noauto,file_mode=600,dir_mode=700 0 1&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;重新加载 systemd &lt;code&gt;systemctl daemon-reload&lt;/code&gt;&lt;/p&gt;&#10;&lt;p&gt;将用户添加到 davfs2 组 &lt;code&gt;sudo usermod -a -G davfs2 your_user&lt;/code&gt;&lt;/p&gt;&#10;&lt;p&gt;注销并重新登陆&lt;/p&gt;&#10;&lt;p&gt;执行命令挂载网盘&lt;code&gt;mount /mnt/webdav&lt;/code&gt;&lt;/p&gt;&#10;&lt;ol start="5"&gt;&#10;&lt;li&gt;开机自动挂载&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;以 root 权限为所有用户开机自动挂载&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;pre&gt;&lt;code&gt;# 开机联网后自动挂载，默认是以 root 权限运行的，需要在 /etc/davfs2/secrets 增加登陆信息&#10;https://dav.jianguoyun.com/dav/ /mnt/webdav/ davfs user,_netdev,auto,file_mode=600,dir_mode=700 0 1&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;&#10;&lt;li&gt;仅当前用户登陆时自动挂载&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;在&lt;code&gt;~/.config/systemd/user&lt;/code&gt; 增加 systemd 服务文件 &lt;code&gt;webdav_mount.service&lt;/code&gt; ，添加以下内容&lt;/p&gt;&#10;&lt;pre&gt;&lt;code&gt;[Unit]&#10;Description=WebDAV Connection Service&#10;After=network-online.target&#10;Wants=network-online.target&#10;&#10;[Service]&#10;Type=simple&#10;RemainAfterExit=yes&#10;ExecStart=mount /mnt/webdav&#10;&#10;[Install]&#10;WantedBy=default.target&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;重新加载用户 systemd ，&lt;code&gt;systemctl --user daemon-reload&lt;/code&gt;&lt;/p&gt;&#10;&lt;p&gt;启用 &lt;code&gt;webdav_mount.service&lt;/code&gt; ，&lt;code&gt;systemctl --user enable webdav_mount.service&lt;/code&gt;&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;以上配置内容是，在开机联网后自动执行 mount /mnt/webdav，RemainAfterExit=yes 是为了让 systemd 在执行命令后不退出，否则 systemd 会在执行命令后自动 umount&lt;/p&gt;&#10;&lt;/blockquote&gt;</description></item></channel></rss>