<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>麦子重构中</title>
  
  
  <link href="https://wheat0r.me/atom.xml" rel="self"/>
  
  <link href="https://wheat0r.me/"/>
  <updated>2025-12-05T18:00:28.209Z</updated>
  <id>https://wheat0r.me/</id>
  
  <author>
    <name>Wheat0r</name>
    
  </author>
  
  <generator uri="https://hexo.io/">Hexo</generator>
  
  <entry>
    <title>Liquid Glass出了什么问题？</title>
    <link href="https://wheat0r.me/2025/06/16/whats-wrong-with-ios26/"/>
    <id>https://wheat0r.me/2025/06/16/whats-wrong-with-ios26/</id>
    <published>2025-06-16T23:50:54.000Z</published>
    <updated>2025-12-05T18:00:28.209Z</updated>
    
    <content type="html"><![CDATA[<h1 id="什么是Liquid-Glass"><a href="#什么是Liquid-Glass" class="headerlink" title="什么是Liquid Glass"></a>什么是Liquid Glass</h1><p>WWDC25中苹果发布了全新的设计语言Liquid Glass。</p><p>苹果声称Liquid Glass是“跨平台的通用设计让内容更受关注，并带来全新活力，同时保持 Apple 软件的熟悉感”。</p><p>“全新材质 Liquid Glass 具有半透明特性，其表现如同现实世界中的玻璃。它的颜色由周围内容决定，并可在明亮和黑暗环境中智能地调整。Liquid Glass 源于设计团队和工程团队的紧密合作，采用实时渲染技术，并能通过镜面高光对运动做出动态反应。”</p><h1 id="Liquid-Ass"><a href="#Liquid-Ass" class="headerlink" title="Liquid Ass"></a>Liquid Ass</h1><p>可是观众很快就会发现，Liquid Glass在当前iOS 26上的实际运行效果并不自然，而且设计完全无法“让内容更受关注”。</p><p>尤其是控制中心，前景和背景重叠显示，功能开关是否激活无法确定，什么都看不清。</p><h1 id="什么是磨砂玻璃"><a href="#什么是磨砂玻璃" class="headerlink" title="什么是磨砂玻璃"></a>什么是磨砂玻璃</h1><p>不论Liquid Glass这个名字听起来有多高级，我们都要先从磨砂玻璃讲起。</p><p>我们在物体前遮挡一块磨砂玻璃，会对我们观察物体造成三种改变：</p><span id="more"></span><h2 id="清晰度降低"><a href="#清晰度降低" class="headerlink" title="清晰度降低"></a>清晰度降低</h2><p>清晰度降低，简单来说就是模糊。</p><p>普通透明玻璃表面光滑，光线可以平行地穿过，从而形成清晰的图像。然而，磨砂玻璃的表面是粗糙、不平的，当光线照射到其表面时，会被向四面八方不规则地散射开来。</p><h2 id="亮度变化"><a href="#亮度变化" class="headerlink" title="亮度变化"></a>亮度变化</h2><p>一般来说，磨砂玻璃造成的亮度变化就是亮度降低。光线透过磨砂玻璃，不仅部分光线被反射，还会有很多亮度在经过粗糙表面后消耗在折射的过程中，因此磨砂玻璃一般会造成明显的亮度降低。</p><p>与此同时，当我们给磨砂玻璃的边缘加上一个光源时，整个磨砂玻璃都会被照亮，形成一种类似背光的效果。</p><h2 id="饱和度降低"><a href="#饱和度降低" class="headerlink" title="饱和度降低"></a>饱和度降低</h2><p>磨砂玻璃在成像时会导致景物的饱和度降低。</p><p>磨砂玻璃的粗糙表面，使得光线经过时发生多方向的散射，这种散射会让来自不同方向、不同颜色的光线混合在一起，原本清晰的色彩边界被模糊、平均，导致色彩不再鲜明。</p><h1 id="Liquid-Glass出了什么问题？"><a href="#Liquid-Glass出了什么问题？" class="headerlink" title="Liquid Glass出了什么问题？"></a>Liquid Glass出了什么问题？</h1><h2 id="清晰度不够低"><a href="#清晰度不够低" class="headerlink" title="清晰度不够低"></a>清晰度不够低</h2><p>磨砂玻璃的模糊效果，不仅可以降低背景对前景的干扰，还可以降低景深，打造更好的层次感。</p><p>而Liquid Glass的模糊效果并不强，我们甚至可以隐约在控制中心阅读到背景中的文字。</p><p>可以说Liquid Glass产生的模糊并不像磨砂玻璃，而是硫酸纸。</p><h2 id="亮度没对比"><a href="#亮度没对比" class="headerlink" title="亮度没对比"></a>亮度没对比</h2><p>正如上面说的，一般情况下磨砂玻璃会造成亮度降低，也就是我们在控制中心看到的背景变暗的效果，但此时前景的控件一样很暗，用户甚至无法一眼确定哪个元素是前景的内容。</p><p>而有时界面的背景和前景又都很亮，比如锁屏通知。</p><h2 id="饱和度太高"><a href="#饱和度太高" class="headerlink" title="饱和度太高"></a>饱和度太高</h2><p>我觉得这个才是最严重的问题。</p><p>背景的饱和度看来比前景还高，尤其是控制中心中，背景色会严重影响用户对控件是否激活的判断。</p><h1 id="怎么改？"><a href="#怎么改？" class="headerlink" title="怎么改？"></a>怎么改？</h1><p>不多说，看效果：</p><p><img src="https://static.cdn.wheat0r.me/2025/06/eb4e0b25615ebd0f6dda40c25b328146.webp" alt="demo1"></p><p><img src="https://static.cdn.wheat0r.me/2025/06/0de0e42c7f165dd0c99bc4ae0c290a76.webp" alt="demo2"></p>]]></content>
    
    
    <summary type="html">&lt;h1 id=&quot;什么是Liquid-Glass&quot;&gt;&lt;a href=&quot;#什么是Liquid-Glass&quot; class=&quot;headerlink&quot; title=&quot;什么是Liquid Glass&quot;&gt;&lt;/a&gt;什么是Liquid Glass&lt;/h1&gt;&lt;p&gt;WWDC25中苹果发布了全新的设计语言Liquid Glass。&lt;/p&gt;
&lt;p&gt;苹果声称Liquid Glass是“跨平台的通用设计让内容更受关注，并带来全新活力，同时保持 Apple 软件的熟悉感”。&lt;/p&gt;
&lt;p&gt;“全新材质 Liquid Glass 具有半透明特性，其表现如同现实世界中的玻璃。它的颜色由周围内容决定，并可在明亮和黑暗环境中智能地调整。Liquid Glass 源于设计团队和工程团队的紧密合作，采用实时渲染技术，并能通过镜面高光对运动做出动态反应。”&lt;/p&gt;
&lt;h1 id=&quot;Liquid-Ass&quot;&gt;&lt;a href=&quot;#Liquid-Ass&quot; class=&quot;headerlink&quot; title=&quot;Liquid Ass&quot;&gt;&lt;/a&gt;Liquid Ass&lt;/h1&gt;&lt;p&gt;可是观众很快就会发现，Liquid Glass在当前iOS 26上的实际运行效果并不自然，而且设计完全无法“让内容更受关注”。&lt;/p&gt;
&lt;p&gt;尤其是控制中心，前景和背景重叠显示，功能开关是否激活无法确定，什么都看不清。&lt;/p&gt;
&lt;h1 id=&quot;什么是磨砂玻璃&quot;&gt;&lt;a href=&quot;#什么是磨砂玻璃&quot; class=&quot;headerlink&quot; title=&quot;什么是磨砂玻璃&quot;&gt;&lt;/a&gt;什么是磨砂玻璃&lt;/h1&gt;&lt;p&gt;不论Liquid Glass这个名字听起来有多高级，我们都要先从磨砂玻璃讲起。&lt;/p&gt;
&lt;p&gt;我们在物体前遮挡一块磨砂玻璃，会对我们观察物体造成三种改变：&lt;/p&gt;</summary>
    
    
    
    <category term="Tech" scheme="https://wheat0r.me/categories/Tech/"/>
    
    
    <category term="WWDC" scheme="https://wheat0r.me/tags/WWDC/"/>
    
    <category term="iPadOS" scheme="https://wheat0r.me/tags/iPadOS/"/>
    
    <category term="iOS" scheme="https://wheat0r.me/tags/iOS/"/>
    
    <category term="Apple" scheme="https://wheat0r.me/tags/Apple/"/>
    
  </entry>
  
  <entry>
    <title>小型企业/工作室IPv6方案</title>
    <link href="https://wheat0r.me/2025/02/02/ipv6-for-small-business/"/>
    <id>https://wheat0r.me/2025/02/02/ipv6-for-small-business/</id>
    <published>2025-02-02T11:55:54.000Z</published>
    <updated>2025-12-05T18:00:28.209Z</updated>
    
    <content type="html"><![CDATA[<h1 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h1><p>对于很多小型企业和工作室而言，用好公网IPv6地址都是非常重要的。</p><p>但是很多小型企业和工作室通常只能负担动态地址的互联网宽带，而动态公网IPv6地址对于多子网的企业网络非常难以应用。终端直接使用公网IPv6地址，不仅配置复杂，地址管理也麻烦，安全性也少一层保护。</p><p>本文就将通过NAT66为核心的技术解决企业局域网IPv6 ULA的问题。</p><h1 id="TL-DR"><a href="#TL-DR" class="headerlink" title="TL;DR"></a>TL;DR</h1><ol><li>在核心交换机中配置SLAAC或DHCPv6为局域网各子网设备分配IPv6 ULA地址</li><li>出口网关设备配置NAT66</li></ol><span id="more"></span><h1 id="局域网ULA配置"><a href="#局域网ULA配置" class="headerlink" title="局域网ULA配置"></a>局域网ULA配置</h1><p>本段基于Cisco交换机的SLAAC和RA RDNSS功能编写。</p><p>局域网内终端设备需要通过SLAAC或DHCPv6方式分配unique local address (ULA)地址。</p><p>如果终端设备较多，需要增强管理，则应该使用DHCPv6方式；如果终端设备少、管理松散，使用SLAAC方式的分配更加简单。</p><p>SLAAC方式需要解决DNS分配问题，方法有两种。一种是引入DHCPv6仅分配DNS配置，有点是几乎所有设备都支持，缺点是配置相对复杂，不如干脆用DHCPv6把地址分配也解决掉；另一种方法是RA中直接附加RDNSS信息，配置非常简单，单有很小一部分设备不支持RDNSS。</p><p>Cisco交换机的SLAAC配置非常简单，设备默认启用RA。启用RDNSS只需要ipv6 nd ra dns server一条命令。</p><p>典型配置：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br></pre></td><td class="code"><pre><span class="line">ip name-server A_IPv6_DNS_ADDR                   #为交换机配置IPv6 DNS</span><br><span class="line">ipv6 unicast-routing                             #启用IPv6路由功能</span><br><span class="line">!</span><br><span class="line">interface GigabitEthernet0/48                    </span><br><span class="line"> description 上联互联接口</span><br><span class="line"> no switchport</span><br><span class="line"> ip address 172.16.1.2 255.255.255.252           #互联IP地址</span><br><span class="line"> ipv6 address FD08:111:222:1::2/64               #互联IPv6地址</span><br><span class="line">!</span><br><span class="line">interface Vlan4</span><br><span class="line"> description 办公终端</span><br><span class="line"> ip address 192.168.250.254 255.255.255.0</span><br><span class="line"> ipv6 address FD08:111:222:4::1/64</span><br><span class="line"> ipv6 nd ra dns server A_IPv6_DNS_ADDR           #DNS地址分配</span><br><span class="line">!</span><br><span class="line">interface Vlan80</span><br><span class="line"> description 内部服务器</span><br><span class="line"> ip address 192.168.80.254 255.255.255.0</span><br><span class="line"> ipv6 address FD08:111:222:80::1/64</span><br><span class="line">!</span><br><span class="line">ipv6 route ::/0 FD08:111:222:1::1                #IPv6静态路由</span><br></pre></td></tr></table></figure><h1 id="出口网关配置"><a href="#出口网关配置" class="headerlink" title="出口网关配置"></a>出口网关配置</h1><p>这一部分的配置以MikroTik RouterOS为例。</p><p>实际上配置方法与NAT基本相同，只是帮大家熟悉一下NAT66的做法。</p><h2 id="PPPoE"><a href="#PPPoE" class="headerlink" title="PPPoE"></a>PPPoE</h2><p>出口网关设备需要通过PPPoE进行拨号，并获取IPv6地址和默认路由。</p><p>这部分非常简单，几个截图看看就好：</p><p><img src="https://static.cdn.wheat0r.me/2025/02/eddbe07f57e48a49f43057cf5d737635.png" alt="image-20250202163953723"></p><p><img src="https://static.cdn.wheat0r.me/2025/02/14d82df92495594fe8b83e20f715b47f.png" alt="image-20250202164057944"></p><p>唯一需要注意的是DHCPv6 Client这里的前缀长度，可以找一个普通家用路由器拨号之后看看之际给的长度，写到这里就好。</p><h2 id="NAT66"><a href="#NAT66" class="headerlink" title="NAT66"></a>NAT66</h2><p>首先解决上网问题。</p><p>在IPv6防火墙中新建一个源NAT策略，设置出接口为pppoe接口或设置出接口组为WAN，action为masquerade。</p><p><img src="https://static.cdn.wheat0r.me/2025/02/daa7c3447d27d36475f7ace1ba01d0d8.png" alt="image-20250202170934042"></p><p><img src="https://static.cdn.wheat0r.me/2025/02/cac14245fb5ddc6e0451a17e3ba49bfe.png" alt="image-20250202170954468"></p><h2 id="服务器映射"><a href="#服务器映射" class="headerlink" title="服务器映射"></a>服务器映射</h2><p>在IPv6防火墙中新建一个目的NAT策略，设置出接口为pppoe接口或设置出接口组为WAN，同时配置好协议和端口，action为dst_nat，并填写内部服务器的ULA地址和端口。</p><p><img src="https://static.cdn.wheat0r.me/2025/02/362728e345c91078b403f7b6e6a05e69.png" alt="image-20250202172222013"></p><p><img src="https://static.cdn.wheat0r.me/2025/02/7f6a6267ae489bf8d0281836667391ec.png" alt="image-20250202172235872"></p><h2 id="DDNS解析"><a href="#DDNS解析" class="headerlink" title="DDNS解析"></a>DDNS解析</h2><p>DDNS解析通过ddns-go这类的项目解决。</p><p>由于出接口上有众多全局IPv6地址，内部终端最终映射到的全局地址可能不一样，建议web应用使用统一的反向代理对外服务，其他应用则每台主机部署一套ddns-go。</p><h1 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h1><p>其实整个方案没有技术难度，只是很多人并不太清楚ULA是什么，以及NAT在IPv6中的作用。</p>]]></content>
    
    
    <summary type="html">&lt;h1 id=&quot;前言&quot;&gt;&lt;a href=&quot;#前言&quot; class=&quot;headerlink&quot; title=&quot;前言&quot;&gt;&lt;/a&gt;前言&lt;/h1&gt;&lt;p&gt;对于很多小型企业和工作室而言，用好公网IPv6地址都是非常重要的。&lt;/p&gt;
&lt;p&gt;但是很多小型企业和工作室通常只能负担动态地址的互联网宽带，而动态公网IPv6地址对于多子网的企业网络非常难以应用。终端直接使用公网IPv6地址，不仅配置复杂，地址管理也麻烦，安全性也少一层保护。&lt;/p&gt;
&lt;p&gt;本文就将通过NAT66为核心的技术解决企业局域网IPv6 ULA的问题。&lt;/p&gt;
&lt;h1 id=&quot;TL-DR&quot;&gt;&lt;a href=&quot;#TL-DR&quot; class=&quot;headerlink&quot; title=&quot;TL;DR&quot;&gt;&lt;/a&gt;TL;DR&lt;/h1&gt;&lt;ol&gt;
&lt;li&gt;在核心交换机中配置SLAAC或DHCPv6为局域网各子网设备分配IPv6 ULA地址&lt;/li&gt;
&lt;li&gt;出口网关设备配置NAT66&lt;/li&gt;
&lt;/ol&gt;</summary>
    
    
    
    <category term="Tech" scheme="https://wheat0r.me/categories/Tech/"/>
    
    
    <category term="Network" scheme="https://wheat0r.me/tags/Network/"/>
    
    <category term="IPv6" scheme="https://wheat0r.me/tags/IPv6/"/>
    
  </entry>
  
  <entry>
    <title>迁移到Cloudflare Pages</title>
    <link href="https://wheat0r.me/2023/09/08/migration-for-what/"/>
    <id>https://wheat0r.me/2023/09/08/migration-for-what/</id>
    <published>2023-09-08T20:44:36.000Z</published>
    <updated>2025-12-05T18:00:28.209Z</updated>
    
    <content type="html"><![CDATA[<h1 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h1><p>这个Hexo原先是直接部署在Github Pages上的，但是Github Pages不允许免费用户使用私有repo，自定义域名要用4个A记录又太不优雅，又赶上最近Cloudflare免费服务白嫖上瘾，就直接把Hexo重新部署在Cloudflare Pages中了</p><h1 id="简单几步完成部署"><a href="#简单几步完成部署" class="headerlink" title="简单几步完成部署"></a>简单几步完成部署</h1><h2 id="第一步：搞个repo"><a href="#第一步：搞个repo" class="headerlink" title="第一步：搞个repo"></a>第一步：搞个repo</h2><p>不要用.io的那个repo了，新建一个并设置为私有</p><p>把你的hexo传上去，当然是要用git push的方法</p><p>同时注意 &#x2F; 里一定要有<em>package.json</em>文件（正常来说会有），里面的内容也要看一下，有没有定义好的scripts，例如：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br></pre></td><td class="code"><pre><span class="line">&#123;</span><br><span class="line">  &quot;name&quot;: &quot;hexo-site&quot;,</span><br><span class="line">  &quot;version&quot;: &quot;0.0.0&quot;,</span><br><span class="line">  &quot;private&quot;: true,</span><br><span class="line">  &quot;scripts&quot;: &#123;</span><br><span class="line">    &quot;build&quot;: &quot;hexo generate&quot;,</span><br><span class="line">    &quot;clean&quot;: &quot;hexo clean&quot;,</span><br><span class="line">    &quot;deploy&quot;: &quot;hexo deploy&quot;,</span><br><span class="line">    &quot;server&quot;: &quot;hexo server&quot;</span><br><span class="line">  &#125;,</span><br><span class="line">  &quot;hexo&quot;: &#123;</span><br><span class="line">    &quot;version&quot;: &quot;6.3.0&quot;</span><br><span class="line">  &#125;,</span><br><span class="line">  &quot;dependencies&quot;: &#123;</span><br><span class="line">    &quot;@waline/hexo-next&quot;: &quot;^3.0.1&quot;,</span><br><span class="line">    &quot;hexo&quot;: &quot;^6.3.0&quot;,</span><br><span class="line">    &quot;hexo-deployer-git&quot;: &quot;^3.0.0&quot;,</span><br><span class="line">    &quot;hexo-generator-archive&quot;: &quot;^2.0.0&quot;,</span><br><span class="line">    &quot;hexo-generator-category&quot;: &quot;^2.0.0&quot;,</span><br><span class="line">    &quot;hexo-generator-feed&quot;: &quot;^3.0.0&quot;,</span><br><span class="line">    &quot;hexo-generator-index&quot;: &quot;^3.0.0&quot;,</span><br><span class="line">    &quot;hexo-generator-searchdb&quot;: &quot;^1.4.1&quot;,</span><br><span class="line">    &quot;hexo-generator-tag&quot;: &quot;^2.0.0&quot;,</span><br><span class="line">    &quot;hexo-renderer-ejs&quot;: &quot;^2.0.0&quot;,</span><br><span class="line">    &quot;hexo-renderer-marked&quot;: &quot;^6.0.0&quot;,</span><br><span class="line">    &quot;hexo-renderer-stylus&quot;: &quot;^2.1.0&quot;,</span><br><span class="line">    &quot;hexo-server&quot;: &quot;^3.0.0&quot;,</span><br><span class="line">    &quot;hexo-theme-next&quot;: &quot;^8.15.0&quot;</span><br><span class="line">  &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><span id="more"></span><h2 id="第二步：搞个Page"><a href="#第二步：搞个Page" class="headerlink" title="第二步：搞个Page"></a>第二步：搞个Page</h2><p>去Cloudflare的Worker &amp; Pages页面新建一个应用，通过<em>Connect to Git</em>完成授权</p><p>接着进到最关键的配置环节，注意一下几个设置：</p><table><thead><tr><th>Key</th><th>Value</th></tr></thead><tbody><tr><td>Production branch</td><td>main</td></tr><tr><td>Framework preset</td><td>None</td></tr><tr><td>Build command</td><td>npm run build</td></tr><tr><td>Build output directory</td><td>&#x2F;public</td></tr><tr><td>Build system version</td><td>2</td></tr></tbody></table><p>这里要特别强调<em>Build command</em>这块</p><p>古早的Cloudflare Pages是可以在<em>Framework preset</em>里选择Hexo的，于是<em>Build command</em>可以直接设置为hexo g</p><p>后来Cloudflare Pages取消了Hexo的<em>Framework preset</em>，但是很多文档里依然通过hexo g可以正常生成页面</p><p>我不清楚是Cloudflare Pages有了新的变化，还是Hexo有了变化，当前环境中直接执行hexo命令是找不到文件的，必须要根据<em>package.json</em>中定义的scripts来执行npm run build才可以正常生成页面</p><h2 id="第三步：定个域名"><a href="#第三步：定个域名" class="headerlink" title="第三步：定个域名"></a>第三步：定个域名</h2><p>如果一切正常，你的hexo已经可以通过pages的域名访问了，这时候你可以把你自己的域名加进去</p><p>我相信你已经在用Cloudflare Pages的话，DNS肯定也在Cloudflare上，它会自动帮你处理CNAME记录和证书</p><h1 id="So-what"><a href="#So-what" class="headerlink" title="So what?"></a>So what?</h1><p>折腾一圈下来，唯一解决的就是私有repo的问题</p><ul><li>cloudflare的线路并不比github更快</li><li>除非直接在github上写文字，否则还是需要本地操作</li><li>git使用比hexo还更复杂</li></ul><p>就是脱了裤子放安静的屁</p>]]></content>
    
    
    <summary type="html">&lt;h1 id=&quot;前言&quot;&gt;&lt;a href=&quot;#前言&quot; class=&quot;headerlink&quot; title=&quot;前言&quot;&gt;&lt;/a&gt;前言&lt;/h1&gt;&lt;p&gt;这个Hexo原先是直接部署在Github Pages上的，但是Github Pages不允许免费用户使用私有repo，自定义域名要用4个A记录又太不优雅，又赶上最近Cloudflare免费服务白嫖上瘾，就直接把Hexo重新部署在Cloudflare Pages中了&lt;/p&gt;
&lt;h1 id=&quot;简单几步完成部署&quot;&gt;&lt;a href=&quot;#简单几步完成部署&quot; class=&quot;headerlink&quot; title=&quot;简单几步完成部署&quot;&gt;&lt;/a&gt;简单几步完成部署&lt;/h1&gt;&lt;h2 id=&quot;第一步：搞个repo&quot;&gt;&lt;a href=&quot;#第一步：搞个repo&quot; class=&quot;headerlink&quot; title=&quot;第一步：搞个repo&quot;&gt;&lt;/a&gt;第一步：搞个repo&lt;/h2&gt;&lt;p&gt;不要用.io的那个repo了，新建一个并设置为私有&lt;/p&gt;
&lt;p&gt;把你的hexo传上去，当然是要用git push的方法&lt;/p&gt;
&lt;p&gt;同时注意 &amp;#x2F; 里一定要有&lt;em&gt;package.json&lt;/em&gt;文件（正常来说会有），里面的内容也要看一下，有没有定义好的scripts，例如：&lt;/p&gt;
&lt;figure class=&quot;highlight plaintext&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;10&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;11&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;12&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;13&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;14&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;15&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;16&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;17&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;18&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;19&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;20&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;21&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;22&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;23&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;24&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;25&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;26&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;27&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;28&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;29&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;30&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&amp;#123;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;  &amp;quot;name&amp;quot;: &amp;quot;hexo-site&amp;quot;,&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;  &amp;quot;version&amp;quot;: &amp;quot;0.0.0&amp;quot;,&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;  &amp;quot;private&amp;quot;: true,&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;  &amp;quot;scripts&amp;quot;: &amp;#123;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &amp;quot;build&amp;quot;: &amp;quot;hexo generate&amp;quot;,&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &amp;quot;clean&amp;quot;: &amp;quot;hexo clean&amp;quot;,&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &amp;quot;deploy&amp;quot;: &amp;quot;hexo deploy&amp;quot;,&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &amp;quot;server&amp;quot;: &amp;quot;hexo server&amp;quot;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;  &amp;#125;,&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;  &amp;quot;hexo&amp;quot;: &amp;#123;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &amp;quot;version&amp;quot;: &amp;quot;6.3.0&amp;quot;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;  &amp;#125;,&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;  &amp;quot;dependencies&amp;quot;: &amp;#123;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &amp;quot;@waline/hexo-next&amp;quot;: &amp;quot;^3.0.1&amp;quot;,&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &amp;quot;hexo&amp;quot;: &amp;quot;^6.3.0&amp;quot;,&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &amp;quot;hexo-deployer-git&amp;quot;: &amp;quot;^3.0.0&amp;quot;,&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &amp;quot;hexo-generator-archive&amp;quot;: &amp;quot;^2.0.0&amp;quot;,&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &amp;quot;hexo-generator-category&amp;quot;: &amp;quot;^2.0.0&amp;quot;,&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &amp;quot;hexo-generator-feed&amp;quot;: &amp;quot;^3.0.0&amp;quot;,&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &amp;quot;hexo-generator-index&amp;quot;: &amp;quot;^3.0.0&amp;quot;,&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &amp;quot;hexo-generator-searchdb&amp;quot;: &amp;quot;^1.4.1&amp;quot;,&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &amp;quot;hexo-generator-tag&amp;quot;: &amp;quot;^2.0.0&amp;quot;,&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &amp;quot;hexo-renderer-ejs&amp;quot;: &amp;quot;^2.0.0&amp;quot;,&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &amp;quot;hexo-renderer-marked&amp;quot;: &amp;quot;^6.0.0&amp;quot;,&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &amp;quot;hexo-renderer-stylus&amp;quot;: &amp;quot;^2.1.0&amp;quot;,&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &amp;quot;hexo-server&amp;quot;: &amp;quot;^3.0.0&amp;quot;,&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &amp;quot;hexo-theme-next&amp;quot;: &amp;quot;^8.15.0&amp;quot;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;  &amp;#125;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&amp;#125;&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;</summary>
    
    
    
    <category term="Tech" scheme="https://wheat0r.me/categories/Tech/"/>
    
    
    <category term="hexo" scheme="https://wheat0r.me/tags/hexo/"/>
    
    <category term="github" scheme="https://wheat0r.me/tags/github/"/>
    
    <category term="cloudflare" scheme="https://wheat0r.me/tags/cloudflare/"/>
    
  </entry>
  
  <entry>
    <title>Proxmox VE 小贴士</title>
    <link href="https://wheat0r.me/2023/06/17/Proxmox-VE-tips/"/>
    <id>https://wheat0r.me/2023/06/17/Proxmox-VE-tips/</id>
    <published>2023-06-17T08:53:54.000Z</published>
    <updated>2025-12-05T18:00:28.209Z</updated>
    
    <content type="html"><![CDATA[<h1 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h1><p>上回书说到，与其加价购买树莓派，还不如直接在x86平台找方案。</p><p>这次我们就来说说x86架构主机做HomeLab基本都要用的Proxmox VE的一些小贴士。</p><h1 id="无法启动安装器问题"><a href="#无法启动安装器问题" class="headerlink" title="无法启动安装器问题"></a>无法启动安装器问题</h1><p>安装镜像引导后长时间卡在<code>Starting the installer GUI see tty2 (CTRL+ALT+F2) for any errors</code>，在tty2可以看到无法进入framebuffer模式的描述</p><p>我的N100主机遇到了这个问题，原因是X11并不认识这个核显，GUI就不会启动。</p><p>解决起来很简单。</p><p>首先执行<code>lspci| grep -i vga</code>找到显卡的BusID，例如：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"># lspci| grep -i vga</span><br><span class="line">00:02.0 VGA compatible controller: Intel Corporation Device 46d1</span><br></pre></td></tr></table></figure><p>接着在<code>/usr/share/X11/xorg.conf.d/</code>目录里新建一个配置文件，写入以下内容：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">Section &quot;Device&quot;</span><br><span class="line">    Identifier &quot;Card0&quot;</span><br><span class="line">    Driver &quot;fbdev&quot;</span><br><span class="line">    BusID &quot;pci0:00:0:2:&quot;</span><br><span class="line">EndSection</span><br></pre></td></tr></table></figure><p>检查无误直接xinit就可以正常启动安装器。</p><span id="more"></span><h1 id="CPU频率过高"><a href="#CPU频率过高" class="headerlink" title="CPU频率过高"></a>CPU频率过高</h1><p>Proxmox VE装好，一个vm都没有，风扇已经呼呼的吹，再看CPU完全是满载的温度。</p><p>通过cpufreq-info一看：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line">analyzing CPU 0:</span><br><span class="line">  driver: intel_pstate</span><br><span class="line">  CPUs which run at the same hardware frequency: 0</span><br><span class="line">  CPUs which need to have their frequency coordinated by software: 0</span><br><span class="line">  maximum transition latency: 4294.55 ms.</span><br><span class="line">  hardware limits: 700 MHz - 3.40 GHz</span><br><span class="line">  available cpufreq governors: performance, powersave</span><br><span class="line">  current policy: frequency should be within 700 MHz and 3.40 GHz.</span><br><span class="line">                  The governor &quot;performance&quot; may decide which speed to use</span><br><span class="line">                  within this range.</span><br><span class="line">  current CPU frequency is 2900 MHz.</span><br></pre></td></tr></table></figure><p>完全不慌，我们把governor改成powersave不就好了？</p><p>不好，没有用。</p><p>那我们把turbo boost禁用了看看：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"># echo 1 &gt; /sys/devices/system/cpu/intel_pstate/no_turbo</span><br></pre></td></tr></table></figure><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line">analyzing CPU 0:</span><br><span class="line">  driver: intel_pstate</span><br><span class="line">  CPUs which run at the same hardware frequency: 0</span><br><span class="line">  CPUs which need to have their frequency coordinated by software: 0</span><br><span class="line">  maximum transition latency: 4294.55 ms.</span><br><span class="line">  hardware limits: 700 MHz - 3.40 GHz</span><br><span class="line">  available cpufreq governors: performance, powersave</span><br><span class="line">  current policy: frequency should be within 700 MHz and 3.40 GHz.</span><br><span class="line">                  The governor &quot;performance&quot; may decide which speed to use</span><br><span class="line">                  within this range.</span><br><span class="line">  current CPU frequency is 800 MHz.</span><br></pre></td></tr></table></figure><p>是不是好多了？</p><p>不好，频率上不去了。<code>/sys/devices/system/cpu/cpu*X*/cpufreq/scaling_min_freq</code>和<code>/sys/devices/system/cpu/cpu*X*/cpufreq/scaling_man_freq</code>两个参数居然一样</p><p>我们还是先回到启用turbo boost和powersave的情况，然后只需要做一件事：安装<code>acpi</code></p><p>好了，你的p-state调度又如丝般顺滑了。</p><p>别问我为什么，按说intel_pstate驱动是不依赖acpi的。</p><p><em>注：有一些文档建议直接禁用intel_pstate驱动，因为acpi_cpufreq驱动有类似ondemand的governor可选，我觉得大可不必，只要能调度就行，intel_pstate的powersave本身就是干这个的。</em></p><h1 id="异机迁移"><a href="#异机迁移" class="headerlink" title="异机迁移"></a>异机迁移</h1><p>如果你有vm需要从旧pve主机迁移至新主机，而你又不信任pve的集群功能，pve提供了一个非常实用的异机迁移命令<code>qm remote-migrate</code></p><h2 id="准备新主机"><a href="#准备新主机" class="headerlink" title="准备新主机"></a>准备新主机</h2><p>首先新主机的PVE应该安装妥当，存储容量要够，网络要通。</p><p>执行<code>pvenode cert info</code>记录主机的fingerprint。</p><p>创建一个API Token，记录好令牌信息。</p><h2 id="准备vm"><a href="#准备vm" class="headerlink" title="准备vm"></a>准备vm</h2><ul><li>删除全部快照</li><li>移除各种直通</li></ul><h2 id="开始迁移"><a href="#开始迁移" class="headerlink" title="开始迁移"></a>开始迁移</h2><p>直接来看命令怎么说</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">qm remote-migrate &lt;vmid&gt; [&lt;target-vmid&gt;] &lt;target-endpoint&gt; --target-bridge &lt;string&gt; --target-storage &lt;string&gt; [OPTIONS]</span><br><span class="line"></span><br><span class="line">Migrate virtual machine to a remote cluster. Creates a new migration task. EXPERIMENTAL feature!</span><br></pre></td></tr></table></figure><p>这里面最复杂的就是<code>&lt;target-endpoint&gt;</code>部分：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">&lt;target-endpoint&gt;: apitoken=&lt;A full Proxmox API token including the secret value.&gt; ,host=&lt;Remote Proxmox hostname or IP&gt; [,fingerprint=&lt;Remote host&#x27;s certificate fingerprint, if not trusted by system store.&gt;] [,port=&lt;integer&gt;]</span><br></pre></td></tr></table></figure><p>我们需要提供新主机的IP地址，API Token和fingerprint</p><p>搞好的命令就应该是这样子：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">qm remote-migrate 源vmid 目的vmid \</span><br><span class="line">  &#x27;host=192.168.6.250,apitoken=PVEAPIToken=root@pam!你定义的令牌名称=令牌,fingerprint=主机fingerprint&#x27; \</span><br><span class="line">  --target-bridge vmbr0 \</span><br><span class="line">  --target-storage local-lvm \</span><br><span class="line">  --online</span><br></pre></td></tr></table></figure><p>–online参数只在在线迁移时使用。是的，vm是可以主机不在同一个集群并在线迁移的。</p><h2 id="收尾工作"><a href="#收尾工作" class="headerlink" title="收尾工作"></a>收尾工作</h2><p>迁移完成后，旧主机上还会显示这些vm，但是带有一个提醒你已经迁移的图标，这个时候你就可以删掉这些vm了。</p><p>在新的主机上重新配置那些直通。</p><p>Windows的vm在线迁移大概率会蓝屏，记得重启。</p><h1 id="硬盘直通"><a href="#硬盘直通" class="headerlink" title="硬盘直通"></a>硬盘直通</h1><p>如果你只是准备把一块硬盘直通给vm，并不打算直通整个SATA控制器跑一个TrueNAS：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">qm set 102 -scsi2 /dev/disk/by-id/ata-SanDisk_SDSSDXPS480G_xxx</span><br></pre></td></tr></table></figure><p>-scsi2也可以用别的总线和序号，只要Guest OS支持就行。</p><p>答应我，好吗，别通更多硬盘了，别在PVE里跑黑群晖，再在黑群晖里跑docker。</p>]]></content>
    
    
    <summary type="html">&lt;h1 id=&quot;前言&quot;&gt;&lt;a href=&quot;#前言&quot; class=&quot;headerlink&quot; title=&quot;前言&quot;&gt;&lt;/a&gt;前言&lt;/h1&gt;&lt;p&gt;上回书说到，与其加价购买树莓派，还不如直接在x86平台找方案。&lt;/p&gt;
&lt;p&gt;这次我们就来说说x86架构主机做HomeLab基本都要用的Proxmox VE的一些小贴士。&lt;/p&gt;
&lt;h1 id=&quot;无法启动安装器问题&quot;&gt;&lt;a href=&quot;#无法启动安装器问题&quot; class=&quot;headerlink&quot; title=&quot;无法启动安装器问题&quot;&gt;&lt;/a&gt;无法启动安装器问题&lt;/h1&gt;&lt;p&gt;安装镜像引导后长时间卡在&lt;code&gt;Starting the installer GUI see tty2 (CTRL+ALT+F2) for any errors&lt;/code&gt;，在tty2可以看到无法进入framebuffer模式的描述&lt;/p&gt;
&lt;p&gt;我的N100主机遇到了这个问题，原因是X11并不认识这个核显，GUI就不会启动。&lt;/p&gt;
&lt;p&gt;解决起来很简单。&lt;/p&gt;
&lt;p&gt;首先执行&lt;code&gt;lspci| grep -i vga&lt;/code&gt;找到显卡的BusID，例如：&lt;/p&gt;
&lt;figure class=&quot;highlight plaintext&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;# lspci| grep -i vga&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;00:02.0 VGA compatible controller: Intel Corporation Device 46d1&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;

&lt;p&gt;接着在&lt;code&gt;/usr/share/X11/xorg.conf.d/&lt;/code&gt;目录里新建一个配置文件，写入以下内容：&lt;/p&gt;
&lt;figure class=&quot;highlight plaintext&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;Section &amp;quot;Device&amp;quot;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    Identifier &amp;quot;Card0&amp;quot;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    Driver &amp;quot;fbdev&amp;quot;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    BusID &amp;quot;pci0:00:0:2:&amp;quot;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;EndSection&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;

&lt;p&gt;检查无误直接xinit就可以正常启动安装器。&lt;/p&gt;</summary>
    
    
    
    <category term="Tech" scheme="https://wheat0r.me/categories/Tech/"/>
    
    
    <category term="Linux" scheme="https://wheat0r.me/tags/Linux/"/>
    
    <category term="Proxmox VE" scheme="https://wheat0r.me/tags/Proxmox-VE/"/>
    
    <category term="HomeLab" scheme="https://wheat0r.me/tags/HomeLab/"/>
    
  </entry>
  
  <entry>
    <title>Raspberry Pi不全能</title>
    <link href="https://wheat0r.me/2023/01/27/the-limit-of-raspberry-pi/"/>
    <id>https://wheat0r.me/2023/01/27/the-limit-of-raspberry-pi/</id>
    <published>2023-01-27T10:57:22.000Z</published>
    <updated>2025-12-05T18:00:28.209Z</updated>
    
    <content type="html"><![CDATA[<h1 id="TL-DR"><a href="#TL-DR" class="headerlink" title="TL;DR"></a>TL;DR</h1><ul><li>包括第四代在内的Raspberry Pi设备，应该只适用于小负载、无加密、多线程的生产和实验环境</li><li>不适合高速网络环境中的透明代理、高负载的https服务、各种VPN网关、NAS服务、桌面环境</li><li>更适合作为终端而不是服务器</li></ul><span id="more"></span><h1 id="设备弱点"><a href="#设备弱点" class="headerlink" title="设备弱点"></a>设备弱点</h1><h2 id="CPU性能羸弱"><a href="#CPU性能羸弱" class="headerlink" title="CPU性能羸弱"></a>CPU性能羸弱</h2><p>BCM2711性能不足是有目共睹的，落后的制程又让其在高负载运行中温度难以控制，需要类似Argon Neo的这种全金属外壳甚至主动散热来释放温度。</p><p>RPi 4的整体性能并不足以支撑一个LXDE环境和各种桌面应用，你甚至很难流畅观看FHD的弹幕视频。</p><h2 id="缺少AES-NI"><a href="#缺少AES-NI" class="headerlink" title="缺少AES-NI"></a>缺少AES-NI</h2><p>BCM2711并不带有AES硬件加速功能，AES性能可以用不堪一击形容，4核AES-256性能被i3-8100T单核虚拟机吊打。</p><p>当然还有chacha20系的算法可以用，性能要比AES好非常多，可是依然比x86弱不少。</p><p>因此，包括传统VPN、wireguard、负载均衡、代理服务器在内的所有涉及加解密的场景，Raspberry Pi都很难提供足够的性能。</p><h2 id="缺少PCI-E扩展能力"><a href="#缺少PCI-E扩展能力" class="headerlink" title="缺少PCI-E扩展能力"></a>缺少PCI-E扩展能力</h2><p>除了CM4有一个PCI-E x1的接口以外，所有RPi都没有可以直接可见的PCI-E。</p><p>因此，NVMe SSD就不用想了，有线网卡最多可以上2.5Gbe，还会抢占其他USB设备的带宽，并且造成2.4GHz的干扰</p><h2 id="供电困难"><a href="#供电困难" class="headerlink" title="供电困难"></a>供电困难</h2><p>按照官方指导文件里的描述，RPi 4应该通过一个至少5V&#x2F;3A的适配器供电，在USB设备总电流不超过500mA时可以使用2.5A适配器，但不支持USB-PD协议。</p><p>然而市面上不支持USB-PD但能提供超过3A电流的5V适配器并没有很多选择，大多数通用的适配器和插排都只提供2.4A最大电流。</p><h2 id="NTFS问题"><a href="#NTFS问题" class="headerlink" title="NTFS问题"></a>NTFS问题</h2><p>这个问题是整个Linux的问题，但RPi受到的影响尤其明显。</p><p>5.15内核并入了NTFS3驱动，可以在低性能的设备上替代NTFS-3G驱动，提供更好的读写性能和更低的开销。但是NTFS3本身还有非常多问题，缺少配套工具、大量bug和兼容性问题、缺少文档。</p><p>我手里的三个NTFS设备，有两个可以通过NTFS3挂载，有一个死活不行，找不到任何的文档可以处理或解释这个故障，就算有patch修复这个问题，可又不会并入现有5.15内核，安装新内核还要去backports，这有可能会带来其他问题。而NTFS-3G的性能又非常堪忧，x86设备的性能足够硬扛NTFS-3G，RPi则很容易在高强度读写的情况下挂死。</p><h2 id="价格"><a href="#价格" class="headerlink" title="价格"></a>价格</h2><p>这本不是一个问题，Raspberry Pi 4本应该是价格最划算的<em>单板计算机</em>之一，但是Covid-19改变了一切，现在一块4GB内存的RPi 4要价近1k，在这个价格上好的选择非常多。</p><h1 id="正确的姿势"><a href="#正确的姿势" class="headerlink" title="正确的姿势"></a>正确的姿势</h1><h2 id="DNS服务器"><a href="#DNS服务器" class="headerlink" title="DNS服务器"></a>DNS服务器</h2><p>旁路DNS服务器可能是老款RPi的正确使用姿势，家用环境下DNS不管多少请求都不会消耗太多性能，也不需要很大的吞吐，不管是PiHole还是AdGuard Home都可以轻松应对。</p><p>但是要注意上游DNS如果是TLS的，这负载就要再算算了。</p><h2 id="Home-Assistant"><a href="#Home-Assistant" class="headerlink" title="Home Assistant"></a>Home Assistant</h2><p>直接部署HAOS，自带WiFi和蓝牙，无脑连接大量家居设备，还可以对接homekit，打通多方协议。</p><h2 id="透明代理"><a href="#透明代理" class="headerlink" title="透明代理"></a>透明代理</h2><p>前面提到了RPi并不适合作为高带宽环境中的透明代理，但是在一个500M以内家用宽带的环境中，RPi 4跑一个chacha20的代理还是可以提供一个令人满意的性能。</p><p>独立设备跑透明代理的好处就是可以充分利用clash的自动路由，不需要考虑容器、虚拟化网络的特殊性。</p><h2 id="商用"><a href="#商用" class="headerlink" title="商用"></a>商用</h2><p>只要成本划得来、性能跟得上，RPi依然是非常无脑的嵌入式主机。</p><p>你猜猜一个RPi 4+显示器套一个铁壳子，插上RFID读卡器，这样一套东西卖给用户几万比较合适？</p><h1 id="我想要HomeLab"><a href="#我想要HomeLab" class="headerlink" title="我想要HomeLab"></a>我想要HomeLab</h1><p>是的，我知道很多人在用RPi做轻量的HomeLab主机，甚至感觉还不错。</p><p>但是当你的HomeLab出现对第二快RPi的需求的时候，RPi就已经不合适了，这个时候不如搞一套x86的电子垃圾，把家里那些旧电脑留下的DDR4内存、SATA SSD用起来，只需要一块4GB RPi4的预算，你就有机会得到一套至少拥有4核x86内核的全闪存无头主机，而它可以提供的性能和功能都远远超过4GB RPi4。</p><p>有x86架构，你可以从容的运行所有可以在RPi上运行的应用，同时还有余力跑一个Windows虚拟机来专门对付各种网盘客户端。</p>]]></content>
    
    
    <summary type="html">&lt;h1 id=&quot;TL-DR&quot;&gt;&lt;a href=&quot;#TL-DR&quot; class=&quot;headerlink&quot; title=&quot;TL;DR&quot;&gt;&lt;/a&gt;TL;DR&lt;/h1&gt;&lt;ul&gt;
&lt;li&gt;包括第四代在内的Raspberry Pi设备，应该只适用于小负载、无加密、多线程的生产和实验环境&lt;/li&gt;
&lt;li&gt;不适合高速网络环境中的透明代理、高负载的https服务、各种VPN网关、NAS服务、桌面环境&lt;/li&gt;
&lt;li&gt;更适合作为终端而不是服务器&lt;/li&gt;
&lt;/ul&gt;</summary>
    
    
    
    <category term="Tech" scheme="https://wheat0r.me/categories/Tech/"/>
    
    
    <category term="Linux" scheme="https://wheat0r.me/tags/Linux/"/>
    
    <category term="HomeLab" scheme="https://wheat0r.me/tags/HomeLab/"/>
    
    <category term="Raspberry Pi" scheme="https://wheat0r.me/tags/Raspberry-Pi/"/>
    
    <category term="AES-NI" scheme="https://wheat0r.me/tags/AES-NI/"/>
    
    <category term="NTFS3" scheme="https://wheat0r.me/tags/NTFS3/"/>
    
  </entry>
  
  <entry>
    <title>Hexo建站体验</title>
    <link href="https://wheat0r.me/2022/12/29/talk-about-hexo/"/>
    <id>https://wheat0r.me/2022/12/29/talk-about-hexo/</id>
    <published>2022-12-29T14:44:53.000Z</published>
    <updated>2025-12-05T18:00:28.209Z</updated>
    
    <content type="html"><![CDATA[<h1 id="前情提要"><a href="#前情提要" class="headerlink" title="前情提要"></a>前情提要</h1><p>经过几天的调整，这个使用Next主题运行的GitHub Pages上的Hexo系统基本上可以正常运行了。</p><h1 id="环境介绍"><a href="#环境介绍" class="headerlink" title="环境介绍"></a>环境介绍</h1><p>Hexo是静态blog系统，简单来说就是这东西会先把你写好的东西渲染成html文件，再交给httpd监听。Hexo本质上是一个后台，最终展现出来的效果大量依赖主题和各类第三方模块。</p><p>Next是Hexo的一个很著名的主题，在配置文件中内置了大量的功能，让用户可以在尽量少接触代码的情况下完成站点管理。</p><p>GitHub Pages给用户提供了一个简单的httd实例，允许用户运行简单的网站。</p><p>接下来就简单讨论一下整体建站体验和一些使用细节。</p><span id="more"></span><h1 id="Hexo优缺点"><a href="#Hexo优缺点" class="headerlink" title="Hexo优缺点"></a>Hexo优缺点</h1><h2 id="优点"><a href="#优点" class="headerlink" title="优点"></a>优点</h2><ul><li>静态页面确实快</li><li>支持很多部署方式</li><li>文档非常成熟</li><li>利用GitHub Pages建站可靠性好</li><li>生态系统不错</li></ul><h2 id="缺点"><a href="#缺点" class="headerlink" title="缺点"></a>缺点</h2><h3 id="纯粹为工程师服务"><a href="#纯粹为工程师服务" class="headerlink" title="纯粹为工程师服务"></a>纯粹为工程师服务</h3><p>不论是github建站、vps上面跑git还是其他部署方式，本地操作-部署-在线运行的模式对于站长来说无异于脱了裤子放屁。</p><p>而对于只是想找个环境写写字的用户，这种操作逻辑根本无从下手。</p><h3 id="不存在多用户创作"><a href="#不存在多用户创作" class="headerlink" title="不存在多用户创作"></a>不存在多用户创作</h3><p>Hexo根本没有考虑多用户，有一些旁门左道的办法可以实现，但是相信我，能看懂怎么做的人都自己建站了。</p><h3 id="核心功能缺失"><a href="#核心功能缺失" class="headerlink" title="核心功能缺失"></a>核心功能缺失</h3><p>大量对于blog来说非常基础的功能都要依赖第三方的插件或服务，甚至连评论系统都欠奉。</p><p>一方面，一个系统引入的外部组件越多，各组件之间的版本兼容关系就越复杂，集成需要的调试也越多，后续需要编写的文档就更多。</p><p>另一方面，依赖第三方服务，整个系统的可靠性就会受到更多单点的影响，而且产生的数据也很难集中管理和保护。</p><h3 id="没有可视化后台"><a href="#没有可视化后台" class="headerlink" title="没有可视化后台"></a>没有可视化后台</h3><p>这是纯粹为工程师设计的结果，没有所见即所得，更没有文章、页面管理的功能，你要做的是版本管理。</p><h1 id="重点讨论"><a href="#重点讨论" class="headerlink" title="重点讨论"></a>重点讨论</h1><h2 id="评论系统"><a href="#评论系统" class="headerlink" title="评论系统"></a>评论系统</h2><p>由于Hexo不存在评论系统，很多外置的评论系统应运而生，这些评论系统分成三个阵营。</p><h3 id="GitHub-Issues类"><a href="#GitHub-Issues类" class="headerlink" title="GitHub Issues类"></a>GitHub Issues类</h3><p>这类评论系统，会把所有评论作为issue处理。</p><p>这样做的好处是GitHub作为一个可靠的环境，你的评论数据是很难丢失的。</p><p>但是很明显，这些系统是依赖GitHub的，同时读者没有办法进行匿名评论。从某个角度说，利用issues存放评论算不算对GitHub的滥用？</p><h3 id="无后端类"><a href="#无后端类" class="headerlink" title="无后端类"></a>无后端类</h3><p>以valine为代表的无后端类评论系统，虽然提供更强大的功能，但同时会引入更多后端。</p><p>以waline为例，官方快速上手文档使用LeanCloud创建数据库，并在Vercel中部署server，最后在Hexo中引入客户端，就这样，一个无后端的东西就给你增加了两个后端和一串html代码。</p><p>当然你也可以选择其他的serverless服务或利用vps独立部署，但是这并不会减少运维成本。</p><h3 id="第三方服务"><a href="#第三方服务" class="headerlink" title="第三方服务"></a>第三方服务</h3><p>用过blogspot的朋友一定还记得disqus，功能强大，可以更好的管理评论，同时用户很少需要考虑运行状况。</p><p>但是这类服务就怕跑路，万一哪天它不干了，你还要考虑系统迁移。</p><h3 id="放弃"><a href="#放弃" class="headerlink" title="放弃"></a>放弃</h3><p>当然你也可以选择放弃。</p><p><del>放弃这种方式，具有无数据、无后台的巨大优势，适合不打算听别人怎么说的用户。</del></p><h2 id="主题"><a href="#主题" class="headerlink" title="主题"></a>主题</h2><p>不仅是视觉效果，Hexo的前端功能全部依赖主题实现，搭配不同主题，Hexo就是完全不同的维护和阅读体验，因此选择主题可能才是一切的开始。</p><p>优秀的主题应该具有以下特征：</p><ul><li>通过配置文件实现快速自定义</li><li>基于data files进行深度自定义</li><li>自带常见评论系统集成</li><li>持续更新</li><li>文档全面</li></ul><h2 id="数据存放"><a href="#数据存放" class="headerlink" title="数据存放"></a>数据存放</h2><p>很显然，如果你是在GitHub Pages上部署Hexo，你不应该把媒体文件一并上传到repo里，这不仅是因为容量限制，也是对免费服务的滥用。</p><p>因此，如果你的文章中经常用到图片、音频、视频文件，你可能就要找图床、对象存储、视频网站来解决问题了。而这些服务又会引入非常多运维工作量。</p><h1 id="小技巧"><a href="#小技巧" class="headerlink" title="小技巧"></a>小技巧</h1><h2 id="我有很多电脑怎么办？"><a href="#我有很多电脑怎么办？" class="headerlink" title="我有很多电脑怎么办？"></a>我有很多电脑怎么办？</h2><p>把你电脑上的目录同步起来吧，群晖、OneDrive什么的都好，其他电脑上只需要把环境搭好就行了。</p><p>当然你也可以选择在每个电脑上搭好环境，把source目录放进另一个branch，每次切换之后做一整套git操作。</p><p>相信我，不管用哪一种方法，几次之后，你就不会再想用不同电脑创作了。</p><h2 id="注意鉴别文档"><a href="#注意鉴别文档" class="headerlink" title="注意鉴别文档"></a>注意鉴别文档</h2><p>不管是Hexo还是对应的主题，不同版本的变化都很大，查询文档的适合一定要注意对应的版本。</p><p>你还要小心鉴别作者自己都没搞懂的文档。</p><p>很多文档都告诉你，每次写完新文章，要用<code>hexo clean</code> <code>hexo g</code>  <code>hexo d</code>完成部署，实际上<code>hexo clean</code>更多是在主题样式需改后才需要使用。启动服务器命令<code>hexo s</code>也根本不需要事先静态，这个命令不仅会把source里的东西立刻渲染给你看，还是实时监控source里的更新。</p><p>还有一个文档甚至建议在vps上独立部署的hexo直接用nginx反向代理<code>hexo s</code>的监听端口，一堆静态页面你反代它干啥？你还真打算拿Hexo当动态blog用？</p><h1 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h1><p>Hexo就像Raspberry Pi，你折腾它的时间一定超过使用的时间。</p><p>如果你只是一个想写写字的人，不打算做一个工程师，请立刻绕行，不要再多看一个Hexo的文档。</p>]]></content>
    
    
    <summary type="html">&lt;h1 id=&quot;前情提要&quot;&gt;&lt;a href=&quot;#前情提要&quot; class=&quot;headerlink&quot; title=&quot;前情提要&quot;&gt;&lt;/a&gt;前情提要&lt;/h1&gt;&lt;p&gt;经过几天的调整，这个使用Next主题运行的GitHub Pages上的Hexo系统基本上可以正常运行了。&lt;/p&gt;
&lt;h1 id=&quot;环境介绍&quot;&gt;&lt;a href=&quot;#环境介绍&quot; class=&quot;headerlink&quot; title=&quot;环境介绍&quot;&gt;&lt;/a&gt;环境介绍&lt;/h1&gt;&lt;p&gt;Hexo是静态blog系统，简单来说就是这东西会先把你写好的东西渲染成html文件，再交给httpd监听。Hexo本质上是一个后台，最终展现出来的效果大量依赖主题和各类第三方模块。&lt;/p&gt;
&lt;p&gt;Next是Hexo的一个很著名的主题，在配置文件中内置了大量的功能，让用户可以在尽量少接触代码的情况下完成站点管理。&lt;/p&gt;
&lt;p&gt;GitHub Pages给用户提供了一个简单的httd实例，允许用户运行简单的网站。&lt;/p&gt;
&lt;p&gt;接下来就简单讨论一下整体建站体验和一些使用细节。&lt;/p&gt;</summary>
    
    
    
    <category term="Tech" scheme="https://wheat0r.me/categories/Tech/"/>
    
    
    <category term="hexo" scheme="https://wheat0r.me/tags/hexo/"/>
    
    <category term="wordpress" scheme="https://wheat0r.me/tags/wordpress/"/>
    
    <category term="github" scheme="https://wheat0r.me/tags/github/"/>
    
  </entry>
  
  <entry>
    <title>First Post here!</title>
    <link href="https://wheat0r.me/2022/12/26/First-Post-here/"/>
    <id>https://wheat0r.me/2022/12/26/First-Post-here/</id>
    <published>2022-12-26T16:09:25.000Z</published>
    <updated>2025-12-05T18:00:28.208Z</updated>
    
    <content type="html"><![CDATA[<h1 id="介绍"><a href="#介绍" class="headerlink" title="介绍"></a>介绍</h1><p>原有WordPress数据被放弃，直接利用Hexo重新建站。</p><p>目前本blog还只是个人实验性质的玩具，短期内不会有实际内容产出。</p><p>当然，目前也没有评论系统，因为我还没想好要用那个套件。</p><p>Have fun!</p>]]></content>
    
    
      
      
    <summary type="html">&lt;h1 id=&quot;介绍&quot;&gt;&lt;a href=&quot;#介绍&quot; class=&quot;headerlink&quot; title=&quot;介绍&quot;&gt;&lt;/a&gt;介绍&lt;/h1&gt;&lt;p&gt;原有WordPress数据被放弃，直接利用Hexo重新建站。&lt;/p&gt;
&lt;p&gt;目前本blog还只是个人实验性质的玩具，短期内不会有实际内容产出</summary>
      
    
    
    
    <category term="Status Update" scheme="https://wheat0r.me/categories/Status-Update/"/>
    
    
    <category term="hexo" scheme="https://wheat0r.me/tags/hexo/"/>
    
    <category term="wordpress" scheme="https://wheat0r.me/tags/wordpress/"/>
    
    <category term="github" scheme="https://wheat0r.me/tags/github/"/>
    
  </entry>
  
</feed>
