<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>妙瓦种子</title>
  
  
  <link href="https://blog.xuzhou-jiang.su/atom.xml" rel="self"/>
  
  <link href="https://blog.xuzhou-jiang.su/"/>
  <updated>2026-07-18T16:52:40.000Z</updated>
  <id>https://blog.xuzhou-jiang.su/</id>
  
  <author>
    <name>妙瓦草</name>
    
  </author>
  
  <generator uri="https://hexo.io/">Hexo</generator>
  
  <entry>
    <title>在live-bootstrap安装NixOS</title>
    <link href="https://blog.xuzhou-jiang.su/2026/07/18/win2nixos/"/>
    <id>https://blog.xuzhou-jiang.su/2026/07/18/win2nixos/</id>
    <published>2026-07-18T15:09:29.000Z</published>
    <updated>2026-07-18T16:52:40.000Z</updated>
    
    <content type="html"><![CDATA[<p>我在搜索“Full Source bootstrap”时，看到了一个网友实现了NixOS的自举，并且作为他的学士论文。我在最近也试了，发现不行，并不能自举。原因是某些依赖的CVE补丁下载不到了，然而他的脚本有SHA256和MD5码的校验，我也没法随便改。</p><p>我了解了一下NixOS，发现这个系统确实了不得，但是比LFS都难上手。</p><span id="more"></span><h1 id="NixOS的优缺点"><a href="#NixOS的优缺点" class="headerlink" title="NixOS的优缺点"></a>NixOS的优缺点</h1><p>它的优点也是很吸引我的，就是一个配置文件就能复现整个系统。</p><p>NixOS跟安装二进制包的gentoo相比较，但是兼容性更好，软件更多。它既编译软件，又节省了时间。</p><h2 id="迁移实例的繁琐流程"><a href="#迁移实例的繁琐流程" class="headerlink" title="迁移实例的繁琐流程"></a>迁移实例的繁琐流程</h2><p>本博客建立的初衷是什么？就是为了记录我的长毛象魔改、配置、安全维护和迁移。每次我发现性价比更高的VPS，或者我的VPS因为各种原因，就比如被投诉、系统缩缸、机房失火、病毒和黑客入侵而炸服。又或者我乱折腾，而服务器没有快照，需要迁移或恢复。这时候就很麻烦。<br>如果我要迁移，那么我得找个不加班的双休日，重装一遍新服务器，设置密钥，配置fail2ban，配置邮件服务器，配置防火墙，安装依赖，安装Cloudflare前置代理，安装Elasticsearch，安装长毛象，迁移数据，编译长毛象，配置端口，生成证书，配置计划任务，安装CVE补丁，进行安全测试。<br>如果我的实例炸了，那么我得找下一个VPS，找到以后，又得找个时间，重装一遍新服务器，设置密钥，配置fail2ban，配置邮件服务器，配置防火墙，安装依赖，安装Cloudflare前置代理，安装Elasticsearch，安装长毛象，从备份拉取数据，编译长毛象，配置端口，生成证书，配置计划任务，安装CVE补丁，进行安全测试。<br>这么有趣，想想就来劲🙂。</p><h2 id="NixOS长毛象的迁移或恢复流程"><a href="#NixOS长毛象的迁移或恢复流程" class="headerlink" title="NixOS长毛象的迁移或恢复流程"></a>NixOS长毛象的迁移或恢复流程</h2><p>如果我把长毛象部署在NixOS上呢？那么，以上步骤就简化为了，安装NixOS服务器（安装Nix，上传配置文件），重启服务器，进行安全测试。就完事了😃<br>当然，长毛象我应该还要手动部署，也可以自动部署，但是没有灵活性了。</p><p>由此可见，可以简化很多迁移实例的步骤。</p><h2 id="NixOS的缺点"><a href="#NixOS的缺点" class="headerlink" title="NixOS的缺点"></a>NixOS的缺点</h2><p>缺点也很明显，为啥我到现在也没让长毛象用上NixOS？因为学习曲线陡峭嘛。<br>NixOS不符合FHS标准，从不乖乖把软件和库放在<code>/usr/bin</code>和<code>/usr/lib</code>里。因此，我没办法像上一篇那样手动安装软件，只能通过包管理器来安装。完全没有灵活性可言。</p><h1 id="前提条件"><a href="#前提条件" class="headerlink" title="前提条件"></a>前提条件</h1><ol><li>完成live-bootstrap的编译。不需要两块硬盘，既能原地安装，又能安装到别的盘。</li><li>安装启动dropbear</li></ol><p>前作的x86_64内核不需要，因为它并不能帮你成功安装NixOS。接下来你需要使用Nix来编译新版Linux内核，旧版4.14内核不需要了。<br>本文对于live-bootstrap的版本和<code>nix-channel</code>的版本也没有特别的要求，短期内完全不必担心有依赖下架、有功能废除导致无法复现的问题！</p><h1 id="编译新版Linux的64位内核"><a href="#编译新版Linux的64位内核" class="headerlink" title="编译新版Linux的64位内核"></a>编译新版Linux的64位内核</h1><p>live-bootstrap的内核不仅只有32位，版本还特别老，已经不受支持了，但是不用担心，你可以用Nix来交叉编译一个符合要求的内核！</p><h2 id="安装Nix"><a href="#安装Nix" class="headerlink" title="安装Nix"></a>安装Nix</h2><p>根据官网教程，安装最新版的Nix</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">curl --proto <span class="string">&#x27;=https&#x27;</span> --tlsv1.2 -L https://nixos.org/nix/install | sh -s -- --daemon</span><br></pre></td></tr></table></figure><p>亲测可安装成功<br>在root账户下，运行以下指令即可使用nix</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">. <span class="variable">$HOME</span>/.nix-profile/etc/profile.d/nix.sh</span><br></pre></td></tr></table></figure><h2 id="编译Linux"><a href="#编译Linux" class="headerlink" title="编译Linux"></a>编译Linux</h2><p>live-bootstrap的内核，具有版本低、没模块、没initramfs等缺点，甚至无法使用<code>make menuconfig</code>，ncurses的依赖也装不上！如果你贸然升级内核，那面临的只有编译失败。<br>但是不用担心，nix早已帮你解决了这个问题！</p><p>首先，我建议给Linux新建一个目录（可选）。不新建问题也不大，因为本步骤就没几个文件。</p><h3 id="准备default-nix"><a href="#准备default-nix" class="headerlink" title="准备default.nix"></a>准备default.nix</h3><p><code>nix-build</code>编译软件都需要一个<code>.nix</code>文件。本教程仅需这一个<code>default.nix</code>文件。可以点击<a href="default.nix">这里下载</a></p><details><summary>点击这里展开代码</summary><figure class="highlight nix"><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><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br></pre></td><td class="code"><pre><span class="line">&#123; pkgs <span class="operator">?</span> <span class="built_in">import</span> <span class="symbol">&lt;nixpkgs&gt;</span> &#123; <span class="attr">system</span> <span class="operator">=</span> <span class="string">&quot;i686-linux&quot;</span>; &#125; &#125;:</span><br><span class="line"><span class="keyword">let</span></span><br><span class="line">  <span class="keyword">inherit</span> (pkgs) lib;</span><br><span class="line"><span class="keyword">in</span></span><br><span class="line">(pkgs.pkgsCross.gnu64.linux.override (<span class="params">args:</span> &#123;</span><br><span class="line">  <span class="attr">enableCommonConfig</span> <span class="operator">=</span> <span class="literal">false</span>;</span><br><span class="line">  <span class="attr">structuredExtraConfig</span> <span class="operator">=</span></span><br><span class="line">    <span class="keyword">let</span></span><br><span class="line">      <span class="attr">lines</span> <span class="operator">=</span> lib.splitString <span class="string">&quot;<span class="char escape_">\n</span>&quot;</span> (lib.readFile .<span class="operator">/</span>config);</span><br><span class="line">      <span class="attr">attrs</span> <span class="operator">=</span></span><br><span class="line">        <span class="built_in">builtins.filter</span></span><br><span class="line">        (<span class="params">x:</span> x <span class="operator">!=</span> <span class="literal">null</span>)</span><br><span class="line">        (</span><br><span class="line">          <span class="built_in">map</span></span><br><span class="line">          (<span class="params">line:</span></span><br><span class="line">            <span class="keyword">if</span> lib.hasSuffix <span class="string">&quot;is not set&quot;</span> line</span><br><span class="line">            <span class="keyword">then</span> &#123; <span class="attr">name</span> <span class="operator">=</span> (lib.removePrefix <span class="string">&quot;# CONFIG_&quot;</span> (lib.removeSuffix <span class="string">&quot; is not set&quot;</span> line)); <span class="attr">value</span> <span class="operator">=</span> lib.mkForce lib.kernel.no; &#125;</span><br><span class="line">            <span class="keyword">else</span></span><br><span class="line">              <span class="keyword">if</span> lib.hasSuffix <span class="string">&quot;=y&quot;</span> line</span><br><span class="line">              <span class="keyword">then</span> &#123; <span class="attr">name</span> <span class="operator">=</span> (lib.removePrefix <span class="string">&quot;CONFIG_&quot;</span> (lib.removeSuffix <span class="string">&quot;=y&quot;</span> line)); <span class="attr">value</span> <span class="operator">=</span> lib.mkForce lib.kernel.yes; &#125;</span><br><span class="line">              <span class="keyword">else</span> <span class="literal">null</span></span><br><span class="line">          )</span><br><span class="line">          lines</span><br><span class="line">        );</span><br><span class="line">    <span class="keyword">in</span></span><br><span class="line">    (lib.listToAttrs attrs) <span class="operator">//</span> &#123;</span><br><span class="line">      <span class="attr">RUST</span> <span class="operator">=</span> lib.mkForce lib.kernel.no;</span><br><span class="line">      <span class="attr">MODULES</span> <span class="operator">=</span> lib.mkForce lib.kernel.no;</span><br><span class="line"></span><br><span class="line">      <span class="comment"># Add -64 to the hostname to make it easier to see which kernel is running during development</span></span><br><span class="line">      <span class="attr">DEFAULT_HOSTNAME</span> <span class="operator">=</span> lib.mkForce (lib.kernel.freeform <span class="string">&quot;live-bootstrap-64&quot;</span>);</span><br><span class="line">    &#125;;</span><br><span class="line">  <span class="attr">ignoreConfigErrors</span> <span class="operator">=</span> <span class="literal">true</span>;</span><br><span class="line">&#125;)).overrideAttrs (<span class="params">attrs:</span> &#123;</span><br><span class="line">  <span class="comment"># postInstall should be disabled if MODULES is set to no, but that doesn&#x27;t seem to work.</span></span><br><span class="line">  <span class="comment"># Because it isn&#x27;t used otherwise, we can just override it with an empty string here.</span></span><br><span class="line">  <span class="attr">postInstall</span> <span class="operator">=</span> <span class="string">&quot;&quot;</span>;</span><br><span class="line">&#125;)</span><br><span class="line"></span><br></pre></td></tr></table></figure></details><p>将它导入live-bootstrap系统后，在它所在的目录，拷入当前内核的配置文件并重命名为<code>config</code>。<br>你既可以拷备用的内核配置文件过来，如果实在没有备用的内核配置文件，用如下命令导入</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">zcat /proc/config.gz &gt; config</span><br></pre></td></tr></table></figure><h3 id="正式开始交叉编译"><a href="#正式开始交叉编译" class="headerlink" title="正式开始交叉编译"></a>正式开始交叉编译</h3><p>在内核文件<code>config</code>和<code>default.nix</code>所在的目录中，执行如下命令</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">nix-build -v --log-format bar-with-logs</span><br></pre></td></tr></table></figure><p>上文<code>default.nix</code>文件，大致意思为执行交叉编译（并且下载或编译所有工具链所需的软件），读取<code>config</code>文件，根据它来进行配置。所有新版本所增加的配置，RUST都选no，需要模块的也都选no，其余默认。<br>最终会编译出一个，版本最新的（6开头的，不是7.1.2），64位的，没有initramfs和模块从而跟live-bootstrap兼容的内核。</p><p>由于没有内核，它不会生成<code>result</code>连接，你只能去报错提示的目录寻找<code>bzImage</code>文件，并将它拷贝并改名：<code>/boot/vmlinuz64</code></p><h3 id="安装并启用新内核"><a href="#安装并启用新内核" class="headerlink" title="安装并启用新内核"></a>安装并启用新内核</h3><p>执行如下命令安装内核</p><figure class="highlight bash"><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></pre></td><td class="code"><pre><span class="line"><span class="keyword">if</span> ! grep -q <span class="string">&quot;vmlinuz64&quot;</span> /boot/grub/grub.cfg; <span class="keyword">then</span></span><br><span class="line">    <span class="built_in">echo</span> <span class="string">&quot;Updating GRUB configuration&quot;</span></span><br><span class="line"></span><br><span class="line">    <span class="built_in">cp</span> /boot/grub/grub.cfg /boot/grub/grub.cfg.bak</span><br><span class="line"></span><br><span class="line">    sed -i <span class="string">&#x27;s|/boot/vmlinuz|/boot/vmlinuz64|;s|Linux live-bootstrap|Linux live-bootstrap 64|&#x27;</span> /boot/grub/grub.cfg</span><br><span class="line"></span><br><span class="line">    <span class="built_in">cat</span> /boot/grub/grub.cfg.bak &gt;&gt; /boot/grub/grub.cfg</span><br><span class="line">    <span class="built_in">rm</span> /boot/grub/grub.cfg.bak</span><br><span class="line"><span class="keyword">else</span></span><br><span class="line">    <span class="built_in">echo</span> <span class="string">&quot;64bit GRUB entry already exists&quot;</span></span><br><span class="line"><span class="keyword">fi</span></span><br></pre></td></tr></table></figure><p>重启后，执行<code>uname -a</code>查看内核。</p><h3 id="执行原地安装"><a href="#执行原地安装" class="headerlink" title="执行原地安装"></a>执行原地安装</h3><h4 id="卸载nix"><a href="#卸载nix" class="headerlink" title="卸载nix"></a>卸载nix</h4><p>重启后，根据官方教程<a href="https://nix.dev/manual/nix/2.34/installation/uninstall.html">https://nix.dev/manual/nix/2.34/installation/uninstall.html</a> 卸载nix。<br>因为，刚才安装的nix是i686架构的，它无法安装x86_64的NixOS系统</p><figure class="highlight bash"><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"><span class="built_in">rm</span> -rf /etc/nix /etc/profile.d/nix.sh /etc/tmpfiles.d/nix-daemon.conf /nix ~/.local/share/nix ~/.local/state/nix ~/.cache/nix ~/.nix-defexpr ~/.nix-profile ~/.nix-channels ~root/.nix-channels ~root/.nix-defexpr ~root/.nix-profile ~root/.cache/nix</span><br><span class="line"><span class="keyword">for</span> i <span class="keyword">in</span> $(<span class="built_in">seq</span> 1 32); <span class="keyword">do</span></span><br><span class="line">  userdel nixbld<span class="variable">$i</span></span><br><span class="line"><span class="keyword">done</span></span><br><span class="line">groupdel nixbld</span><br></pre></td></tr></table></figure><p>去掉<code>sudo</code>，因为会报错。</p><h4 id="安装x86-64架构的nix"><a href="#安装x86-64架构的nix" class="headerlink" title="安装x86_64架构的nix"></a>安装x86_64架构的nix</h4><p>步骤跟原来一样，它会根据内核架构来调整nix的架构</p><figure class="highlight bash"><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">curl --proto <span class="string">&#x27;=https&#x27;</span> --tlsv1.2 -L https://nixos.org/nix/install | sh -s -- --daemon</span><br><span class="line">. <span class="variable">$HOME</span>/.nix-profile/etc/profile.d/nix.sh</span><br></pre></td></tr></table></figure><h4 id="切换nix-channel"><a href="#切换nix-channel" class="headerlink" title="切换nix-channel"></a>切换nix-channel</h4><p>将nix-channel切换位nixos</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">nix-channel --add https://channels.nixos.org/nixos-unstable nixpkgs</span><br></pre></td></tr></table></figure><p>其中<em>unstable</em>可以改为相应的稳定版本。由于本文不使用已被废除的<code>NIXOS_LUSTRATE</code>，所以可以使用<em>unstable</em>。<br>然后记得运行</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">nix-channel --update</span><br></pre></td></tr></table></figure><h4 id="构建NixOS安装程序，通过kexec安装系统"><a href="#构建NixOS安装程序，通过kexec安装系统" class="headerlink" title="构建NixOS安装程序，通过kexec安装系统"></a>构建NixOS安装程序，通过<code>kexec</code>安装系统</h4><p>如果你没有配置文件需要使用，那么无需为此步骤创建新目录。<br>直接执行</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">nix-build -A kexec.x86_64-linux <span class="string">&#x27;&lt;nixpkgs/nixos/release.nix&gt;&#x27;</span></span><br></pre></td></tr></table></figure><p>需要等待较长时间。也需要大量系统资源来构建一个临时的NixOS<br>目前的内核组件太少，没有编译所需的部件，因此<a href="https://nixos.org/manual/nixos/stable/">官方教程</a>仅有此方法能进行安装。</p><blockquote><p>或者降级到26.05之前构建toplevel，使用已被废除的<code>NIXOS_LUSTRATE</code>来执行原地安装。并且只能通过热启动<code>/boot/vmlinuz64</code>来完成转换。</p></blockquote><p>编译完成后，<code>cd result</code>进入编译好的目录，执行</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">./kexec-boot</span><br></pre></td></tr></table></figure><p>这时，马上就进入了类似安装盘的界面，所有硬盘都变为未挂载的状态。</p><h4 id="安装NixOS"><a href="#安装NixOS" class="headerlink" title="安装NixOS"></a>安装NixOS</h4><p>此时步骤就跟使用安装盘一样了。你可以<code>cfdisk -z</code>来格式化全盘，也可以<code>cfdisk /dev/sdb</code>来给其他硬盘安装NixOS。<br>在此不再赘述安装过程，详见官网和其他教程。<br>完全可以在BIOS启动的环境下安装UEFI启动的系统。</p><h5 id="可逆替代安装"><a href="#可逆替代安装" class="headerlink" title="可逆替代安装"></a>可逆替代安装</h5><p>此时，你不要用<code>cfdisk</code>或<code>fdisk</code>来格式化硬盘，直接挂载到<code>/mnt</code>。然后进入挂载目录，运行</p><figure class="highlight bash"><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"><span class="built_in">mkdir</span> old-root</span><br><span class="line"><span class="built_in">mv</span> -v * old-root</span><br></pre></td></tr></table></figure><p>然后再运行</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">nixos-generate-config --root /mnt</span><br></pre></td></tr></table></figure><p>按照<a href="https://nixos.org/manual/nixos/stable/">官方教程</a>继续安装。<br>如果不把旧系统的文件全都移入备份目录，那么本次安装将会失败，旧数据也会损坏。</p><p>回滚nixos的可逆原地安装，也跟<a href="https://nixos.org/manual/nixos/stable/">官方教程</a>一样，需要使用其他安装盘来进行恢复。</p><p>安装成功后，如图所示<br><img src="nixos-bootstrap-2026-07-14-20-25-08.png"></p>]]></content>
    
    
    <summary type="html">&lt;p&gt;我在搜索“Full Source bootstrap”时，看到了一个网友实现了NixOS的自举，并且作为他的学士论文。我在最近也试了，发现不行，并不能自举。原因是某些依赖的CVE补丁下载不到了，然而他的脚本有SHA256和MD5码的校验，我也没法随便改。&lt;/p&gt;
&lt;p&gt;我了解了一下NixOS，发现这个系统确实了不得，但是比LFS都难上手。&lt;/p&gt;</summary>
    
    
    
    <category term="技术相关" scheme="https://blog.xuzhou-jiang.su/categories/%E6%8A%80%E6%9C%AF%E7%9B%B8%E5%85%B3/"/>
    
    <category term="信创天地" scheme="https://blog.xuzhou-jiang.su/categories/%E6%8A%80%E6%9C%AF%E7%9B%B8%E5%85%B3/%E4%BF%A1%E5%88%9B%E5%A4%A9%E5%9C%B0/"/>
    
    
    <category term="踩坑心得" scheme="https://blog.xuzhou-jiang.su/tags/%E8%B8%A9%E5%9D%91%E5%BF%83%E5%BE%97/"/>
    
    <category term="一点偷工减料的干货" scheme="https://blog.xuzhou-jiang.su/tags/%E4%B8%80%E7%82%B9%E5%81%B7%E5%B7%A5%E5%87%8F%E6%96%99%E7%9A%84%E5%B9%B2%E8%B4%A7/"/>
    
    <category term="自助创新" scheme="https://blog.xuzhou-jiang.su/tags/%E8%87%AA%E5%8A%A9%E5%88%9B%E6%96%B0/"/>
    
    <category term="互联网非物质文化遗产" scheme="https://blog.xuzhou-jiang.su/tags/%E4%BA%92%E8%81%94%E7%BD%91%E9%9D%9E%E7%89%A9%E8%B4%A8%E6%96%87%E5%8C%96%E9%81%97%E4%BA%A7/"/>
    
    <category term="Linux邪教" scheme="https://blog.xuzhou-jiang.su/tags/Linux%E9%82%AA%E6%95%99/"/>
    
    <category term="编译Linux系统" scheme="https://blog.xuzhou-jiang.su/tags/%E7%BC%96%E8%AF%91Linux%E7%B3%BB%E7%BB%9F/"/>
    
  </entry>
  
  <entry>
    <title>用Windows编译Linux操作系统（四）：用live-bootstrap编译LFS</title>
    <link href="https://blog.xuzhou-jiang.su/2026/07/18/win2LFS/"/>
    <id>https://blog.xuzhou-jiang.su/2026/07/18/win2LFS/</id>
    <published>2026-07-18T10:27:26.000Z</published>
    <updated>2026-07-18T15:06:26.000Z</updated>
    
    <content type="html"><![CDATA[<p>Linux From Scratch是纯手动编译安装的，并且没有包管理器的Linux系统。它的缺点也很明显：需要一个现成的Linux发行版，如果你没有Linux内核，那你也无从编译Linux。</p><span id="more"></span><p>fosslinux&#x2F;live-bootstrap生成的系统，功能十分有限，编译和安装软件也缺少很多依赖，不像gentoo，不仅可以编译安装软件，也可以安装二进制软件。<br>LFS介于两者之间，经过<a href="https://www.linuxfromscratch.org/mlfs/view/13.0/chapter02/hostreqs.html">书上的脚本测试</a>，发现LFS-13.0所有软件都符合编译LFS的条件，除了内核版本过低。经过笔者的测试，MLFS-13.0可以在live-bootstrap的<code>63b24502c7e5bad7db5ee1d2005db4cc5905ab74</code>版本编译安装，但是LFS-12.0无法在该版本的live-bootstrap编译安装。<br>系统过于简陋带来的影响就在于，MLFS第8章的测试，成功率要低很多，但是系统依旧可以成功启动。</p><h1 id="前提条件"><a href="#前提条件" class="headerlink" title="前提条件"></a>前提条件</h1><ol><li>完成live-bootstrap的编译。硬件上需要两块硬盘，虚拟机只需要编译完再新建一个SATA虚拟硬盘就可以了。SCSI虚拟硬盘stage0系统它读不出来（应该是内核问题）。</li><li>安装启动dropbear</li><li>根据笔者的<a href="/2026/05/31/kernelx64/">这篇教程</a>，使用<strong>LFS-12.0</strong>的交叉编译工具链，编译出linux64位版本4.14的内核，并且启动这个内核。</li></ol><h1 id="自举Linux-From-Scratch"><a href="#自举Linux-From-Scratch" class="headerlink" title="自举Linux From Scratch"></a>自举Linux From Scratch</h1><p>我认为LFS不必考虑原地安装，因为这对于自举系统来说，属于升级Linux系统。这显然太超纲了。</p><p>安装LFS的步骤差别跟<a href="https://lfs.xry111.site/zh_CN/13.0-systemd/LFS-SYSD-BOOK.html">https://lfs.xry111.site/zh_CN/13.0-systemd/LFS-SYSD-BOOK.html</a> 不是很大。保险起见，要改一下glibc-2.43配置参数的内核版本（可能不改也无所谓）。</p><h2 id="安装UEFI启动器"><a href="#安装UEFI启动器" class="headerlink" title="安装UEFI启动器"></a>安装UEFI启动器</h2><p>跟<a href="/2026/07/18/Windows2gen2/">上一篇</a>一样，还是可以把硬盘格式化成gpt，至少3个分区，跟上一篇一样。<br>但是，live-bootstrap系统内没有<code>cfdisk</code>咋办？</p><p>其实很好办，在第7章结束之前，不必进行分区和挂载操作。<br>安装完util-linux之后，你的LFS系统就有了分区和格式化功能，这时跟上一篇一样，进行分区。当然，EFI分区还是没法格式化，还是要在gpt硬盘留一个BIOS分区。再退宿主系统给硬盘进行格式化。<br>按照<a href="https://lfs.xry111.site/zh_CN/13.0-systemd/LFS-SYSD-BOOK.html#ch-tools-cleanup">7.13. 清理和备份临时系统</a>备份系统以后，删除<code>$LFS</code>目录下所有文件和目录。再挂载硬盘的根目录文件系统，把备份恢复到硬盘上，即可再度容器化构建中的系统，继续进行构建。</p><p>安装到最后，按照BIOS继续进行GRUB安装和设定。注意，<code>/boog/grub/grub.cfg</code>里的引导盘，必须设为<code>hd0</code>和<code>sda</code>，而不是<code>hd1</code>和<code>sdb</code>。<br>因为，LFS系统没有initramfs，所以无法识别UUID。这一点跟gentoo不一样，别看安装起来非常硬核，其实LFS并不是一个完整的操作系统。</p><p>最后，关机，移除live-bootstrap硬盘，使第二块变为唯一硬盘，BIOS启动LFS，进行BLFS的安装。</p><h3 id="安装后的步骤"><a href="#安装后的步骤" class="headerlink" title="安装后的步骤"></a>安装后的步骤</h3><p>根据BLFS，安装UEFI启动所需软件，安装dosfstools。执行<code>grub-install</code>，可能会显示错误，但是，下次UEFI启动时进入固件，选择从文件启动即可进入系统。<br>UEFI启动进入系统后，再执行一遍</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">grub-install --bootloader-id=LFS --recheck</span><br></pre></td></tr></table></figure><p>如果没有报错，那么下次LFS就能正常通过UEFI启动了。</p><h2 id="安装fastfetch"><a href="#安装fastfetch" class="headerlink" title="安装fastfetch"></a>安装fastfetch</h2><p>最快的办法是直接把二进制文件<code>fastfetch</code>拷入<code>/usr/bin</code>。</p><p>最符合LFS精神的办法是从GitHub下载fastfetch源码，并在BLFS寻找所有依赖，依次进行安装，最后再把编译出的<code>fastfetch</code>拷入目录。<br><img src="LFS-2026-07-18-23-05-15.png"></p>]]></content>
    
    
    <summary type="html">&lt;p&gt;Linux From Scratch是纯手动编译安装的，并且没有包管理器的Linux系统。它的缺点也很明显：需要一个现成的Linux发行版，如果你没有Linux内核，那你也无从编译Linux。&lt;/p&gt;</summary>
    
    
    
    <category term="技术相关" scheme="https://blog.xuzhou-jiang.su/categories/%E6%8A%80%E6%9C%AF%E7%9B%B8%E5%85%B3/"/>
    
    <category term="信创天地" scheme="https://blog.xuzhou-jiang.su/categories/%E6%8A%80%E6%9C%AF%E7%9B%B8%E5%85%B3/%E4%BF%A1%E5%88%9B%E5%A4%A9%E5%9C%B0/"/>
    
    
    <category term="踩坑心得" scheme="https://blog.xuzhou-jiang.su/tags/%E8%B8%A9%E5%9D%91%E5%BF%83%E5%BE%97/"/>
    
    <category term="一点偷工减料的干货" scheme="https://blog.xuzhou-jiang.su/tags/%E4%B8%80%E7%82%B9%E5%81%B7%E5%B7%A5%E5%87%8F%E6%96%99%E7%9A%84%E5%B9%B2%E8%B4%A7/"/>
    
    <category term="自助创新" scheme="https://blog.xuzhou-jiang.su/tags/%E8%87%AA%E5%8A%A9%E5%88%9B%E6%96%B0/"/>
    
    <category term="时间杀手预警" scheme="https://blog.xuzhou-jiang.su/tags/%E6%97%B6%E9%97%B4%E6%9D%80%E6%89%8B%E9%A2%84%E8%AD%A6/"/>
    
    <category term="互联网非物质文化遗产" scheme="https://blog.xuzhou-jiang.su/tags/%E4%BA%92%E8%81%94%E7%BD%91%E9%9D%9E%E7%89%A9%E8%B4%A8%E6%96%87%E5%8C%96%E9%81%97%E4%BA%A7/"/>
    
    <category term="Linux邪教" scheme="https://blog.xuzhou-jiang.su/tags/Linux%E9%82%AA%E6%95%99/"/>
    
    <category term="编译Linux系统" scheme="https://blog.xuzhou-jiang.su/tags/%E7%BC%96%E8%AF%91Linux%E7%B3%BB%E7%BB%9F/"/>
    
  </entry>
  
  <entry>
    <title>用Windows编译Linux操作系统（三）：从live-bootstrap编译gentoo</title>
    <link href="https://blog.xuzhou-jiang.su/2026/07/18/Windows2gen2/"/>
    <id>https://blog.xuzhou-jiang.su/2026/07/18/Windows2gen2/</id>
    <published>2026-07-18T08:45:30.000Z</published>
    <updated>2026-07-18T10:24:48.000Z</updated>
    
    <content type="html"><![CDATA[<p>之前笔者提到过gentoo。这个操作系统，非常的硬核。但是，它缺点意思，你编译Linux，最终还是要用到Linux系统或虚拟机，还是要去网上下载已经编译好的Linux系统的ISO文件。而且，这个gentoo的stage1甚至还失传了，大概从十年前开始，大家再也体会不到编译gentoo系统的乐趣了，因此，gentoo存在的意义也少了一大半！gentoo社区也走向凋敝。<br>所以，我找到了让<del>（我这样的）</del>新人也能体会到gentoo乐趣的玩法！</p><span id="more"></span><p>关于gentoo的自举，我已经<a href="/2026/05/04/gentoo-stage0/">写过了</a>。今天的教程有一点点不一样，我是用live-bootstrap启动的系统来自举gentoo的。本来还担心没法成功，但是我已经在虚拟机上成功测试了，最终可以完整安装最新版的gentoo！</p><h1 id="前提条件"><a href="#前提条件" class="headerlink" title="前提条件"></a>前提条件</h1><ol><li>根据笔者的<a href="/2026/05/31/Windows-to-stage0/">这篇教程</a>，在虚拟机完成了Linux系统从无到有的编译。<br>也可以在裸机上执行，但要小心数据丢失。本文如果要安装gentoo，你至少要准备2块闲置硬盘，一块给live-bootstrap，一块给gentoo。</li><li>根据笔者的<a href="/2026/05/31/kernelx64/">这篇教程</a>，编译出linux64位版本4.14的内核，并且启动这个内核。</li><li>从<a href="https://archive.org/download/gentoo-bootstrap-2025.8/distfiles.tar">https://archive.org/download/gentoo-bootstrap-2025.8/distfiles.tar</a> 下载所有gentoo自举所需软件，并解压到自举系统的<code>/external/sources</code>目录。你可以使用<code>curl</code>命令下载。</li></ol><h1 id="自举gentoo"><a href="#自举gentoo" class="headerlink" title="自举gentoo"></a>自举gentoo</h1><p>基本上根据这个教程来进行<a href="https://mid-kid.root.sx/git/mid-kid/bootstrap/src/branch/master/gentoo-2025.8/gentoo.txt">https://mid-kid.root.sx/git/mid-kid/bootstrap/src/branch/master/gentoo-2025.8/gentoo.txt</a> ，中间有些步骤需要极少量变通。</p><h2 id="安装dropbear（简易SSH服务端）"><a href="#安装dropbear（简易SSH服务端）" class="headerlink" title="安装dropbear（简易SSH服务端）"></a>安装dropbear（简易SSH服务端）</h2><p>这个步骤<strong>强烈建议</strong>执行，在交叉编译内核之前就执行。之后的命令和配置文件可以全部通过另一台电脑进行复制粘贴来输入，否则手动配置编译极容易出错，还浪费时间。</p><ol><li>在<a href="https://dropbear.nl/">https://dropbear.nl</a> 下载dropbear的代码，并进行校验。这里需要手动输入<code>curl -L -O</code>命令来进行下载</li><li>解压代码后，用<code>./configure --prefix=/usr --sbindir=/usr/bin --disable-harden --disable-utmp --disable-utmpx --disable-wtmp --disable-wtmpx &amp;&amp; make -j($nproc) &amp;&amp; make install</code>来安装dropbear</li><li>dropbear启动前还必须满足一些条件。首先挂载<code>devpts</code>：<code>mkdir -p /dev/pts; mount -t devpts devpts /dev/pts</code>（每次重启都必须执行该命令）。再创建配置文件位置<code>mkdir /etc/dropbear</code>。</li><li>设置root密码</li><li>启动dropbear<code>dropbear -R -e</code></li><li>用curl访问你的迷你网页服务器，找到自举系统的IP地址（该系统没有<code>ping</code>和<code>ip addr</code>）。从你的Windows宿主机或另一台电脑使用ssh登录该系统。</li></ol><p>顺利的话应该是秒开，起始位置为root的用户目录，也就是<code>/root</code>。</p><h2 id="开始gentoo编译流程"><a href="#开始gentoo编译流程" class="headerlink" title="开始gentoo编译流程"></a>开始gentoo编译流程</h2><p>首先挂载代码目录</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">mount --<span class="built_in">bind</span> /external/disfiles /var/cache/distfiles</span><br></pre></td></tr></table></figure><p>然后根据教程<a href="https://mid-kid.root.sx/git/mid-kid/bootstrap/src/branch/master/gentoo-2025.8/gentoo.txt">https://mid-kid.root.sx/git/mid-kid/bootstrap/src/branch/master/gentoo-2025.8/gentoo.txt</a> 开始自举，其中可以省略下载代码的步骤。只要下载了<a href="https://archive.org/download/gentoo-bootstrap-2025.8/distfiles.tar">https://archive.org/download/gentoo-bootstrap-2025.8/distfiles.tar</a> ，下面的编译步骤都可以隔绝网络进行。<br>其中，自举系统没有<code>rsync</code>等指令，所有退回宿主系统的步骤都需要变通执行，因为这时候没有宿主系统。这里我建议挂载代码目录</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">mount --<span class="built_in">bind</span> /external/distfiles /target/var/cache/distfiles</span><br></pre></td></tr></table></figure><p>直到最后<code>chroot</code>进<code>/target</code>目录，运行了</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">emerge -e @world</span><br></pre></td></tr></table></figure><h2 id="更新stage3文件"><a href="#更新stage3文件" class="headerlink" title="更新stage3文件"></a>更新stage3文件</h2><figure class="highlight bash"><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">emerge-webrsync</span><br><span class="line">emerge -avuDN @world</span><br></pre></td></tr></table></figure><p>本步骤的时间不亚于编译gentoo-stage3的所有步骤的总和</p><h2 id="打包stage3文件"><a href="#打包stage3文件" class="headerlink" title="打包stage3文件"></a>打包stage3文件</h2><p>首先，确保更新完整后，解除所有代码目录的挂载，以节省空间和时间。<br>然后，<strong>在stage3的chroot环境内</strong>，执行如下代码</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">tar -cvpjf stage3-amd64-openrc-20260628.tar.xz --exclude=/stage3-amd64-openrc-20260628.tar.xz --one-file-system --xattrs-include=<span class="string">&#x27;*.*&#x27;</span> --numeric-owner /</span><br></pre></td></tr></table></figure><p>文件名<code>stage3-amd64-openrc-20260628.tar.xz</code>你可以自行修改，整行命令中有2处要改！<br>打包完成后，你就有了完全属于自己编译的stage3！理论上，每个人每台电脑编译出的stage3都应该是一模一样的，差别只跟时间有关，每天的gentoo仓库都是不同的。</p><h2 id="安装gentoo"><a href="#安装gentoo" class="headerlink" title="安装gentoo"></a>安装gentoo</h2><p>为了验证，需要完整安装一遍gentoo。<br>**理论上，**你可以在登录ssh的前提下，进行原地替换安装<a href="https://wiki.gentoo.org/wiki/User:Jbara/Installing_Gentoo_on_Free_Oracle_VPS">https://wiki.gentoo.org/wiki/User:Jbara/Installing_Gentoo_on_Free_Oracle_VPS</a> ，但是你要删除更多自举有用的无用文件，而且linux-4.14无模块内核，还不知道是否支持重启。因此，我不建议你原地替换安装。</p><p>本文只讲安装gentoo的大概步骤，官方手册已有的不再赘述！</p><h3 id="第二块硬盘的分区、格式化与挂载"><a href="#第二块硬盘的分区、格式化与挂载" class="headerlink" title="第二块硬盘的分区、格式化与挂载"></a>第二块硬盘的分区、格式化与挂载</h3><p>live-bootstrap里面不含cfdisk，而fdisk都不能进行gpt分区。<br>你可以老老实实安装只能BIOS启动的gentoo。但是，最终也可以安装可以UEFI启动的Linux系统！</p><p>live-bootstrap没有且难以安装<code>arch-chroot</code>命令，因此，你还是得需要<code>mount</code>和<code>chroot</code>来进行容器化。</p><p>首先，你还是容器化<code>chroot</code>进<code>/target</code>，这时，你会发现，你可以使用<code>lsblk</code>、<code>cfdisk</code>和可以gpt分区的<code>fdisk</code>了！<br>当然，<code>cfdisk</code>还是只有在ssh界面下，并正确配置<code>TERM</code>环境变量以后才能使用。<br>容器内外，其实只有内核是一样的，库都是gentoo的。<br>不仅能正确使用<code>cfdisk</code>，你还可以安装<code>dosfstools</code>，用来把EFI分区格式化为FAT32。但是，你无法挂载EFI分区，以及在上面安装GRUB。</p><p>因此，我建议，你还是使用GPT分区，但是做一些微小的调整。首先，照常分区为</p><table><thead><tr><th>分区</th><th>大小</th><th>备注</th></tr></thead><tbody><tr><td>sdb1</td><td>1G</td><td>EFI分区</td></tr><tr><td>sdb2</td><td>10G</td><td>swap分区</td></tr><tr><td>sdb3</td><td>剩下全部</td><td>Linux根目录</td></tr></tbody></table><p>然后swap分区Resize为10239M，你多出来的1M空间，再建一个分区sda4，类型改为BIOS分区，并且不要格式化！</p><blockquote><p><font color=yellow>注意⚠：在<code>cfdisk</code>中，不要被分区顺序所迷惑，修改类型时不要改错分区！</font></p></blockquote><h3 id="新系统安装"><a href="#新系统安装" class="headerlink" title="新系统安装"></a>新系统安装</h3><p>live-bootstrap系统中不含<code>/mnt</code>，需自行创建。<br>将<code>/dev/sdb3</code>挂载后，按照官方教程中的命令解压stage3压缩包到<code>/mnt</code>或<code>/mnt/gentoo</code>。根据官方教程，你可以将profile切换为systemd，也可以待安装结束后，启动进入新系统之后再切换systemd。<br>最后你会发现，linux内核还是可以编译的。</p><h4 id="安装grub"><a href="#安装grub" class="headerlink" title="安装grub"></a>安装grub</h4><p>有了BIOS分区，你可以将这块硬盘当作MBR硬盘执行</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">grub-install /dev/sdb</span><br></pre></td></tr></table></figure><h3 id="安装后"><a href="#安装后" class="headerlink" title="安装后"></a>安装后</h3><p>安装完成后，你可以在这个新gentoo系统中做任何事，因为这就是一个完整的，官方的gentoo系统。<br>第一次启动，你还是得BIOS启动进入。但是你可以格式化<code>sda1</code>并安装grub了。为防止报错，你的<code>grub-install</code>建议带上<code>--removable</code>参数。重启成功后，再不带<code>--removable</code>执行一遍。<br>这其中的原理就是，<code>grub-install</code>不仅安装efi文件，还会在主板上写入启动记录。但是加上<code>--removable</code>以后，主板可以把它当作一个安装盘进行UEFI启动。</p><p>如果VMWare无法启动，你可以进入固件，选择<code>Boot from a file</code>，启动gentoo，并重新执行<code>grub-install</code>即可修复。</p><p>由此可知，gentoo是最好的发行版，从源码编译，并且功能比LFS完整，还有包管理器让人免于依赖地狱！即使包管理器里没有收录你要的软件，或者还未来得及收录最新版本软件（就比如需要修复CVE零日漏洞），也可以自行编译或安装二进制（NixOS不能在不打包的情况下做到这一点）。<br>它的包管理器<code>portage</code>也可以给其他系统使用（兼容性不如nix就是）。</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;之前笔者提到过gentoo。这个操作系统，非常的硬核。但是，它缺点意思，你编译Linux，最终还是要用到Linux系统或虚拟机，还是要去网上下载已经编译好的Linux系统的ISO文件。而且，这个gentoo的stage1甚至还失传了，大概从十年前开始，大家再也体会不到编译gentoo系统的乐趣了，因此，gentoo存在的意义也少了一大半！gentoo社区也走向凋敝。&lt;br&gt;所以，我找到了让&lt;del&gt;（我这样的）&lt;/del&gt;新人也能体会到gentoo乐趣的玩法！&lt;/p&gt;</summary>
    
    
    
    <category term="技术相关" scheme="https://blog.xuzhou-jiang.su/categories/%E6%8A%80%E6%9C%AF%E7%9B%B8%E5%85%B3/"/>
    
    <category term="信创天地" scheme="https://blog.xuzhou-jiang.su/categories/%E6%8A%80%E6%9C%AF%E7%9B%B8%E5%85%B3/%E4%BF%A1%E5%88%9B%E5%A4%A9%E5%9C%B0/"/>
    
    
    <category term="踩坑心得" scheme="https://blog.xuzhou-jiang.su/tags/%E8%B8%A9%E5%9D%91%E5%BF%83%E5%BE%97/"/>
    
    <category term="一点偷工减料的干货" scheme="https://blog.xuzhou-jiang.su/tags/%E4%B8%80%E7%82%B9%E5%81%B7%E5%B7%A5%E5%87%8F%E6%96%99%E7%9A%84%E5%B9%B2%E8%B4%A7/"/>
    
    <category term="自助创新" scheme="https://blog.xuzhou-jiang.su/tags/%E8%87%AA%E5%8A%A9%E5%88%9B%E6%96%B0/"/>
    
    <category term="时间杀手预警" scheme="https://blog.xuzhou-jiang.su/tags/%E6%97%B6%E9%97%B4%E6%9D%80%E6%89%8B%E9%A2%84%E8%AD%A6/"/>
    
    <category term="互联网非物质文化遗产" scheme="https://blog.xuzhou-jiang.su/tags/%E4%BA%92%E8%81%94%E7%BD%91%E9%9D%9E%E7%89%A9%E8%B4%A8%E6%96%87%E5%8C%96%E9%81%97%E4%BA%A7/"/>
    
    <category term="Linux邪教" scheme="https://blog.xuzhou-jiang.su/tags/Linux%E9%82%AA%E6%95%99/"/>
    
    <category term="编译Linux系统" scheme="https://blog.xuzhou-jiang.su/tags/%E7%BC%96%E8%AF%91Linux%E7%B3%BB%E7%BB%9F/"/>
    
  </entry>
  
  <entry>
    <title>用Windows编译Linux操作系统（二）：用live-bootstrap（i686内核）编译x86_64内核</title>
    <link href="https://blog.xuzhou-jiang.su/2026/05/31/kernelx64/"/>
    <id>https://blog.xuzhou-jiang.su/2026/05/31/kernelx64/</id>
    <published>2026-05-31T09:18:13.000Z</published>
    <updated>2026-07-18T15:57:50.000Z</updated>
    
    <content type="html"><![CDATA[<p>这件事情一看就很烦，为什么要做呢？</p><p>烦在哪里：刚刚自举的Linux系统，一没软件商店，二没包管理器。<br>软件商店是个什么玩意儿，在单位用过信创系统的都懂🙂。<br>包管理器没有，这你叫我怎么活？软件的依赖关系两眼一抹黑。</p><p>既然很烦，为什么要做？：</p><span id="more"></span><p>前面不是说要自举gentoo吗？<del>虽然还没出发</del><a href="https://mid-kid.root.sx/git/mid-kid/bootstrap/src/branch/master/gentoo-2025.8/gentoo.txt">教程</a>最后阶段有这么个注释</p><figure class="highlight bash"><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"><span class="comment"># This is the point where you have to move from the x86 system to an x86_64 system.</span></span><br><span class="line"><span class="comment"># Make sure that you are running a x86_64 kernel before chrooting, or booting it.</span></span><br></pre></td></tr></table></figure><blockquote><p>在这个时候，你必须从x86系统切换到x86_64系统。<br>确保你在启动或chroot这个stage3系统时，正在运行x86_64内核。</p></blockquote><p>我确实是试过了，i686内核运行的时候，我无法chroot到官网下载的x86_64的stage3文件里去。</p><p>经过我孜孜不倦地搜索，找到了<a href="https://gist.github.com/Googulator/86af97ed078eb9e6c18c6eb49e46c96d">先人走过的路</a>。虽然他不如<a href="https://mid-kid.root.sx/git/mid-kid/bootstrap/src/branch/master/gentoo-2025.8/gentoo.txt">另一位先人</a>，文件下不到了怎么办也没说。<br>但是，好在他测试出了LFS-12.0的交叉编译工具链可以解决我的问题。</p><p>经过我的测试，gcc15无法编译这么老的内核，但是gcc14和gcc13可以。（编译新的内核非常困难）<br>没有依赖关系，那就只能使用<a href="https://linuxfromscratch.org/">Linux From Scratch</a>来解决了，这都是先人测试出来的结果，能给我们省下不知道多少时间。经过我的测试，LFS发行版只有12.0~12.3的交叉工具链可以编译64位的live-bootstrap内核。再老的我没试过了（感觉应该问题不大）。<br>这次就以LFS12.0为例进行分享。</p><h1 id="准备内核配置文件"><a href="#准备内核配置文件" class="headerlink" title="准备内核配置文件"></a>准备内核配置文件</h1><p><a href="https://gist.githubusercontent.com/Googulator/86af97ed078eb9e6c18c6eb49e46c96d/raw/7eeebc5518453c353608c801edc137444ef16a47/config64">原作者已经给了</a>，但是防止GitHub跑路，我<a href="config64">再存一遍</a>。这比原作者要好，你可以在你的live-bootstrap中用<code>curl -L -O</code>下载我的链接，他的就很难用手输入😄。</p><details><summary>点击查看<code>config64</code>配置文件全文</summary><figure class="highlight ruby"><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><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br><span class="line">124</span><br><span class="line">125</span><br><span class="line">126</span><br><span class="line">127</span><br><span class="line">128</span><br><span class="line">129</span><br><span class="line">130</span><br><span class="line">131</span><br><span class="line">132</span><br><span class="line">133</span><br><span class="line">134</span><br><span class="line">135</span><br><span class="line">136</span><br><span class="line">137</span><br><span class="line">138</span><br><span class="line">139</span><br><span class="line">140</span><br><span class="line">141</span><br><span class="line">142</span><br><span class="line">143</span><br><span class="line">144</span><br><span class="line">145</span><br><span class="line">146</span><br><span class="line">147</span><br><span class="line">148</span><br><span class="line">149</span><br><span class="line">150</span><br><span class="line">151</span><br><span class="line">152</span><br><span class="line">153</span><br><span class="line">154</span><br><span class="line">155</span><br><span class="line">156</span><br><span class="line">157</span><br><span class="line">158</span><br><span class="line">159</span><br><span class="line">160</span><br><span class="line">161</span><br><span class="line">162</span><br><span class="line">163</span><br><span class="line">164</span><br><span class="line">165</span><br><span class="line">166</span><br><span class="line">167</span><br><span class="line">168</span><br><span class="line">169</span><br><span class="line">170</span><br><span class="line">171</span><br><span class="line">172</span><br><span class="line">173</span><br><span class="line">174</span><br><span class="line">175</span><br><span class="line">176</span><br><span class="line">177</span><br><span class="line">178</span><br><span class="line">179</span><br><span class="line">180</span><br><span class="line">181</span><br><span class="line">182</span><br><span class="line">183</span><br><span class="line">184</span><br><span class="line">185</span><br><span class="line">186</span><br><span class="line">187</span><br><span class="line">188</span><br><span class="line">189</span><br><span class="line">190</span><br><span class="line">191</span><br><span class="line">192</span><br><span class="line">193</span><br><span class="line">194</span><br><span class="line">195</span><br><span class="line">196</span><br><span class="line">197</span><br><span class="line">198</span><br><span class="line">199</span><br><span class="line">200</span><br><span class="line">201</span><br><span class="line">202</span><br><span class="line">203</span><br><span class="line">204</span><br><span class="line">205</span><br><span class="line">206</span><br><span class="line">207</span><br><span class="line">208</span><br><span class="line">209</span><br><span class="line">210</span><br><span class="line">211</span><br><span class="line">212</span><br><span class="line">213</span><br><span class="line">214</span><br><span class="line">215</span><br><span class="line">216</span><br><span class="line">217</span><br><span class="line">218</span><br><span class="line">219</span><br><span class="line">220</span><br><span class="line">221</span><br><span class="line">222</span><br><span class="line">223</span><br><span class="line">224</span><br><span class="line">225</span><br><span class="line">226</span><br><span class="line">227</span><br><span class="line">228</span><br><span class="line">229</span><br><span class="line">230</span><br><span class="line">231</span><br><span class="line">232</span><br><span class="line">233</span><br><span class="line">234</span><br><span class="line">235</span><br><span class="line">236</span><br><span class="line">237</span><br><span class="line">238</span><br><span class="line">239</span><br><span class="line">240</span><br><span class="line">241</span><br><span class="line">242</span><br><span class="line">243</span><br><span class="line">244</span><br><span class="line">245</span><br><span class="line">246</span><br><span class="line">247</span><br><span class="line">248</span><br><span class="line">249</span><br><span class="line">250</span><br><span class="line">251</span><br><span class="line">252</span><br><span class="line">253</span><br><span class="line">254</span><br><span class="line">255</span><br><span class="line">256</span><br><span class="line">257</span><br><span class="line">258</span><br><span class="line">259</span><br><span class="line">260</span><br><span class="line">261</span><br><span class="line">262</span><br><span class="line">263</span><br><span class="line">264</span><br><span class="line">265</span><br><span class="line">266</span><br><span class="line">267</span><br><span class="line">268</span><br><span class="line">269</span><br><span class="line">270</span><br><span class="line">271</span><br><span class="line">272</span><br><span class="line">273</span><br><span class="line">274</span><br><span class="line">275</span><br><span class="line">276</span><br><span class="line">277</span><br><span class="line">278</span><br><span class="line">279</span><br><span class="line">280</span><br><span class="line">281</span><br><span class="line">282</span><br><span class="line">283</span><br><span class="line">284</span><br><span class="line">285</span><br><span class="line">286</span><br><span class="line">287</span><br><span class="line">288</span><br><span class="line">289</span><br><span class="line">290</span><br><span class="line">291</span><br><span class="line">292</span><br><span class="line">293</span><br><span class="line">294</span><br><span class="line">295</span><br><span class="line">296</span><br><span class="line">297</span><br><span class="line">298</span><br><span class="line">299</span><br><span class="line">300</span><br><span class="line">301</span><br><span class="line">302</span><br><span class="line">303</span><br><span class="line">304</span><br><span class="line">305</span><br><span class="line">306</span><br><span class="line">307</span><br><span class="line">308</span><br><span class="line">309</span><br><span class="line">310</span><br><span class="line">311</span><br><span class="line">312</span><br><span class="line">313</span><br><span class="line">314</span><br><span class="line">315</span><br><span class="line">316</span><br><span class="line">317</span><br><span class="line">318</span><br><span class="line">319</span><br><span class="line">320</span><br><span class="line">321</span><br><span class="line">322</span><br><span class="line">323</span><br><span class="line">324</span><br><span class="line">325</span><br><span class="line">326</span><br><span class="line">327</span><br><span class="line">328</span><br><span class="line">329</span><br><span class="line">330</span><br><span class="line">331</span><br><span class="line">332</span><br><span class="line">333</span><br><span class="line">334</span><br><span class="line">335</span><br><span class="line">336</span><br><span class="line">337</span><br><span class="line">338</span><br><span class="line">339</span><br><span class="line">340</span><br><span class="line">341</span><br><span class="line">342</span><br><span class="line">343</span><br><span class="line">344</span><br><span class="line">345</span><br><span class="line">346</span><br><span class="line">347</span><br><span class="line">348</span><br><span class="line">349</span><br><span class="line">350</span><br><span class="line">351</span><br><span class="line">352</span><br><span class="line">353</span><br><span class="line">354</span><br><span class="line">355</span><br><span class="line">356</span><br><span class="line">357</span><br><span class="line">358</span><br><span class="line">359</span><br><span class="line">360</span><br><span class="line">361</span><br><span class="line">362</span><br><span class="line">363</span><br><span class="line">364</span><br><span class="line">365</span><br><span class="line">366</span><br><span class="line">367</span><br><span class="line">368</span><br><span class="line">369</span><br><span class="line">370</span><br><span class="line">371</span><br><span class="line">372</span><br><span class="line">373</span><br><span class="line">374</span><br><span class="line">375</span><br><span class="line">376</span><br><span class="line">377</span><br><span class="line">378</span><br><span class="line">379</span><br><span class="line">380</span><br><span class="line">381</span><br><span class="line">382</span><br><span class="line">383</span><br><span class="line">384</span><br><span class="line">385</span><br><span class="line">386</span><br><span class="line">387</span><br><span class="line">388</span><br><span class="line">389</span><br><span class="line">390</span><br><span class="line">391</span><br><span class="line">392</span><br><span class="line">393</span><br><span class="line">394</span><br><span class="line">395</span><br><span class="line">396</span><br><span class="line">397</span><br><span class="line">398</span><br><span class="line">399</span><br><span class="line">400</span><br><span class="line">401</span><br><span class="line">402</span><br><span class="line">403</span><br><span class="line">404</span><br><span class="line">405</span><br><span class="line">406</span><br><span class="line">407</span><br><span class="line">408</span><br><span class="line">409</span><br><span class="line">410</span><br><span class="line">411</span><br><span class="line">412</span><br><span class="line">413</span><br><span class="line">414</span><br><span class="line">415</span><br><span class="line">416</span><br><span class="line">417</span><br><span class="line">418</span><br><span class="line">419</span><br><span class="line">420</span><br><span class="line">421</span><br><span class="line">422</span><br><span class="line">423</span><br><span class="line">424</span><br><span class="line">425</span><br><span class="line">426</span><br><span class="line">427</span><br><span class="line">428</span><br><span class="line">429</span><br><span class="line">430</span><br><span class="line">431</span><br><span class="line">432</span><br><span class="line">433</span><br><span class="line">434</span><br><span class="line">435</span><br><span class="line">436</span><br><span class="line">437</span><br><span class="line">438</span><br><span class="line">439</span><br><span class="line">440</span><br><span class="line">441</span><br><span class="line">442</span><br><span class="line">443</span><br><span class="line">444</span><br><span class="line">445</span><br><span class="line">446</span><br><span class="line">447</span><br><span class="line">448</span><br><span class="line">449</span><br><span class="line">450</span><br><span class="line">451</span><br><span class="line">452</span><br><span class="line">453</span><br><span class="line">454</span><br><span class="line">455</span><br><span class="line">456</span><br><span class="line">457</span><br><span class="line">458</span><br><span class="line">459</span><br><span class="line">460</span><br><span class="line">461</span><br><span class="line">462</span><br><span class="line">463</span><br><span class="line">464</span><br><span class="line">465</span><br><span class="line">466</span><br><span class="line">467</span><br><span class="line">468</span><br><span class="line">469</span><br><span class="line">470</span><br><span class="line">471</span><br><span class="line">472</span><br><span class="line">473</span><br><span class="line">474</span><br><span class="line">475</span><br><span class="line">476</span><br><span class="line">477</span><br><span class="line">478</span><br><span class="line">479</span><br><span class="line">480</span><br><span class="line">481</span><br><span class="line">482</span><br><span class="line">483</span><br><span class="line">484</span><br><span class="line">485</span><br><span class="line">486</span><br><span class="line">487</span><br><span class="line">488</span><br><span class="line">489</span><br><span class="line">490</span><br><span class="line">491</span><br><span class="line">492</span><br><span class="line">493</span><br><span class="line">494</span><br><span class="line">495</span><br><span class="line">496</span><br><span class="line">497</span><br><span class="line">498</span><br><span class="line">499</span><br><span class="line">500</span><br><span class="line">501</span><br><span class="line">502</span><br><span class="line">503</span><br><span class="line">504</span><br><span class="line">505</span><br><span class="line">506</span><br><span class="line">507</span><br><span class="line">508</span><br><span class="line">509</span><br><span class="line">510</span><br><span class="line">511</span><br><span class="line">512</span><br><span class="line">513</span><br><span class="line">514</span><br><span class="line">515</span><br><span class="line">516</span><br><span class="line">517</span><br><span class="line">518</span><br><span class="line">519</span><br><span class="line">520</span><br><span class="line">521</span><br><span class="line">522</span><br><span class="line">523</span><br><span class="line">524</span><br><span class="line">525</span><br><span class="line">526</span><br><span class="line">527</span><br><span class="line">528</span><br><span class="line">529</span><br><span class="line">530</span><br><span class="line">531</span><br><span class="line">532</span><br><span class="line">533</span><br><span class="line">534</span><br><span class="line">535</span><br><span class="line">536</span><br><span class="line">537</span><br><span class="line">538</span><br><span class="line">539</span><br><span class="line">540</span><br><span class="line">541</span><br><span class="line">542</span><br><span class="line">543</span><br><span class="line">544</span><br><span class="line">545</span><br><span class="line">546</span><br><span class="line">547</span><br><span class="line">548</span><br><span class="line">549</span><br><span class="line">550</span><br><span class="line">551</span><br><span class="line">552</span><br><span class="line">553</span><br><span class="line">554</span><br><span class="line">555</span><br><span class="line">556</span><br><span class="line">557</span><br><span class="line">558</span><br><span class="line">559</span><br><span class="line">560</span><br><span class="line">561</span><br><span class="line">562</span><br><span class="line">563</span><br><span class="line">564</span><br><span class="line">565</span><br><span class="line">566</span><br><span class="line">567</span><br><span class="line">568</span><br><span class="line">569</span><br><span class="line">570</span><br><span class="line">571</span><br><span class="line">572</span><br><span class="line">573</span><br><span class="line">574</span><br><span class="line">575</span><br><span class="line">576</span><br><span class="line">577</span><br><span class="line">578</span><br><span class="line">579</span><br><span class="line">580</span><br><span class="line">581</span><br><span class="line">582</span><br><span class="line">583</span><br><span class="line">584</span><br><span class="line">585</span><br><span class="line">586</span><br><span class="line">587</span><br><span class="line">588</span><br><span class="line">589</span><br><span class="line">590</span><br><span class="line">591</span><br><span class="line">592</span><br><span class="line">593</span><br><span class="line">594</span><br><span class="line">595</span><br><span class="line">596</span><br><span class="line">597</span><br><span class="line">598</span><br><span class="line">599</span><br><span class="line">600</span><br><span class="line">601</span><br><span class="line">602</span><br><span class="line">603</span><br><span class="line">604</span><br><span class="line">605</span><br><span class="line">606</span><br><span class="line">607</span><br><span class="line">608</span><br><span class="line">609</span><br><span class="line">610</span><br><span class="line">611</span><br><span class="line">612</span><br><span class="line">613</span><br><span class="line">614</span><br><span class="line">615</span><br><span class="line">616</span><br><span class="line">617</span><br><span class="line">618</span><br><span class="line">619</span><br><span class="line">620</span><br><span class="line">621</span><br><span class="line">622</span><br><span class="line">623</span><br><span class="line">624</span><br><span class="line">625</span><br><span class="line">626</span><br><span class="line">627</span><br><span class="line">628</span><br><span class="line">629</span><br><span class="line">630</span><br><span class="line">631</span><br><span class="line">632</span><br><span class="line">633</span><br><span class="line">634</span><br><span class="line">635</span><br><span class="line">636</span><br><span class="line">637</span><br><span class="line">638</span><br><span class="line">639</span><br><span class="line">640</span><br><span class="line">641</span><br><span class="line">642</span><br><span class="line">643</span><br><span class="line">644</span><br><span class="line">645</span><br><span class="line">646</span><br><span class="line">647</span><br><span class="line">648</span><br><span class="line">649</span><br><span class="line">650</span><br><span class="line">651</span><br><span class="line">652</span><br><span class="line">653</span><br><span class="line">654</span><br><span class="line">655</span><br><span class="line">656</span><br><span class="line">657</span><br><span class="line">658</span><br><span class="line">659</span><br><span class="line">660</span><br><span class="line">661</span><br><span class="line">662</span><br><span class="line">663</span><br><span class="line">664</span><br><span class="line">665</span><br><span class="line">666</span><br><span class="line">667</span><br><span class="line">668</span><br><span class="line">669</span><br><span class="line">670</span><br><span class="line">671</span><br><span class="line">672</span><br><span class="line">673</span><br><span class="line">674</span><br><span class="line">675</span><br><span class="line">676</span><br><span class="line">677</span><br><span class="line">678</span><br><span class="line">679</span><br><span class="line">680</span><br><span class="line">681</span><br><span class="line">682</span><br><span class="line">683</span><br><span class="line">684</span><br><span class="line">685</span><br><span class="line">686</span><br><span class="line">687</span><br><span class="line">688</span><br><span class="line">689</span><br><span class="line">690</span><br><span class="line">691</span><br><span class="line">692</span><br><span class="line">693</span><br><span class="line">694</span><br><span class="line">695</span><br><span class="line">696</span><br><span class="line">697</span><br><span class="line">698</span><br><span class="line">699</span><br><span class="line">700</span><br><span class="line">701</span><br><span class="line">702</span><br><span class="line">703</span><br><span class="line">704</span><br><span class="line">705</span><br><span class="line">706</span><br><span class="line">707</span><br><span class="line">708</span><br><span class="line">709</span><br><span class="line">710</span><br><span class="line">711</span><br><span class="line">712</span><br><span class="line">713</span><br><span class="line">714</span><br><span class="line">715</span><br><span class="line">716</span><br><span class="line">717</span><br><span class="line">718</span><br><span class="line">719</span><br><span class="line">720</span><br><span class="line">721</span><br><span class="line">722</span><br><span class="line">723</span><br><span class="line">724</span><br><span class="line">725</span><br><span class="line">726</span><br><span class="line">727</span><br><span class="line">728</span><br><span class="line">729</span><br><span class="line">730</span><br><span class="line">731</span><br><span class="line">732</span><br><span class="line">733</span><br><span class="line">734</span><br><span class="line">735</span><br><span class="line">736</span><br><span class="line">737</span><br><span class="line">738</span><br><span class="line">739</span><br><span class="line">740</span><br><span class="line">741</span><br><span class="line">742</span><br><span class="line">743</span><br><span class="line">744</span><br><span class="line">745</span><br><span class="line">746</span><br><span class="line">747</span><br><span class="line">748</span><br><span class="line">749</span><br><span class="line">750</span><br><span class="line">751</span><br><span class="line">752</span><br><span class="line">753</span><br><span class="line">754</span><br><span class="line">755</span><br><span class="line">756</span><br><span class="line">757</span><br><span class="line">758</span><br><span class="line">759</span><br><span class="line">760</span><br><span class="line">761</span><br><span class="line">762</span><br><span class="line">763</span><br><span class="line">764</span><br><span class="line">765</span><br><span class="line">766</span><br><span class="line">767</span><br><span class="line">768</span><br><span class="line">769</span><br><span class="line">770</span><br><span class="line">771</span><br><span class="line">772</span><br><span class="line">773</span><br><span class="line">774</span><br><span class="line">775</span><br><span class="line">776</span><br><span class="line">777</span><br><span class="line">778</span><br><span class="line">779</span><br><span class="line">780</span><br><span class="line">781</span><br><span class="line">782</span><br><span class="line">783</span><br><span class="line">784</span><br><span class="line">785</span><br><span class="line">786</span><br><span class="line">787</span><br><span class="line">788</span><br><span class="line">789</span><br><span class="line">790</span><br><span class="line">791</span><br><span class="line">792</span><br><span class="line">793</span><br><span class="line">794</span><br><span class="line">795</span><br><span class="line">796</span><br><span class="line">797</span><br><span class="line">798</span><br><span class="line">799</span><br><span class="line">800</span><br><span class="line">801</span><br><span class="line">802</span><br><span class="line">803</span><br><span class="line">804</span><br><span class="line">805</span><br><span class="line">806</span><br><span class="line">807</span><br><span class="line">808</span><br><span class="line">809</span><br><span class="line">810</span><br><span class="line">811</span><br><span class="line">812</span><br><span class="line">813</span><br><span class="line">814</span><br><span class="line">815</span><br><span class="line">816</span><br><span class="line">817</span><br><span class="line">818</span><br><span class="line">819</span><br><span class="line">820</span><br><span class="line">821</span><br><span class="line">822</span><br><span class="line">823</span><br><span class="line">824</span><br><span class="line">825</span><br><span class="line">826</span><br><span class="line">827</span><br><span class="line">828</span><br><span class="line">829</span><br><span class="line">830</span><br><span class="line">831</span><br><span class="line">832</span><br><span class="line">833</span><br><span class="line">834</span><br><span class="line">835</span><br><span class="line">836</span><br><span class="line">837</span><br><span class="line">838</span><br><span class="line">839</span><br><span class="line">840</span><br><span class="line">841</span><br><span class="line">842</span><br><span class="line">843</span><br><span class="line">844</span><br><span class="line">845</span><br><span class="line">846</span><br><span class="line">847</span><br><span class="line">848</span><br><span class="line">849</span><br><span class="line">850</span><br><span class="line">851</span><br><span class="line">852</span><br><span class="line">853</span><br><span class="line">854</span><br><span class="line">855</span><br><span class="line">856</span><br><span class="line">857</span><br><span class="line">858</span><br><span class="line">859</span><br><span class="line">860</span><br><span class="line">861</span><br><span class="line">862</span><br><span class="line">863</span><br><span class="line">864</span><br><span class="line">865</span><br><span class="line">866</span><br><span class="line">867</span><br><span class="line">868</span><br><span class="line">869</span><br><span class="line">870</span><br><span class="line">871</span><br><span class="line">872</span><br><span class="line">873</span><br><span class="line">874</span><br><span class="line">875</span><br><span class="line">876</span><br><span class="line">877</span><br><span class="line">878</span><br><span class="line">879</span><br><span class="line">880</span><br><span class="line">881</span><br><span class="line">882</span><br><span class="line">883</span><br><span class="line">884</span><br><span class="line">885</span><br><span class="line">886</span><br><span class="line">887</span><br><span class="line">888</span><br><span class="line">889</span><br><span class="line">890</span><br><span class="line">891</span><br><span class="line">892</span><br><span class="line">893</span><br><span class="line">894</span><br><span class="line">895</span><br><span class="line">896</span><br><span class="line">897</span><br><span class="line">898</span><br><span class="line">899</span><br><span class="line">900</span><br><span class="line">901</span><br><span class="line">902</span><br><span class="line">903</span><br><span class="line">904</span><br><span class="line">905</span><br><span class="line">906</span><br><span class="line">907</span><br><span class="line">908</span><br><span class="line">909</span><br><span class="line">910</span><br><span class="line">911</span><br><span class="line">912</span><br><span class="line">913</span><br><span class="line">914</span><br><span class="line">915</span><br><span class="line">916</span><br><span class="line">917</span><br><span class="line">918</span><br><span class="line">919</span><br><span class="line">920</span><br><span class="line">921</span><br><span class="line">922</span><br><span class="line">923</span><br><span class="line">924</span><br><span class="line">925</span><br><span class="line">926</span><br><span class="line">927</span><br><span class="line">928</span><br><span class="line">929</span><br><span class="line">930</span><br><span class="line">931</span><br><span class="line">932</span><br><span class="line">933</span><br><span class="line">934</span><br><span class="line">935</span><br><span class="line">936</span><br><span class="line">937</span><br><span class="line">938</span><br><span class="line">939</span><br><span class="line">940</span><br><span class="line">941</span><br><span class="line">942</span><br><span class="line">943</span><br><span class="line">944</span><br><span class="line">945</span><br><span class="line">946</span><br><span class="line">947</span><br><span class="line">948</span><br><span class="line">949</span><br><span class="line">950</span><br><span class="line">951</span><br><span class="line">952</span><br><span class="line">953</span><br><span class="line">954</span><br><span class="line">955</span><br><span class="line">956</span><br><span class="line">957</span><br><span class="line">958</span><br><span class="line">959</span><br><span class="line">960</span><br><span class="line">961</span><br><span class="line">962</span><br><span class="line">963</span><br><span class="line">964</span><br><span class="line">965</span><br><span class="line">966</span><br><span class="line">967</span><br><span class="line">968</span><br><span class="line">969</span><br><span class="line">970</span><br><span class="line">971</span><br><span class="line">972</span><br><span class="line">973</span><br><span class="line">974</span><br><span class="line">975</span><br><span class="line">976</span><br><span class="line">977</span><br><span class="line">978</span><br><span class="line">979</span><br><span class="line">980</span><br><span class="line">981</span><br><span class="line">982</span><br><span class="line">983</span><br><span class="line">984</span><br><span class="line">985</span><br><span class="line">986</span><br><span class="line">987</span><br><span class="line">988</span><br><span class="line">989</span><br><span class="line">990</span><br><span class="line">991</span><br><span class="line">992</span><br><span class="line">993</span><br><span class="line">994</span><br><span class="line">995</span><br><span class="line">996</span><br><span class="line">997</span><br><span class="line">998</span><br><span class="line">999</span><br><span class="line">1000</span><br><span class="line">1001</span><br><span class="line">1002</span><br><span class="line">1003</span><br><span class="line">1004</span><br><span class="line">1005</span><br><span class="line">1006</span><br><span class="line">1007</span><br><span class="line">1008</span><br><span class="line">1009</span><br><span class="line">1010</span><br><span class="line">1011</span><br><span class="line">1012</span><br><span class="line">1013</span><br><span class="line">1014</span><br><span class="line">1015</span><br><span class="line">1016</span><br><span class="line">1017</span><br><span class="line">1018</span><br><span class="line">1019</span><br><span class="line">1020</span><br><span class="line">1021</span><br><span class="line">1022</span><br><span class="line">1023</span><br><span class="line">1024</span><br><span class="line">1025</span><br><span class="line">1026</span><br><span class="line">1027</span><br><span class="line">1028</span><br><span class="line">1029</span><br><span class="line">1030</span><br><span class="line">1031</span><br><span class="line">1032</span><br><span class="line">1033</span><br><span class="line">1034</span><br><span class="line">1035</span><br><span class="line">1036</span><br><span class="line">1037</span><br><span class="line">1038</span><br><span class="line">1039</span><br><span class="line">1040</span><br><span class="line">1041</span><br><span class="line">1042</span><br><span class="line">1043</span><br><span class="line">1044</span><br><span class="line">1045</span><br><span class="line">1046</span><br><span class="line">1047</span><br><span class="line">1048</span><br><span class="line">1049</span><br><span class="line">1050</span><br><span class="line">1051</span><br><span class="line">1052</span><br><span class="line">1053</span><br><span class="line">1054</span><br><span class="line">1055</span><br><span class="line">1056</span><br><span class="line">1057</span><br><span class="line">1058</span><br><span class="line">1059</span><br><span class="line">1060</span><br><span class="line">1061</span><br><span class="line">1062</span><br><span class="line">1063</span><br><span class="line">1064</span><br><span class="line">1065</span><br><span class="line">1066</span><br><span class="line">1067</span><br><span class="line">1068</span><br><span class="line">1069</span><br><span class="line">1070</span><br><span class="line">1071</span><br><span class="line">1072</span><br><span class="line">1073</span><br><span class="line">1074</span><br><span class="line">1075</span><br><span class="line">1076</span><br><span class="line">1077</span><br><span class="line">1078</span><br><span class="line">1079</span><br><span class="line">1080</span><br><span class="line">1081</span><br><span class="line">1082</span><br><span class="line">1083</span><br><span class="line">1084</span><br><span class="line">1085</span><br><span class="line">1086</span><br><span class="line">1087</span><br><span class="line">1088</span><br><span class="line">1089</span><br><span class="line">1090</span><br><span class="line">1091</span><br><span class="line">1092</span><br><span class="line">1093</span><br><span class="line">1094</span><br><span class="line">1095</span><br><span class="line">1096</span><br><span class="line">1097</span><br><span class="line">1098</span><br><span class="line">1099</span><br><span class="line">1100</span><br><span class="line">1101</span><br><span class="line">1102</span><br><span class="line">1103</span><br><span class="line">1104</span><br><span class="line">1105</span><br><span class="line">1106</span><br><span class="line">1107</span><br><span class="line">1108</span><br><span class="line">1109</span><br><span class="line">1110</span><br><span class="line">1111</span><br><span class="line">1112</span><br><span class="line">1113</span><br><span class="line">1114</span><br><span class="line">1115</span><br><span class="line">1116</span><br><span class="line">1117</span><br><span class="line">1118</span><br><span class="line">1119</span><br><span class="line">1120</span><br><span class="line">1121</span><br><span class="line">1122</span><br><span class="line">1123</span><br><span class="line">1124</span><br><span class="line">1125</span><br><span class="line">1126</span><br><span class="line">1127</span><br><span class="line">1128</span><br><span class="line">1129</span><br><span class="line">1130</span><br><span class="line">1131</span><br><span class="line">1132</span><br><span class="line">1133</span><br><span class="line">1134</span><br><span class="line">1135</span><br><span class="line">1136</span><br><span class="line">1137</span><br><span class="line">1138</span><br><span class="line">1139</span><br><span class="line">1140</span><br><span class="line">1141</span><br><span class="line">1142</span><br><span class="line">1143</span><br><span class="line">1144</span><br><span class="line">1145</span><br><span class="line">1146</span><br><span class="line">1147</span><br><span class="line">1148</span><br><span class="line">1149</span><br><span class="line">1150</span><br><span class="line">1151</span><br><span class="line">1152</span><br><span class="line">1153</span><br><span class="line">1154</span><br><span class="line">1155</span><br><span class="line">1156</span><br><span class="line">1157</span><br><span class="line">1158</span><br><span class="line">1159</span><br><span class="line">1160</span><br><span class="line">1161</span><br><span class="line">1162</span><br><span class="line">1163</span><br><span class="line">1164</span><br><span class="line">1165</span><br><span class="line">1166</span><br><span class="line">1167</span><br><span class="line">1168</span><br><span class="line">1169</span><br><span class="line">1170</span><br><span class="line">1171</span><br><span class="line">1172</span><br><span class="line">1173</span><br><span class="line">1174</span><br><span class="line">1175</span><br><span class="line">1176</span><br><span class="line">1177</span><br><span class="line">1178</span><br><span class="line">1179</span><br><span class="line">1180</span><br><span class="line">1181</span><br><span class="line">1182</span><br><span class="line">1183</span><br><span class="line">1184</span><br><span class="line">1185</span><br><span class="line">1186</span><br><span class="line">1187</span><br><span class="line">1188</span><br><span class="line">1189</span><br><span class="line">1190</span><br><span class="line">1191</span><br><span class="line">1192</span><br><span class="line">1193</span><br><span class="line">1194</span><br><span class="line">1195</span><br><span class="line">1196</span><br><span class="line">1197</span><br><span class="line">1198</span><br><span class="line">1199</span><br><span class="line">1200</span><br><span class="line">1201</span><br><span class="line">1202</span><br><span class="line">1203</span><br><span class="line">1204</span><br><span class="line">1205</span><br><span class="line">1206</span><br><span class="line">1207</span><br><span class="line">1208</span><br><span class="line">1209</span><br><span class="line">1210</span><br><span class="line">1211</span><br><span class="line">1212</span><br><span class="line">1213</span><br><span class="line">1214</span><br><span class="line">1215</span><br><span class="line">1216</span><br><span class="line">1217</span><br><span class="line">1218</span><br><span class="line">1219</span><br><span class="line">1220</span><br><span class="line">1221</span><br><span class="line">1222</span><br><span class="line">1223</span><br><span class="line">1224</span><br><span class="line">1225</span><br><span class="line">1226</span><br><span class="line">1227</span><br><span class="line">1228</span><br><span class="line">1229</span><br><span class="line">1230</span><br><span class="line">1231</span><br><span class="line">1232</span><br><span class="line">1233</span><br><span class="line">1234</span><br><span class="line">1235</span><br><span class="line">1236</span><br><span class="line">1237</span><br><span class="line">1238</span><br><span class="line">1239</span><br><span class="line">1240</span><br><span class="line">1241</span><br><span class="line">1242</span><br><span class="line">1243</span><br><span class="line">1244</span><br><span class="line">1245</span><br><span class="line">1246</span><br><span class="line">1247</span><br><span class="line">1248</span><br><span class="line">1249</span><br><span class="line">1250</span><br><span class="line">1251</span><br><span class="line">1252</span><br><span class="line">1253</span><br><span class="line">1254</span><br><span class="line">1255</span><br><span class="line">1256</span><br><span class="line">1257</span><br><span class="line">1258</span><br><span class="line">1259</span><br><span class="line">1260</span><br><span class="line">1261</span><br><span class="line">1262</span><br><span class="line">1263</span><br><span class="line">1264</span><br><span class="line">1265</span><br><span class="line">1266</span><br><span class="line">1267</span><br><span class="line">1268</span><br><span class="line">1269</span><br><span class="line">1270</span><br><span class="line">1271</span><br><span class="line">1272</span><br><span class="line">1273</span><br><span class="line">1274</span><br><span class="line">1275</span><br><span class="line">1276</span><br><span class="line">1277</span><br><span class="line">1278</span><br><span class="line">1279</span><br><span class="line">1280</span><br><span class="line">1281</span><br><span class="line">1282</span><br><span class="line">1283</span><br><span class="line">1284</span><br><span class="line">1285</span><br><span class="line">1286</span><br><span class="line">1287</span><br><span class="line">1288</span><br><span class="line">1289</span><br><span class="line">1290</span><br><span class="line">1291</span><br><span class="line">1292</span><br><span class="line">1293</span><br><span class="line">1294</span><br><span class="line">1295</span><br><span class="line">1296</span><br><span class="line">1297</span><br><span class="line">1298</span><br><span class="line">1299</span><br><span class="line">1300</span><br><span class="line">1301</span><br><span class="line">1302</span><br><span class="line">1303</span><br><span class="line">1304</span><br><span class="line">1305</span><br><span class="line">1306</span><br><span class="line">1307</span><br><span class="line">1308</span><br><span class="line">1309</span><br><span class="line">1310</span><br><span class="line">1311</span><br><span class="line">1312</span><br><span class="line">1313</span><br><span class="line">1314</span><br><span class="line">1315</span><br><span class="line">1316</span><br><span class="line">1317</span><br><span class="line">1318</span><br><span class="line">1319</span><br><span class="line">1320</span><br><span class="line">1321</span><br><span class="line">1322</span><br><span class="line">1323</span><br><span class="line">1324</span><br><span class="line">1325</span><br><span class="line">1326</span><br><span class="line">1327</span><br><span class="line">1328</span><br><span class="line">1329</span><br><span class="line">1330</span><br><span class="line">1331</span><br><span class="line">1332</span><br><span class="line">1333</span><br><span class="line">1334</span><br><span class="line">1335</span><br><span class="line">1336</span><br><span class="line">1337</span><br><span class="line">1338</span><br><span class="line">1339</span><br><span class="line">1340</span><br><span class="line">1341</span><br><span class="line">1342</span><br><span class="line">1343</span><br><span class="line">1344</span><br><span class="line">1345</span><br><span class="line">1346</span><br><span class="line">1347</span><br><span class="line">1348</span><br><span class="line">1349</span><br><span class="line">1350</span><br><span class="line">1351</span><br><span class="line">1352</span><br><span class="line">1353</span><br><span class="line">1354</span><br><span class="line">1355</span><br><span class="line">1356</span><br><span class="line">1357</span><br><span class="line">1358</span><br><span class="line">1359</span><br><span class="line">1360</span><br><span class="line">1361</span><br><span class="line">1362</span><br><span class="line">1363</span><br><span class="line">1364</span><br><span class="line">1365</span><br><span class="line">1366</span><br><span class="line">1367</span><br><span class="line">1368</span><br><span class="line">1369</span><br><span class="line">1370</span><br><span class="line">1371</span><br><span class="line">1372</span><br><span class="line">1373</span><br><span class="line">1374</span><br><span class="line">1375</span><br><span class="line">1376</span><br><span class="line">1377</span><br><span class="line">1378</span><br><span class="line">1379</span><br><span class="line">1380</span><br><span class="line">1381</span><br><span class="line">1382</span><br><span class="line">1383</span><br><span class="line">1384</span><br><span class="line">1385</span><br><span class="line">1386</span><br><span class="line">1387</span><br><span class="line">1388</span><br><span class="line">1389</span><br><span class="line">1390</span><br><span class="line">1391</span><br><span class="line">1392</span><br><span class="line">1393</span><br><span class="line">1394</span><br><span class="line">1395</span><br><span class="line">1396</span><br><span class="line">1397</span><br><span class="line">1398</span><br><span class="line">1399</span><br><span class="line">1400</span><br><span class="line">1401</span><br><span class="line">1402</span><br><span class="line">1403</span><br><span class="line">1404</span><br><span class="line">1405</span><br><span class="line">1406</span><br><span class="line">1407</span><br><span class="line">1408</span><br><span class="line">1409</span><br><span class="line">1410</span><br><span class="line">1411</span><br><span class="line">1412</span><br><span class="line">1413</span><br><span class="line">1414</span><br><span class="line">1415</span><br><span class="line">1416</span><br><span class="line">1417</span><br><span class="line">1418</span><br><span class="line">1419</span><br><span class="line">1420</span><br><span class="line">1421</span><br><span class="line">1422</span><br><span class="line">1423</span><br><span class="line">1424</span><br><span class="line">1425</span><br><span class="line">1426</span><br><span class="line">1427</span><br><span class="line">1428</span><br><span class="line">1429</span><br><span class="line">1430</span><br><span class="line">1431</span><br><span class="line">1432</span><br><span class="line">1433</span><br><span class="line">1434</span><br><span class="line">1435</span><br><span class="line">1436</span><br><span class="line">1437</span><br><span class="line">1438</span><br><span class="line">1439</span><br><span class="line">1440</span><br><span class="line">1441</span><br><span class="line">1442</span><br><span class="line">1443</span><br><span class="line">1444</span><br><span class="line">1445</span><br><span class="line">1446</span><br><span class="line">1447</span><br><span class="line">1448</span><br><span class="line">1449</span><br><span class="line">1450</span><br><span class="line">1451</span><br><span class="line">1452</span><br><span class="line">1453</span><br><span class="line">1454</span><br><span class="line">1455</span><br><span class="line">1456</span><br><span class="line">1457</span><br><span class="line">1458</span><br><span class="line">1459</span><br><span class="line">1460</span><br><span class="line">1461</span><br><span class="line">1462</span><br><span class="line">1463</span><br><span class="line">1464</span><br><span class="line">1465</span><br><span class="line">1466</span><br><span class="line">1467</span><br><span class="line">1468</span><br><span class="line">1469</span><br><span class="line">1470</span><br><span class="line">1471</span><br><span class="line">1472</span><br><span class="line">1473</span><br><span class="line">1474</span><br><span class="line">1475</span><br><span class="line">1476</span><br><span class="line">1477</span><br><span class="line">1478</span><br><span class="line">1479</span><br><span class="line">1480</span><br><span class="line">1481</span><br><span class="line">1482</span><br><span class="line">1483</span><br><span class="line">1484</span><br><span class="line">1485</span><br><span class="line">1486</span><br><span class="line">1487</span><br><span class="line">1488</span><br><span class="line">1489</span><br><span class="line">1490</span><br><span class="line">1491</span><br><span class="line">1492</span><br><span class="line">1493</span><br><span class="line">1494</span><br><span class="line">1495</span><br><span class="line">1496</span><br><span class="line">1497</span><br><span class="line">1498</span><br><span class="line">1499</span><br><span class="line">1500</span><br><span class="line">1501</span><br><span class="line">1502</span><br><span class="line">1503</span><br><span class="line">1504</span><br><span class="line">1505</span><br><span class="line">1506</span><br><span class="line">1507</span><br><span class="line">1508</span><br><span class="line">1509</span><br><span class="line">1510</span><br><span class="line">1511</span><br><span class="line">1512</span><br><span class="line">1513</span><br><span class="line">1514</span><br><span class="line">1515</span><br><span class="line">1516</span><br><span class="line">1517</span><br><span class="line">1518</span><br><span class="line">1519</span><br><span class="line">1520</span><br><span class="line">1521</span><br><span class="line">1522</span><br><span class="line">1523</span><br><span class="line">1524</span><br><span class="line">1525</span><br><span class="line">1526</span><br><span class="line">1527</span><br><span class="line">1528</span><br><span class="line">1529</span><br><span class="line">1530</span><br><span class="line">1531</span><br><span class="line">1532</span><br><span class="line">1533</span><br><span class="line">1534</span><br><span class="line">1535</span><br><span class="line">1536</span><br><span class="line">1537</span><br><span class="line">1538</span><br><span class="line">1539</span><br><span class="line">1540</span><br><span class="line">1541</span><br><span class="line">1542</span><br><span class="line">1543</span><br><span class="line">1544</span><br><span class="line">1545</span><br><span class="line">1546</span><br><span class="line">1547</span><br><span class="line">1548</span><br><span class="line">1549</span><br><span class="line">1550</span><br><span class="line">1551</span><br><span class="line">1552</span><br><span class="line">1553</span><br><span class="line">1554</span><br><span class="line">1555</span><br><span class="line">1556</span><br><span class="line">1557</span><br><span class="line">1558</span><br><span class="line">1559</span><br><span class="line">1560</span><br><span class="line">1561</span><br><span class="line">1562</span><br><span class="line">1563</span><br><span class="line">1564</span><br><span class="line">1565</span><br><span class="line">1566</span><br><span class="line">1567</span><br><span class="line">1568</span><br><span class="line">1569</span><br><span class="line">1570</span><br><span class="line">1571</span><br><span class="line">1572</span><br><span class="line">1573</span><br><span class="line">1574</span><br><span class="line">1575</span><br><span class="line">1576</span><br><span class="line">1577</span><br><span class="line">1578</span><br><span class="line">1579</span><br><span class="line">1580</span><br><span class="line">1581</span><br><span class="line">1582</span><br><span class="line">1583</span><br><span class="line">1584</span><br><span class="line">1585</span><br><span class="line">1586</span><br><span class="line">1587</span><br><span class="line">1588</span><br><span class="line">1589</span><br><span class="line">1590</span><br><span class="line">1591</span><br><span class="line">1592</span><br><span class="line">1593</span><br><span class="line">1594</span><br><span class="line">1595</span><br><span class="line">1596</span><br><span class="line">1597</span><br><span class="line">1598</span><br><span class="line">1599</span><br><span class="line">1600</span><br><span class="line">1601</span><br><span class="line">1602</span><br><span class="line">1603</span><br><span class="line">1604</span><br><span class="line">1605</span><br><span class="line">1606</span><br><span class="line">1607</span><br><span class="line">1608</span><br><span class="line">1609</span><br><span class="line">1610</span><br><span class="line">1611</span><br><span class="line">1612</span><br><span class="line">1613</span><br><span class="line">1614</span><br><span class="line">1615</span><br><span class="line">1616</span><br><span class="line">1617</span><br><span class="line">1618</span><br><span class="line">1619</span><br><span class="line">1620</span><br><span class="line">1621</span><br><span class="line">1622</span><br><span class="line">1623</span><br><span class="line">1624</span><br><span class="line">1625</span><br><span class="line">1626</span><br><span class="line">1627</span><br><span class="line">1628</span><br><span class="line">1629</span><br><span class="line">1630</span><br><span class="line">1631</span><br><span class="line">1632</span><br><span class="line">1633</span><br><span class="line">1634</span><br><span class="line">1635</span><br><span class="line">1636</span><br><span class="line">1637</span><br><span class="line">1638</span><br><span class="line">1639</span><br><span class="line">1640</span><br><span class="line">1641</span><br><span class="line">1642</span><br><span class="line">1643</span><br><span class="line">1644</span><br><span class="line">1645</span><br><span class="line">1646</span><br><span class="line">1647</span><br><span class="line">1648</span><br><span class="line">1649</span><br><span class="line">1650</span><br><span class="line">1651</span><br><span class="line">1652</span><br><span class="line">1653</span><br><span class="line">1654</span><br><span class="line">1655</span><br><span class="line">1656</span><br><span class="line">1657</span><br><span class="line">1658</span><br><span class="line">1659</span><br><span class="line">1660</span><br><span class="line">1661</span><br><span class="line">1662</span><br><span class="line">1663</span><br><span class="line">1664</span><br><span class="line">1665</span><br><span class="line">1666</span><br><span class="line">1667</span><br><span class="line">1668</span><br><span class="line">1669</span><br><span class="line">1670</span><br><span class="line">1671</span><br><span class="line">1672</span><br><span class="line">1673</span><br><span class="line">1674</span><br><span class="line">1675</span><br><span class="line">1676</span><br><span class="line">1677</span><br><span class="line">1678</span><br><span class="line">1679</span><br><span class="line">1680</span><br><span class="line">1681</span><br><span class="line">1682</span><br><span class="line">1683</span><br><span class="line">1684</span><br><span class="line">1685</span><br><span class="line">1686</span><br><span class="line">1687</span><br><span class="line">1688</span><br><span class="line">1689</span><br><span class="line">1690</span><br><span class="line">1691</span><br><span class="line">1692</span><br><span class="line">1693</span><br><span class="line">1694</span><br><span class="line">1695</span><br><span class="line">1696</span><br><span class="line">1697</span><br><span class="line">1698</span><br><span class="line">1699</span><br><span class="line">1700</span><br><span class="line">1701</span><br><span class="line">1702</span><br><span class="line">1703</span><br><span class="line">1704</span><br><span class="line">1705</span><br><span class="line">1706</span><br><span class="line">1707</span><br><span class="line">1708</span><br><span class="line">1709</span><br><span class="line">1710</span><br><span class="line">1711</span><br><span class="line">1712</span><br><span class="line">1713</span><br><span class="line">1714</span><br><span class="line">1715</span><br><span class="line">1716</span><br><span class="line">1717</span><br><span class="line">1718</span><br><span class="line">1719</span><br><span class="line">1720</span><br><span class="line">1721</span><br><span class="line">1722</span><br><span class="line">1723</span><br><span class="line">1724</span><br><span class="line">1725</span><br><span class="line">1726</span><br><span class="line">1727</span><br><span class="line">1728</span><br><span class="line">1729</span><br><span class="line">1730</span><br><span class="line">1731</span><br><span class="line">1732</span><br><span class="line">1733</span><br><span class="line">1734</span><br><span class="line">1735</span><br><span class="line">1736</span><br><span class="line">1737</span><br><span class="line">1738</span><br><span class="line">1739</span><br><span class="line">1740</span><br><span class="line">1741</span><br><span class="line">1742</span><br><span class="line">1743</span><br><span class="line">1744</span><br><span class="line">1745</span><br><span class="line">1746</span><br><span class="line">1747</span><br><span class="line">1748</span><br><span class="line">1749</span><br><span class="line">1750</span><br><span class="line">1751</span><br><span class="line">1752</span><br><span class="line">1753</span><br><span class="line">1754</span><br><span class="line">1755</span><br><span class="line">1756</span><br><span class="line">1757</span><br><span class="line">1758</span><br><span class="line">1759</span><br><span class="line">1760</span><br><span class="line">1761</span><br><span class="line">1762</span><br><span class="line">1763</span><br><span class="line">1764</span><br><span class="line">1765</span><br><span class="line">1766</span><br><span class="line">1767</span><br><span class="line">1768</span><br><span class="line">1769</span><br><span class="line">1770</span><br><span class="line">1771</span><br><span class="line">1772</span><br><span class="line">1773</span><br><span class="line">1774</span><br><span class="line">1775</span><br><span class="line">1776</span><br><span class="line">1777</span><br><span class="line">1778</span><br><span class="line">1779</span><br><span class="line">1780</span><br><span class="line">1781</span><br><span class="line">1782</span><br><span class="line">1783</span><br><span class="line">1784</span><br><span class="line">1785</span><br><span class="line">1786</span><br><span class="line">1787</span><br><span class="line">1788</span><br><span class="line">1789</span><br><span class="line">1790</span><br><span class="line">1791</span><br><span class="line">1792</span><br><span class="line">1793</span><br><span class="line">1794</span><br><span class="line">1795</span><br><span class="line">1796</span><br><span class="line">1797</span><br><span class="line">1798</span><br><span class="line">1799</span><br><span class="line">1800</span><br><span class="line">1801</span><br><span class="line">1802</span><br><span class="line">1803</span><br><span class="line">1804</span><br><span class="line">1805</span><br><span class="line">1806</span><br><span class="line">1807</span><br><span class="line">1808</span><br><span class="line">1809</span><br><span class="line">1810</span><br><span class="line">1811</span><br><span class="line">1812</span><br><span class="line">1813</span><br><span class="line">1814</span><br><span class="line">1815</span><br><span class="line">1816</span><br><span class="line">1817</span><br><span class="line">1818</span><br><span class="line">1819</span><br><span class="line">1820</span><br><span class="line">1821</span><br><span class="line">1822</span><br><span class="line">1823</span><br><span class="line">1824</span><br><span class="line">1825</span><br><span class="line">1826</span><br><span class="line">1827</span><br><span class="line">1828</span><br><span class="line">1829</span><br><span class="line">1830</span><br><span class="line">1831</span><br><span class="line">1832</span><br><span class="line">1833</span><br><span class="line">1834</span><br><span class="line">1835</span><br><span class="line">1836</span><br><span class="line">1837</span><br><span class="line">1838</span><br><span class="line">1839</span><br><span class="line">1840</span><br><span class="line">1841</span><br><span class="line">1842</span><br><span class="line">1843</span><br><span class="line">1844</span><br><span class="line">1845</span><br><span class="line">1846</span><br><span class="line">1847</span><br><span class="line">1848</span><br><span class="line">1849</span><br><span class="line">1850</span><br><span class="line">1851</span><br><span class="line">1852</span><br><span class="line">1853</span><br><span class="line">1854</span><br><span class="line">1855</span><br><span class="line">1856</span><br><span class="line">1857</span><br><span class="line">1858</span><br><span class="line">1859</span><br><span class="line">1860</span><br><span class="line">1861</span><br><span class="line">1862</span><br><span class="line">1863</span><br><span class="line">1864</span><br><span class="line">1865</span><br><span class="line">1866</span><br><span class="line">1867</span><br><span class="line">1868</span><br><span class="line">1869</span><br><span class="line">1870</span><br><span class="line">1871</span><br><span class="line">1872</span><br><span class="line">1873</span><br><span class="line">1874</span><br><span class="line">1875</span><br><span class="line">1876</span><br><span class="line">1877</span><br><span class="line">1878</span><br><span class="line">1879</span><br><span class="line">1880</span><br><span class="line">1881</span><br><span class="line">1882</span><br><span class="line">1883</span><br><span class="line">1884</span><br><span class="line">1885</span><br><span class="line">1886</span><br><span class="line">1887</span><br><span class="line">1888</span><br><span class="line">1889</span><br><span class="line">1890</span><br><span class="line">1891</span><br><span class="line">1892</span><br><span class="line">1893</span><br><span class="line">1894</span><br><span class="line">1895</span><br><span class="line">1896</span><br><span class="line">1897</span><br><span class="line">1898</span><br><span class="line">1899</span><br><span class="line">1900</span><br><span class="line">1901</span><br><span class="line">1902</span><br><span class="line">1903</span><br><span class="line">1904</span><br><span class="line">1905</span><br><span class="line">1906</span><br><span class="line">1907</span><br><span class="line">1908</span><br><span class="line">1909</span><br><span class="line">1910</span><br><span class="line">1911</span><br><span class="line">1912</span><br><span class="line">1913</span><br><span class="line">1914</span><br><span class="line">1915</span><br><span class="line">1916</span><br><span class="line">1917</span><br><span class="line">1918</span><br><span class="line">1919</span><br><span class="line">1920</span><br><span class="line">1921</span><br><span class="line">1922</span><br><span class="line">1923</span><br><span class="line">1924</span><br><span class="line">1925</span><br><span class="line">1926</span><br><span class="line">1927</span><br><span class="line">1928</span><br><span class="line">1929</span><br><span class="line">1930</span><br><span class="line">1931</span><br><span class="line">1932</span><br><span class="line">1933</span><br><span class="line">1934</span><br><span class="line">1935</span><br><span class="line">1936</span><br><span class="line">1937</span><br><span class="line">1938</span><br><span class="line">1939</span><br><span class="line">1940</span><br><span class="line">1941</span><br><span class="line">1942</span><br><span class="line">1943</span><br><span class="line">1944</span><br><span class="line">1945</span><br><span class="line">1946</span><br><span class="line">1947</span><br><span class="line">1948</span><br><span class="line">1949</span><br><span class="line">1950</span><br><span class="line">1951</span><br><span class="line">1952</span><br><span class="line">1953</span><br><span class="line">1954</span><br><span class="line">1955</span><br><span class="line">1956</span><br><span class="line">1957</span><br><span class="line">1958</span><br><span class="line">1959</span><br><span class="line">1960</span><br><span class="line">1961</span><br><span class="line">1962</span><br><span class="line">1963</span><br><span class="line">1964</span><br><span class="line">1965</span><br><span class="line">1966</span><br><span class="line">1967</span><br><span class="line">1968</span><br><span class="line">1969</span><br><span class="line">1970</span><br><span class="line">1971</span><br><span class="line">1972</span><br><span class="line">1973</span><br><span class="line">1974</span><br><span class="line">1975</span><br><span class="line">1976</span><br><span class="line">1977</span><br><span class="line">1978</span><br><span class="line">1979</span><br><span class="line">1980</span><br><span class="line">1981</span><br><span class="line">1982</span><br><span class="line">1983</span><br><span class="line">1984</span><br><span class="line">1985</span><br><span class="line">1986</span><br><span class="line">1987</span><br><span class="line">1988</span><br><span class="line">1989</span><br><span class="line">1990</span><br><span class="line">1991</span><br><span class="line">1992</span><br><span class="line">1993</span><br><span class="line">1994</span><br><span class="line">1995</span><br><span class="line">1996</span><br><span class="line">1997</span><br><span class="line">1998</span><br><span class="line">1999</span><br><span class="line">2000</span><br><span class="line">2001</span><br><span class="line">2002</span><br><span class="line">2003</span><br><span class="line">2004</span><br><span class="line">2005</span><br><span class="line">2006</span><br><span class="line">2007</span><br><span class="line">2008</span><br><span class="line">2009</span><br><span class="line">2010</span><br><span class="line">2011</span><br><span class="line">2012</span><br><span class="line">2013</span><br><span class="line">2014</span><br><span class="line">2015</span><br><span class="line">2016</span><br><span class="line">2017</span><br><span class="line">2018</span><br><span class="line">2019</span><br><span class="line">2020</span><br><span class="line">2021</span><br><span class="line">2022</span><br><span class="line">2023</span><br><span class="line">2024</span><br><span class="line">2025</span><br><span class="line">2026</span><br><span class="line">2027</span><br><span class="line">2028</span><br><span class="line">2029</span><br><span class="line">2030</span><br><span class="line">2031</span><br><span class="line">2032</span><br><span class="line">2033</span><br><span class="line">2034</span><br><span class="line">2035</span><br><span class="line">2036</span><br><span class="line">2037</span><br><span class="line">2038</span><br><span class="line">2039</span><br><span class="line">2040</span><br><span class="line">2041</span><br><span class="line">2042</span><br><span class="line">2043</span><br><span class="line">2044</span><br><span class="line">2045</span><br><span class="line">2046</span><br><span class="line">2047</span><br><span class="line">2048</span><br><span class="line">2049</span><br><span class="line">2050</span><br><span class="line">2051</span><br><span class="line">2052</span><br><span class="line">2053</span><br><span class="line">2054</span><br><span class="line">2055</span><br><span class="line">2056</span><br><span class="line">2057</span><br><span class="line">2058</span><br><span class="line">2059</span><br><span class="line">2060</span><br><span class="line">2061</span><br><span class="line">2062</span><br><span class="line">2063</span><br><span class="line">2064</span><br><span class="line">2065</span><br><span class="line">2066</span><br><span class="line">2067</span><br><span class="line">2068</span><br><span class="line">2069</span><br><span class="line">2070</span><br><span class="line">2071</span><br><span class="line">2072</span><br><span class="line">2073</span><br><span class="line">2074</span><br><span class="line">2075</span><br><span class="line">2076</span><br><span class="line">2077</span><br><span class="line">2078</span><br><span class="line">2079</span><br><span class="line">2080</span><br><span class="line">2081</span><br><span class="line">2082</span><br><span class="line">2083</span><br><span class="line">2084</span><br><span class="line">2085</span><br><span class="line">2086</span><br><span class="line">2087</span><br><span class="line">2088</span><br><span class="line">2089</span><br><span class="line">2090</span><br><span class="line">2091</span><br><span class="line">2092</span><br><span class="line">2093</span><br><span class="line">2094</span><br><span class="line">2095</span><br><span class="line">2096</span><br><span class="line">2097</span><br><span class="line">2098</span><br><span class="line">2099</span><br><span class="line">2100</span><br><span class="line">2101</span><br><span class="line">2102</span><br><span class="line">2103</span><br><span class="line">2104</span><br><span class="line">2105</span><br><span class="line">2106</span><br><span class="line">2107</span><br><span class="line">2108</span><br><span class="line">2109</span><br><span class="line">2110</span><br><span class="line">2111</span><br><span class="line">2112</span><br><span class="line">2113</span><br><span class="line">2114</span><br><span class="line">2115</span><br><span class="line">2116</span><br><span class="line">2117</span><br><span class="line">2118</span><br><span class="line">2119</span><br><span class="line">2120</span><br><span class="line">2121</span><br><span class="line">2122</span><br><span class="line">2123</span><br><span class="line">2124</span><br><span class="line">2125</span><br><span class="line">2126</span><br><span class="line">2127</span><br><span class="line">2128</span><br><span class="line">2129</span><br><span class="line">2130</span><br><span class="line">2131</span><br><span class="line">2132</span><br><span class="line">2133</span><br><span class="line">2134</span><br><span class="line">2135</span><br><span class="line">2136</span><br><span class="line">2137</span><br><span class="line">2138</span><br><span class="line">2139</span><br><span class="line">2140</span><br><span class="line">2141</span><br><span class="line">2142</span><br><span class="line">2143</span><br><span class="line">2144</span><br><span class="line">2145</span><br><span class="line">2146</span><br><span class="line">2147</span><br><span class="line">2148</span><br><span class="line">2149</span><br><span class="line">2150</span><br><span class="line">2151</span><br><span class="line">2152</span><br><span class="line">2153</span><br><span class="line">2154</span><br><span class="line">2155</span><br><span class="line">2156</span><br><span class="line">2157</span><br><span class="line">2158</span><br><span class="line">2159</span><br><span class="line">2160</span><br><span class="line">2161</span><br><span class="line">2162</span><br><span class="line">2163</span><br><span class="line">2164</span><br><span class="line">2165</span><br><span class="line">2166</span><br><span class="line">2167</span><br><span class="line">2168</span><br><span class="line">2169</span><br><span class="line">2170</span><br><span class="line">2171</span><br><span class="line">2172</span><br><span class="line">2173</span><br><span class="line">2174</span><br><span class="line">2175</span><br><span class="line">2176</span><br><span class="line">2177</span><br><span class="line">2178</span><br><span class="line">2179</span><br><span class="line">2180</span><br><span class="line">2181</span><br><span class="line">2182</span><br><span class="line">2183</span><br><span class="line">2184</span><br><span class="line">2185</span><br><span class="line">2186</span><br><span class="line">2187</span><br><span class="line">2188</span><br><span class="line">2189</span><br><span class="line">2190</span><br><span class="line">2191</span><br><span class="line">2192</span><br><span class="line">2193</span><br><span class="line">2194</span><br><span class="line">2195</span><br><span class="line">2196</span><br><span class="line">2197</span><br><span class="line">2198</span><br><span class="line">2199</span><br><span class="line">2200</span><br><span class="line">2201</span><br><span class="line">2202</span><br><span class="line">2203</span><br><span class="line">2204</span><br><span class="line">2205</span><br><span class="line">2206</span><br><span class="line">2207</span><br><span class="line">2208</span><br><span class="line">2209</span><br><span class="line">2210</span><br><span class="line">2211</span><br><span class="line">2212</span><br><span class="line">2213</span><br><span class="line">2214</span><br><span class="line">2215</span><br><span class="line">2216</span><br><span class="line">2217</span><br><span class="line">2218</span><br><span class="line">2219</span><br><span class="line">2220</span><br><span class="line">2221</span><br><span class="line">2222</span><br><span class="line">2223</span><br><span class="line">2224</span><br><span class="line">2225</span><br><span class="line">2226</span><br><span class="line">2227</span><br><span class="line">2228</span><br><span class="line">2229</span><br><span class="line">2230</span><br><span class="line">2231</span><br><span class="line">2232</span><br><span class="line">2233</span><br><span class="line">2234</span><br><span class="line">2235</span><br><span class="line">2236</span><br><span class="line">2237</span><br><span class="line">2238</span><br><span class="line">2239</span><br><span class="line">2240</span><br><span class="line">2241</span><br><span class="line">2242</span><br><span class="line">2243</span><br><span class="line">2244</span><br><span class="line">2245</span><br><span class="line">2246</span><br><span class="line">2247</span><br><span class="line">2248</span><br><span class="line">2249</span><br><span class="line">2250</span><br><span class="line">2251</span><br><span class="line">2252</span><br><span class="line">2253</span><br><span class="line">2254</span><br><span class="line">2255</span><br><span class="line">2256</span><br><span class="line">2257</span><br><span class="line">2258</span><br><span class="line">2259</span><br><span class="line">2260</span><br><span class="line">2261</span><br><span class="line">2262</span><br><span class="line">2263</span><br><span class="line">2264</span><br><span class="line">2265</span><br><span class="line">2266</span><br><span class="line">2267</span><br><span class="line">2268</span><br><span class="line">2269</span><br><span class="line">2270</span><br><span class="line">2271</span><br><span class="line">2272</span><br><span class="line">2273</span><br><span class="line">2274</span><br><span class="line">2275</span><br><span class="line">2276</span><br><span class="line">2277</span><br><span class="line">2278</span><br><span class="line">2279</span><br><span class="line">2280</span><br><span class="line">2281</span><br><span class="line">2282</span><br><span class="line">2283</span><br><span class="line">2284</span><br><span class="line">2285</span><br><span class="line">2286</span><br><span class="line">2287</span><br><span class="line">2288</span><br><span class="line">2289</span><br><span class="line">2290</span><br><span class="line">2291</span><br><span class="line">2292</span><br><span class="line">2293</span><br><span class="line">2294</span><br><span class="line">2295</span><br><span class="line">2296</span><br><span class="line">2297</span><br><span class="line">2298</span><br><span class="line">2299</span><br><span class="line">2300</span><br><span class="line">2301</span><br><span class="line">2302</span><br><span class="line">2303</span><br><span class="line">2304</span><br><span class="line">2305</span><br><span class="line">2306</span><br><span class="line">2307</span><br><span class="line">2308</span><br><span class="line">2309</span><br><span class="line">2310</span><br><span class="line">2311</span><br><span class="line">2312</span><br><span class="line">2313</span><br><span class="line">2314</span><br><span class="line">2315</span><br><span class="line">2316</span><br><span class="line">2317</span><br><span class="line">2318</span><br><span class="line">2319</span><br><span class="line">2320</span><br><span class="line">2321</span><br><span class="line">2322</span><br><span class="line">2323</span><br><span class="line">2324</span><br><span class="line">2325</span><br><span class="line">2326</span><br><span class="line">2327</span><br><span class="line">2328</span><br><span class="line">2329</span><br><span class="line">2330</span><br><span class="line">2331</span><br><span class="line">2332</span><br><span class="line">2333</span><br><span class="line">2334</span><br><span class="line">2335</span><br><span class="line">2336</span><br><span class="line">2337</span><br><span class="line">2338</span><br><span class="line">2339</span><br><span class="line">2340</span><br><span class="line">2341</span><br><span class="line">2342</span><br><span class="line">2343</span><br><span class="line">2344</span><br><span class="line">2345</span><br><span class="line">2346</span><br><span class="line">2347</span><br><span class="line">2348</span><br><span class="line">2349</span><br><span class="line">2350</span><br><span class="line">2351</span><br><span class="line">2352</span><br><span class="line">2353</span><br><span class="line">2354</span><br><span class="line">2355</span><br><span class="line">2356</span><br><span class="line">2357</span><br><span class="line">2358</span><br><span class="line">2359</span><br><span class="line">2360</span><br><span class="line">2361</span><br><span class="line">2362</span><br><span class="line">2363</span><br><span class="line">2364</span><br><span class="line">2365</span><br><span class="line">2366</span><br><span class="line">2367</span><br><span class="line">2368</span><br><span class="line">2369</span><br><span class="line">2370</span><br><span class="line">2371</span><br><span class="line">2372</span><br><span class="line">2373</span><br><span class="line">2374</span><br><span class="line">2375</span><br><span class="line">2376</span><br><span class="line">2377</span><br><span class="line">2378</span><br><span class="line">2379</span><br><span class="line">2380</span><br><span class="line">2381</span><br><span class="line">2382</span><br><span class="line">2383</span><br><span class="line">2384</span><br><span class="line">2385</span><br><span class="line">2386</span><br><span class="line">2387</span><br><span class="line">2388</span><br><span class="line">2389</span><br><span class="line">2390</span><br><span class="line">2391</span><br><span class="line">2392</span><br><span class="line">2393</span><br><span class="line">2394</span><br><span class="line">2395</span><br><span class="line">2396</span><br><span class="line">2397</span><br><span class="line">2398</span><br><span class="line">2399</span><br><span class="line">2400</span><br><span class="line">2401</span><br><span class="line">2402</span><br><span class="line">2403</span><br><span class="line">2404</span><br><span class="line">2405</span><br><span class="line">2406</span><br><span class="line">2407</span><br><span class="line">2408</span><br><span class="line">2409</span><br><span class="line">2410</span><br><span class="line">2411</span><br><span class="line">2412</span><br><span class="line">2413</span><br><span class="line">2414</span><br><span class="line">2415</span><br><span class="line">2416</span><br><span class="line">2417</span><br><span class="line">2418</span><br><span class="line">2419</span><br><span class="line">2420</span><br><span class="line">2421</span><br><span class="line">2422</span><br><span class="line">2423</span><br><span class="line">2424</span><br><span class="line">2425</span><br><span class="line">2426</span><br><span class="line">2427</span><br><span class="line">2428</span><br><span class="line">2429</span><br><span class="line">2430</span><br><span class="line">2431</span><br><span class="line">2432</span><br><span class="line">2433</span><br><span class="line">2434</span><br><span class="line">2435</span><br><span class="line">2436</span><br><span class="line">2437</span><br><span class="line">2438</span><br><span class="line">2439</span><br><span class="line">2440</span><br><span class="line">2441</span><br><span class="line">2442</span><br><span class="line">2443</span><br><span class="line">2444</span><br><span class="line">2445</span><br><span class="line">2446</span><br><span class="line">2447</span><br><span class="line">2448</span><br><span class="line">2449</span><br><span class="line">2450</span><br><span class="line">2451</span><br><span class="line">2452</span><br><span class="line">2453</span><br><span class="line">2454</span><br><span class="line">2455</span><br><span class="line">2456</span><br><span class="line">2457</span><br><span class="line">2458</span><br><span class="line">2459</span><br><span class="line">2460</span><br><span class="line">2461</span><br><span class="line">2462</span><br><span class="line">2463</span><br><span class="line">2464</span><br><span class="line">2465</span><br><span class="line">2466</span><br><span class="line">2467</span><br><span class="line">2468</span><br><span class="line">2469</span><br><span class="line">2470</span><br><span class="line">2471</span><br><span class="line">2472</span><br><span class="line">2473</span><br><span class="line">2474</span><br><span class="line">2475</span><br><span class="line">2476</span><br><span class="line">2477</span><br><span class="line">2478</span><br><span class="line">2479</span><br><span class="line">2480</span><br><span class="line">2481</span><br><span class="line">2482</span><br><span class="line">2483</span><br><span class="line">2484</span><br><span class="line">2485</span><br><span class="line">2486</span><br><span class="line">2487</span><br><span class="line">2488</span><br><span class="line">2489</span><br><span class="line">2490</span><br><span class="line">2491</span><br><span class="line">2492</span><br><span class="line">2493</span><br><span class="line">2494</span><br><span class="line">2495</span><br><span class="line">2496</span><br><span class="line">2497</span><br><span class="line">2498</span><br><span class="line">2499</span><br><span class="line">2500</span><br><span class="line">2501</span><br><span class="line">2502</span><br><span class="line">2503</span><br><span class="line">2504</span><br><span class="line">2505</span><br><span class="line">2506</span><br><span class="line">2507</span><br><span class="line">2508</span><br><span class="line">2509</span><br><span class="line">2510</span><br><span class="line">2511</span><br><span class="line">2512</span><br><span class="line">2513</span><br><span class="line">2514</span><br><span class="line">2515</span><br><span class="line">2516</span><br><span class="line">2517</span><br><span class="line">2518</span><br><span class="line">2519</span><br><span class="line">2520</span><br><span class="line">2521</span><br><span class="line">2522</span><br><span class="line">2523</span><br><span class="line">2524</span><br><span class="line">2525</span><br><span class="line">2526</span><br><span class="line">2527</span><br><span class="line">2528</span><br><span class="line">2529</span><br><span class="line">2530</span><br><span class="line">2531</span><br><span class="line">2532</span><br><span class="line">2533</span><br><span class="line">2534</span><br><span class="line">2535</span><br><span class="line">2536</span><br><span class="line">2537</span><br><span class="line">2538</span><br><span class="line">2539</span><br><span class="line">2540</span><br><span class="line">2541</span><br><span class="line">2542</span><br><span class="line">2543</span><br><span class="line">2544</span><br><span class="line">2545</span><br><span class="line">2546</span><br><span class="line">2547</span><br><span class="line">2548</span><br><span class="line">2549</span><br><span class="line">2550</span><br><span class="line">2551</span><br><span class="line">2552</span><br><span class="line">2553</span><br><span class="line">2554</span><br><span class="line">2555</span><br><span class="line">2556</span><br><span class="line">2557</span><br><span class="line">2558</span><br><span class="line">2559</span><br><span class="line">2560</span><br><span class="line">2561</span><br><span class="line">2562</span><br><span class="line">2563</span><br><span class="line">2564</span><br><span class="line">2565</span><br><span class="line">2566</span><br><span class="line">2567</span><br><span class="line">2568</span><br><span class="line">2569</span><br><span class="line">2570</span><br><span class="line">2571</span><br><span class="line">2572</span><br><span class="line">2573</span><br><span class="line">2574</span><br><span class="line">2575</span><br><span class="line">2576</span><br><span class="line">2577</span><br><span class="line">2578</span><br><span class="line">2579</span><br><span class="line">2580</span><br><span class="line">2581</span><br><span class="line">2582</span><br><span class="line">2583</span><br><span class="line">2584</span><br><span class="line">2585</span><br><span class="line">2586</span><br><span class="line">2587</span><br><span class="line">2588</span><br><span class="line">2589</span><br><span class="line">2590</span><br><span class="line">2591</span><br><span class="line">2592</span><br><span class="line">2593</span><br><span class="line">2594</span><br><span class="line">2595</span><br><span class="line">2596</span><br><span class="line">2597</span><br><span class="line">2598</span><br><span class="line">2599</span><br><span class="line">2600</span><br><span class="line">2601</span><br><span class="line">2602</span><br><span class="line">2603</span><br><span class="line">2604</span><br><span class="line">2605</span><br><span class="line">2606</span><br><span class="line">2607</span><br><span class="line">2608</span><br><span class="line">2609</span><br><span class="line">2610</span><br><span class="line">2611</span><br><span class="line">2612</span><br><span class="line">2613</span><br><span class="line">2614</span><br><span class="line">2615</span><br><span class="line">2616</span><br><span class="line">2617</span><br><span class="line">2618</span><br><span class="line">2619</span><br><span class="line">2620</span><br><span class="line">2621</span><br><span class="line">2622</span><br><span class="line">2623</span><br><span class="line">2624</span><br><span class="line">2625</span><br><span class="line">2626</span><br><span class="line">2627</span><br><span class="line">2628</span><br><span class="line">2629</span><br><span class="line">2630</span><br><span class="line">2631</span><br><span class="line">2632</span><br><span class="line">2633</span><br><span class="line">2634</span><br><span class="line">2635</span><br><span class="line">2636</span><br><span class="line">2637</span><br><span class="line">2638</span><br><span class="line">2639</span><br><span class="line">2640</span><br><span class="line">2641</span><br><span class="line">2642</span><br><span class="line">2643</span><br><span class="line">2644</span><br><span class="line">2645</span><br><span class="line">2646</span><br><span class="line">2647</span><br><span class="line">2648</span><br><span class="line">2649</span><br><span class="line">2650</span><br><span class="line">2651</span><br><span class="line">2652</span><br><span class="line">2653</span><br><span class="line">2654</span><br><span class="line">2655</span><br><span class="line">2656</span><br><span class="line">2657</span><br><span class="line">2658</span><br><span class="line">2659</span><br><span class="line">2660</span><br><span class="line">2661</span><br><span class="line">2662</span><br><span class="line">2663</span><br><span class="line">2664</span><br><span class="line">2665</span><br><span class="line">2666</span><br><span class="line">2667</span><br><span class="line">2668</span><br><span class="line">2669</span><br><span class="line">2670</span><br><span class="line">2671</span><br><span class="line">2672</span><br><span class="line">2673</span><br><span class="line">2674</span><br><span class="line">2675</span><br><span class="line">2676</span><br><span class="line">2677</span><br><span class="line">2678</span><br><span class="line">2679</span><br><span class="line">2680</span><br><span class="line">2681</span><br><span class="line">2682</span><br><span class="line">2683</span><br><span class="line">2684</span><br><span class="line">2685</span><br><span class="line">2686</span><br><span class="line">2687</span><br><span class="line">2688</span><br><span class="line">2689</span><br><span class="line">2690</span><br><span class="line">2691</span><br><span class="line">2692</span><br><span class="line">2693</span><br><span class="line">2694</span><br><span class="line">2695</span><br><span class="line">2696</span><br><span class="line">2697</span><br><span class="line">2698</span><br><span class="line">2699</span><br><span class="line">2700</span><br><span class="line">2701</span><br><span class="line">2702</span><br><span class="line">2703</span><br><span class="line">2704</span><br><span class="line">2705</span><br><span class="line">2706</span><br><span class="line">2707</span><br><span class="line">2708</span><br><span class="line">2709</span><br><span class="line">2710</span><br><span class="line">2711</span><br><span class="line">2712</span><br><span class="line">2713</span><br><span class="line">2714</span><br><span class="line">2715</span><br><span class="line">2716</span><br><span class="line">2717</span><br><span class="line">2718</span><br><span class="line">2719</span><br><span class="line">2720</span><br><span class="line">2721</span><br><span class="line">2722</span><br><span class="line">2723</span><br><span class="line">2724</span><br><span class="line">2725</span><br><span class="line">2726</span><br><span class="line">2727</span><br><span class="line">2728</span><br><span class="line">2729</span><br><span class="line">2730</span><br><span class="line">2731</span><br><span class="line">2732</span><br><span class="line">2733</span><br><span class="line">2734</span><br><span class="line">2735</span><br><span class="line">2736</span><br><span class="line">2737</span><br><span class="line">2738</span><br><span class="line">2739</span><br><span class="line">2740</span><br><span class="line">2741</span><br><span class="line">2742</span><br><span class="line">2743</span><br><span class="line">2744</span><br><span class="line">2745</span><br><span class="line">2746</span><br><span class="line">2747</span><br><span class="line">2748</span><br><span class="line">2749</span><br><span class="line">2750</span><br><span class="line">2751</span><br><span class="line">2752</span><br><span class="line">2753</span><br><span class="line">2754</span><br><span class="line">2755</span><br><span class="line">2756</span><br><span class="line">2757</span><br><span class="line">2758</span><br><span class="line">2759</span><br><span class="line">2760</span><br><span class="line">2761</span><br><span class="line">2762</span><br><span class="line">2763</span><br><span class="line">2764</span><br><span class="line">2765</span><br><span class="line">2766</span><br><span class="line">2767</span><br><span class="line">2768</span><br><span class="line">2769</span><br><span class="line">2770</span><br><span class="line">2771</span><br><span class="line">2772</span><br><span class="line">2773</span><br><span class="line">2774</span><br><span class="line">2775</span><br><span class="line">2776</span><br><span class="line">2777</span><br><span class="line">2778</span><br><span class="line">2779</span><br><span class="line">2780</span><br><span class="line">2781</span><br><span class="line">2782</span><br><span class="line">2783</span><br><span class="line">2784</span><br><span class="line">2785</span><br><span class="line">2786</span><br><span class="line">2787</span><br><span class="line">2788</span><br><span class="line">2789</span><br><span class="line">2790</span><br><span class="line">2791</span><br><span class="line">2792</span><br><span class="line">2793</span><br><span class="line">2794</span><br><span class="line">2795</span><br><span class="line">2796</span><br><span class="line">2797</span><br><span class="line">2798</span><br><span class="line">2799</span><br><span class="line">2800</span><br><span class="line">2801</span><br><span class="line">2802</span><br><span class="line">2803</span><br><span class="line">2804</span><br><span class="line">2805</span><br><span class="line">2806</span><br><span class="line">2807</span><br><span class="line">2808</span><br><span class="line">2809</span><br><span class="line">2810</span><br><span class="line">2811</span><br><span class="line">2812</span><br><span class="line">2813</span><br><span class="line">2814</span><br><span class="line">2815</span><br><span class="line">2816</span><br><span class="line">2817</span><br><span class="line">2818</span><br><span class="line">2819</span><br><span class="line">2820</span><br><span class="line">2821</span><br><span class="line">2822</span><br><span class="line">2823</span><br><span class="line">2824</span><br><span class="line">2825</span><br><span class="line">2826</span><br><span class="line">2827</span><br><span class="line">2828</span><br><span class="line">2829</span><br><span class="line">2830</span><br><span class="line">2831</span><br><span class="line">2832</span><br><span class="line">2833</span><br><span class="line">2834</span><br><span class="line">2835</span><br><span class="line">2836</span><br><span class="line">2837</span><br><span class="line">2838</span><br><span class="line">2839</span><br><span class="line">2840</span><br><span class="line">2841</span><br><span class="line">2842</span><br><span class="line">2843</span><br><span class="line">2844</span><br><span class="line">2845</span><br><span class="line">2846</span><br><span class="line">2847</span><br><span class="line">2848</span><br><span class="line">2849</span><br><span class="line">2850</span><br><span class="line">2851</span><br><span class="line">2852</span><br><span class="line">2853</span><br><span class="line">2854</span><br><span class="line">2855</span><br><span class="line">2856</span><br><span class="line">2857</span><br><span class="line">2858</span><br><span class="line">2859</span><br><span class="line">2860</span><br><span class="line">2861</span><br><span class="line">2862</span><br><span class="line">2863</span><br><span class="line">2864</span><br><span class="line">2865</span><br><span class="line">2866</span><br><span class="line">2867</span><br><span class="line">2868</span><br><span class="line">2869</span><br><span class="line">2870</span><br><span class="line">2871</span><br><span class="line">2872</span><br><span class="line">2873</span><br><span class="line">2874</span><br><span class="line">2875</span><br><span class="line">2876</span><br><span class="line">2877</span><br><span class="line">2878</span><br><span class="line">2879</span><br><span class="line">2880</span><br><span class="line">2881</span><br><span class="line">2882</span><br><span class="line">2883</span><br><span class="line">2884</span><br><span class="line">2885</span><br><span class="line">2886</span><br><span class="line">2887</span><br><span class="line">2888</span><br><span class="line">2889</span><br><span class="line">2890</span><br><span class="line">2891</span><br><span class="line">2892</span><br><span class="line">2893</span><br><span class="line">2894</span><br><span class="line">2895</span><br><span class="line">2896</span><br><span class="line">2897</span><br><span class="line">2898</span><br><span class="line">2899</span><br><span class="line">2900</span><br><span class="line">2901</span><br><span class="line">2902</span><br><span class="line">2903</span><br><span class="line">2904</span><br><span class="line">2905</span><br><span class="line">2906</span><br><span class="line">2907</span><br><span class="line">2908</span><br><span class="line">2909</span><br><span class="line">2910</span><br><span class="line">2911</span><br><span class="line">2912</span><br><span class="line">2913</span><br><span class="line">2914</span><br><span class="line">2915</span><br><span class="line">2916</span><br><span class="line">2917</span><br><span class="line">2918</span><br><span class="line">2919</span><br><span class="line">2920</span><br><span class="line">2921</span><br><span class="line">2922</span><br><span class="line">2923</span><br><span class="line">2924</span><br><span class="line">2925</span><br><span class="line">2926</span><br><span class="line">2927</span><br><span class="line">2928</span><br><span class="line">2929</span><br><span class="line">2930</span><br><span class="line">2931</span><br><span class="line">2932</span><br><span class="line">2933</span><br><span class="line">2934</span><br><span class="line">2935</span><br><span class="line">2936</span><br><span class="line">2937</span><br><span class="line">2938</span><br><span class="line">2939</span><br><span class="line">2940</span><br><span class="line">2941</span><br><span class="line">2942</span><br><span class="line">2943</span><br><span class="line">2944</span><br><span class="line">2945</span><br><span class="line">2946</span><br><span class="line">2947</span><br><span class="line">2948</span><br><span class="line">2949</span><br><span class="line">2950</span><br><span class="line">2951</span><br><span class="line">2952</span><br><span class="line">2953</span><br><span class="line">2954</span><br><span class="line">2955</span><br><span class="line">2956</span><br><span class="line">2957</span><br><span class="line">2958</span><br><span class="line">2959</span><br><span class="line">2960</span><br><span class="line">2961</span><br><span class="line">2962</span><br><span class="line">2963</span><br><span class="line">2964</span><br><span class="line">2965</span><br><span class="line">2966</span><br><span class="line">2967</span><br><span class="line">2968</span><br><span class="line">2969</span><br><span class="line">2970</span><br><span class="line">2971</span><br><span class="line">2972</span><br><span class="line">2973</span><br><span class="line">2974</span><br><span class="line">2975</span><br><span class="line">2976</span><br><span class="line">2977</span><br><span class="line">2978</span><br><span class="line">2979</span><br><span class="line">2980</span><br><span class="line">2981</span><br><span class="line">2982</span><br><span class="line">2983</span><br><span class="line">2984</span><br><span class="line">2985</span><br><span class="line">2986</span><br><span class="line">2987</span><br><span class="line">2988</span><br><span class="line">2989</span><br><span class="line">2990</span><br><span class="line">2991</span><br><span class="line">2992</span><br><span class="line">2993</span><br><span class="line">2994</span><br><span class="line">2995</span><br><span class="line">2996</span><br><span class="line">2997</span><br><span class="line">2998</span><br><span class="line">2999</span><br><span class="line">3000</span><br><span class="line">3001</span><br><span class="line">3002</span><br><span class="line">3003</span><br><span class="line">3004</span><br><span class="line">3005</span><br><span class="line">3006</span><br><span class="line">3007</span><br><span class="line">3008</span><br><span class="line">3009</span><br><span class="line">3010</span><br><span class="line">3011</span><br><span class="line">3012</span><br><span class="line">3013</span><br><span class="line">3014</span><br><span class="line">3015</span><br><span class="line">3016</span><br><span class="line">3017</span><br><span class="line">3018</span><br><span class="line">3019</span><br><span class="line">3020</span><br><span class="line">3021</span><br><span class="line">3022</span><br><span class="line">3023</span><br><span class="line">3024</span><br><span class="line">3025</span><br><span class="line">3026</span><br><span class="line">3027</span><br><span class="line">3028</span><br><span class="line">3029</span><br><span class="line">3030</span><br><span class="line">3031</span><br><span class="line">3032</span><br><span class="line">3033</span><br><span class="line">3034</span><br><span class="line">3035</span><br><span class="line">3036</span><br><span class="line">3037</span><br><span class="line">3038</span><br><span class="line">3039</span><br><span class="line">3040</span><br><span class="line">3041</span><br><span class="line">3042</span><br><span class="line">3043</span><br><span class="line">3044</span><br><span class="line">3045</span><br><span class="line">3046</span><br><span class="line">3047</span><br><span class="line">3048</span><br><span class="line">3049</span><br><span class="line">3050</span><br><span class="line">3051</span><br><span class="line">3052</span><br><span class="line">3053</span><br><span class="line">3054</span><br><span class="line">3055</span><br><span class="line">3056</span><br><span class="line">3057</span><br><span class="line">3058</span><br><span class="line">3059</span><br><span class="line">3060</span><br><span class="line">3061</span><br><span class="line">3062</span><br><span class="line">3063</span><br><span class="line">3064</span><br><span class="line">3065</span><br><span class="line">3066</span><br><span class="line">3067</span><br><span class="line">3068</span><br><span class="line">3069</span><br><span class="line">3070</span><br><span class="line">3071</span><br><span class="line">3072</span><br><span class="line">3073</span><br><span class="line">3074</span><br><span class="line">3075</span><br><span class="line">3076</span><br><span class="line">3077</span><br><span class="line">3078</span><br><span class="line">3079</span><br><span class="line">3080</span><br><span class="line">3081</span><br><span class="line">3082</span><br><span class="line">3083</span><br><span class="line">3084</span><br><span class="line">3085</span><br><span class="line">3086</span><br><span class="line">3087</span><br><span class="line">3088</span><br><span class="line">3089</span><br><span class="line">3090</span><br><span class="line">3091</span><br><span class="line">3092</span><br><span class="line">3093</span><br><span class="line">3094</span><br><span class="line">3095</span><br><span class="line">3096</span><br><span class="line">3097</span><br><span class="line">3098</span><br><span class="line">3099</span><br><span class="line">3100</span><br><span class="line">3101</span><br><span class="line">3102</span><br><span class="line">3103</span><br><span class="line">3104</span><br><span class="line">3105</span><br><span class="line">3106</span><br><span class="line">3107</span><br><span class="line">3108</span><br><span class="line">3109</span><br><span class="line">3110</span><br><span class="line">3111</span><br><span class="line">3112</span><br><span class="line">3113</span><br><span class="line">3114</span><br><span class="line">3115</span><br><span class="line">3116</span><br><span class="line">3117</span><br><span class="line">3118</span><br><span class="line">3119</span><br><span class="line">3120</span><br><span class="line">3121</span><br><span class="line">3122</span><br><span class="line">3123</span><br><span class="line">3124</span><br><span class="line">3125</span><br><span class="line">3126</span><br><span class="line">3127</span><br><span class="line">3128</span><br><span class="line">3129</span><br><span class="line">3130</span><br><span class="line">3131</span><br><span class="line">3132</span><br><span class="line">3133</span><br><span class="line">3134</span><br><span class="line">3135</span><br><span class="line">3136</span><br><span class="line">3137</span><br><span class="line">3138</span><br><span class="line">3139</span><br><span class="line">3140</span><br><span class="line">3141</span><br><span class="line">3142</span><br><span class="line">3143</span><br><span class="line">3144</span><br><span class="line">3145</span><br><span class="line">3146</span><br><span class="line">3147</span><br><span class="line">3148</span><br><span class="line">3149</span><br><span class="line">3150</span><br><span class="line">3151</span><br><span class="line">3152</span><br><span class="line">3153</span><br><span class="line">3154</span><br><span class="line">3155</span><br><span class="line">3156</span><br><span class="line">3157</span><br><span class="line">3158</span><br><span class="line">3159</span><br><span class="line">3160</span><br><span class="line">3161</span><br><span class="line">3162</span><br><span class="line">3163</span><br><span class="line">3164</span><br><span class="line">3165</span><br><span class="line">3166</span><br><span class="line">3167</span><br><span class="line">3168</span><br><span class="line">3169</span><br><span class="line">3170</span><br><span class="line">3171</span><br><span class="line">3172</span><br><span class="line">3173</span><br><span class="line">3174</span><br><span class="line">3175</span><br><span class="line">3176</span><br><span class="line">3177</span><br><span class="line">3178</span><br><span class="line">3179</span><br><span class="line">3180</span><br><span class="line">3181</span><br><span class="line">3182</span><br><span class="line">3183</span><br><span class="line">3184</span><br><span class="line">3185</span><br><span class="line">3186</span><br><span class="line">3187</span><br><span class="line">3188</span><br><span class="line">3189</span><br><span class="line">3190</span><br><span class="line">3191</span><br><span class="line">3192</span><br><span class="line">3193</span><br><span class="line">3194</span><br><span class="line">3195</span><br><span class="line">3196</span><br><span class="line">3197</span><br><span class="line">3198</span><br><span class="line">3199</span><br><span class="line">3200</span><br><span class="line">3201</span><br><span class="line">3202</span><br><span class="line">3203</span><br><span class="line">3204</span><br><span class="line">3205</span><br><span class="line">3206</span><br><span class="line">3207</span><br><span class="line">3208</span><br><span class="line">3209</span><br><span class="line">3210</span><br><span class="line">3211</span><br><span class="line">3212</span><br><span class="line">3213</span><br><span class="line">3214</span><br><span class="line">3215</span><br><span class="line">3216</span><br><span class="line">3217</span><br><span class="line">3218</span><br><span class="line">3219</span><br><span class="line">3220</span><br><span class="line">3221</span><br><span class="line">3222</span><br><span class="line">3223</span><br><span class="line">3224</span><br><span class="line">3225</span><br><span class="line">3226</span><br><span class="line">3227</span><br><span class="line">3228</span><br><span class="line">3229</span><br><span class="line">3230</span><br><span class="line">3231</span><br><span class="line">3232</span><br><span class="line">3233</span><br><span class="line">3234</span><br><span class="line">3235</span><br><span class="line">3236</span><br><span class="line">3237</span><br><span class="line">3238</span><br><span class="line">3239</span><br><span class="line">3240</span><br><span class="line">3241</span><br><span class="line">3242</span><br><span class="line">3243</span><br><span class="line">3244</span><br><span class="line">3245</span><br><span class="line">3246</span><br><span class="line">3247</span><br><span class="line">3248</span><br><span class="line">3249</span><br><span class="line">3250</span><br><span class="line">3251</span><br><span class="line">3252</span><br><span class="line">3253</span><br><span class="line">3254</span><br><span class="line">3255</span><br><span class="line">3256</span><br><span class="line">3257</span><br><span class="line">3258</span><br><span class="line">3259</span><br><span class="line">3260</span><br><span class="line">3261</span><br><span class="line">3262</span><br><span class="line">3263</span><br><span class="line">3264</span><br><span class="line">3265</span><br><span class="line">3266</span><br><span class="line">3267</span><br><span class="line">3268</span><br><span class="line">3269</span><br><span class="line">3270</span><br><span class="line">3271</span><br><span class="line">3272</span><br><span class="line">3273</span><br><span class="line">3274</span><br><span class="line">3275</span><br><span class="line">3276</span><br><span class="line">3277</span><br><span class="line">3278</span><br><span class="line">3279</span><br><span class="line">3280</span><br><span class="line">3281</span><br><span class="line">3282</span><br><span class="line">3283</span><br><span class="line">3284</span><br><span class="line">3285</span><br><span class="line">3286</span><br><span class="line">3287</span><br><span class="line">3288</span><br><span class="line">3289</span><br><span class="line">3290</span><br><span class="line">3291</span><br><span class="line">3292</span><br><span class="line">3293</span><br><span class="line">3294</span><br><span class="line">3295</span><br><span class="line">3296</span><br><span class="line">3297</span><br><span class="line">3298</span><br><span class="line">3299</span><br><span class="line">3300</span><br><span class="line">3301</span><br><span class="line">3302</span><br><span class="line">3303</span><br><span class="line">3304</span><br><span class="line">3305</span><br><span class="line">3306</span><br><span class="line">3307</span><br><span class="line">3308</span><br><span class="line">3309</span><br><span class="line">3310</span><br><span class="line">3311</span><br><span class="line">3312</span><br><span class="line">3313</span><br><span class="line">3314</span><br><span class="line">3315</span><br><span class="line">3316</span><br><span class="line">3317</span><br><span class="line">3318</span><br><span class="line">3319</span><br><span class="line">3320</span><br><span class="line">3321</span><br><span class="line">3322</span><br><span class="line">3323</span><br><span class="line">3324</span><br><span class="line">3325</span><br><span class="line">3326</span><br><span class="line">3327</span><br><span class="line">3328</span><br><span class="line">3329</span><br><span class="line">3330</span><br><span class="line">3331</span><br><span class="line">3332</span><br><span class="line">3333</span><br><span class="line">3334</span><br><span class="line">3335</span><br><span class="line">3336</span><br><span class="line">3337</span><br><span class="line">3338</span><br><span class="line">3339</span><br><span class="line">3340</span><br><span class="line">3341</span><br><span class="line">3342</span><br><span class="line">3343</span><br><span class="line">3344</span><br><span class="line">3345</span><br><span class="line">3346</span><br><span class="line">3347</span><br><span class="line">3348</span><br><span class="line">3349</span><br><span class="line">3350</span><br><span class="line">3351</span><br><span class="line">3352</span><br><span class="line">3353</span><br><span class="line">3354</span><br><span class="line">3355</span><br><span class="line">3356</span><br><span class="line">3357</span><br><span class="line">3358</span><br><span class="line">3359</span><br><span class="line">3360</span><br><span class="line">3361</span><br><span class="line">3362</span><br><span class="line">3363</span><br><span class="line">3364</span><br><span class="line">3365</span><br><span class="line">3366</span><br><span class="line">3367</span><br><span class="line">3368</span><br><span class="line">3369</span><br><span class="line">3370</span><br><span class="line">3371</span><br><span class="line">3372</span><br><span class="line">3373</span><br><span class="line">3374</span><br><span class="line">3375</span><br><span class="line">3376</span><br><span class="line">3377</span><br><span class="line">3378</span><br><span class="line">3379</span><br><span class="line">3380</span><br><span class="line">3381</span><br><span class="line">3382</span><br><span class="line">3383</span><br><span class="line">3384</span><br><span class="line">3385</span><br><span class="line">3386</span><br><span class="line">3387</span><br><span class="line">3388</span><br><span class="line">3389</span><br><span class="line">3390</span><br><span class="line">3391</span><br><span class="line">3392</span><br><span class="line">3393</span><br><span class="line">3394</span><br><span class="line">3395</span><br><span class="line">3396</span><br><span class="line">3397</span><br><span class="line">3398</span><br><span class="line">3399</span><br><span class="line">3400</span><br><span class="line">3401</span><br><span class="line">3402</span><br><span class="line">3403</span><br><span class="line">3404</span><br><span class="line">3405</span><br><span class="line">3406</span><br><span class="line">3407</span><br><span class="line">3408</span><br><span class="line">3409</span><br><span class="line">3410</span><br><span class="line">3411</span><br><span class="line">3412</span><br><span class="line">3413</span><br><span class="line">3414</span><br><span class="line">3415</span><br><span class="line">3416</span><br><span class="line">3417</span><br><span class="line">3418</span><br><span class="line">3419</span><br><span class="line">3420</span><br><span class="line">3421</span><br><span class="line">3422</span><br><span class="line">3423</span><br><span class="line">3424</span><br><span class="line">3425</span><br><span class="line">3426</span><br><span class="line">3427</span><br><span class="line">3428</span><br><span class="line">3429</span><br><span class="line">3430</span><br><span class="line">3431</span><br><span class="line">3432</span><br><span class="line">3433</span><br><span class="line">3434</span><br><span class="line">3435</span><br><span class="line">3436</span><br><span class="line">3437</span><br><span class="line">3438</span><br><span class="line">3439</span><br><span class="line">3440</span><br><span class="line">3441</span><br><span class="line">3442</span><br><span class="line">3443</span><br><span class="line">3444</span><br><span class="line">3445</span><br><span class="line">3446</span><br><span class="line">3447</span><br><span class="line">3448</span><br><span class="line">3449</span><br><span class="line">3450</span><br><span class="line">3451</span><br><span class="line">3452</span><br><span class="line">3453</span><br><span class="line">3454</span><br><span class="line">3455</span><br><span class="line">3456</span><br><span class="line">3457</span><br><span class="line">3458</span><br><span class="line">3459</span><br><span class="line">3460</span><br><span class="line">3461</span><br><span class="line">3462</span><br><span class="line">3463</span><br><span class="line">3464</span><br><span class="line">3465</span><br><span class="line">3466</span><br><span class="line">3467</span><br><span class="line">3468</span><br><span class="line">3469</span><br><span class="line">3470</span><br><span class="line">3471</span><br><span class="line">3472</span><br><span class="line">3473</span><br><span class="line">3474</span><br><span class="line">3475</span><br><span class="line">3476</span><br><span class="line">3477</span><br><span class="line">3478</span><br><span class="line">3479</span><br><span class="line">3480</span><br><span class="line">3481</span><br><span class="line">3482</span><br><span class="line">3483</span><br><span class="line">3484</span><br><span class="line">3485</span><br><span class="line">3486</span><br><span class="line">3487</span><br><span class="line">3488</span><br><span class="line">3489</span><br><span class="line">3490</span><br><span class="line">3491</span><br><span class="line">3492</span><br><span class="line">3493</span><br><span class="line">3494</span><br><span class="line">3495</span><br><span class="line">3496</span><br><span class="line">3497</span><br><span class="line">3498</span><br><span class="line">3499</span><br><span class="line">3500</span><br><span class="line">3501</span><br><span class="line">3502</span><br><span class="line">3503</span><br><span class="line">3504</span><br><span class="line">3505</span><br><span class="line">3506</span><br><span class="line">3507</span><br><span class="line">3508</span><br><span class="line">3509</span><br><span class="line">3510</span><br><span class="line">3511</span><br><span class="line">3512</span><br><span class="line">3513</span><br><span class="line">3514</span><br><span class="line">3515</span><br><span class="line">3516</span><br><span class="line">3517</span><br><span class="line">3518</span><br><span class="line">3519</span><br><span class="line">3520</span><br><span class="line">3521</span><br><span class="line">3522</span><br><span class="line">3523</span><br><span class="line">3524</span><br><span class="line">3525</span><br><span class="line">3526</span><br><span class="line">3527</span><br><span class="line">3528</span><br><span class="line">3529</span><br><span class="line">3530</span><br><span class="line">3531</span><br><span class="line">3532</span><br><span class="line">3533</span><br><span class="line">3534</span><br><span class="line">3535</span><br><span class="line">3536</span><br><span class="line">3537</span><br><span class="line">3538</span><br><span class="line">3539</span><br><span class="line">3540</span><br><span class="line">3541</span><br><span class="line">3542</span><br><span class="line">3543</span><br><span class="line">3544</span><br><span class="line">3545</span><br><span class="line">3546</span><br><span class="line">3547</span><br><span class="line">3548</span><br><span class="line">3549</span><br><span class="line">3550</span><br><span class="line">3551</span><br><span class="line">3552</span><br><span class="line">3553</span><br><span class="line">3554</span><br><span class="line">3555</span><br><span class="line">3556</span><br><span class="line">3557</span><br><span class="line">3558</span><br><span class="line">3559</span><br><span class="line">3560</span><br><span class="line">3561</span><br><span class="line">3562</span><br><span class="line">3563</span><br><span class="line">3564</span><br><span class="line">3565</span><br><span class="line">3566</span><br><span class="line">3567</span><br><span class="line">3568</span><br><span class="line">3569</span><br><span class="line">3570</span><br><span class="line">3571</span><br><span class="line">3572</span><br><span class="line">3573</span><br><span class="line">3574</span><br><span class="line">3575</span><br><span class="line">3576</span><br><span class="line">3577</span><br><span class="line">3578</span><br><span class="line">3579</span><br><span class="line">3580</span><br><span class="line">3581</span><br><span class="line">3582</span><br><span class="line">3583</span><br><span class="line">3584</span><br><span class="line">3585</span><br><span class="line">3586</span><br><span class="line">3587</span><br><span class="line">3588</span><br><span class="line">3589</span><br><span class="line">3590</span><br><span class="line">3591</span><br><span class="line">3592</span><br><span class="line">3593</span><br><span class="line">3594</span><br><span class="line">3595</span><br><span class="line">3596</span><br><span class="line">3597</span><br><span class="line">3598</span><br><span class="line">3599</span><br><span class="line">3600</span><br><span class="line">3601</span><br><span class="line">3602</span><br><span class="line">3603</span><br><span class="line">3604</span><br><span class="line">3605</span><br><span class="line">3606</span><br><span class="line">3607</span><br><span class="line">3608</span><br><span class="line">3609</span><br><span class="line">3610</span><br><span class="line">3611</span><br><span class="line">3612</span><br><span class="line">3613</span><br><span class="line">3614</span><br><span class="line">3615</span><br><span class="line">3616</span><br><span class="line">3617</span><br><span class="line">3618</span><br><span class="line">3619</span><br><span class="line">3620</span><br><span class="line">3621</span><br><span class="line">3622</span><br><span class="line">3623</span><br><span class="line">3624</span><br><span class="line">3625</span><br><span class="line">3626</span><br><span class="line">3627</span><br><span class="line">3628</span><br><span class="line">3629</span><br><span class="line">3630</span><br><span class="line">3631</span><br><span class="line">3632</span><br><span class="line">3633</span><br><span class="line">3634</span><br><span class="line">3635</span><br><span class="line">3636</span><br><span class="line">3637</span><br><span class="line">3638</span><br><span class="line">3639</span><br><span class="line">3640</span><br><span class="line">3641</span><br><span class="line">3642</span><br><span class="line">3643</span><br><span class="line">3644</span><br><span class="line">3645</span><br><span class="line">3646</span><br><span class="line">3647</span><br><span class="line">3648</span><br><span class="line">3649</span><br><span class="line">3650</span><br><span class="line">3651</span><br><span class="line">3652</span><br><span class="line">3653</span><br><span class="line">3654</span><br><span class="line">3655</span><br><span class="line">3656</span><br><span class="line">3657</span><br><span class="line">3658</span><br><span class="line">3659</span><br><span class="line">3660</span><br><span class="line">3661</span><br><span class="line">3662</span><br><span class="line">3663</span><br><span class="line">3664</span><br><span class="line">3665</span><br><span class="line">3666</span><br><span class="line">3667</span><br><span class="line">3668</span><br><span class="line">3669</span><br><span class="line">3670</span><br><span class="line">3671</span><br><span class="line">3672</span><br><span class="line">3673</span><br><span class="line">3674</span><br><span class="line">3675</span><br><span class="line">3676</span><br><span class="line">3677</span><br><span class="line">3678</span><br><span class="line">3679</span><br><span class="line">3680</span><br><span class="line">3681</span><br><span class="line">3682</span><br><span class="line">3683</span><br><span class="line">3684</span><br><span class="line">3685</span><br><span class="line">3686</span><br><span class="line">3687</span><br><span class="line">3688</span><br><span class="line">3689</span><br><span class="line">3690</span><br><span class="line">3691</span><br><span class="line">3692</span><br><span class="line">3693</span><br><span class="line">3694</span><br><span class="line">3695</span><br><span class="line">3696</span><br><span class="line">3697</span><br><span class="line">3698</span><br><span class="line">3699</span><br><span class="line">3700</span><br><span class="line">3701</span><br><span class="line">3702</span><br><span class="line">3703</span><br><span class="line">3704</span><br><span class="line">3705</span><br><span class="line">3706</span><br><span class="line">3707</span><br><span class="line">3708</span><br><span class="line">3709</span><br><span class="line">3710</span><br><span class="line">3711</span><br><span class="line">3712</span><br><span class="line">3713</span><br><span class="line">3714</span><br><span class="line">3715</span><br><span class="line">3716</span><br><span class="line">3717</span><br><span class="line">3718</span><br><span class="line">3719</span><br><span class="line">3720</span><br><span class="line">3721</span><br><span class="line">3722</span><br><span class="line">3723</span><br><span class="line">3724</span><br><span class="line">3725</span><br><span class="line">3726</span><br><span class="line">3727</span><br><span class="line">3728</span><br><span class="line">3729</span><br><span class="line">3730</span><br><span class="line">3731</span><br><span class="line">3732</span><br><span class="line">3733</span><br><span class="line">3734</span><br><span class="line">3735</span><br><span class="line">3736</span><br><span class="line">3737</span><br><span class="line">3738</span><br><span class="line">3739</span><br><span class="line">3740</span><br><span class="line">3741</span><br><span class="line">3742</span><br><span class="line">3743</span><br><span class="line">3744</span><br><span class="line">3745</span><br><span class="line">3746</span><br><span class="line">3747</span><br><span class="line">3748</span><br><span class="line">3749</span><br><span class="line">3750</span><br><span class="line">3751</span><br><span class="line">3752</span><br><span class="line">3753</span><br><span class="line">3754</span><br><span class="line">3755</span><br><span class="line">3756</span><br><span class="line">3757</span><br><span class="line">3758</span><br><span class="line">3759</span><br><span class="line">3760</span><br><span class="line">3761</span><br><span class="line">3762</span><br><span class="line">3763</span><br><span class="line">3764</span><br><span class="line">3765</span><br><span class="line">3766</span><br><span class="line">3767</span><br><span class="line">3768</span><br><span class="line">3769</span><br><span class="line">3770</span><br><span class="line">3771</span><br><span class="line">3772</span><br><span class="line">3773</span><br><span class="line">3774</span><br><span class="line">3775</span><br><span class="line">3776</span><br><span class="line">3777</span><br><span class="line">3778</span><br><span class="line">3779</span><br><span class="line">3780</span><br><span class="line">3781</span><br><span class="line">3782</span><br><span class="line">3783</span><br><span class="line">3784</span><br><span class="line">3785</span><br><span class="line">3786</span><br><span class="line">3787</span><br><span class="line">3788</span><br><span class="line">3789</span><br><span class="line">3790</span><br><span class="line">3791</span><br><span class="line">3792</span><br><span class="line">3793</span><br><span class="line">3794</span><br><span class="line">3795</span><br><span class="line">3796</span><br><span class="line">3797</span><br><span class="line">3798</span><br><span class="line">3799</span><br><span class="line">3800</span><br><span class="line">3801</span><br><span class="line">3802</span><br><span class="line">3803</span><br><span class="line">3804</span><br><span class="line">3805</span><br><span class="line">3806</span><br><span class="line">3807</span><br><span class="line">3808</span><br><span class="line">3809</span><br><span class="line">3810</span><br><span class="line">3811</span><br><span class="line">3812</span><br><span class="line">3813</span><br><span class="line">3814</span><br><span class="line">3815</span><br><span class="line">3816</span><br><span class="line">3817</span><br><span class="line">3818</span><br><span class="line">3819</span><br><span class="line">3820</span><br><span class="line">3821</span><br><span class="line">3822</span><br><span class="line">3823</span><br><span class="line">3824</span><br><span class="line">3825</span><br><span class="line">3826</span><br><span class="line">3827</span><br><span class="line">3828</span><br><span class="line">3829</span><br><span class="line">3830</span><br><span class="line">3831</span><br><span class="line">3832</span><br><span class="line">3833</span><br><span class="line">3834</span><br><span class="line">3835</span><br><span class="line">3836</span><br><span class="line">3837</span><br><span class="line">3838</span><br><span class="line">3839</span><br><span class="line">3840</span><br><span class="line">3841</span><br><span class="line">3842</span><br><span class="line">3843</span><br><span class="line">3844</span><br><span class="line">3845</span><br><span class="line">3846</span><br><span class="line">3847</span><br><span class="line">3848</span><br><span class="line">3849</span><br><span class="line">3850</span><br><span class="line">3851</span><br><span class="line">3852</span><br><span class="line">3853</span><br><span class="line">3854</span><br><span class="line">3855</span><br><span class="line">3856</span><br><span class="line">3857</span><br><span class="line">3858</span><br><span class="line">3859</span><br><span class="line">3860</span><br><span class="line">3861</span><br><span class="line">3862</span><br><span class="line">3863</span><br><span class="line">3864</span><br><span class="line">3865</span><br><span class="line">3866</span><br><span class="line">3867</span><br><span class="line">3868</span><br><span class="line">3869</span><br><span class="line">3870</span><br><span class="line">3871</span><br><span class="line">3872</span><br><span class="line">3873</span><br><span class="line">3874</span><br><span class="line">3875</span><br><span class="line">3876</span><br><span class="line">3877</span><br><span class="line">3878</span><br><span class="line">3879</span><br><span class="line">3880</span><br><span class="line">3881</span><br><span class="line">3882</span><br><span class="line">3883</span><br><span class="line">3884</span><br><span class="line">3885</span><br><span class="line">3886</span><br><span class="line">3887</span><br><span class="line">3888</span><br><span class="line">3889</span><br><span class="line">3890</span><br><span class="line">3891</span><br><span class="line">3892</span><br><span class="line">3893</span><br><span class="line">3894</span><br><span class="line">3895</span><br><span class="line">3896</span><br><span class="line">3897</span><br><span class="line">3898</span><br><span class="line">3899</span><br><span class="line">3900</span><br><span class="line">3901</span><br><span class="line">3902</span><br><span class="line">3903</span><br><span class="line">3904</span><br><span class="line">3905</span><br><span class="line">3906</span><br><span class="line">3907</span><br><span class="line">3908</span><br><span class="line">3909</span><br><span class="line">3910</span><br><span class="line">3911</span><br><span class="line">3912</span><br><span class="line">3913</span><br><span class="line">3914</span><br><span class="line">3915</span><br><span class="line">3916</span><br><span class="line">3917</span><br><span class="line">3918</span><br><span class="line">3919</span><br><span class="line">3920</span><br><span class="line">3921</span><br><span class="line">3922</span><br><span class="line">3923</span><br><span class="line">3924</span><br><span class="line">3925</span><br><span class="line">3926</span><br><span class="line">3927</span><br><span class="line">3928</span><br><span class="line">3929</span><br><span class="line">3930</span><br><span class="line">3931</span><br><span class="line">3932</span><br><span class="line">3933</span><br><span class="line">3934</span><br><span class="line">3935</span><br><span class="line">3936</span><br><span class="line">3937</span><br><span class="line">3938</span><br><span class="line">3939</span><br><span class="line">3940</span><br><span class="line">3941</span><br><span class="line">3942</span><br><span class="line">3943</span><br><span class="line">3944</span><br><span class="line">3945</span><br><span class="line">3946</span><br><span class="line">3947</span><br><span class="line">3948</span><br><span class="line">3949</span><br><span class="line">3950</span><br><span class="line">3951</span><br><span class="line">3952</span><br><span class="line">3953</span><br><span class="line">3954</span><br><span class="line">3955</span><br><span class="line">3956</span><br><span class="line">3957</span><br><span class="line">3958</span><br><span class="line">3959</span><br><span class="line">3960</span><br><span class="line">3961</span><br><span class="line">3962</span><br><span class="line">3963</span><br><span class="line">3964</span><br><span class="line">3965</span><br><span class="line">3966</span><br><span class="line">3967</span><br><span class="line">3968</span><br><span class="line">3969</span><br><span class="line">3970</span><br><span class="line">3971</span><br><span class="line">3972</span><br><span class="line">3973</span><br><span class="line">3974</span><br><span class="line">3975</span><br><span class="line">3976</span><br><span class="line">3977</span><br><span class="line">3978</span><br><span class="line">3979</span><br><span class="line">3980</span><br><span class="line">3981</span><br><span class="line">3982</span><br><span class="line">3983</span><br><span class="line">3984</span><br><span class="line">3985</span><br><span class="line">3986</span><br><span class="line">3987</span><br><span class="line">3988</span><br><span class="line">3989</span><br><span class="line">3990</span><br><span class="line">3991</span><br><span class="line">3992</span><br><span class="line">3993</span><br><span class="line">3994</span><br><span class="line">3995</span><br><span class="line">3996</span><br><span class="line">3997</span><br><span class="line">3998</span><br><span class="line">3999</span><br><span class="line">4000</span><br><span class="line">4001</span><br><span class="line">4002</span><br><span class="line">4003</span><br><span class="line">4004</span><br><span class="line">4005</span><br><span class="line">4006</span><br><span class="line">4007</span><br><span class="line">4008</span><br><span class="line">4009</span><br><span class="line">4010</span><br><span class="line">4011</span><br><span class="line">4012</span><br><span class="line">4013</span><br><span class="line">4014</span><br><span class="line">4015</span><br><span class="line">4016</span><br><span class="line">4017</span><br><span class="line">4018</span><br><span class="line">4019</span><br><span class="line">4020</span><br><span class="line">4021</span><br><span class="line">4022</span><br><span class="line">4023</span><br><span class="line">4024</span><br><span class="line">4025</span><br><span class="line">4026</span><br><span class="line">4027</span><br><span class="line">4028</span><br><span class="line">4029</span><br><span class="line">4030</span><br><span class="line">4031</span><br><span class="line">4032</span><br><span class="line">4033</span><br><span class="line">4034</span><br><span class="line">4035</span><br><span class="line">4036</span><br><span class="line">4037</span><br><span class="line">4038</span><br><span class="line">4039</span><br><span class="line">4040</span><br><span class="line">4041</span><br><span class="line">4042</span><br><span class="line">4043</span><br><span class="line">4044</span><br><span class="line">4045</span><br><span class="line">4046</span><br><span class="line">4047</span><br><span class="line">4048</span><br><span class="line">4049</span><br><span class="line">4050</span><br><span class="line">4051</span><br><span class="line">4052</span><br><span class="line">4053</span><br><span class="line">4054</span><br><span class="line">4055</span><br><span class="line">4056</span><br><span class="line">4057</span><br><span class="line">4058</span><br><span class="line">4059</span><br><span class="line">4060</span><br><span class="line">4061</span><br><span class="line">4062</span><br><span class="line">4063</span><br><span class="line">4064</span><br><span class="line">4065</span><br><span class="line">4066</span><br><span class="line">4067</span><br><span class="line">4068</span><br><span class="line">4069</span><br><span class="line">4070</span><br><span class="line">4071</span><br><span class="line">4072</span><br><span class="line">4073</span><br><span class="line">4074</span><br><span class="line">4075</span><br><span class="line">4076</span><br><span class="line">4077</span><br><span class="line">4078</span><br><span class="line">4079</span><br><span class="line">4080</span><br><span class="line">4081</span><br><span class="line">4082</span><br><span class="line">4083</span><br><span class="line">4084</span><br><span class="line">4085</span><br><span class="line">4086</span><br><span class="line">4087</span><br><span class="line">4088</span><br><span class="line">4089</span><br><span class="line">4090</span><br><span class="line">4091</span><br><span class="line">4092</span><br><span class="line">4093</span><br><span class="line">4094</span><br><span class="line">4095</span><br><span class="line">4096</span><br><span class="line">4097</span><br><span class="line">4098</span><br><span class="line">4099</span><br><span class="line">4100</span><br><span class="line">4101</span><br><span class="line">4102</span><br><span class="line">4103</span><br><span class="line">4104</span><br><span class="line">4105</span><br><span class="line">4106</span><br><span class="line">4107</span><br><span class="line">4108</span><br><span class="line">4109</span><br><span class="line">4110</span><br><span class="line">4111</span><br><span class="line">4112</span><br><span class="line">4113</span><br><span class="line">4114</span><br><span class="line">4115</span><br><span class="line">4116</span><br><span class="line">4117</span><br><span class="line">4118</span><br><span class="line">4119</span><br><span class="line">4120</span><br><span class="line">4121</span><br><span class="line">4122</span><br><span class="line">4123</span><br><span class="line">4124</span><br><span class="line">4125</span><br><span class="line">4126</span><br><span class="line">4127</span><br><span class="line">4128</span><br><span class="line">4129</span><br><span class="line">4130</span><br><span class="line">4131</span><br><span class="line">4132</span><br><span class="line">4133</span><br><span class="line">4134</span><br><span class="line">4135</span><br><span class="line">4136</span><br><span class="line">4137</span><br><span class="line">4138</span><br><span class="line">4139</span><br><span class="line">4140</span><br><span class="line">4141</span><br><span class="line">4142</span><br><span class="line">4143</span><br><span class="line">4144</span><br><span class="line">4145</span><br><span class="line">4146</span><br><span class="line">4147</span><br><span class="line">4148</span><br><span class="line">4149</span><br><span class="line">4150</span><br><span class="line">4151</span><br><span class="line">4152</span><br><span class="line">4153</span><br><span class="line">4154</span><br><span class="line">4155</span><br><span class="line">4156</span><br><span class="line">4157</span><br><span class="line">4158</span><br><span class="line">4159</span><br><span class="line">4160</span><br><span class="line">4161</span><br><span class="line">4162</span><br><span class="line">4163</span><br><span class="line">4164</span><br><span class="line">4165</span><br><span class="line">4166</span><br><span class="line">4167</span><br><span class="line">4168</span><br><span class="line">4169</span><br><span class="line">4170</span><br><span class="line">4171</span><br><span class="line">4172</span><br><span class="line">4173</span><br><span class="line">4174</span><br><span class="line">4175</span><br><span class="line">4176</span><br><span class="line">4177</span><br><span class="line">4178</span><br><span class="line">4179</span><br><span class="line">4180</span><br><span class="line">4181</span><br><span class="line">4182</span><br><span class="line">4183</span><br><span class="line">4184</span><br><span class="line">4185</span><br><span class="line">4186</span><br><span class="line">4187</span><br><span class="line">4188</span><br><span class="line">4189</span><br><span class="line">4190</span><br><span class="line">4191</span><br><span class="line">4192</span><br><span class="line">4193</span><br><span class="line">4194</span><br><span class="line">4195</span><br><span class="line">4196</span><br><span class="line">4197</span><br><span class="line">4198</span><br><span class="line">4199</span><br><span class="line">4200</span><br><span class="line">4201</span><br><span class="line">4202</span><br><span class="line">4203</span><br><span class="line">4204</span><br><span class="line">4205</span><br><span class="line">4206</span><br><span class="line">4207</span><br><span class="line">4208</span><br><span class="line">4209</span><br><span class="line">4210</span><br><span class="line">4211</span><br><span class="line">4212</span><br><span class="line">4213</span><br><span class="line">4214</span><br><span class="line">4215</span><br><span class="line">4216</span><br><span class="line">4217</span><br><span class="line">4218</span><br><span class="line">4219</span><br><span class="line">4220</span><br><span class="line">4221</span><br><span class="line">4222</span><br><span class="line">4223</span><br><span class="line">4224</span><br><span class="line">4225</span><br><span class="line">4226</span><br><span class="line">4227</span><br><span class="line">4228</span><br><span class="line">4229</span><br><span class="line">4230</span><br><span class="line">4231</span><br><span class="line">4232</span><br><span class="line">4233</span><br><span class="line">4234</span><br><span class="line">4235</span><br><span class="line">4236</span><br><span class="line">4237</span><br><span class="line">4238</span><br><span class="line">4239</span><br><span class="line">4240</span><br><span class="line">4241</span><br><span class="line">4242</span><br><span class="line">4243</span><br><span class="line">4244</span><br><span class="line">4245</span><br><span class="line">4246</span><br><span class="line">4247</span><br><span class="line">4248</span><br><span class="line">4249</span><br><span class="line">4250</span><br><span class="line">4251</span><br><span class="line">4252</span><br><span class="line">4253</span><br><span class="line">4254</span><br><span class="line">4255</span><br><span class="line">4256</span><br><span class="line">4257</span><br><span class="line">4258</span><br><span class="line">4259</span><br><span class="line">4260</span><br><span class="line">4261</span><br><span class="line">4262</span><br><span class="line">4263</span><br><span class="line">4264</span><br><span class="line">4265</span><br><span class="line">4266</span><br><span class="line">4267</span><br><span class="line">4268</span><br><span class="line">4269</span><br><span class="line">4270</span><br><span class="line">4271</span><br><span class="line">4272</span><br><span class="line">4273</span><br><span class="line">4274</span><br><span class="line">4275</span><br><span class="line">4276</span><br><span class="line">4277</span><br><span class="line">4278</span><br><span class="line">4279</span><br><span class="line">4280</span><br><span class="line">4281</span><br><span class="line">4282</span><br><span class="line">4283</span><br><span class="line">4284</span><br><span class="line">4285</span><br><span class="line">4286</span><br><span class="line">4287</span><br><span class="line">4288</span><br><span class="line">4289</span><br><span class="line">4290</span><br><span class="line">4291</span><br><span class="line">4292</span><br><span class="line">4293</span><br><span class="line">4294</span><br><span class="line">4295</span><br><span class="line">4296</span><br><span class="line">4297</span><br><span class="line">4298</span><br><span class="line">4299</span><br><span class="line">4300</span><br><span class="line">4301</span><br><span class="line">4302</span><br><span class="line">4303</span><br><span class="line">4304</span><br><span class="line">4305</span><br><span class="line">4306</span><br><span class="line">4307</span><br><span class="line">4308</span><br><span class="line">4309</span><br><span class="line">4310</span><br><span class="line">4311</span><br><span class="line">4312</span><br><span class="line">4313</span><br><span class="line">4314</span><br><span class="line">4315</span><br><span class="line">4316</span><br><span class="line">4317</span><br><span class="line">4318</span><br><span class="line">4319</span><br><span class="line">4320</span><br><span class="line">4321</span><br><span class="line">4322</span><br><span class="line">4323</span><br><span class="line">4324</span><br><span class="line">4325</span><br><span class="line">4326</span><br><span class="line">4327</span><br><span class="line">4328</span><br><span class="line">4329</span><br><span class="line">4330</span><br><span class="line">4331</span><br><span class="line">4332</span><br><span class="line">4333</span><br><span class="line">4334</span><br><span class="line">4335</span><br><span class="line">4336</span><br><span class="line">4337</span><br><span class="line">4338</span><br><span class="line">4339</span><br><span class="line">4340</span><br><span class="line">4341</span><br><span class="line">4342</span><br><span class="line">4343</span><br><span class="line">4344</span><br><span class="line">4345</span><br><span class="line">4346</span><br><span class="line">4347</span><br><span class="line">4348</span><br><span class="line">4349</span><br><span class="line">4350</span><br><span class="line">4351</span><br><span class="line">4352</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># SPDX-FileCopyrightText: 2021 fosslinux &lt;fosslinux<span class="doctag">@aussies</span>.space&gt; </span></span><br><span class="line"><span class="comment"># SPDX-FileCopyrightText: 2024 Gábor Stefanik &lt;netrolller.3d<span class="doctag">@gmail</span>.com&gt;</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># SPDX-License-Identifier: MIT </span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Linux/x86 4.14.336 Kernel Configuration</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_64BIT</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_X86_64</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_X86</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_INSTRUCTION_DECODER</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_OUTPUT_FORMAT</span>=<span class="string">&quot;elf64-x86-64&quot;</span></span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_DEFCONFIG</span>=<span class="string">&quot;arch/x86/configs/x86_64_defconfig&quot;</span></span><br><span class="line"><span class="variable constant_">CONFIG_LOCKDEP_SUPPORT</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_STACKTRACE_SUPPORT</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_MMU</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_MMAP_RND_BITS_MIN</span>=<span class="number">28</span></span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_MMAP_RND_BITS_MAX</span>=<span class="number">32</span></span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN</span>=<span class="number">8</span></span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX</span>=<span class="number">16</span></span><br><span class="line"><span class="variable constant_">CONFIG_NEED_DMA_MAP_STATE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_NEED_SG_DMA_LENGTH</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_GENERIC_ISA_DMA</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_GENERIC_BUG</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_GENERIC_BUG_RELATIVE_POINTERS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_GENERIC_HWEIGHT</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_MAY_HAVE_PC_FDC</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_RWSEM_XCHGADD_ALGORITHM</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_GENERIC_CALIBRATE_DELAY</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_HAS_CPU_RELAX</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_HAS_CACHE_LINE_SIZE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_SETUP_PER_CPU_AREA</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_HIBERNATION_POSSIBLE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_SUSPEND_POSSIBLE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_WANT_HUGE_PMD_SHARE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_WANT_GENERAL_HUGETLB</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ZONE_DMA32</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_AUDIT_ARCH</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_INTEL_TXT</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_X86_64_SMP</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_SUPPORTS_UPROBES</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_FIX_EARLYCON_MEM</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_PGTABLE_LEVELS</span>=<span class="number">4</span></span><br><span class="line"><span class="variable constant_">CONFIG_DEFCONFIG_LIST</span>=<span class="string">&quot;/lib/modules/$UNAME_RELEASE/.config&quot;</span></span><br><span class="line"><span class="variable constant_">CONFIG_IRQ_WORK</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_BUILDTIME_EXTABLE_SORT</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_THREAD_INFO_IN_TASK</span>=y</span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># General setup</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_INIT_ENV_ARG_LIMIT</span>=<span class="number">32</span></span><br><span class="line"><span class="variable constant_">CONFIG_CROSS_COMPILE</span>=<span class="string">&quot;&quot;</span></span><br><span class="line"><span class="comment"># CONFIG_COMPILE_TEST is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_LOCALVERSION</span>=<span class="string">&quot;_1&quot;</span></span><br><span class="line"><span class="comment"># CONFIG_LOCALVERSION_AUTO is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_KERNEL_GZIP</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_KERNEL_BZIP2</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_KERNEL_LZMA</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_KERNEL_XZ</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_KERNEL_LZO</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_KERNEL_LZ4</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_KERNEL_GZIP</span>=y</span><br><span class="line"><span class="comment"># CONFIG_KERNEL_BZIP2 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_KERNEL_LZMA is not set</span></span><br><span class="line"><span class="comment"># CONFIG_KERNEL_XZ is not set</span></span><br><span class="line"><span class="comment"># CONFIG_KERNEL_LZO is not set</span></span><br><span class="line"><span class="comment"># CONFIG_KERNEL_LZ4 is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_DEFAULT_HOSTNAME</span>=<span class="string">&quot;live-bootstrap&quot;</span></span><br><span class="line"><span class="variable constant_">CONFIG_SWAP</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SYSVIPC</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SYSVIPC_SYSCTL</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_POSIX_MQUEUE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_POSIX_MQUEUE_SYSCTL</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_CROSS_MEMORY_ATTACH</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_FHANDLE</span>=y</span><br><span class="line"><span class="comment"># CONFIG_USELIB is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_AUDIT</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_ARCH_AUDITSYSCALL</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_AUDITSYSCALL</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_AUDIT_WATCH</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_AUDIT_TREE</span>=y</span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># IRQ subsystem</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_GENERIC_IRQ_PROBE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_GENERIC_IRQ_SHOW</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_GENERIC_PENDING_IRQ</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_GENERIC_IRQ_MIGRATION</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_IRQ_DOMAIN</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_IRQ_DOMAIN_HIERARCHY</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_GENERIC_MSI_IRQ</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_GENERIC_MSI_IRQ_DOMAIN</span>=y</span><br><span class="line"><span class="comment"># CONFIG_IRQ_DOMAIN_DEBUG is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_IRQ_FORCED_THREADING</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SPARSE_IRQ</span>=y</span><br><span class="line"><span class="comment"># CONFIG_GENERIC_IRQ_DEBUGFS is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_CLOCKSOURCE_WATCHDOG</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_CLOCKSOURCE_DATA</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_CLOCKSOURCE_VALIDATE_LAST_CYCLE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_GENERIC_TIME_VSYSCALL</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_GENERIC_CLOCKEVENTS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_GENERIC_CLOCKEVENTS_BROADCAST</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_GENERIC_CLOCKEVENTS_MIN_ADJUST</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_GENERIC_CMOS_UPDATE</span>=y</span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Timers subsystem</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_TICK_ONESHOT</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_NO_HZ_COMMON</span>=y</span><br><span class="line"><span class="comment"># CONFIG_HZ_PERIODIC is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_NO_HZ_IDLE</span>=y</span><br><span class="line"><span class="comment"># CONFIG_NO_HZ_FULL is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NO_HZ is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_HIGH_RES_TIMERS</span>=y</span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CPU/Task time and stats accounting</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_TICK_CPU_ACCOUNTING</span>=y</span><br><span class="line"><span class="comment"># CONFIG_VIRT_CPU_ACCOUNTING_GEN is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_IRQ_TIME_ACCOUNTING</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_BSD_PROCESS_ACCT</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_BSD_PROCESS_ACCT_V3</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_TASKSTATS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_TASK_DELAY_ACCT</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_TASK_XACCT</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_TASK_IO_ACCOUNTING</span>=y</span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># RCU Subsystem</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_PREEMPT_RCU</span>=y</span><br><span class="line"><span class="comment"># CONFIG_RCU_EXPERT is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_SRCU</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_TREE_SRCU</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_TASKS_RCU</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_RCU_STALL_COMMON</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_RCU_NEED_SEGCBLIST</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_BUILD_BIN2C</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_IKCONFIG</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_IKCONFIG_PROC</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_LOG_BUF_SHIFT</span>=<span class="number">19</span></span><br><span class="line"><span class="variable constant_">CONFIG_LOG_CPU_MAX_BUF_SHIFT</span>=<span class="number">12</span></span><br><span class="line"><span class="variable constant_">CONFIG_PRINTK_SAFE_LOG_BUF_SHIFT</span>=<span class="number">13</span></span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_UNSTABLE_SCHED_CLOCK</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_SUPPORTS_NUMA_BALANCING</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_SUPPORTS_INT128</span>=y</span><br><span class="line"><span class="comment"># CONFIG_NUMA_BALANCING is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_CGROUPS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_PAGE_COUNTER</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_MEMCG</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_MEMCG_SWAP</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_MEMCG_SWAP_ENABLED</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_BLK_CGROUP</span>=y</span><br><span class="line"><span class="comment"># CONFIG_DEBUG_BLK_CGROUP is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_CGROUP_WRITEBACK</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_CGROUP_SCHED</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_FAIR_GROUP_SCHED</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_CFS_BANDWIDTH</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_RT_GROUP_SCHED</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_CGROUP_PIDS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_CGROUP_RDMA</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_CGROUP_FREEZER</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_CGROUP_HUGETLB</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_CPUSETS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_PROC_PID_CPUSET</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_CGROUP_DEVICE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_CGROUP_CPUACCT</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_CGROUP_PERF</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_CGROUP_BPF</span>=y</span><br><span class="line"><span class="comment"># CONFIG_CGROUP_DEBUG is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_SOCK_CGROUP_DATA</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_CHECKPOINT_RESTORE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_NAMESPACES</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_UTS_NS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_IPC_NS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_USER_NS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_PID_NS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_NET_NS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SCHED_AUTOGROUP</span>=y</span><br><span class="line"><span class="comment"># CONFIG_SYSFS_DEPRECATED is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_RELAY</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_BLK_DEV_INITRD</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_INITRAMFS_SOURCE</span>=<span class="string">&quot;&quot;</span></span><br><span class="line"><span class="variable constant_">CONFIG_RD_GZIP</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_RD_BZIP2</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_RD_LZMA</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_RD_XZ</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_RD_LZO</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_RD_LZ4</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE</span>=y</span><br><span class="line"><span class="comment"># CONFIG_CC_OPTIMIZE_FOR_SIZE is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_SYSCTL</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ANON_INODES</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_UID16</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SYSCTL_EXCEPTION_TRACE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_PCSPKR_PLATFORM</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_BPF</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_EXPERT</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_UID16</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_MULTIUSER</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SGETMASK_SYSCALL</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SYSFS_SYSCALL</span>=y</span><br><span class="line"><span class="comment"># CONFIG_SYSCTL_SYSCALL is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_POSIX_TIMERS</span>=y</span><br><span class="line"><span class="comment"># CONFIG_KALLSYMS is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_PRINTK</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_PRINTK_NMI</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_BUG</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ELF_CORE</span>=y</span><br><span class="line"><span class="comment"># CONFIG_PCSPKR_PLATFORM is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_BASE_FULL</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_FUTEX</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_FUTEX_PI</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_EPOLL</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SIGNALFD</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_TIMERFD</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_EVENTFD</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_BPF_SYSCALL</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SHMEM</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_AIO</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ADVISE_SYSCALLS</span>=y</span><br><span class="line"><span class="comment"># CONFIG_BPF_UNPRIV_DEFAULT_OFF is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_USERFAULTFD</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_PCI_QUIRKS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_MEMBARRIER</span>=y</span><br><span class="line"><span class="comment"># CONFIG_EMBEDDED is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_PERF_EVENTS</span>=y</span><br><span class="line"><span class="comment"># CONFIG_PC104 is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Kernel Performance Events And Counters</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_PERF_EVENTS</span>=y</span><br><span class="line"><span class="comment"># CONFIG_DEBUG_PERF_USE_VMALLOC is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_VM_EVENT_COUNTERS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SLUB_DEBUG</span>=y</span><br><span class="line"><span class="comment"># CONFIG_SLUB_MEMCG_SYSFS_ON is not set</span></span><br><span class="line"><span class="comment"># CONFIG_COMPAT_BRK is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SLAB is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_SLUB</span>=y</span><br><span class="line"><span class="comment"># CONFIG_SLOB is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_SLAB_MERGE_DEFAULT</span>=y</span><br><span class="line"><span class="comment"># CONFIG_SLAB_FREELIST_RANDOM is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SLAB_FREELIST_HARDENED is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_SLUB_CPU_PARTIAL</span>=y</span><br><span class="line"><span class="comment"># CONFIG_SYSTEM_DATA_VERIFICATION is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_PROFILING</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_CRASH_CORE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_KEXEC_CORE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HOTPLUG_SMT</span>=y</span><br><span class="line"><span class="comment"># CONFIG_OPROFILE is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_OPROFILE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_OPROFILE_NMI_TIMER</span>=y</span><br><span class="line"><span class="comment"># CONFIG_JUMP_LABEL is not set</span></span><br><span class="line"><span class="comment"># CONFIG_UPROBES is not set</span></span><br><span class="line"><span class="comment"># CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_USE_BUILTIN_BSWAP</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_IOREMAP_PROT</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_KPROBES</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_KRETPROBES</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_OPTPROBES</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_KPROBES_ON_FTRACE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_NMI</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_ARCH_TRACEHOOK</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_DMA_CONTIGUOUS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_GENERIC_SMP_IDLE_THREAD</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_HAS_FORTIFY_SOURCE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_HAS_SET_MEMORY</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_HAS_CPU_FINALIZE_INIT</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_WANTS_DYNAMIC_TASK_STRUCT</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_REGS_AND_STACK_ACCESS_API</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_CLK</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_DMA_API_DEBUG</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_HW_BREAKPOINT</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_MIXED_BREAKPOINTS_REGS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_USER_RETURN_NOTIFIER</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_PERF_EVENTS_NMI</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_HARDLOCKUP_DETECTOR_PERF</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_PERF_REGS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_PERF_USER_STACK_DUMP</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_ARCH_JUMP_LABEL</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_RCU_TABLE_FREE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_RCU_TABLE_INVALIDATE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_ALIGNED_STRUCT_PAGE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_CMPXCHG_LOCAL</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_CMPXCHG_DOUBLE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_WANT_COMPAT_IPC_PARSE_VERSION</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_WANT_OLD_COMPAT_IPC</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_ARCH_SECCOMP_FILTER</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SECCOMP_FILTER</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_GCC_PLUGINS</span>=y</span><br><span class="line"><span class="comment"># CONFIG_GCC_PLUGINS is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_CC_STACKPROTECTOR</span>=y</span><br><span class="line"><span class="comment"># CONFIG_CC_STACKPROTECTOR is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_CC_STACKPROTECTOR_NONE</span>=y</span><br><span class="line"><span class="comment"># CONFIG_CC_STACKPROTECTOR_REGULAR is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CC_STACKPROTECTOR_STRONG is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_THIN_ARCHIVES</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_ARCH_WITHIN_STACK_FRAMES</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_CONTEXT_TRACKING</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_IRQ_TIME_ACCOUNTING</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_ARCH_HUGE_VMAP</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_ARCH_SOFT_DIRTY</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_MOD_ARCH_SPECIFIC</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_MODULES_USE_ELF_RELA</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_IRQ_EXIT_ON_IRQ_STACK</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_HAS_ELF_RANDOMIZE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_ARCH_MMAP_RND_BITS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_EXIT_THREAD</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_MMAP_RND_BITS</span>=<span class="number">28</span></span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_ARCH_MMAP_RND_COMPAT_BITS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_MMAP_RND_COMPAT_BITS</span>=<span class="number">8</span></span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_ARCH_COMPAT_MMAP_BASES</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_COPY_THREAD_TLS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_STACK_VALIDATION</span>=y</span><br><span class="line"><span class="comment"># CONFIG_HAVE_ARCH_HASH is not set</span></span><br><span class="line"><span class="comment"># CONFIG_ISA_BUS_API is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_OLD_SIGSUSPEND3</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_COMPAT_OLD_SIGACTION</span>=y</span><br><span class="line"><span class="comment"># CONFIG_CPU_NO_EFFICIENT_FFS is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_ARCH_VMAP_STACK</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_VMAP_STACK</span>=y</span><br><span class="line"><span class="comment"># CONFIG_ARCH_OPTIONAL_KERNEL_RWX is not set</span></span><br><span class="line"><span class="comment"># CONFIG_ARCH_OPTIONAL_KERNEL_RWX_DEFAULT is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_HAS_STRICT_KERNEL_RWX</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_STRICT_KERNEL_RWX</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_HAS_STRICT_MODULE_RWX</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_HAS_REFCOUNT</span>=y</span><br><span class="line"><span class="comment"># CONFIG_REFCOUNT_FULL is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_USE_MEMREMAP_PROT</span>=y</span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># GCOV-based kernel profiling</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_GCOV_KERNEL is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_HAS_GCOV_PROFILE_ALL</span>=y</span><br><span class="line"><span class="comment"># CONFIG_HAVE_GENERIC_DMA_COHERENT is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_SLABINFO</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_RT_MUTEXES</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_BASE_SMALL</span>=<span class="number">0</span></span><br><span class="line"><span class="comment"># CONFIG_MODULES is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_MODULES_TREE_LOOKUP</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_BLOCK</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_BLK_SCSI_REQUEST</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_BLK_DEV_BSG</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_BLK_DEV_BSGLIB</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_BLK_DEV_INTEGRITY</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_BLK_DEV_ZONED</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_BLK_DEV_THROTTLING</span>=y</span><br><span class="line"><span class="comment"># CONFIG_BLK_DEV_THROTTLING_LOW is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_BLK_CMDLINE_PARSER</span>=y</span><br><span class="line"><span class="comment"># CONFIG_BLK_WBT is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_BLK_DEBUG_FS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_BLK_SED_OPAL</span>=y</span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Partition Types</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_PARTITION_ADVANCED</span>=y</span><br><span class="line"><span class="comment"># CONFIG_ACORN_PARTITION is not set</span></span><br><span class="line"><span class="comment"># CONFIG_AIX_PARTITION is not set</span></span><br><span class="line"><span class="comment"># CONFIG_OSF_PARTITION is not set</span></span><br><span class="line"><span class="comment"># CONFIG_AMIGA_PARTITION is not set</span></span><br><span class="line"><span class="comment"># CONFIG_ATARI_PARTITION is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_MAC_PARTITION</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_MSDOS_PARTITION</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_BSD_DISKLABEL</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_MINIX_SUBPARTITION</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SOLARIS_X86_PARTITION</span>=y</span><br><span class="line"><span class="comment"># CONFIG_UNIXWARE_DISKLABEL is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_LDM_PARTITION</span>=y</span><br><span class="line"><span class="comment"># CONFIG_LDM_DEBUG is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SGI_PARTITION is not set</span></span><br><span class="line"><span class="comment"># CONFIG_ULTRIX_PARTITION is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SUN_PARTITION is not set</span></span><br><span class="line"><span class="comment"># CONFIG_KARMA_PARTITION is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_EFI_PARTITION</span>=y</span><br><span class="line"><span class="comment"># CONFIG_SYSV68_PARTITION is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_CMDLINE_PARTITION</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_BLOCK_COMPAT</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_BLK_MQ_PCI</span>=y</span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># IO Schedulers</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_IOSCHED_NOOP</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_IOSCHED_DEADLINE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_IOSCHED_CFQ</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_CFQ_GROUP_IOSCHED</span>=y</span><br><span class="line"><span class="comment"># CONFIG_DEFAULT_DEADLINE is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_DEFAULT_CFQ</span>=y</span><br><span class="line"><span class="comment"># CONFIG_DEFAULT_NOOP is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_DEFAULT_IOSCHED</span>=<span class="string">&quot;cfq&quot;</span></span><br><span class="line"><span class="variable constant_">CONFIG_MQ_IOSCHED_DEADLINE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_MQ_IOSCHED_KYBER</span>=y</span><br><span class="line"><span class="comment"># CONFIG_IOSCHED_BFQ is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_ASN1</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_UNINLINE_SPIN_UNLOCK</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_SUPPORTS_ATOMIC_RMW</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_MUTEX_SPIN_ON_OWNER</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_RWSEM_SPIN_ON_OWNER</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_LOCK_SPIN_ON_OWNER</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_USE_QUEUED_SPINLOCKS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_QUEUED_SPINLOCKS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_USE_QUEUED_RWLOCKS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_QUEUED_RWLOCKS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_FREEZER</span>=y</span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Processor type and features</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_ZONE_DMA</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SMP</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_X86_FEATURE_NAMES</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_X86_FAST_FEATURE_TESTS</span>=y</span><br><span class="line"><span class="comment"># CONFIG_X86_X2APIC is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_X86_MPPARSE</span>=y</span><br><span class="line"><span class="comment"># CONFIG_GOLDFISH is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RETPOLINE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INTEL_RDT is not set</span></span><br><span class="line"><span class="comment"># CONFIG_X86_EXTENDED_PLATFORM is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_X86_INTEL_LPSS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_X86_AMD_PLATFORM_DEVICE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_IOSF_MBI</span>=y</span><br><span class="line"><span class="comment"># CONFIG_IOSF_MBI_DEBUG is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_X86_SUPPORTS_MEMORY_FAILURE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SCHED_OMIT_FRAME_POINTER</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HYPERVISOR_GUEST</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_PARAVIRT</span>=y</span><br><span class="line"><span class="comment"># CONFIG_PARAVIRT_DEBUG is not set</span></span><br><span class="line"><span class="comment"># CONFIG_PARAVIRT_SPINLOCKS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_XEN is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_KVM_GUEST</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_KVM_DEBUG_FS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_PARAVIRT_TIME_ACCOUNTING</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_PARAVIRT_CLOCK</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_NO_BOOTMEM</span>=y</span><br><span class="line"><span class="comment"># CONFIG_MK8 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MPSC is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MCORE2 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MATOM is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_GENERIC_CPU</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_X86_INTERNODE_CACHE_SHIFT</span>=<span class="number">6</span></span><br><span class="line"><span class="variable constant_">CONFIG_X86_L1_CACHE_SHIFT</span>=<span class="number">6</span></span><br><span class="line"><span class="variable constant_">CONFIG_X86_TSC</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_X86_CMPXCHG64</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_X86_CMOV</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_X86_MINIMUM_CPU_FAMILY</span>=<span class="number">64</span></span><br><span class="line"><span class="variable constant_">CONFIG_X86_DEBUGCTLMSR</span>=y</span><br><span class="line"><span class="comment"># CONFIG_PROCESSOR_SELECT is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_CPU_SUP_INTEL</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_CPU_SUP_AMD</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_CPU_SUP_CENTAUR</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HPET_TIMER</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HPET_EMULATE_RTC</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_DMI</span>=y</span><br><span class="line"><span class="comment"># CONFIG_GART_IOMMU is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CALGARY_IOMMU is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_SWIOTLB</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_IOMMU_HELPER</span>=y</span><br><span class="line"><span class="comment"># CONFIG_MAXSMP is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_NR_CPUS</span>=<span class="number">64</span></span><br><span class="line"><span class="variable constant_">CONFIG_SCHED_SMT</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SCHED_MC</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SCHED_MC_PRIO</span>=y</span><br><span class="line"><span class="comment"># CONFIG_PREEMPT_NONE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_PREEMPT_VOLUNTARY is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_PREEMPT</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_PREEMPT_COUNT</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_X86_LOCAL_APIC</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_X86_IO_APIC</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_X86_MCE</span>=y</span><br><span class="line"><span class="comment"># CONFIG_X86_MCELOG_LEGACY is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_X86_MCE_INTEL</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_X86_MCE_AMD</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_X86_MCE_THRESHOLD</span>=y</span><br><span class="line"><span class="comment"># CONFIG_X86_MCE_INJECT is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_X86_THERMAL_VECTOR</span>=y</span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Performance monitoring</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_PERF_EVENTS_INTEL_UNCORE</span>=y</span><br><span class="line"><span class="comment"># CONFIG_PERF_EVENTS_INTEL_RAPL is not set</span></span><br><span class="line"><span class="comment"># CONFIG_PERF_EVENTS_INTEL_CSTATE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_PERF_EVENTS_AMD_POWER is not set</span></span><br><span class="line"><span class="comment"># CONFIG_VM86 is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_X86_16BIT</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_X86_ESPFIX64</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_X86_VSYSCALL_EMULATION</span>=y</span><br><span class="line"><span class="comment"># CONFIG_I8K is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MICROCODE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_X86_MSR is not set</span></span><br><span class="line"><span class="comment"># CONFIG_X86_CPUID is not set</span></span><br><span class="line"><span class="comment"># CONFIG_X86_5LEVEL is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_PHYS_ADDR_T_64BIT</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_DMA_ADDR_T_64BIT</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_X86_DIRECT_GBPAGES</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_HAS_MEM_ENCRYPT</span>=y</span><br><span class="line"><span class="comment"># CONFIG_AMD_MEM_ENCRYPT is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_NUMA</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_AMD_NUMA</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_X86_64_ACPI_NUMA</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_NODES_SPAN_OTHER_NODES</span>=y</span><br><span class="line"><span class="comment"># CONFIG_NUMA_EMU is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_NODES_SHIFT</span>=<span class="number">3</span></span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_SPARSEMEM_ENABLE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_SPARSEMEM_DEFAULT</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_SELECT_MEMORY_MODEL</span>=y</span><br><span class="line"><span class="comment"># CONFIG_ARCH_MEMORY_PROBE is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_PROC_KCORE_TEXT</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ILLEGAL_POINTER_VALUE</span>=<span class="number">0xdead000000000000</span></span><br><span class="line"><span class="variable constant_">CONFIG_SELECT_MEMORY_MODEL</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SPARSEMEM_MANUAL</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SPARSEMEM</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_NEED_MULTIPLE_NODES</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_MEMORY_PRESENT</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SPARSEMEM_EXTREME</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SPARSEMEM_VMEMMAP_ENABLE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SPARSEMEM_ALLOC_MEM_MAP_TOGETHER</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SPARSEMEM_VMEMMAP</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_MEMBLOCK</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_MEMBLOCK_NODE_MAP</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_GENERIC_GUP</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_DISCARD_MEMBLOCK</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_MEMORY_ISOLATION</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_BOOTMEM_INFO_NODE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_MEMORY_HOTPLUG</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_MEMORY_HOTPLUG_SPARSE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_MEMORY_HOTPLUG_DEFAULT_ONLINE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_MEMORY_HOTREMOVE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SPLIT_PTLOCK_CPUS</span>=<span class="number">4</span></span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_ENABLE_SPLIT_PMD_PTLOCK</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_COMPACTION</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_MIGRATION</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_ENABLE_HUGEPAGE_MIGRATION</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_ENABLE_THP_MIGRATION</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_PHYS_ADDR_T_64BIT</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_BOUNCE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_VIRT_TO_BUS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_MMU_NOTIFIER</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_KSM</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_DEFAULT_MMAP_MIN_ADDR</span>=<span class="number">65536</span></span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_SUPPORTS_MEMORY_FAILURE</span>=y</span><br><span class="line"><span class="comment"># CONFIG_MEMORY_FAILURE is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_TRANSPARENT_HUGEPAGE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS</span>=y</span><br><span class="line"><span class="comment"># CONFIG_TRANSPARENT_HUGEPAGE_MADVISE is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_WANTS_THP_SWAP</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_THP_SWAP</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_TRANSPARENT_HUGE_PAGECACHE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_CLEANCACHE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_FRONTSWAP</span>=y</span><br><span class="line"><span class="comment"># CONFIG_CMA is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MEM_SOFT_DIRTY is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_ZSWAP</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ZPOOL</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ZBUD</span>=y</span><br><span class="line"><span class="comment"># CONFIG_Z3FOLD is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_ZSMALLOC</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_PGTABLE_MAPPING</span>=y</span><br><span class="line"><span class="comment"># CONFIG_ZSMALLOC_STAT is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_GENERIC_EARLY_IOREMAP</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_SUPPORTS_DEFERRED_STRUCT_PAGE_INIT</span>=y</span><br><span class="line"><span class="comment"># CONFIG_DEFERRED_STRUCT_PAGE_INIT is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_IDLE_PAGE_TRACKING</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_HAS_ZONE_DEVICE</span>=y</span><br><span class="line"><span class="comment"># CONFIG_ZONE_DEVICE is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_USES_HIGH_VMA_FLAGS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_HAS_PKEYS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_PERCPU_STATS</span>=y</span><br><span class="line"><span class="comment"># CONFIG_X86_PMEM_LEGACY is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_X86_CHECK_BIOS_CORRUPTION</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_X86_RESERVE_LOW</span>=<span class="number">64</span></span><br><span class="line"><span class="variable constant_">CONFIG_MTRR</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_MTRR_SANITIZER</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT</span>=<span class="number">0</span></span><br><span class="line"><span class="variable constant_">CONFIG_MTRR_SANITIZER_SPARE_REG_NR_DEFAULT</span>=<span class="number">1</span></span><br><span class="line"><span class="variable constant_">CONFIG_X86_PAT</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_USES_PG_UNCACHED</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_RANDOM</span>=y</span><br><span class="line"><span class="comment"># CONFIG_X86_SMAP is not set</span></span><br><span class="line"><span class="comment"># CONFIG_X86_INTEL_MPX is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_X86_INTEL_TSX_MODE_OFF</span>=y</span><br><span class="line"><span class="comment"># CONFIG_X86_INTEL_TSX_MODE_ON is not set</span></span><br><span class="line"><span class="comment"># CONFIG_X86_INTEL_TSX_MODE_AUTO is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_EFI</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_EFI_STUB</span>=y</span><br><span class="line"><span class="comment"># CONFIG_EFI_MIXED is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_SECCOMP</span>=y</span><br><span class="line"><span class="comment"># CONFIG_HZ_100 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_HZ_250 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_HZ_300 is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_HZ_1000</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HZ</span>=<span class="number">1000</span></span><br><span class="line"><span class="variable constant_">CONFIG_SCHED_HRTICK</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_KEXEC</span>=y</span><br><span class="line"><span class="comment"># CONFIG_KEXEC_FILE is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_CRASH_DUMP</span>=y</span><br><span class="line"><span class="comment"># CONFIG_KEXEC_JUMP is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_PHYSICAL_START</span>=<span class="number">0x1000000</span></span><br><span class="line"><span class="variable constant_">CONFIG_RELOCATABLE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_RANDOMIZE_BASE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_X86_NEED_RELOCS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_PHYSICAL_ALIGN</span>=<span class="number">0x1000000</span></span><br><span class="line"><span class="variable constant_">CONFIG_RANDOMIZE_MEMORY</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_RANDOMIZE_MEMORY_PHYSICAL_PADDING</span>=<span class="number">0xa</span></span><br><span class="line"><span class="variable constant_">CONFIG_HOTPLUG_CPU</span>=y</span><br><span class="line"><span class="comment"># CONFIG_BOOTPARAM_HOTPLUG_CPU0 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_DEBUG_HOTPLUG_CPU0 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_COMPAT_VDSO is not set</span></span><br><span class="line"><span class="comment"># CONFIG_LEGACY_VSYSCALL_NATIVE is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_LEGACY_VSYSCALL_EMULATE</span>=y</span><br><span class="line"><span class="comment"># CONFIG_LEGACY_VSYSCALL_NONE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CMDLINE_BOOL is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_MODIFY_LDT_SYSCALL</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_LIVEPATCH</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_HAS_ADD_PAGES</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_USE_PERCPU_NUMA_NODE_ID</span>=y</span><br><span class="line"><span class="comment"># CONFIG_GDS_FORCE_MITIGATION is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Power management and ACPI options</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_HIBERNATION_HEADER</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SUSPEND</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SUSPEND_FREEZER</span>=y</span><br><span class="line"><span class="comment"># CONFIG_SUSPEND_SKIP_SYNC is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_HIBERNATE_CALLBACKS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HIBERNATION</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_PM_STD_PARTITION</span>=<span class="string">&quot;&quot;</span></span><br><span class="line"><span class="variable constant_">CONFIG_PM_SLEEP</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_PM_SLEEP_SMP</span>=y</span><br><span class="line"><span class="comment"># CONFIG_PM_AUTOSLEEP is not set</span></span><br><span class="line"><span class="comment"># CONFIG_PM_WAKELOCKS is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_PM</span>=y</span><br><span class="line"><span class="comment"># CONFIG_PM_DEBUG is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_PM_OPP</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_PM_CLK</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_WQ_POWER_EFFICIENT_DEFAULT</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ACPI</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ACPI_LEGACY_TABLES_LOOKUP</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_MIGHT_HAVE_ACPI_PDC</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ACPI_SYSTEM_POWER_STATES_SUPPORT</span>=y</span><br><span class="line"><span class="comment"># CONFIG_ACPI_DEBUGGER is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_ACPI_SLEEP</span>=y</span><br><span class="line"><span class="comment"># CONFIG_ACPI_PROCFS_POWER is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_ACPI_REV_OVERRIDE_POSSIBLE</span>=y</span><br><span class="line"><span class="comment"># CONFIG_ACPI_EC_DEBUGFS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_ACPI_AC is not set</span></span><br><span class="line"><span class="comment"># CONFIG_ACPI_BATTERY is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_ACPI_BUTTON</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ACPI_VIDEO</span>=y</span><br><span class="line"><span class="comment"># CONFIG_ACPI_FAN is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_ACPI_DOCK</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ACPI_CPU_FREQ_PSS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ACPI_PROCESSOR_CSTATE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ACPI_PROCESSOR_IDLE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ACPI_CPPC_LIB</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ACPI_PROCESSOR</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ACPI_HOTPLUG_CPU</span>=y</span><br><span class="line"><span class="comment"># CONFIG_ACPI_PROCESSOR_AGGREGATOR is not set</span></span><br><span class="line"><span class="comment"># CONFIG_ACPI_THERMAL is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_ACPI_NUMA</span>=y</span><br><span class="line"><span class="comment"># CONFIG_ACPI_CUSTOM_DSDT is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_HAS_ACPI_TABLE_UPGRADE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ACPI_TABLE_UPGRADE</span>=y</span><br><span class="line"><span class="comment"># CONFIG_ACPI_DEBUG is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_ACPI_PCI_SLOT</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_X86_PM_TIMER</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ACPI_CONTAINER</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ACPI_HOTPLUG_MEMORY</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ACPI_HOTPLUG_IOAPIC</span>=y</span><br><span class="line"><span class="comment"># CONFIG_ACPI_SBS is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_ACPI_HED</span>=y</span><br><span class="line"><span class="comment"># CONFIG_ACPI_CUSTOM_METHOD is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_ACPI_BGRT</span>=y</span><br><span class="line"><span class="comment"># CONFIG_ACPI_REDUCED_HARDWARE_ONLY is not set</span></span><br><span class="line"><span class="comment"># CONFIG_ACPI_NFIT is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_ACPI_APEI</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_ACPI_APEI_NMI</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ACPI_APEI</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ACPI_APEI_GHES</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ACPI_APEI_PCIEAER</span>=y</span><br><span class="line"><span class="comment"># CONFIG_ACPI_APEI_EINJ is not set</span></span><br><span class="line"><span class="comment"># CONFIG_ACPI_APEI_ERST_DEBUG is not set</span></span><br><span class="line"><span class="comment"># CONFIG_DPTF_POWER is not set</span></span><br><span class="line"><span class="comment"># CONFIG_ACPI_EXTLOG is not set</span></span><br><span class="line"><span class="comment"># CONFIG_PMIC_OPREGION is not set</span></span><br><span class="line"><span class="comment"># CONFIG_ACPI_CONFIGFS is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_SFI</span>=y</span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CPU Frequency scaling</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_CPU_FREQ</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_CPU_FREQ_GOV_ATTR_SET</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_CPU_FREQ_GOV_COMMON</span>=y</span><br><span class="line"><span class="comment"># CONFIG_CPU_FREQ_STAT is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND</span>=y</span><br><span class="line"><span class="comment"># CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_CPU_FREQ_GOV_PERFORMANCE</span>=y</span><br><span class="line"><span class="comment"># CONFIG_CPU_FREQ_GOV_POWERSAVE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CPU_FREQ_GOV_USERSPACE is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_CPU_FREQ_GOV_ONDEMAND</span>=y</span><br><span class="line"><span class="comment"># CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_CPU_FREQ_GOV_SCHEDUTIL</span>=y</span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CPU frequency scaling drivers</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_X86_INTEL_PSTATE</span>=y</span><br><span class="line"><span class="comment"># CONFIG_X86_PCC_CPUFREQ is not set</span></span><br><span class="line"><span class="comment"># CONFIG_X86_ACPI_CPUFREQ is not set</span></span><br><span class="line"><span class="comment"># CONFIG_X86_SPEEDSTEP_CENTRINO is not set</span></span><br><span class="line"><span class="comment"># CONFIG_X86_P4_CLOCKMOD is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># shared options</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_X86_SPEEDSTEP_LIB is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CPU Idle</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_CPU_IDLE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_CPU_IDLE_GOV_LADDER</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_CPU_IDLE_GOV_MENU</span>=y</span><br><span class="line"><span class="comment"># CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_INTEL_IDLE</span>=y</span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Bus options (PCI etc.)</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_PCI</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_PCI_DIRECT</span>=y</span><br><span class="line"><span class="comment"># CONFIG_PCI_MMCONFIG is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_PCI_DOMAINS</span>=y</span><br><span class="line"><span class="comment"># CONFIG_PCI_CNB20LE_QUIRK is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_PCIEPORTBUS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HOTPLUG_PCI_PCIE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_PCIEAER</span>=y</span><br><span class="line"><span class="comment"># CONFIG_PCIE_ECRC is not set</span></span><br><span class="line"><span class="comment"># CONFIG_PCIEAER_INJECT is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_PCIEASPM</span>=y</span><br><span class="line"><span class="comment"># CONFIG_PCIEASPM_DEBUG is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_PCIEASPM_DEFAULT</span>=y</span><br><span class="line"><span class="comment"># CONFIG_PCIEASPM_POWERSAVE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_PCIEASPM_POWER_SUPERSAVE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_PCIEASPM_PERFORMANCE is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_PCIE_PME</span>=y</span><br><span class="line"><span class="comment"># CONFIG_PCIE_DPC is not set</span></span><br><span class="line"><span class="comment"># CONFIG_PCIE_PTM is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_PCI_BUS_ADDR_T_64BIT</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_PCI_MSI</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_PCI_MSI_IRQ_DOMAIN</span>=y</span><br><span class="line"><span class="comment"># CONFIG_PCI_DEBUG is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_PCI_REALLOC_ENABLE_AUTO</span>=y</span><br><span class="line"><span class="comment"># CONFIG_PCI_STUB is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_HT_IRQ</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_PCI_ATS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_PCI_LOCKLESS_CONFIG</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_PCI_IOV</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_PCI_PRI</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_PCI_PASID</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_PCI_LABEL</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HOTPLUG_PCI</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HOTPLUG_PCI_ACPI</span>=y</span><br><span class="line"><span class="comment"># CONFIG_HOTPLUG_PCI_ACPI_IBM is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_HOTPLUG_PCI_CPCI</span>=y</span><br><span class="line"><span class="comment"># CONFIG_HOTPLUG_PCI_CPCI_ZT5550 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_HOTPLUG_PCI_CPCI_GENERIC is not set</span></span><br><span class="line"><span class="comment"># CONFIG_HOTPLUG_PCI_SHPC is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># DesignWare PCI Core Support</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_PCIE_DW</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_PCIE_DW_HOST</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_PCIE_DW_PLAT</span>=y</span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># PCI host controller drivers</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_VMD is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># PCI Endpoint</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_PCI_ENDPOINT is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># PCI switch controller drivers</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_PCI_SW_SWITCHTEC is not set</span></span><br><span class="line"><span class="comment"># CONFIG_ISA_BUS is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_ISA_DMA_API</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_AMD_NB</span>=y</span><br><span class="line"><span class="comment"># CONFIG_PCCARD is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RAPIDIO is not set</span></span><br><span class="line"><span class="comment"># CONFIG_X86_SYSFB is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Executable file formats / Emulations</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_BINFMT_ELF</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_COMPAT_BINFMT_ELF</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ELFCORE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_BINFMT_SCRIPT</span>=y</span><br><span class="line"><span class="comment"># CONFIG_HAVE_AOUT is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_BINFMT_MISC</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_COREDUMP</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_IA32_EMULATION</span>=y</span><br><span class="line"><span class="comment"># CONFIG_IA32_AOUT is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_X86_X32</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_COMPAT_32</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_COMPAT</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_COMPAT_FOR_U64_ALIGNMENT</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SYSVIPC_COMPAT</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_X86_DEV_DMA_OPS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_NET</span>=y</span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Networking options</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_PACKET</span>=y</span><br><span class="line"><span class="comment"># CONFIG_PACKET_DIAG is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_UNIX</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_UNIX_SCM</span>=y</span><br><span class="line"><span class="comment"># CONFIG_UNIX_DIAG is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TLS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_XFRM_USER is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NET_KEY is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_INET</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_IP_MULTICAST</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_IP_ADVANCED_ROUTER</span>=y</span><br><span class="line"><span class="comment"># CONFIG_IP_FIB_TRIE_STATS is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_IP_MULTIPLE_TABLES</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_IP_ROUTE_MULTIPATH</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_IP_ROUTE_VERBOSE</span>=y</span><br><span class="line"><span class="comment"># CONFIG_IP_PNP is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NET_IPIP is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NET_IPGRE_DEMUX is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NET_IP_TUNNEL is not set</span></span><br><span class="line"><span class="comment"># CONFIG_IP_MROUTE is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_SYN_COOKIES</span>=y</span><br><span class="line"><span class="comment"># CONFIG_NET_UDP_TUNNEL is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NET_FOU is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INET_AH is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INET_ESP is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INET_IPCOMP is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_INET_TABLE_PERTURB_ORDER</span>=<span class="number">16</span></span><br><span class="line"><span class="comment"># CONFIG_INET_XFRM_TUNNEL is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INET_TUNNEL is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INET_XFRM_MODE_TRANSPORT is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INET_XFRM_MODE_TUNNEL is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INET_XFRM_MODE_BEET is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_INET_DIAG</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_INET_TCP_DIAG</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_INET_UDP_DIAG</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_INET_RAW_DIAG</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_INET_DIAG_DESTROY</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_TCP_CONG_ADVANCED</span>=y</span><br><span class="line"><span class="comment"># CONFIG_TCP_CONG_BIC is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TCP_CONG_CUBIC is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TCP_CONG_WESTWOOD is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TCP_CONG_HTCP is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TCP_CONG_HSTCP is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TCP_CONG_HYBLA is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TCP_CONG_VEGAS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TCP_CONG_NV is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TCP_CONG_SCALABLE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TCP_CONG_LP is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TCP_CONG_VENO is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TCP_CONG_YEAH is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TCP_CONG_ILLINOIS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TCP_CONG_DCTCP is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TCP_CONG_CDG is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TCP_CONG_BBR is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_DEFAULT_RENO</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_DEFAULT_TCP_CONG</span>=<span class="string">&quot;reno&quot;</span></span><br><span class="line"><span class="variable constant_">CONFIG_TCP_MD5SIG</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_IPV6</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_IPV6_ROUTER_PREF</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_IPV6_ROUTE_INFO</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_IPV6_OPTIMISTIC_DAD</span>=y</span><br><span class="line"><span class="comment"># CONFIG_INET6_AH is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INET6_ESP is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INET6_IPCOMP is not set</span></span><br><span class="line"><span class="comment"># CONFIG_IPV6_MIP6 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INET6_XFRM_TUNNEL is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INET6_TUNNEL is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INET6_XFRM_MODE_TRANSPORT is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INET6_XFRM_MODE_TUNNEL is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INET6_XFRM_MODE_BEET is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set</span></span><br><span class="line"><span class="comment"># CONFIG_IPV6_SIT is not set</span></span><br><span class="line"><span class="comment"># CONFIG_IPV6_TUNNEL is not set</span></span><br><span class="line"><span class="comment"># CONFIG_IPV6_FOU is not set</span></span><br><span class="line"><span class="comment"># CONFIG_IPV6_FOU_TUNNEL is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_IPV6_MULTIPLE_TABLES</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_IPV6_SUBTREES</span>=y</span><br><span class="line"><span class="comment"># CONFIG_IPV6_MROUTE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_IPV6_SEG6_LWTUNNEL is not set</span></span><br><span class="line"><span class="comment"># CONFIG_IPV6_SEG6_HMAC is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NETLABEL is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_NETWORK_SECMARK</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_NET_PTP_CLASSIFY</span>=y</span><br><span class="line"><span class="comment"># CONFIG_NETWORK_PHY_TIMESTAMPING is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NETFILTER is not set</span></span><br><span class="line"><span class="comment"># CONFIG_IP_DCCP is not set</span></span><br><span class="line"><span class="comment"># CONFIG_IP_SCTP is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RDS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TIPC is not set</span></span><br><span class="line"><span class="comment"># CONFIG_ATM is not set</span></span><br><span class="line"><span class="comment"># CONFIG_L2TP is not set</span></span><br><span class="line"><span class="comment"># CONFIG_BRIDGE is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_NET_DSA</span>=y</span><br><span class="line"><span class="comment"># CONFIG_NET_DSA is not set</span></span><br><span class="line"><span class="comment"># CONFIG_VLAN_8021Q is not set</span></span><br><span class="line"><span class="comment"># CONFIG_LLC2 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_IPX is not set</span></span><br><span class="line"><span class="comment"># CONFIG_ATALK is not set</span></span><br><span class="line"><span class="comment"># CONFIG_X25 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_LAPB is not set</span></span><br><span class="line"><span class="comment"># CONFIG_PHONET is not set</span></span><br><span class="line"><span class="comment"># CONFIG_6LOWPAN is not set</span></span><br><span class="line"><span class="comment"># CONFIG_IEEE802154 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NET_SCHED is not set</span></span><br><span class="line"><span class="comment"># CONFIG_DCB is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_DNS_RESOLVER</span>=y</span><br><span class="line"><span class="comment"># CONFIG_BATMAN_ADV is not set</span></span><br><span class="line"><span class="comment"># CONFIG_OPENVSWITCH is not set</span></span><br><span class="line"><span class="comment"># CONFIG_VSOCKETS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NETLINK_DIAG is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MPLS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NET_NSH is not set</span></span><br><span class="line"><span class="comment"># CONFIG_HSR is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NET_SWITCHDEV is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NET_L3_MASTER_DEV is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NET_NCSI is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_RPS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_RFS_ACCEL</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_XPS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_CGROUP_NET_PRIO</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_CGROUP_NET_CLASSID</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_NET_RX_BUSY_POLL</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_BQL</span>=y</span><br><span class="line"><span class="comment"># CONFIG_BPF_STREAM_PARSER is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_NET_FLOW_LIMIT</span>=y</span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Network testing</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_NET_PKTGEN is not set</span></span><br><span class="line"><span class="comment"># CONFIG_HAMRADIO is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CAN is not set</span></span><br><span class="line"><span class="comment"># CONFIG_BT is not set</span></span><br><span class="line"><span class="comment"># CONFIG_AF_RXRPC is not set</span></span><br><span class="line"><span class="comment"># CONFIG_AF_KCM is not set</span></span><br><span class="line"><span class="comment"># CONFIG_STREAM_PARSER is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_FIB_RULES</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_WIRELESS</span>=y</span><br><span class="line"><span class="comment"># CONFIG_CFG80211 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_LIB80211 is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CFG80211 needs to be enabled for MAC80211</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_MAC80211_STA_HASH_MAX_SIZE</span>=<span class="number">0</span></span><br><span class="line"><span class="comment"># CONFIG_WIMAX is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RFKILL is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NET_9P is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CAIF is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CEPH_LIB is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NFC is not set</span></span><br><span class="line"><span class="comment"># CONFIG_PSAMPLE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NET_IFE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_LWTUNNEL is not set</span></span><br><span class="line"><span class="comment"># CONFIG_DST_CACHE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_GRO_CELLS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NET_DEVLINK is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_MAY_USE_DEVLINK</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_EBPF_JIT</span>=y</span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Device Drivers</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Generic Driver Options</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_UEVENT_HELPER is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_DEVTMPFS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_DEVTMPFS_MOUNT</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_STANDALONE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_PREVENT_FIRMWARE_BUILD</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_FW_LOADER</span>=y</span><br><span class="line"><span class="comment"># CONFIG_FIRMWARE_IN_KERNEL is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_EXTRA_FIRMWARE</span>=<span class="string">&quot;&quot;</span></span><br><span class="line"><span class="comment"># CONFIG_FW_LOADER_USER_HELPER_FALLBACK is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_ALLOW_DEV_COREDUMP</span>=y</span><br><span class="line"><span class="comment"># CONFIG_DEBUG_DRIVER is not set</span></span><br><span class="line"><span class="comment"># CONFIG_DEBUG_DEVRES is not set</span></span><br><span class="line"><span class="comment"># CONFIG_DEBUG_TEST_DRIVER_REMOVE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SYS_HYPERVISOR is not set</span></span><br><span class="line"><span class="comment"># CONFIG_GENERIC_CPU_DEVICES is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_GENERIC_CPU_AUTOPROBE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_GENERIC_CPU_VULNERABILITIES</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_REGMAP</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_REGMAP_I2C</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_REGMAP_SPI</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_REGMAP_MMIO</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_REGMAP_IRQ</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_DMA_SHARED_BUFFER</span>=y</span><br><span class="line"><span class="comment"># CONFIG_DMA_FENCE_TRACE is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Bus devices</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_CONNECTOR</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_PROC_EVENTS</span>=y</span><br><span class="line"><span class="comment"># CONFIG_MTD is not set</span></span><br><span class="line"><span class="comment"># CONFIG_OF is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT</span>=y</span><br><span class="line"><span class="comment"># CONFIG_PARPORT is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_PNP</span>=y</span><br><span class="line"><span class="comment"># CONFIG_PNP_DEBUG_MESSAGES is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Protocols</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_PNPACPI</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_BLK_DEV</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_BLK_DEV_NULL_BLK</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_BLK_DEV_FD</span>=y</span><br><span class="line"><span class="comment"># CONFIG_BLK_DEV_FD_RAWCMD is not set</span></span><br><span class="line"><span class="comment"># CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set</span></span><br><span class="line"><span class="comment"># CONFIG_ZRAM is not set</span></span><br><span class="line"><span class="comment"># CONFIG_BLK_DEV_DAC960 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_BLK_DEV_UMEM is not set</span></span><br><span class="line"><span class="comment"># CONFIG_BLK_DEV_COW_COMMON is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_BLK_DEV_LOOP</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_BLK_DEV_LOOP_MIN_COUNT</span>=<span class="number">8</span></span><br><span class="line"><span class="comment"># CONFIG_BLK_DEV_CRYPTOLOOP is not set</span></span><br><span class="line"><span class="comment"># CONFIG_BLK_DEV_DRBD is not set</span></span><br><span class="line"><span class="comment"># CONFIG_BLK_DEV_NBD is not set</span></span><br><span class="line"><span class="comment"># CONFIG_BLK_DEV_SKD is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_BLK_DEV_RAM</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_BLK_DEV_RAM_COUNT</span>=<span class="number">16</span></span><br><span class="line"><span class="variable constant_">CONFIG_BLK_DEV_RAM_SIZE</span>=<span class="number">16384</span></span><br><span class="line"><span class="comment"># CONFIG_BLK_DEV_RAM_DAX is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CDROM_PKTCDVD is not set</span></span><br><span class="line"><span class="comment"># CONFIG_ATA_OVER_ETH is not set</span></span><br><span class="line"><span class="comment"># CONFIG_BLK_DEV_RBD is not set</span></span><br><span class="line"><span class="comment"># CONFIG_BLK_DEV_RSXX is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_NVME_CORE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_BLK_DEV_NVME</span>=y</span><br><span class="line"><span class="comment"># CONFIG_NVME_FC is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NVME_TARGET is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Misc devices</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_LIS3LV02D is not set</span></span><br><span class="line"><span class="comment"># CONFIG_AD525X_DPOT is not set</span></span><br><span class="line"><span class="comment"># CONFIG_DUMMY_IRQ is not set</span></span><br><span class="line"><span class="comment"># CONFIG_IBM_ASM is not set</span></span><br><span class="line"><span class="comment"># CONFIG_PHANTOM is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SGI_IOC4 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TIFM_CORE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_ICS932S401 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_ENCLOSURE_SERVICES is not set</span></span><br><span class="line"><span class="comment"># CONFIG_HP_ILO is not set</span></span><br><span class="line"><span class="comment"># CONFIG_APDS9802ALS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_ISL29003 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_ISL29020 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_TSL2550 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_BH1770 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_APDS990X is not set</span></span><br><span class="line"><span class="comment"># CONFIG_HMC6352 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_DS1682 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TI_DAC7512 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_USB_SWITCH_FSA9480 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_LATTICE_ECP3_CONFIG is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_SRAM</span>=y</span><br><span class="line"><span class="comment"># CONFIG_PCI_ENDPOINT_TEST is not set</span></span><br><span class="line"><span class="comment"># CONFIG_C2PORT is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># EEPROM support</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_EEPROM_AT24 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_EEPROM_AT25 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_EEPROM_LEGACY is not set</span></span><br><span class="line"><span class="comment"># CONFIG_EEPROM_MAX6875 is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_EEPROM_93CX6</span>=y</span><br><span class="line"><span class="comment"># CONFIG_EEPROM_93XX46 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_EEPROM_IDT_89HPESX is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CB710_CORE is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Texas Instruments shared transport line discipline</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_TI_ST is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_LIS3_I2C is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Altera FPGA firmware download module</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_ALTERA_STAPL is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INTEL_MEI is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INTEL_MEI_ME is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INTEL_MEI_TXE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_VMWARE_VMCI is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Intel MIC Bus Driver</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_INTEL_MIC_BUS is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># SCIF Bus Driver</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_SCIF_BUS is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># VOP Bus Driver</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_VOP_BUS is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Intel MIC Host Driver</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Intel MIC Card Driver</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># SCIF Driver</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Intel MIC Coprocessor State Management (COSM) Drivers</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># VOP Driver</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_GENWQE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_ECHO is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CXL_BASE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CXL_AFU_DRIVER_OPS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CXL_LIB is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_IDE</span>=y</span><br><span class="line"><span class="comment"># CONFIG_IDE is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># SCSI device support</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_SCSI_MOD</span>=y</span><br><span class="line"><span class="comment"># CONFIG_RAID_ATTRS is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_SCSI</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SCSI_DMA</span>=y</span><br><span class="line"><span class="comment"># CONFIG_SCSI_NETLINK is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SCSI_MQ_DEFAULT is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_SCSI_PROC_FS</span>=y</span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># SCSI support type (disk, tape, CD-ROM)</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_BLK_DEV_SD</span>=y</span><br><span class="line"><span class="comment"># CONFIG_CHR_DEV_ST is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CHR_DEV_OSST is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_BLK_DEV_SR</span>=y</span><br><span class="line"><span class="comment"># CONFIG_BLK_DEV_SR_VENDOR is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_CHR_DEV_SG</span>=y</span><br><span class="line"><span class="comment"># CONFIG_CHR_DEV_SCH is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SCSI_CONSTANTS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SCSI_LOGGING is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SCSI_SCAN_ASYNC is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># SCSI Transports</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_SCSI_SPI_ATTRS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SCSI_FC_ATTRS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SCSI_ISCSI_ATTRS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SCSI_SAS_ATTRS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SCSI_SAS_LIBSAS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SCSI_SRP_ATTRS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SCSI_LOWLEVEL is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SCSI_DH is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SCSI_OSD_INITIATOR is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_ATA</span>=y</span><br><span class="line"><span class="comment"># CONFIG_ATA_NONSTANDARD is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_ATA_VERBOSE_ERROR</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ATA_ACPI</span>=y</span><br><span class="line"><span class="comment"># CONFIG_SATA_ZPODD is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_SATA_PMP</span>=y</span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Controllers with non-SFF native interface</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_SATA_AHCI</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SATA_AHCI_PLATFORM</span>=y</span><br><span class="line"><span class="comment"># CONFIG_SATA_INIC162X is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SATA_ACARD_AHCI is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_SATA_SIL24</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ATA_SFF</span>=y</span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># SFF controllers with custom DMA interface</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_PDC_ADMA</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SATA_QSTOR</span>=y</span><br><span class="line"><span class="comment"># CONFIG_SATA_SX4 is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_ATA_BMDMA</span>=y</span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># SATA SFF controllers with BMDMA</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_ATA_PIIX</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SATA_DWC</span>=y</span><br><span class="line"><span class="comment"># CONFIG_SATA_DWC_OLD_DMA is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SATA_DWC_DEBUG is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_SATA_MV</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SATA_NV</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SATA_PROMISE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SATA_SIL</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SATA_SIS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SATA_SVW</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SATA_ULI</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SATA_VIA</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SATA_VITESSE</span>=y</span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># PATA SFF controllers with BMDMA</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_PATA_ALI</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_PATA_AMD</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_PATA_ARTOP</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_PATA_ATIIXP</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_PATA_ATP867X</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_PATA_CMD64X</span>=y</span><br><span class="line"><span class="comment"># CONFIG_PATA_CYPRESS is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_PATA_EFAR</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_PATA_HPT366</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_PATA_HPT37X</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_PATA_HPT3X2N</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_PATA_HPT3X3</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_PATA_HPT3X3_DMA</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_PATA_IT8213</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_PATA_IT821X</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_PATA_JMICRON</span>=y</span><br><span class="line"><span class="comment"># CONFIG_PATA_MARVELL is not set</span></span><br><span class="line"><span class="comment"># CONFIG_PATA_NETCELL is not set</span></span><br><span class="line"><span class="comment"># CONFIG_PATA_NINJA32 is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_PATA_NS87415</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_PATA_OLDPIIX</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_PATA_OPTIDMA</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_PATA_PDC2027X</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_PATA_PDC_OLD</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_PATA_RADISYS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_PATA_RDC</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_PATA_SCH</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_PATA_SERVERWORKS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_PATA_SIL680</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_PATA_SIS</span>=y</span><br><span class="line"><span class="comment"># CONFIG_PATA_TOSHIBA is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_PATA_TRIFLEX</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_PATA_VIA</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_PATA_WINBOND</span>=y</span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># PIO-only SFF controllers</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_PATA_CMD640_PCI is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_PATA_MPIIX</span>=y</span><br><span class="line"><span class="comment"># CONFIG_PATA_NS87410 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_PATA_OPTI is not set</span></span><br><span class="line"><span class="comment"># CONFIG_PATA_PLATFORM is not set</span></span><br><span class="line"><span class="comment"># CONFIG_PATA_RZ1000 is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Generic fallback / legacy drivers</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_PATA_ACPI</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ATA_GENERIC</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_PATA_LEGACY</span>=y</span><br><span class="line"><span class="comment"># CONFIG_MD is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TARGET_CORE is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_FUSION</span>=y</span><br><span class="line"><span class="comment"># CONFIG_FUSION_SPI is not set</span></span><br><span class="line"><span class="comment"># CONFIG_FUSION_SAS is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_FUSION_MAX_SGE</span>=<span class="number">128</span></span><br><span class="line"><span class="comment"># CONFIG_FUSION_LOGGING is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># IEEE 1394 (FireWire) support</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_FIREWIRE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_FIREWIRE_NOSY is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_MACINTOSH_DRIVERS</span>=y</span><br><span class="line"><span class="comment"># CONFIG_MAC_EMUMOUSEBTN is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_NETDEVICES</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_MII</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_NET_CORE</span>=y</span><br><span class="line"><span class="comment"># CONFIG_BONDING is not set</span></span><br><span class="line"><span class="comment"># CONFIG_DUMMY is not set</span></span><br><span class="line"><span class="comment"># CONFIG_EQUALIZER is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NET_FC is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NET_TEAM is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MACVLAN is not set</span></span><br><span class="line"><span class="comment"># CONFIG_VXLAN is not set</span></span><br><span class="line"><span class="comment"># CONFIG_GTP is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MACSEC is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NETCONSOLE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NETPOLL is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NET_POLL_CONTROLLER is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TUN is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_TUN_VNET_CROSS_LE</span>=y</span><br><span class="line"><span class="comment"># CONFIG_VETH is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NLMON is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_SUNGEM_PHY</span>=y</span><br><span class="line"><span class="comment"># CONFIG_ARCNET is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CAIF transport drivers</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Distributed Switch Architecture drivers</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_ETHERNET</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_MDIO</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_NET_VENDOR_3COM</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_VORTEX</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_TYPHOON</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_NET_VENDOR_ADAPTEC</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ADAPTEC_STARFIRE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_NET_VENDOR_AGERE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ET131X</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_NET_VENDOR_ALACRITECH</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SLICOSS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_NET_VENDOR_ALTEON</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ACENIC</span>=y</span><br><span class="line"><span class="comment"># CONFIG_ACENIC_OMIT_TIGON_I is not set</span></span><br><span class="line"><span class="comment"># CONFIG_ALTERA_TSE is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_NET_VENDOR_AMAZON</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ENA_ETHERNET</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_NET_VENDOR_AMD</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_AMD8111_ETH</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_PCNET32</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_AMD_XGBE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_AMD_XGBE_HAVE_ECC</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_NET_VENDOR_AQUANTIA</span>=y</span><br><span class="line"><span class="comment"># CONFIG_AQTION is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_NET_VENDOR_ARC</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_NET_VENDOR_ATHEROS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ATL2</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ATL1</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ATL1E</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ATL1C</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ALX</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_NET_VENDOR_AURORA</span>=y</span><br><span class="line"><span class="comment"># CONFIG_AURORA_NB8800 is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_NET_CADENCE</span>=y</span><br><span class="line"><span class="comment"># CONFIG_MACB is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_NET_VENDOR_BROADCOM</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_B44</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_B44_PCI_AUTOSELECT</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_B44_PCICORE_AUTOSELECT</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_B44_PCI</span>=y</span><br><span class="line"><span class="comment"># CONFIG_BNX2 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CNIC is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_TIGON3</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_TIGON3_HWMON</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_BNX2X</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_BNX2X_SRIOV</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_BNXT</span>=y</span><br><span class="line"><span class="comment"># CONFIG_BNXT_SRIOV is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_BNXT_FLOWER_OFFLOAD</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_NET_VENDOR_BROCADE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_BNA</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_NET_VENDOR_CAVIUM</span>=y</span><br><span class="line"><span class="comment"># CONFIG_THUNDER_NIC_PF is not set</span></span><br><span class="line"><span class="comment"># CONFIG_THUNDER_NIC_VF is not set</span></span><br><span class="line"><span class="comment"># CONFIG_THUNDER_NIC_BGX is not set</span></span><br><span class="line"><span class="comment"># CONFIG_THUNDER_NIC_RGX is not set</span></span><br><span class="line"><span class="comment"># CONFIG_LIQUIDIO is not set</span></span><br><span class="line"><span class="comment"># CONFIG_LIQUIDIO_VF is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_NET_VENDOR_CHELSIO</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_CHELSIO_T1</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_CHELSIO_T1_1G</span>=y</span><br><span class="line"><span class="comment"># CONFIG_CHELSIO_T3 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CHELSIO_T4 is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_CHELSIO_T4VF</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_NET_VENDOR_CISCO</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ENIC</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_CX_ECAT</span>=y</span><br><span class="line"><span class="comment"># CONFIG_DNET is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_NET_VENDOR_DEC</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_NET_TULIP</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_DE2104X</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_DE2104X_DSL</span>=<span class="number">0</span></span><br><span class="line"><span class="variable constant_">CONFIG_TULIP</span>=y</span><br><span class="line"><span class="comment"># CONFIG_TULIP_MWI is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TULIP_MMIO is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TULIP_NAPI is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_DE4X5</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_WINBOND_840</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_DM9102</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ULI526X</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_NET_VENDOR_DLINK</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_DL2K</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SUNDANCE</span>=y</span><br><span class="line"><span class="comment"># CONFIG_SUNDANCE_MMIO is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_NET_VENDOR_EMULEX</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_BE2NET</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_BE2NET_HWMON</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_NET_VENDOR_EZCHIP</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_NET_VENDOR_EXAR</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_S2IO</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_VXGE</span>=y</span><br><span class="line"><span class="comment"># CONFIG_VXGE_DEBUG_TRACE_ALL is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_NET_VENDOR_HP</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HP100</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_NET_VENDOR_HUAWEI</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HINIC</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_NET_VENDOR_INTEL</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_E100</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_E1000</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_E1000E</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_E1000E_HWTS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_IGB</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_IGB_HWMON</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_IGBVF</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_IXGB</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_IXGBE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_IXGBE_HWMON</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_IXGBEVF</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_I40E</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_I40EVF</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_FM10K</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_NET_VENDOR_I825XX</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_JME</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_NET_VENDOR_MARVELL</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_MVMDIO</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SKGE</span>=y</span><br><span class="line"><span class="comment"># CONFIG_SKGE_DEBUG is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_SKGE_GENESIS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SKY2</span>=y</span><br><span class="line"><span class="comment"># CONFIG_SKY2_DEBUG is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_NET_VENDOR_MELLANOX</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_MLX4_EN</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_MLX4_CORE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_MLX4_DEBUG</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_MLX5_CORE</span>=y</span><br><span class="line"><span class="comment"># CONFIG_MLX5_FPGA is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_MLX5_CORE_EN</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_MLX5_MPFS</span>=y</span><br><span class="line"><span class="comment"># CONFIG_MLX5_CORE_IPOIB is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MLXSW_CORE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MLXFW is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_NET_VENDOR_MICREL</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_KS8851</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_KS8851_MLL</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_KSZ884X_PCI</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_NET_VENDOR_MICROCHIP</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ENC28J60</span>=y</span><br><span class="line"><span class="comment"># CONFIG_ENC28J60_WRITEVERIFY is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_ENCX24J600</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_NET_VENDOR_MYRI</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_MYRI10GE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_FEALNX</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_NET_VENDOR_NATSEMI</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_NATSEMI</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_NS83820</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_NET_VENDOR_NETRONOME</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_NFP</span>=y</span><br><span class="line"><span class="comment"># CONFIG_NFP_DEBUG is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_NET_VENDOR_8390</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_NE2K_PCI</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_NET_VENDOR_NVIDIA</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_FORCEDETH</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_NET_VENDOR_OKI</span>=y</span><br><span class="line"><span class="comment"># CONFIG_ETHOC is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_NET_PACKET_ENGINE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HAMACHI</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_YELLOWFIN</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_NET_VENDOR_QLOGIC</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_QLA3XXX</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_QLCNIC</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_QLCNIC_SRIOV</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_QLCNIC_HWMON</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_QLGE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_NETXEN_NIC</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_QED</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_QED_SRIOV</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_QEDE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_NET_VENDOR_QUALCOMM</span>=y</span><br><span class="line"><span class="comment"># CONFIG_QCOM_EMAC is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_RMNET</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_NET_VENDOR_REALTEK</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_8139CP</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_8139TOO</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_8139TOO_PIO</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_8139TOO_TUNE_TWISTER</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_8139TOO_8129</span>=y</span><br><span class="line"><span class="comment"># CONFIG_8139_OLD_RX_RESET is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_R8169</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_NET_VENDOR_RENESAS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_NET_VENDOR_RDC</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_R6040</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_NET_VENDOR_ROCKER</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_NET_VENDOR_SAMSUNG</span>=y</span><br><span class="line"><span class="comment"># CONFIG_SXGBE_ETH is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_NET_VENDOR_SEEQ</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_NET_VENDOR_SILAN</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SC92031</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_NET_VENDOR_SIS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SIS900</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SIS190</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_NET_VENDOR_SOLARFLARE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SFC</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SFC_MCDI_MON</span>=y</span><br><span class="line"><span class="comment"># CONFIG_SFC_SRIOV is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SFC_MCDI_LOGGING is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_SFC_FALCON</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_NET_VENDOR_SMSC</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_EPIC100</span>=y</span><br><span class="line"><span class="comment"># CONFIG_SMSC911X is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_SMSC9420</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_NET_VENDOR_STMICRO</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_STMMAC_ETH</span>=y</span><br><span class="line"><span class="comment"># CONFIG_STMMAC_PLATFORM is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_STMMAC_PCI</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_NET_VENDOR_SUN</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HAPPYMEAL</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SUNGEM</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_CASSINI</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_NIU</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_NET_VENDOR_TEHUTI</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_TEHUTI</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_NET_VENDOR_TI</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_TI_CPSW_ALE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_TLAN</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_NET_VENDOR_VIA</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_VIA_RHINE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_VIA_RHINE_MMIO</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_VIA_VELOCITY</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_NET_VENDOR_WIZNET</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_WIZNET_W5100</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_WIZNET_W5300</span>=y</span><br><span class="line"><span class="comment"># CONFIG_WIZNET_BUS_DIRECT is not set</span></span><br><span class="line"><span class="comment"># CONFIG_WIZNET_BUS_INDIRECT is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_WIZNET_BUS_ANY</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_WIZNET_W5100_SPI</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_NET_VENDOR_SYNOPSYS</span>=y</span><br><span class="line"><span class="comment"># CONFIG_DWC_XLGMAC is not set</span></span><br><span class="line"><span class="comment"># CONFIG_FDDI is not set</span></span><br><span class="line"><span class="comment"># CONFIG_HIPPI is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NET_SB1000 is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_MDIO_DEVICE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_MDIO_BUS</span>=y</span><br><span class="line"><span class="comment"># CONFIG_MDIO_BITBANG is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MDIO_THUNDER is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_PHYLIB</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SWPHY</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_LED_TRIGGER_PHY</span>=y</span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># MII PHY device drivers</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_AMD_PHY is not set</span></span><br><span class="line"><span class="comment"># CONFIG_AQUANTIA_PHY is not set</span></span><br><span class="line"><span class="comment"># CONFIG_AT803X_PHY is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_BCM7XXX_PHY</span>=y</span><br><span class="line"><span class="comment"># CONFIG_BCM87XX_PHY is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_BCM_NET_PHYLIB</span>=y</span><br><span class="line"><span class="comment"># CONFIG_BROADCOM_PHY is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CICADA_PHY is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_CORTINA_PHY</span>=y</span><br><span class="line"><span class="comment"># CONFIG_DAVICOM_PHY is not set</span></span><br><span class="line"><span class="comment"># CONFIG_DP83848_PHY is not set</span></span><br><span class="line"><span class="comment"># CONFIG_DP83867_PHY is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_FIXED_PHY</span>=y</span><br><span class="line"><span class="comment"># CONFIG_ICPLUS_PHY is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INTEL_XWAY_PHY is not set</span></span><br><span class="line"><span class="comment"># CONFIG_LSI_ET1011C_PHY is not set</span></span><br><span class="line"><span class="comment"># CONFIG_LXT_PHY is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MARVELL_PHY is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_MARVELL_10G_PHY</span>=y</span><br><span class="line"><span class="comment"># CONFIG_MICREL_PHY is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_MICROCHIP_PHY</span>=y</span><br><span class="line"><span class="comment"># CONFIG_MICROSEMI_PHY is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NATIONAL_PHY is not set</span></span><br><span class="line"><span class="comment"># CONFIG_QSEMI_PHY is not set</span></span><br><span class="line"><span class="comment"># CONFIG_REALTEK_PHY is not set</span></span><br><span class="line"><span class="comment"># CONFIG_ROCKCHIP_PHY is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_SMSC_PHY</span>=y</span><br><span class="line"><span class="comment"># CONFIG_STE10XP is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TERANETICS_PHY is not set</span></span><br><span class="line"><span class="comment"># CONFIG_VITESSE_PHY is not set</span></span><br><span class="line"><span class="comment"># CONFIG_XILINX_GMII2RGMII is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MICREL_KS8995MA is not set</span></span><br><span class="line"><span class="comment"># CONFIG_PPP is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SLIP is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_USB_NET_DRIVERS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_USB_CATC</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_USB_KAWETH</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_USB_PEGASUS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_USB_RTL8150</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_USB_RTL8152</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_USB_LAN78XX</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_USB_USBNET</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_USB_NET_AX8817X</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_USB_NET_AX88179_178A</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_USB_NET_CDCETHER</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_USB_NET_CDC_EEM</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_USB_NET_CDC_NCM</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_USB_NET_HUAWEI_CDC_NCM</span>=y</span><br><span class="line"><span class="comment"># CONFIG_USB_NET_CDC_MBIM is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_USB_NET_DM9601</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_USB_NET_SR9700</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_USB_NET_SR9800</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_USB_NET_SMSC75XX</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_USB_NET_SMSC95XX</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_USB_NET_GL620A</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_USB_NET_NET1080</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_USB_NET_PLUSB</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_USB_NET_MCS7830</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_USB_NET_RNDIS_HOST</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_USB_NET_CDC_SUBSET_ENABLE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_USB_NET_CDC_SUBSET</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_USB_ALI_M5632</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_USB_AN2720</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_USB_BELKIN</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_USB_ARMLINUX</span>=y</span><br><span class="line"><span class="comment"># CONFIG_USB_EPSON2888 is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_USB_KC2190</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_USB_NET_ZAURUS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_USB_NET_CX82310_ETH</span>=y</span><br><span class="line"><span class="comment"># CONFIG_USB_NET_KALMIA is not set</span></span><br><span class="line"><span class="comment"># CONFIG_USB_NET_QMI_WWAN is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_USB_NET_INT51X1</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_USB_IPHETH</span>=y</span><br><span class="line"><span class="comment"># CONFIG_USB_SIERRA_NET is not set</span></span><br><span class="line"><span class="comment"># CONFIG_USB_VL600 is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_USB_NET_CH9200</span>=y</span><br><span class="line"><span class="comment"># CONFIG_WLAN is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Enable WiMAX (Networking options) to see the WiMAX drivers</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_WAN is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_VMXNET3</span>=y</span><br><span class="line"><span class="comment"># CONFIG_FUJITSU_ES is not set</span></span><br><span class="line"><span class="comment"># CONFIG_ISDN is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Input device support</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_INPUT</span>=y</span><br><span class="line"><span class="comment"># CONFIG_INPUT_LEDS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INPUT_FF_MEMLESS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INPUT_POLLDEV is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INPUT_SPARSEKMAP is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INPUT_MATRIXKMAP is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Userland interfaces</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_INPUT_MOUSEDEV</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_INPUT_MOUSEDEV_PSAUX</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_INPUT_MOUSEDEV_SCREEN_X</span>=<span class="number">1024</span></span><br><span class="line"><span class="variable constant_">CONFIG_INPUT_MOUSEDEV_SCREEN_Y</span>=<span class="number">768</span></span><br><span class="line"><span class="comment"># CONFIG_INPUT_JOYDEV is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INPUT_EVDEV is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INPUT_EVBUG is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Input Device Drivers</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_INPUT_KEYBOARD</span>=y</span><br><span class="line"><span class="comment"># CONFIG_KEYBOARD_ADP5588 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_KEYBOARD_ADP5589 is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_KEYBOARD_ATKBD</span>=y</span><br><span class="line"><span class="comment"># CONFIG_KEYBOARD_QT1070 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_KEYBOARD_QT2160 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_KEYBOARD_DLINK_DIR685 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_KEYBOARD_LKKBD is not set</span></span><br><span class="line"><span class="comment"># CONFIG_KEYBOARD_GPIO is not set</span></span><br><span class="line"><span class="comment"># CONFIG_KEYBOARD_GPIO_POLLED is not set</span></span><br><span class="line"><span class="comment"># CONFIG_KEYBOARD_TCA6416 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_KEYBOARD_TCA8418 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_KEYBOARD_MATRIX is not set</span></span><br><span class="line"><span class="comment"># CONFIG_KEYBOARD_LM8323 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_KEYBOARD_LM8333 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_KEYBOARD_MAX7359 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_KEYBOARD_MCS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_KEYBOARD_MPR121 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_KEYBOARD_NEWTON is not set</span></span><br><span class="line"><span class="comment"># CONFIG_KEYBOARD_OPENCORES is not set</span></span><br><span class="line"><span class="comment"># CONFIG_KEYBOARD_SAMSUNG is not set</span></span><br><span class="line"><span class="comment"># CONFIG_KEYBOARD_STOWAWAY is not set</span></span><br><span class="line"><span class="comment"># CONFIG_KEYBOARD_SUNKBD is not set</span></span><br><span class="line"><span class="comment"># CONFIG_KEYBOARD_TM2_TOUCHKEY is not set</span></span><br><span class="line"><span class="comment"># CONFIG_KEYBOARD_XTKBD is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_INPUT_MOUSE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_MOUSE_PS2</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_MOUSE_PS2_ALPS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_MOUSE_PS2_BYD</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_MOUSE_PS2_LOGIPS2PP</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_MOUSE_PS2_SYNAPTICS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_MOUSE_PS2_SYNAPTICS_SMBUS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_MOUSE_PS2_CYPRESS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_MOUSE_PS2_LIFEBOOK</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_MOUSE_PS2_TRACKPOINT</span>=y</span><br><span class="line"><span class="comment"># CONFIG_MOUSE_PS2_ELANTECH is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MOUSE_PS2_SENTELIC is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MOUSE_PS2_TOUCHKIT is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_MOUSE_PS2_FOCALTECH</span>=y</span><br><span class="line"><span class="comment"># CONFIG_MOUSE_PS2_VMMOUSE is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_MOUSE_PS2_SMBUS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_MOUSE_SERIAL</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_MOUSE_APPLETOUCH</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_MOUSE_BCM5974</span>=y</span><br><span class="line"><span class="comment"># CONFIG_MOUSE_CYAPA is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_MOUSE_ELAN_I2C</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_MOUSE_ELAN_I2C_I2C</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_MOUSE_ELAN_I2C_SMBUS</span>=y</span><br><span class="line"><span class="comment"># CONFIG_MOUSE_VSXXXAA is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MOUSE_GPIO is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MOUSE_SYNAPTICS_I2C is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_MOUSE_SYNAPTICS_USB</span>=y</span><br><span class="line"><span class="comment"># CONFIG_INPUT_JOYSTICK is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_INPUT_TABLET</span>=y</span><br><span class="line"><span class="comment"># CONFIG_TABLET_USB_ACECAD is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TABLET_USB_AIPTEK is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TABLET_USB_GTCO is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TABLET_USB_HANWANG is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TABLET_USB_KBTAB is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TABLET_USB_PEGASUS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TABLET_SERIAL_WACOM4 is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_INPUT_TOUCHSCREEN</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_TOUCHSCREEN_PROPERTIES</span>=y</span><br><span class="line"><span class="comment"># CONFIG_TOUCHSCREEN_ADS7846 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TOUCHSCREEN_AD7877 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TOUCHSCREEN_AD7879 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TOUCHSCREEN_ATMEL_MXT is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TOUCHSCREEN_AUO_PIXCIR is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TOUCHSCREEN_BU21013 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TOUCHSCREEN_CY8CTMG110 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TOUCHSCREEN_CYTTSP_CORE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TOUCHSCREEN_CYTTSP4_CORE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TOUCHSCREEN_DA9052 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TOUCHSCREEN_DYNAPRO is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TOUCHSCREEN_HAMPSHIRE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TOUCHSCREEN_EETI is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TOUCHSCREEN_EGALAX_SERIAL is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TOUCHSCREEN_FUJITSU is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TOUCHSCREEN_GOODIX is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TOUCHSCREEN_ILI210X is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TOUCHSCREEN_GUNZE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TOUCHSCREEN_EKTF2127 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TOUCHSCREEN_ELAN is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TOUCHSCREEN_ELO is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TOUCHSCREEN_WACOM_W8001 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TOUCHSCREEN_WACOM_I2C is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TOUCHSCREEN_MAX11801 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TOUCHSCREEN_MCS5000 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TOUCHSCREEN_MMS114 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TOUCHSCREEN_MELFAS_MIP4 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TOUCHSCREEN_MTOUCH is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TOUCHSCREEN_INEXIO is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TOUCHSCREEN_MK712 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TOUCHSCREEN_PENMOUNT is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TOUCHSCREEN_EDT_FT5X06 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TOUCHSCREEN_TOUCHWIN is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TOUCHSCREEN_PIXCIR is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TOUCHSCREEN_WDT87XX_I2C is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TOUCHSCREEN_WM831X is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TOUCHSCREEN_TOUCHIT213 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TOUCHSCREEN_TSC_SERIO is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TOUCHSCREEN_TSC2004 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TOUCHSCREEN_TSC2005 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TOUCHSCREEN_TSC2007 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TOUCHSCREEN_PCAP is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TOUCHSCREEN_RM_TS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TOUCHSCREEN_SILEAD is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TOUCHSCREEN_SIS_I2C is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TOUCHSCREEN_ST1232 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TOUCHSCREEN_STMFTS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TOUCHSCREEN_SURFACE3_SPI is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TOUCHSCREEN_SX8654 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TOUCHSCREEN_TPS6507X is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TOUCHSCREEN_ZET6223 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TOUCHSCREEN_ZFORCE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TOUCHSCREEN_ROHM_BU21023 is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_INPUT_MISC</span>=y</span><br><span class="line"><span class="comment"># CONFIG_INPUT_AD714X is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INPUT_BMA150 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INPUT_E3X0_BUTTON is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INPUT_MAX77693_HAPTIC is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INPUT_MMA8450 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INPUT_APANEL is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INPUT_GP2A is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INPUT_GPIO_BEEPER is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INPUT_GPIO_TILT_POLLED is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INPUT_GPIO_DECODER is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INPUT_ATLAS_BTNS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INPUT_ATI_REMOTE2 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INPUT_KEYSPAN_REMOTE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INPUT_KXTJ9 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INPUT_POWERMATE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INPUT_YEALINK is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INPUT_CM109 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INPUT_REGULATOR_HAPTIC is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INPUT_UINPUT is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INPUT_PCF8574 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INPUT_PWM_BEEPER is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INPUT_PWM_VIBRA is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INPUT_GPIO_ROTARY_ENCODER is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INPUT_DA9052_ONKEY is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INPUT_WM831X_ON is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INPUT_PCAP is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INPUT_ADXL34X is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INPUT_IMS_PCU is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INPUT_CMA3000 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INPUT_IDEAPAD_SLIDEBAR is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INPUT_DRV260X_HAPTICS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INPUT_DRV2665_HAPTICS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INPUT_DRV2667_HAPTICS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RMI4_CORE is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Hardware I/O ports</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_SERIO</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_MIGHT_HAVE_PC_SERIO</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SERIO_I8042</span>=y</span><br><span class="line"><span class="comment"># CONFIG_SERIO_SERPORT is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SERIO_CT82C710 is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_SERIO_PCIPS2</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SERIO_LIBPS2</span>=y</span><br><span class="line"><span class="comment"># CONFIG_SERIO_RAW is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SERIO_ALTERA_PS2 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SERIO_PS2MULT is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SERIO_ARC_PS2 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SERIO_GPIO_PS2 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_USERIO is not set</span></span><br><span class="line"><span class="comment"># CONFIG_GAMEPORT is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Character devices</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_TTY</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_VT</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_CONSOLE_TRANSLATIONS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_VT_CONSOLE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_VT_CONSOLE_SLEEP</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HW_CONSOLE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_VT_HW_CONSOLE_BINDING</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_UNIX98_PTYS</span>=y</span><br><span class="line"><span class="comment"># CONFIG_LEGACY_PTYS is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_SERIAL_NONSTANDARD</span>=y</span><br><span class="line"><span class="comment"># CONFIG_ROCKETPORT is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CYCLADES is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MOXA_INTELLIO is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MOXA_SMARTIO is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SYNCLINK is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SYNCLINKMP is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SYNCLINK_GT is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NOZOMI is not set</span></span><br><span class="line"><span class="comment"># CONFIG_ISI is not set</span></span><br><span class="line"><span class="comment"># CONFIG_N_HDLC is not set</span></span><br><span class="line"><span class="comment"># CONFIG_N_GSM is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TRACE_SINK is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_LDISC_AUTOLOAD</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_DEVMEM</span>=y</span><br><span class="line"><span class="comment"># CONFIG_DEVKMEM is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Serial drivers</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_SERIAL_EARLYCON</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SERIAL_8250</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SERIAL_8250_DEPRECATED_OPTIONS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SERIAL_8250_PNP</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SERIAL_8250_FINTEK</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SERIAL_8250_CONSOLE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SERIAL_8250_DMA</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SERIAL_8250_PCI</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SERIAL_8250_EXAR</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SERIAL_8250_NR_UARTS</span>=<span class="number">4</span></span><br><span class="line"><span class="variable constant_">CONFIG_SERIAL_8250_RUNTIME_UARTS</span>=<span class="number">4</span></span><br><span class="line"><span class="variable constant_">CONFIG_SERIAL_8250_EXTENDED</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SERIAL_8250_MANY_PORTS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SERIAL_8250_SHARE_IRQ</span>=y</span><br><span class="line"><span class="comment"># CONFIG_SERIAL_8250_DETECT_IRQ is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_SERIAL_8250_RSA</span>=y</span><br><span class="line"><span class="comment"># CONFIG_SERIAL_8250_FSL is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SERIAL_8250_DW is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_SERIAL_8250_RT288X</span>=y</span><br><span class="line"><span class="comment"># CONFIG_SERIAL_8250_LPSS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SERIAL_8250_MID is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SERIAL_8250_MOXA is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Non-8250 serial port support</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_SERIAL_MAX3100 is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_SERIAL_MAX310X</span>=y</span><br><span class="line"><span class="comment"># CONFIG_SERIAL_UARTLITE is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_SERIAL_CORE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SERIAL_CORE_CONSOLE</span>=y</span><br><span class="line"><span class="comment"># CONFIG_SERIAL_JSM is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_SERIAL_SCCNXP</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SERIAL_SCCNXP_CONSOLE</span>=y</span><br><span class="line"><span class="comment"># CONFIG_SERIAL_SC16IS7XX is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SERIAL_ALTERA_JTAGUART is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SERIAL_ALTERA_UART is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SERIAL_IFX6X60 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SERIAL_ARC is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SERIAL_RP2 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SERIAL_FSL_LPUART is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SERIAL_DEV_BUS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TTY_PRINTK is not set</span></span><br><span class="line"><span class="comment"># CONFIG_IPMI_HANDLER is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_HW_RANDOM</span>=y</span><br><span class="line"><span class="comment"># CONFIG_HW_RANDOM_TIMERIOMEM is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_HW_RANDOM_INTEL</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HW_RANDOM_AMD</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HW_RANDOM_VIA</span>=y</span><br><span class="line"><span class="comment"># CONFIG_NVRAM is not set</span></span><br><span class="line"><span class="comment"># CONFIG_APPLICOM is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MWAVE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RAW_DRIVER is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_HPET</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HPET_MMAP</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HPET_MMAP_DEFAULT</span>=y</span><br><span class="line"><span class="comment"># CONFIG_HANGCHECK_TIMER is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TCG_TPM is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TELCLOCK is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_DEVPORT</span>=y</span><br><span class="line"><span class="comment"># CONFIG_XILLYBUS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RANDOM_TRUST_CPU is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_RANDOM_TRUST_BOOTLOADER</span>=y</span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># I2C support</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_I2C</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ACPI_I2C_OPREGION</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_I2C_BOARDINFO</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_I2C_COMPAT</span>=y</span><br><span class="line"><span class="comment"># CONFIG_I2C_CHARDEV is not set</span></span><br><span class="line"><span class="comment"># CONFIG_I2C_MUX is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_I2C_HELPER_AUTO</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_I2C_ALGOBIT</span>=y</span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># I2C Hardware Bus support</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># PC SMBus host controller drivers</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_I2C_ALI1535 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_I2C_ALI1563 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_I2C_ALI15X3 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_I2C_AMD756 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_I2C_AMD8111 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_I2C_I801 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_I2C_ISCH is not set</span></span><br><span class="line"><span class="comment"># CONFIG_I2C_ISMT is not set</span></span><br><span class="line"><span class="comment"># CONFIG_I2C_PIIX4 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_I2C_NFORCE2 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_I2C_SIS5595 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_I2C_SIS630 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_I2C_SIS96X is not set</span></span><br><span class="line"><span class="comment"># CONFIG_I2C_VIA is not set</span></span><br><span class="line"><span class="comment"># CONFIG_I2C_VIAPRO is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># ACPI drivers</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_I2C_SCMI is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># I2C system bus drivers (mostly embedded / system-on-chip)</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_I2C_CBUS_GPIO is not set</span></span><br><span class="line"><span class="comment"># CONFIG_I2C_DESIGNWARE_PLATFORM is not set</span></span><br><span class="line"><span class="comment"># CONFIG_I2C_DESIGNWARE_PCI is not set</span></span><br><span class="line"><span class="comment"># CONFIG_I2C_EMEV2 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_I2C_GPIO is not set</span></span><br><span class="line"><span class="comment"># CONFIG_I2C_OCORES is not set</span></span><br><span class="line"><span class="comment"># CONFIG_I2C_PCA_PLATFORM is not set</span></span><br><span class="line"><span class="comment"># CONFIG_I2C_PXA_PCI is not set</span></span><br><span class="line"><span class="comment"># CONFIG_I2C_SIMTEC is not set</span></span><br><span class="line"><span class="comment"># CONFIG_I2C_XILINX is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># External I2C/SMBus adapter drivers</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_I2C_DIOLAN_U2C is not set</span></span><br><span class="line"><span class="comment"># CONFIG_I2C_PARPORT_LIGHT is not set</span></span><br><span class="line"><span class="comment"># CONFIG_I2C_ROBOTFUZZ_OSIF is not set</span></span><br><span class="line"><span class="comment"># CONFIG_I2C_TAOS_EVM is not set</span></span><br><span class="line"><span class="comment"># CONFIG_I2C_TINY_USB is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Other I2C/SMBus bus drivers</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_I2C_MLXCPLD is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_I2C_SLAVE</span>=y</span><br><span class="line"><span class="comment"># CONFIG_I2C_SLAVE_EEPROM is not set</span></span><br><span class="line"><span class="comment"># CONFIG_I2C_DEBUG_CORE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_I2C_DEBUG_ALGO is not set</span></span><br><span class="line"><span class="comment"># CONFIG_I2C_DEBUG_BUS is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_SPI</span>=y</span><br><span class="line"><span class="comment"># CONFIG_SPI_DEBUG is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_SPI_MASTER</span>=y</span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># SPI Master Controller Drivers</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_SPI_ALTERA is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SPI_AXI_SPI_ENGINE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SPI_BITBANG is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SPI_CADENCE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SPI_DESIGNWARE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SPI_GPIO is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SPI_OC_TINY is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SPI_PXA2XX is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SPI_PXA2XX_PCI is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SPI_ROCKCHIP is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SPI_SC18IS602 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SPI_XCOMM is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SPI_XILINX is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SPI_ZYNQMP_GQSPI is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># SPI Protocol Masters</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_SPI_SPIDEV is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SPI_TLE62X0 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SPI_SLAVE is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_SPI_DYNAMIC</span>=y</span><br><span class="line"><span class="comment"># CONFIG_SPMI is not set</span></span><br><span class="line"><span class="comment"># CONFIG_HSI is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_PPS</span>=y</span><br><span class="line"><span class="comment"># CONFIG_PPS_DEBUG is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># PPS clients support</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_PPS_CLIENT_KTIMER is not set</span></span><br><span class="line"><span class="comment"># CONFIG_PPS_CLIENT_LDISC is not set</span></span><br><span class="line"><span class="comment"># CONFIG_PPS_CLIENT_GPIO is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># PPS generators support</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># PTP clock support</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_PTP_1588_CLOCK</span>=y</span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks.</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_PTP_1588_CLOCK_KVM</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_PINCTRL</span>=y</span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Pin controllers</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_PINMUX</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_PINCONF</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_GENERIC_PINCONF</span>=y</span><br><span class="line"><span class="comment"># CONFIG_DEBUG_PINCTRL is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_PINCTRL_AMD</span>=y</span><br><span class="line"><span class="comment"># CONFIG_PINCTRL_MCP23S08 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_PINCTRL_SX150X is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_PINCTRL_BAYTRAIL</span>=y</span><br><span class="line"><span class="comment"># CONFIG_PINCTRL_CHERRYVIEW is not set</span></span><br><span class="line"><span class="comment"># CONFIG_PINCTRL_BROXTON is not set</span></span><br><span class="line"><span class="comment"># CONFIG_PINCTRL_CANNONLAKE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_PINCTRL_DENVERTON is not set</span></span><br><span class="line"><span class="comment"># CONFIG_PINCTRL_GEMINILAKE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_PINCTRL_LEWISBURG is not set</span></span><br><span class="line"><span class="comment"># CONFIG_PINCTRL_SUNRISEPOINT is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_GPIOLIB</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_GPIO_ACPI</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_GPIOLIB_IRQCHIP</span>=y</span><br><span class="line"><span class="comment"># CONFIG_DEBUG_GPIO is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_GPIO_SYSFS</span>=y</span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Memory mapped GPIO drivers</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_GPIO_AMDPT is not set</span></span><br><span class="line"><span class="comment"># CONFIG_GPIO_DWAPB is not set</span></span><br><span class="line"><span class="comment"># CONFIG_GPIO_EXAR is not set</span></span><br><span class="line"><span class="comment"># CONFIG_GPIO_GENERIC_PLATFORM is not set</span></span><br><span class="line"><span class="comment"># CONFIG_GPIO_ICH is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_GPIO_LYNXPOINT</span>=y</span><br><span class="line"><span class="comment"># CONFIG_GPIO_MOCKUP is not set</span></span><br><span class="line"><span class="comment"># CONFIG_GPIO_VX855 is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Port-mapped I/O GPIO drivers</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_GPIO_F7188X is not set</span></span><br><span class="line"><span class="comment"># CONFIG_GPIO_IT87 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_GPIO_SCH is not set</span></span><br><span class="line"><span class="comment"># CONFIG_GPIO_SCH311X is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># I2C GPIO expanders</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_GPIO_ADP5588 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_GPIO_MAX7300 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_GPIO_MAX732X is not set</span></span><br><span class="line"><span class="comment"># CONFIG_GPIO_PCA953X is not set</span></span><br><span class="line"><span class="comment"># CONFIG_GPIO_PCF857X is not set</span></span><br><span class="line"><span class="comment"># CONFIG_GPIO_SX150X is not set</span></span><br><span class="line"><span class="comment"># CONFIG_GPIO_TPIC2810 is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># MFD GPIO expanders</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_GPIO_DA9052 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_GPIO_TPS65912 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_GPIO_WM831X is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># PCI GPIO expanders</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_GPIO_AMD8111 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_GPIO_BT8XX is not set</span></span><br><span class="line"><span class="comment"># CONFIG_GPIO_ML_IOH is not set</span></span><br><span class="line"><span class="comment"># CONFIG_GPIO_PCI_IDIO_16 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_GPIO_RDC321X is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># SPI GPIO expanders</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_GPIO_MAX7301 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_GPIO_MC33880 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_GPIO_PISOSR is not set</span></span><br><span class="line"><span class="comment"># CONFIG_GPIO_XRA1403 is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># USB GPIO expanders</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_W1 is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_POWER_AVS</span>=y</span><br><span class="line"><span class="comment"># CONFIG_POWER_RESET is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_POWER_SUPPLY</span>=y</span><br><span class="line"><span class="comment"># CONFIG_POWER_SUPPLY_DEBUG is not set</span></span><br><span class="line"><span class="comment"># CONFIG_PDA_POWER is not set</span></span><br><span class="line"><span class="comment"># CONFIG_WM831X_BACKUP is not set</span></span><br><span class="line"><span class="comment"># CONFIG_WM831X_POWER is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TEST_POWER is not set</span></span><br><span class="line"><span class="comment"># CONFIG_BATTERY_DS2780 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_BATTERY_DS2781 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_BATTERY_DS2782 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_BATTERY_SBS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CHARGER_SBS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_BATTERY_BQ27XXX is not set</span></span><br><span class="line"><span class="comment"># CONFIG_BATTERY_DA9052 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_BATTERY_MAX17040 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_BATTERY_MAX17042 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CHARGER_MAX8903 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CHARGER_LP8727 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CHARGER_GPIO is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_CHARGER_MANAGER</span>=y</span><br><span class="line"><span class="comment"># CONFIG_CHARGER_LTC3651 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CHARGER_BQ2415X is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CHARGER_BQ24190 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CHARGER_BQ24257 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CHARGER_BQ24735 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CHARGER_BQ25890 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CHARGER_SMB347 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_BATTERY_GAUGE_LTC2941 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_BATTERY_RT5033 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CHARGER_RT9455 is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_HWMON</span>=y</span><br><span class="line"><span class="comment"># CONFIG_HWMON_VID is not set</span></span><br><span class="line"><span class="comment"># CONFIG_HWMON_DEBUG_CHIP is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Native drivers</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_ABITUGURU is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_ABITUGURU3 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_AD7314 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_AD7414 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_AD7418 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_ADM1021 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_ADM1025 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_ADM1026 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_ADM1029 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_ADM1031 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_ADM9240 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_ADT7310 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_ADT7410 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_ADT7411 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_ADT7462 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_ADT7470 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_ADT7475 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_ASC7621 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_K8TEMP is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_K10TEMP is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_FAM15H_POWER is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_APPLESMC is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_ASB100 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_ASPEED is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_ATXP1 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_DS620 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_DS1621 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_DELL_SMM is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_DA9052_ADC is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_I5K_AMB is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_F71805F is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_F71882FG is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_F75375S is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_FSCHMD is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_FTSTEUTATES is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_GL518SM is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_GL520SM is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_G760A is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_G762 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_GPIO_FAN is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_HIH6130 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_I5500 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_CORETEMP is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_IT87 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_JC42 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_POWR1220 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_LINEAGE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_LTC2945 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_LTC2990 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_LTC4151 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_LTC4215 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_LTC4222 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_LTC4245 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_LTC4260 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_LTC4261 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_MAX1111 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_MAX16065 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_MAX1619 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_MAX1668 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_MAX197 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_MAX31722 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_MAX6639 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_MAX6642 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_MAX6650 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_MAX6697 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_MAX31790 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_MCP3021 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_TC654 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_ADCXX is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_LM63 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_LM70 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_LM73 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_LM75 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_LM77 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_LM78 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_LM80 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_LM83 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_LM85 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_LM87 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_LM90 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_LM92 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_LM93 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_LM95234 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_LM95241 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_LM95245 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_PC87360 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_PC87427 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_NTC_THERMISTOR is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_NCT6683 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_NCT6775 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_NCT7802 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_NCT7904 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_PCF8591 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_PMBUS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_SHT15 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_SHT21 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_SHT3x is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_SHTC1 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_SIS5595 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_DME1737 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_EMC1403 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_EMC2103 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_EMC6W201 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_SMSC47M1 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_SMSC47M192 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_SMSC47B397 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_SCH56XX_COMMON is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_SCH5627 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_SCH5636 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_STTS751 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_SMM665 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_ADC128D818 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_ADS1015 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_ADS7828 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_ADS7871 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_AMC6821 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_INA209 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_INA2XX is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_INA3221 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_TC74 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_THMC50 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_TMP102 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_TMP103 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_TMP108 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_TMP401 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_TMP421 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_VIA_CPUTEMP is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_VIA686A is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_VT1211 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_VT8231 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_W83781D is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_W83791D is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_W83792D is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_W83793 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_W83795 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_W83L785TS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_W83L786NG is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_W83627HF is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_W83627EHF is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_WM831X is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_XGENE is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># ACPI drivers</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_ACPI_POWER is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_ATK0110 is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_THERMAL</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS</span>=<span class="number">0</span></span><br><span class="line"><span class="variable constant_">CONFIG_THERMAL_HWMON</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_THERMAL_WRITABLE_TRIPS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE</span>=y</span><br><span class="line"><span class="comment"># CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_THERMAL_DEFAULT_GOV_POWER_ALLOCATOR is not set</span></span><br><span class="line"><span class="comment"># CONFIG_THERMAL_GOV_FAIR_SHARE is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_THERMAL_GOV_STEP_WISE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_THERMAL_GOV_BANG_BANG</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_THERMAL_GOV_USER_SPACE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_THERMAL_GOV_POWER_ALLOCATOR</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_CLOCK_THERMAL</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_DEVFREQ_THERMAL</span>=y</span><br><span class="line"><span class="comment"># CONFIG_THERMAL_EMULATION is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INTEL_POWERCLAMP is not set</span></span><br><span class="line"><span class="comment"># CONFIG_X86_PKG_TEMP_THERMAL is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INTEL_SOC_DTS_THERMAL is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># ACPI INT340X thermal drivers</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_INT340X_THERMAL is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INTEL_PCH_THERMAL is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_WATCHDOG</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_WATCHDOG_CORE</span>=y</span><br><span class="line"><span class="comment"># CONFIG_WATCHDOG_NOWAYOUT is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_WATCHDOG_HANDLE_BOOT_ENABLED</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_WATCHDOG_SYSFS</span>=y</span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Watchdog Device Drivers</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_SOFT_WATCHDOG is not set</span></span><br><span class="line"><span class="comment"># CONFIG_DA9052_WATCHDOG is not set</span></span><br><span class="line"><span class="comment"># CONFIG_WDAT_WDT is not set</span></span><br><span class="line"><span class="comment"># CONFIG_WM831X_WATCHDOG is not set</span></span><br><span class="line"><span class="comment"># CONFIG_XILINX_WATCHDOG is not set</span></span><br><span class="line"><span class="comment"># CONFIG_ZIIRAVE_WATCHDOG is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CADENCE_WATCHDOG is not set</span></span><br><span class="line"><span class="comment"># CONFIG_DW_WATCHDOG is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MAX63XX_WATCHDOG is not set</span></span><br><span class="line"><span class="comment"># CONFIG_ACQUIRE_WDT is not set</span></span><br><span class="line"><span class="comment"># CONFIG_ADVANTECH_WDT is not set</span></span><br><span class="line"><span class="comment"># CONFIG_ALIM1535_WDT is not set</span></span><br><span class="line"><span class="comment"># CONFIG_ALIM7101_WDT is not set</span></span><br><span class="line"><span class="comment"># CONFIG_F71808E_WDT is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SP5100_TCO is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SBC_FITPC2_WATCHDOG is not set</span></span><br><span class="line"><span class="comment"># CONFIG_EUROTECH_WDT is not set</span></span><br><span class="line"><span class="comment"># CONFIG_IB700_WDT is not set</span></span><br><span class="line"><span class="comment"># CONFIG_IBMASR is not set</span></span><br><span class="line"><span class="comment"># CONFIG_WAFER_WDT is not set</span></span><br><span class="line"><span class="comment"># CONFIG_I6300ESB_WDT is not set</span></span><br><span class="line"><span class="comment"># CONFIG_IE6XX_WDT is not set</span></span><br><span class="line"><span class="comment"># CONFIG_ITCO_WDT is not set</span></span><br><span class="line"><span class="comment"># CONFIG_IT8712F_WDT is not set</span></span><br><span class="line"><span class="comment"># CONFIG_IT87_WDT is not set</span></span><br><span class="line"><span class="comment"># CONFIG_HP_WATCHDOG is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SC1200_WDT is not set</span></span><br><span class="line"><span class="comment"># CONFIG_PC87413_WDT is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NV_TCO is not set</span></span><br><span class="line"><span class="comment"># CONFIG_60XX_WDT is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CPU5_WDT is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SMSC_SCH311X_WDT is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SMSC37B787_WDT is not set</span></span><br><span class="line"><span class="comment"># CONFIG_VIA_WDT is not set</span></span><br><span class="line"><span class="comment"># CONFIG_W83627HF_WDT is not set</span></span><br><span class="line"><span class="comment"># CONFIG_W83877F_WDT is not set</span></span><br><span class="line"><span class="comment"># CONFIG_W83977F_WDT is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MACHZ_WDT is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SBC_EPX_C3_WATCHDOG is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NI903X_WDT is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NIC7018_WDT is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MEN_A21_WDT is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># PCI-based Watchdog Cards</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_PCIPCWATCHDOG is not set</span></span><br><span class="line"><span class="comment"># CONFIG_WDTPCI is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># USB-based Watchdog Cards</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_USBPCWATCHDOG is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Watchdog Pretimeout Governors</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_WATCHDOG_PRETIMEOUT_GOV is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_SSB_POSSIBLE</span>=y</span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Sonics Silicon Backplane</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_SSB</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SSB_SPROM</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SSB_PCIHOST_POSSIBLE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SSB_PCIHOST</span>=y</span><br><span class="line"><span class="comment"># CONFIG_SSB_B43_PCI_BRIDGE is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_SSB_SDIOHOST_POSSIBLE</span>=y</span><br><span class="line"><span class="comment"># CONFIG_SSB_SDIOHOST is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SSB_SILENT is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SSB_DEBUG is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_SSB_DRIVER_PCICORE_POSSIBLE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SSB_DRIVER_PCICORE</span>=y</span><br><span class="line"><span class="comment"># CONFIG_SSB_DRIVER_GPIO is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_BCMA_POSSIBLE</span>=y</span><br><span class="line"><span class="comment"># CONFIG_BCMA is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Multifunction device drivers</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_MFD_CORE</span>=y</span><br><span class="line"><span class="comment"># CONFIG_MFD_AS3711 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_PMIC_ADP5520 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MFD_AAT2870_CORE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MFD_BCM590XX is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MFD_BD9571MWV is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MFD_AXP20X_I2C is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MFD_CROS_EC is not set</span></span><br><span class="line"><span class="comment"># CONFIG_PMIC_DA903X is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_PMIC_DA9052</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_MFD_DA9052_SPI</span>=y</span><br><span class="line"><span class="comment"># CONFIG_MFD_DA9052_I2C is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MFD_DA9055 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MFD_DA9062 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MFD_DA9063 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MFD_DA9150 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MFD_DLN2 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MFD_MC13XXX_SPI is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MFD_MC13XXX_I2C is not set</span></span><br><span class="line"><span class="comment"># CONFIG_HTC_PASIC3 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_HTC_I2CPLD is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MFD_INTEL_QUARK_I2C_GPIO is not set</span></span><br><span class="line"><span class="comment"># CONFIG_LPC_ICH is not set</span></span><br><span class="line"><span class="comment"># CONFIG_LPC_SCH is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INTEL_SOC_PMIC is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INTEL_SOC_PMIC_CHTWC is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MFD_INTEL_LPSS_ACPI is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MFD_INTEL_LPSS_PCI is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MFD_JANZ_CMODIO is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MFD_KEMPLD is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MFD_88PM800 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MFD_88PM805 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MFD_88PM860X is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MFD_MAX14577 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MFD_MAX77693 is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_MFD_MAX77843</span>=y</span><br><span class="line"><span class="comment"># CONFIG_MFD_MAX8907 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MFD_MAX8925 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MFD_MAX8997 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MFD_MAX8998 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MFD_MT6397 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MFD_MENF21BMC is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_EZX_PCAP</span>=y</span><br><span class="line"><span class="comment"># CONFIG_MFD_VIPERBOARD is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MFD_RETU is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MFD_PCF50633 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MFD_RDC321X is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MFD_RTSX_PCI is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MFD_RT5033 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MFD_RTSX_USB is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MFD_RC5T583 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MFD_SEC_CORE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MFD_SI476X_CORE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MFD_SM501 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MFD_SKY81452 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MFD_SMSC is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_ABX500_CORE</span>=y</span><br><span class="line"><span class="comment"># CONFIG_AB3100_CORE is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_MFD_SYSCON</span>=y</span><br><span class="line"><span class="comment"># CONFIG_MFD_TI_AM335X_TSCADC is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MFD_LP3943 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MFD_LP8788 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MFD_TI_LMU is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MFD_PALMAS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TPS6105X is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TPS65010 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TPS6507X is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MFD_TPS65086 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MFD_TPS65090 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MFD_TPS65217 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MFD_TPS68470 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MFD_TI_LP873X is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MFD_TPS65218 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MFD_TPS6586X is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MFD_TPS65910 is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_MFD_TPS65912</span>=y</span><br><span class="line"><span class="comment"># CONFIG_MFD_TPS65912_I2C is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_MFD_TPS65912_SPI</span>=y</span><br><span class="line"><span class="comment"># CONFIG_MFD_TPS80031 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TWL4030_CORE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TWL6040_CORE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MFD_WL1273_CORE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MFD_LM3533 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MFD_TMIO is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MFD_VX855 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MFD_ARIZONA_I2C is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MFD_ARIZONA_SPI is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MFD_WM8400 is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_MFD_WM831X</span>=y</span><br><span class="line"><span class="comment"># CONFIG_MFD_WM831X_I2C is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_MFD_WM831X_SPI</span>=y</span><br><span class="line"><span class="comment"># CONFIG_MFD_WM8350_I2C is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MFD_WM8994 is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_REGULATOR</span>=y</span><br><span class="line"><span class="comment"># CONFIG_REGULATOR_DEBUG is not set</span></span><br><span class="line"><span class="comment"># CONFIG_REGULATOR_FIXED_VOLTAGE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set</span></span><br><span class="line"><span class="comment"># CONFIG_REGULATOR_USERSPACE_CONSUMER is not set</span></span><br><span class="line"><span class="comment"># CONFIG_REGULATOR_ACT8865 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_REGULATOR_AD5398 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_REGULATOR_ANATOP is not set</span></span><br><span class="line"><span class="comment"># CONFIG_REGULATOR_DA9052 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_REGULATOR_DA9210 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_REGULATOR_DA9211 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_REGULATOR_FAN53555 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_REGULATOR_GPIO is not set</span></span><br><span class="line"><span class="comment"># CONFIG_REGULATOR_ISL9305 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_REGULATOR_ISL6271A is not set</span></span><br><span class="line"><span class="comment"># CONFIG_REGULATOR_LP3971 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_REGULATOR_LP3972 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_REGULATOR_LP872X is not set</span></span><br><span class="line"><span class="comment"># CONFIG_REGULATOR_LP8755 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_REGULATOR_LTC3589 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_REGULATOR_LTC3676 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_REGULATOR_MAX1586 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_REGULATOR_MAX8649 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_REGULATOR_MAX8660 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_REGULATOR_MAX8952 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_REGULATOR_MAX77693 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_REGULATOR_MT6311 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_REGULATOR_PCAP is not set</span></span><br><span class="line"><span class="comment"># CONFIG_REGULATOR_PFUZE100 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_REGULATOR_PV88060 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_REGULATOR_PV88080 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_REGULATOR_PV88090 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_REGULATOR_PWM is not set</span></span><br><span class="line"><span class="comment"># CONFIG_REGULATOR_TPS51632 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_REGULATOR_TPS62360 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_REGULATOR_TPS65023 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_REGULATOR_TPS6507X is not set</span></span><br><span class="line"><span class="comment"># CONFIG_REGULATOR_TPS65132 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_REGULATOR_TPS6524X is not set</span></span><br><span class="line"><span class="comment"># CONFIG_REGULATOR_TPS65912 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_REGULATOR_WM831X is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RC_CORE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MEDIA_SUPPORT is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Graphics support</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_AGP</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_AGP_AMD64</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_AGP_INTEL</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_AGP_SIS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_AGP_VIA</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_INTEL_GTT</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_VGA_ARB</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_VGA_ARB_MAX_GPUS</span>=<span class="number">16</span></span><br><span class="line"><span class="variable constant_">CONFIG_VGA_SWITCHEROO</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_DRM</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_DRM_MIPI_DSI</span>=y</span><br><span class="line"><span class="comment"># CONFIG_DRM_DP_AUX_CHARDEV is not set</span></span><br><span class="line"><span class="comment"># CONFIG_DRM_DEBUG_MM is not set</span></span><br><span class="line"><span class="comment"># CONFIG_DRM_DEBUG_MM_SELFTEST is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_DRM_KMS_HELPER</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_DRM_KMS_FB_HELPER</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_DRM_FBDEV_EMULATION</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_DRM_FBDEV_OVERALLOC</span>=<span class="number">100</span></span><br><span class="line"><span class="comment"># CONFIG_DRM_LOAD_EDID_FIRMWARE is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_DRM_TTM</span>=y</span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># I2C encoder or helper chips</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_DRM_I2C_CH7006</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_DRM_I2C_SIL164</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_DRM_I2C_NXP_TDA998X</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_DRM_RADEON</span>=y</span><br><span class="line"><span class="comment"># CONFIG_DRM_RADEON_USERPTR is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_DRM_AMDGPU</span>=y</span><br><span class="line"><span class="comment"># CONFIG_DRM_AMDGPU_SI is not set</span></span><br><span class="line"><span class="comment"># CONFIG_DRM_AMDGPU_CIK is not set</span></span><br><span class="line"><span class="comment"># CONFIG_DRM_AMDGPU_USERPTR is not set</span></span><br><span class="line"><span class="comment"># CONFIG_DRM_AMDGPU_GART_DEBUGFS is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># ACP (Audio CoProcessor) Configuration</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_DRM_AMD_ACP is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_DRM_NOUVEAU</span>=y</span><br><span class="line"><span class="comment"># CONFIG_NOUVEAU_LEGACY_CTX_SUPPORT is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_NOUVEAU_DEBUG</span>=<span class="number">5</span></span><br><span class="line"><span class="variable constant_">CONFIG_NOUVEAU_DEBUG_DEFAULT</span>=<span class="number">3</span></span><br><span class="line"><span class="comment"># CONFIG_DRM_NOUVEAU_BACKLIGHT is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_DRM_I915</span>=y</span><br><span class="line"><span class="comment"># CONFIG_DRM_I915_ALPHA_SUPPORT is not set</span></span><br><span class="line"><span class="comment"># CONFIG_DRM_I915_CAPTURE_ERROR is not set</span></span><br><span class="line"><span class="comment"># CONFIG_DRM_I915_USERPTR is not set</span></span><br><span class="line"><span class="comment"># CONFIG_DRM_I915_GVT is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># drm/i915 Debugging</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_DRM_I915_WERROR is not set</span></span><br><span class="line"><span class="comment"># CONFIG_DRM_I915_DEBUG is not set</span></span><br><span class="line"><span class="comment"># CONFIG_DRM_I915_SW_FENCE_DEBUG_OBJECTS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_DRM_I915_SW_FENCE_CHECK_DAG is not set</span></span><br><span class="line"><span class="comment"># CONFIG_DRM_I915_SELFTEST is not set</span></span><br><span class="line"><span class="comment"># CONFIG_DRM_I915_LOW_LEVEL_TRACEPOINTS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_DRM_I915_DEBUG_VBLANK_EVADE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_DRM_VGEM is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_DRM_VMWGFX</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_DRM_VMWGFX_FBCON</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_DRM_GMA500</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_DRM_GMA600</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_DRM_GMA3600</span>=y</span><br><span class="line"><span class="comment"># CONFIG_DRM_UDL is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_DRM_AST</span>=y</span><br><span class="line"><span class="comment"># CONFIG_DRM_MGAG200 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_DRM_CIRRUS_QEMU is not set</span></span><br><span class="line"><span class="comment"># CONFIG_DRM_QXL is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_DRM_BOCHS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_DRM_PANEL</span>=y</span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Display Panels</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_DRM_BRIDGE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_DRM_PANEL_BRIDGE</span>=y</span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Display Interface Bridges</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_DRM_ANALOGIX_ANX78XX is not set</span></span><br><span class="line"><span class="comment"># CONFIG_DRM_HISI_HIBMC is not set</span></span><br><span class="line"><span class="comment"># CONFIG_DRM_TINYDRM is not set</span></span><br><span class="line"><span class="comment"># CONFIG_DRM_LEGACY is not set</span></span><br><span class="line"><span class="comment"># CONFIG_DRM_LIB_RANDOM is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Frame buffer Devices</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_FB</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_FIRMWARE_EDID</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_FB_CMDLINE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_FB_NOTIFY</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_FB_DDC</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_FB_BOOT_VESA_SUPPORT</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_FB_CFB_FILLRECT</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_FB_CFB_COPYAREA</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_FB_CFB_IMAGEBLIT</span>=y</span><br><span class="line"><span class="comment"># CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_FB_SYS_FILLRECT</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_FB_SYS_COPYAREA</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_FB_SYS_IMAGEBLIT</span>=y</span><br><span class="line"><span class="comment"># CONFIG_FB_PROVIDE_GET_FB_UNMAPPED_AREA is not set</span></span><br><span class="line"><span class="comment"># CONFIG_FB_FOREIGN_ENDIAN is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_FB_SYS_FOPS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_FB_DEFERRED_IO</span>=y</span><br><span class="line"><span class="comment"># CONFIG_FB_SVGALIB is not set</span></span><br><span class="line"><span class="comment"># CONFIG_FB_MACMODES is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_FB_BACKLIGHT</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_FB_MODE_HELPERS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_FB_TILEBLITTING</span>=y</span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Frame buffer hardware drivers</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_FB_CIRRUS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_FB_PM2 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_FB_CYBER2000 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_FB_ARC is not set</span></span><br><span class="line"><span class="comment"># CONFIG_FB_ASILIANT is not set</span></span><br><span class="line"><span class="comment"># CONFIG_FB_IMSTT is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_FB_VGA16</span>=y</span><br><span class="line"><span class="comment"># CONFIG_FB_UVESA is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_FB_VESA</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_FB_EFI</span>=y</span><br><span class="line"><span class="comment"># CONFIG_FB_N411 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_FB_HGA is not set</span></span><br><span class="line"><span class="comment"># CONFIG_FB_OPENCORES is not set</span></span><br><span class="line"><span class="comment"># CONFIG_FB_S1D13XXX is not set</span></span><br><span class="line"><span class="comment"># CONFIG_FB_NVIDIA is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_FB_RIVA</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_FB_RIVA_I2C</span>=y</span><br><span class="line"><span class="comment"># CONFIG_FB_RIVA_DEBUG is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_FB_RIVA_BACKLIGHT</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_FB_I740</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_FB_LE80578</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_FB_CARILLO_RANCH</span>=y</span><br><span class="line"><span class="comment"># CONFIG_FB_MATROX is not set</span></span><br><span class="line"><span class="comment"># CONFIG_FB_RADEON is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_FB_ATY128</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_FB_ATY128_BACKLIGHT</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_FB_ATY</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_FB_ATY_CT</span>=y</span><br><span class="line"><span class="comment"># CONFIG_FB_ATY_GENERIC_LCD is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_FB_ATY_GX</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_FB_ATY_BACKLIGHT</span>=y</span><br><span class="line"><span class="comment"># CONFIG_FB_S3 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_FB_SAVAGE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_FB_SIS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_FB_VIA is not set</span></span><br><span class="line"><span class="comment"># CONFIG_FB_NEOMAGIC is not set</span></span><br><span class="line"><span class="comment"># CONFIG_FB_KYRO is not set</span></span><br><span class="line"><span class="comment"># CONFIG_FB_3DFX is not set</span></span><br><span class="line"><span class="comment"># CONFIG_FB_VOODOO1 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_FB_VT8623 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_FB_TRIDENT is not set</span></span><br><span class="line"><span class="comment"># CONFIG_FB_ARK is not set</span></span><br><span class="line"><span class="comment"># CONFIG_FB_PM3 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_FB_CARMINE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_FB_SMSCUFX is not set</span></span><br><span class="line"><span class="comment"># CONFIG_FB_UDL is not set</span></span><br><span class="line"><span class="comment"># CONFIG_FB_IBM_GXT4500 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_FB_VIRTUAL is not set</span></span><br><span class="line"><span class="comment"># CONFIG_FB_METRONOME is not set</span></span><br><span class="line"><span class="comment"># CONFIG_FB_MB862XX is not set</span></span><br><span class="line"><span class="comment"># CONFIG_FB_BROADSHEET is not set</span></span><br><span class="line"><span class="comment"># CONFIG_FB_AUO_K190X is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_FB_SIMPLE</span>=y</span><br><span class="line"><span class="comment"># CONFIG_FB_SM712 is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_BACKLIGHT_LCD_SUPPORT</span>=y</span><br><span class="line"><span class="comment"># CONFIG_LCD_CLASS_DEVICE is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_BACKLIGHT_CLASS_DEVICE</span>=y</span><br><span class="line"><span class="comment"># CONFIG_BACKLIGHT_GENERIC is not set</span></span><br><span class="line"><span class="comment"># CONFIG_BACKLIGHT_PWM is not set</span></span><br><span class="line"><span class="comment"># CONFIG_BACKLIGHT_DA9052 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_BACKLIGHT_APPLE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_BACKLIGHT_PM8941_WLED is not set</span></span><br><span class="line"><span class="comment"># CONFIG_BACKLIGHT_SAHARA is not set</span></span><br><span class="line"><span class="comment"># CONFIG_BACKLIGHT_WM831X is not set</span></span><br><span class="line"><span class="comment"># CONFIG_BACKLIGHT_ADP8860 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_BACKLIGHT_ADP8870 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_BACKLIGHT_LM3630A is not set</span></span><br><span class="line"><span class="comment"># CONFIG_BACKLIGHT_LM3639 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_BACKLIGHT_LP855X is not set</span></span><br><span class="line"><span class="comment"># CONFIG_BACKLIGHT_GPIO is not set</span></span><br><span class="line"><span class="comment"># CONFIG_BACKLIGHT_LV5207LP is not set</span></span><br><span class="line"><span class="comment"># CONFIG_BACKLIGHT_BD6107 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_BACKLIGHT_ARCXCNN is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_VGASTATE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HDMI</span>=y</span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Console display driver support</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_VGA_CONSOLE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_DUMMY_CONSOLE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_DUMMY_CONSOLE_COLUMNS</span>=<span class="number">80</span></span><br><span class="line"><span class="variable constant_">CONFIG_DUMMY_CONSOLE_ROWS</span>=<span class="number">25</span></span><br><span class="line"><span class="variable constant_">CONFIG_FRAMEBUFFER_CONSOLE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_FRAMEBUFFER_CONSOLE_ROTATION</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_LOGO</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_LOGO_LINUX_MONO</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_LOGO_LINUX_VGA16</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_LOGO_LINUX_CLUT224</span>=y</span><br><span class="line"><span class="comment"># CONFIG_SOUND is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># HID support</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_HID</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HID_BATTERY_STRENGTH</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HIDRAW</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_UHID</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HID_GENERIC</span>=y</span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Special HID drivers</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_HID_A4TECH</span>=y</span><br><span class="line"><span class="comment"># CONFIG_HID_ACCUTOUCH is not set</span></span><br><span class="line"><span class="comment"># CONFIG_HID_ACRUX is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_HID_APPLE</span>=y</span><br><span class="line"><span class="comment"># CONFIG_HID_APPLEIR is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_HID_ASUS</span>=y</span><br><span class="line"><span class="comment"># CONFIG_HID_AUREAL is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_HID_BELKIN</span>=y</span><br><span class="line"><span class="comment"># CONFIG_HID_BETOP_FF is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_HID_CHERRY</span>=y</span><br><span class="line"><span class="comment"># CONFIG_HID_CHICONY is not set</span></span><br><span class="line"><span class="comment"># CONFIG_HID_CORSAIR is not set</span></span><br><span class="line"><span class="comment"># CONFIG_HID_CMEDIA is not set</span></span><br><span class="line"><span class="comment"># CONFIG_HID_CP2112 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_HID_CYPRESS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_HID_DRAGONRISE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_HID_EMS_FF is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_HID_ELECOM</span>=y</span><br><span class="line"><span class="comment"># CONFIG_HID_ELO is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_HID_EZKEY</span>=y</span><br><span class="line"><span class="comment"># CONFIG_HID_GEMBIRD is not set</span></span><br><span class="line"><span class="comment"># CONFIG_HID_GFRM is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_HID_HOLTEK</span>=y</span><br><span class="line"><span class="comment"># CONFIG_HOLTEK_FF is not set</span></span><br><span class="line"><span class="comment"># CONFIG_HID_GT683R is not set</span></span><br><span class="line"><span class="comment"># CONFIG_HID_KEYTOUCH is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_HID_KYE</span>=y</span><br><span class="line"><span class="comment"># CONFIG_HID_UCLOGIC is not set</span></span><br><span class="line"><span class="comment"># CONFIG_HID_WALTOP is not set</span></span><br><span class="line"><span class="comment"># CONFIG_HID_GYRATION is not set</span></span><br><span class="line"><span class="comment"># CONFIG_HID_ICADE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_HID_ITE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_HID_TWINHAN is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_HID_KENSINGTON</span>=y</span><br><span class="line"><span class="comment"># CONFIG_HID_LCPOWER is not set</span></span><br><span class="line"><span class="comment"># CONFIG_HID_LED is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_HID_LENOVO</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HID_LOGITECH</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HID_LOGITECH_DJ</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HID_LOGITECH_HIDPP</span>=y</span><br><span class="line"><span class="comment"># CONFIG_LOGITECH_FF is not set</span></span><br><span class="line"><span class="comment"># CONFIG_LOGIRUMBLEPAD2_FF is not set</span></span><br><span class="line"><span class="comment"># CONFIG_LOGIG940_FF is not set</span></span><br><span class="line"><span class="comment"># CONFIG_LOGIWHEELS_FF is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_HID_MAGICMOUSE</span>=y</span><br><span class="line"><span class="comment"># CONFIG_HID_MAYFLASH is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_HID_MICROSOFT</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HID_MONTEREY</span>=y</span><br><span class="line"><span class="comment"># CONFIG_HID_MULTITOUCH is not set</span></span><br><span class="line"><span class="comment"># CONFIG_HID_NTI is not set</span></span><br><span class="line"><span class="comment"># CONFIG_HID_NTRIG is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_HID_ORTEK</span>=y</span><br><span class="line"><span class="comment"># CONFIG_HID_PANTHERLORD is not set</span></span><br><span class="line"><span class="comment"># CONFIG_HID_PENMOUNT is not set</span></span><br><span class="line"><span class="comment"># CONFIG_HID_PETALYNX is not set</span></span><br><span class="line"><span class="comment"># CONFIG_HID_PICOLCD is not set</span></span><br><span class="line"><span class="comment"># CONFIG_HID_PLANTRONICS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_HID_PRIMAX is not set</span></span><br><span class="line"><span class="comment"># CONFIG_HID_RETRODE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_HID_ROCCAT is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_HID_SAITEK</span>=y</span><br><span class="line"><span class="comment"># CONFIG_HID_SAMSUNG is not set</span></span><br><span class="line"><span class="comment"># CONFIG_HID_SONY is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_HID_SPEEDLINK</span>=y</span><br><span class="line"><span class="comment"># CONFIG_HID_STEELSERIES is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_HID_SUNPLUS</span>=y</span><br><span class="line"><span class="comment"># CONFIG_HID_RMI is not set</span></span><br><span class="line"><span class="comment"># CONFIG_HID_GREENASIA is not set</span></span><br><span class="line"><span class="comment"># CONFIG_HID_SMARTJOYPLUS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_HID_TIVO is not set</span></span><br><span class="line"><span class="comment"># CONFIG_HID_TOPSEED is not set</span></span><br><span class="line"><span class="comment"># CONFIG_HID_THINGM is not set</span></span><br><span class="line"><span class="comment"># CONFIG_HID_THRUSTMASTER is not set</span></span><br><span class="line"><span class="comment"># CONFIG_HID_UDRAW_PS3 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_HID_WACOM is not set</span></span><br><span class="line"><span class="comment"># CONFIG_HID_WIIMOTE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_HID_XINMO is not set</span></span><br><span class="line"><span class="comment"># CONFIG_HID_ZEROPLUS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_HID_ZYDACRON is not set</span></span><br><span class="line"><span class="comment"># CONFIG_HID_SENSOR_HUB is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_HID_ALPS</span>=y</span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># USB HID support</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_USB_HID</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HID_PID</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_USB_HIDDEV</span>=y</span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># I2C HID support</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_I2C_HID</span>=y</span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Intel ISH HID support</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_INTEL_ISH_HID is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_USB_OHCI_LITTLE_ENDIAN</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_USB_SUPPORT</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_USB_COMMON</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_USB_ARCH_HAS_HCD</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_USB</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_USB_PCI</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_USB_ANNOUNCE_NEW_DEVICES</span>=y</span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Miscellaneous USB options</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_USB_DEFAULT_PERSIST</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_USB_DYNAMIC_MINORS</span>=y</span><br><span class="line"><span class="comment"># CONFIG_USB_OTG is not set</span></span><br><span class="line"><span class="comment"># CONFIG_USB_OTG_WHITELIST is not set</span></span><br><span class="line"><span class="comment"># CONFIG_USB_OTG_BLACKLIST_HUB is not set</span></span><br><span class="line"><span class="comment"># CONFIG_USB_LEDS_TRIGGER_USBPORT is not set</span></span><br><span class="line"><span class="comment"># CONFIG_USB_MON is not set</span></span><br><span class="line"><span class="comment"># CONFIG_USB_WUSB_CBAF is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># USB Host Controller Drivers</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_USB_C67X00_HCD is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_USB_XHCI_HCD</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_USB_XHCI_PCI</span>=y</span><br><span class="line"><span class="comment"># CONFIG_USB_XHCI_PLATFORM is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_USB_EHCI_HCD</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_USB_EHCI_ROOT_HUB_TT</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_USB_EHCI_TT_NEWSCHED</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_USB_EHCI_PCI</span>=y</span><br><span class="line"><span class="comment"># CONFIG_USB_EHCI_HCD_PLATFORM is not set</span></span><br><span class="line"><span class="comment"># CONFIG_USB_OXU210HP_HCD is not set</span></span><br><span class="line"><span class="comment"># CONFIG_USB_ISP116X_HCD is not set</span></span><br><span class="line"><span class="comment"># CONFIG_USB_ISP1362_HCD is not set</span></span><br><span class="line"><span class="comment"># CONFIG_USB_FOTG210_HCD is not set</span></span><br><span class="line"><span class="comment"># CONFIG_USB_MAX3421_HCD is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_USB_OHCI_HCD</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_USB_OHCI_HCD_PCI</span>=y</span><br><span class="line"><span class="comment"># CONFIG_USB_OHCI_HCD_SSB is not set</span></span><br><span class="line"><span class="comment"># CONFIG_USB_OHCI_HCD_PLATFORM is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_USB_UHCI_HCD</span>=y</span><br><span class="line"><span class="comment"># CONFIG_USB_SL811_HCD is not set</span></span><br><span class="line"><span class="comment"># CONFIG_USB_R8A66597_HCD is not set</span></span><br><span class="line"><span class="comment"># CONFIG_USB_HCD_SSB is not set</span></span><br><span class="line"><span class="comment"># CONFIG_USB_HCD_TEST_MODE is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># USB Device Class drivers</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_USB_ACM is not set</span></span><br><span class="line"><span class="comment"># CONFIG_USB_PRINTER is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_USB_WDM</span>=y</span><br><span class="line"><span class="comment"># CONFIG_USB_TMC is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># <span class="doctag">NOTE:</span> USB_STORAGE depends on SCSI but BLK_DEV_SD may</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># also be needed; see USB_STORAGE Help for more info</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_USB_STORAGE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_USB_STORAGE_DEBUG</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_USB_STORAGE_REALTEK</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_REALTEK_AUTOPM</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_USB_STORAGE_DATAFAB</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_USB_STORAGE_FREECOM</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_USB_STORAGE_ISD200</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_USB_STORAGE_USBAT</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_USB_STORAGE_SDDR09</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_USB_STORAGE_SDDR55</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_USB_STORAGE_JUMPSHOT</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_USB_STORAGE_ALAUDA</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_USB_STORAGE_ONETOUCH</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_USB_STORAGE_KARMA</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_USB_STORAGE_CYPRESS_ATACB</span>=y</span><br><span class="line"><span class="comment"># CONFIG_USB_STORAGE_ENE_UB6250 is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_USB_UAS</span>=y</span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># USB Imaging devices</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_USB_MDC800 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_USB_MICROTEK is not set</span></span><br><span class="line"><span class="comment"># CONFIG_USBIP_CORE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_USB_MUSB_HDRC is not set</span></span><br><span class="line"><span class="comment"># CONFIG_USB_DWC3 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_USB_DWC2 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_USB_CHIPIDEA is not set</span></span><br><span class="line"><span class="comment"># CONFIG_USB_ISP1760 is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># USB port drivers</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_USB_SERIAL is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># USB Miscellaneous drivers</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_USB_EMI62 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_USB_EMI26 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_USB_ADUTUX is not set</span></span><br><span class="line"><span class="comment"># CONFIG_USB_SEVSEG is not set</span></span><br><span class="line"><span class="comment"># CONFIG_USB_LEGOTOWER is not set</span></span><br><span class="line"><span class="comment"># CONFIG_USB_LCD is not set</span></span><br><span class="line"><span class="comment"># CONFIG_USB_CYPRESS_CY7C63 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_USB_CYTHERM is not set</span></span><br><span class="line"><span class="comment"># CONFIG_USB_IDMOUSE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_USB_FTDI_ELAN is not set</span></span><br><span class="line"><span class="comment"># CONFIG_USB_APPLEDISPLAY is not set</span></span><br><span class="line"><span class="comment"># CONFIG_USB_SISUSBVGA is not set</span></span><br><span class="line"><span class="comment"># CONFIG_USB_LD is not set</span></span><br><span class="line"><span class="comment"># CONFIG_USB_TRANCEVIBRATOR is not set</span></span><br><span class="line"><span class="comment"># CONFIG_USB_IOWARRIOR is not set</span></span><br><span class="line"><span class="comment"># CONFIG_USB_TEST is not set</span></span><br><span class="line"><span class="comment"># CONFIG_USB_EHSET_TEST_FIXTURE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_USB_ISIGHTFW is not set</span></span><br><span class="line"><span class="comment"># CONFIG_USB_YUREX is not set</span></span><br><span class="line"><span class="comment"># CONFIG_USB_EZUSB_FX2 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_USB_HUB_USB251XB is not set</span></span><br><span class="line"><span class="comment"># CONFIG_USB_HSIC_USB3503 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_USB_HSIC_USB4604 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_USB_LINK_LAYER_TEST is not set</span></span><br><span class="line"><span class="comment"># CONFIG_USB_CHAOSKEY is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># USB Physical Layer drivers</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_USB_PHY is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NOP_USB_XCEIV is not set</span></span><br><span class="line"><span class="comment"># CONFIG_USB_GPIO_VBUS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_USB_ISP1301 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_USB_GADGET is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># USB Power Delivery and Type-C drivers</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_TYPEC</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_TYPEC_UCSI</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_UCSI_ACPI</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_USB_LED_TRIG</span>=y</span><br><span class="line"><span class="comment"># CONFIG_USB_ULPI_BUS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_UWB is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_MMC</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_MMC_BLOCK</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_MMC_BLOCK_MINORS</span>=<span class="number">8</span></span><br><span class="line"><span class="variable constant_">CONFIG_SDIO_UART</span>=y</span><br><span class="line"><span class="comment"># CONFIG_MMC_TEST is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># MMC/SD/SDIO Host Controller Drivers</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_MMC_DEBUG is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MMC_SDHCI is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MMC_WBSD is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MMC_TIFM_SD is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MMC_SPI is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MMC_CB710 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MMC_VIA_SDMMC is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MMC_VUB300 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MMC_USHC is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MMC_USDHI6ROL0 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MMC_TOSHIBA_PCI is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MMC_MTK is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MEMSTICK is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_NEW_LEDS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_LEDS_CLASS</span>=y</span><br><span class="line"><span class="comment"># CONFIG_LEDS_CLASS_FLASH is not set</span></span><br><span class="line"><span class="comment"># CONFIG_LEDS_BRIGHTNESS_HW_CHANGED is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># LED drivers</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_LEDS_LM3530 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_LEDS_LM3642 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_LEDS_PCA9532 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_LEDS_GPIO is not set</span></span><br><span class="line"><span class="comment"># CONFIG_LEDS_LP3944 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_LEDS_LP3952 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_LEDS_LP5521 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_LEDS_LP5523 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_LEDS_LP5562 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_LEDS_LP8501 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_LEDS_LP8860 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_LEDS_CLEVO_MAIL is not set</span></span><br><span class="line"><span class="comment"># CONFIG_LEDS_PCA955X is not set</span></span><br><span class="line"><span class="comment"># CONFIG_LEDS_PCA963X is not set</span></span><br><span class="line"><span class="comment"># CONFIG_LEDS_WM831X_STATUS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_LEDS_DA9052 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_LEDS_DAC124S085 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_LEDS_PWM is not set</span></span><br><span class="line"><span class="comment"># CONFIG_LEDS_REGULATOR is not set</span></span><br><span class="line"><span class="comment"># CONFIG_LEDS_BD2802 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_LEDS_INTEL_SS4200 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_LEDS_LT3593 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_LEDS_TCA6507 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_LEDS_TLC591XX is not set</span></span><br><span class="line"><span class="comment"># CONFIG_LEDS_LM355x is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># LED driver for blink(1) USB RGB LED is under Special HID drivers (HID_THINGM)</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_LEDS_BLINKM is not set</span></span><br><span class="line"><span class="comment"># CONFIG_LEDS_MLXCPLD is not set</span></span><br><span class="line"><span class="comment"># CONFIG_LEDS_USER is not set</span></span><br><span class="line"><span class="comment"># CONFIG_LEDS_NIC78BX is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># LED Triggers</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_LEDS_TRIGGERS</span>=y</span><br><span class="line"><span class="comment"># CONFIG_LEDS_TRIGGER_TIMER is not set</span></span><br><span class="line"><span class="comment"># CONFIG_LEDS_TRIGGER_ONESHOT is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_LEDS_TRIGGER_DISK</span>=y</span><br><span class="line"><span class="comment"># CONFIG_LEDS_TRIGGER_HEARTBEAT is not set</span></span><br><span class="line"><span class="comment"># CONFIG_LEDS_TRIGGER_BACKLIGHT is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_LEDS_TRIGGER_CPU</span>=y</span><br><span class="line"><span class="comment"># CONFIG_LEDS_TRIGGER_GPIO is not set</span></span><br><span class="line"><span class="comment"># CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># iptables trigger is under Netfilter config (LED target)</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_LEDS_TRIGGER_TRANSIENT is not set</span></span><br><span class="line"><span class="comment"># CONFIG_LEDS_TRIGGER_CAMERA is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_LEDS_TRIGGER_PANIC</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ACCESSIBILITY</span>=y</span><br><span class="line"><span class="comment"># CONFIG_A11Y_BRAILLE_CONSOLE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INFINIBAND is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_EDAC_ATOMIC_SCRUB</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_EDAC_SUPPORT</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_EDAC</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_EDAC_LEGACY_SYSFS</span>=y</span><br><span class="line"><span class="comment"># CONFIG_EDAC_DEBUG is not set</span></span><br><span class="line"><span class="comment"># CONFIG_EDAC_DECODE_MCE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_EDAC_GHES is not set</span></span><br><span class="line"><span class="comment"># CONFIG_EDAC_E752X is not set</span></span><br><span class="line"><span class="comment"># CONFIG_EDAC_I82975X is not set</span></span><br><span class="line"><span class="comment"># CONFIG_EDAC_I3000 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_EDAC_I3200 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_EDAC_IE31200 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_EDAC_X38 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_EDAC_I5400 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_EDAC_I7CORE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_EDAC_I5000 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_EDAC_I5100 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_EDAC_I7300 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_EDAC_PND2 is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_RTC_LIB</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_RTC_MC146818_LIB</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_RTC_CLASS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_RTC_HCTOSYS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_RTC_HCTOSYS_DEVICE</span>=<span class="string">&quot;rtc0&quot;</span></span><br><span class="line"><span class="variable constant_">CONFIG_RTC_SYSTOHC</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_RTC_SYSTOHC_DEVICE</span>=<span class="string">&quot;rtc0&quot;</span></span><br><span class="line"><span class="comment"># CONFIG_RTC_DEBUG is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_RTC_NVMEM</span>=y</span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># RTC interfaces</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_RTC_INTF_SYSFS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_RTC_INTF_PROC</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_RTC_INTF_DEV</span>=y</span><br><span class="line"><span class="comment"># CONFIG_RTC_INTF_DEV_UIE_EMUL is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RTC_DRV_TEST is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># I2C RTC drivers</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_RTC_DRV_ABB5ZES3 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RTC_DRV_ABX80X is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RTC_DRV_DS1307 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RTC_DRV_DS1374 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RTC_DRV_DS1672 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RTC_DRV_MAX6900 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RTC_DRV_RS5C372 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RTC_DRV_ISL1208 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RTC_DRV_ISL12022 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RTC_DRV_X1205 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RTC_DRV_PCF8523 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RTC_DRV_PCF85063 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RTC_DRV_PCF8563 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RTC_DRV_PCF8583 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RTC_DRV_M41T80 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RTC_DRV_BQ32K is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RTC_DRV_S35390A is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RTC_DRV_FM3130 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RTC_DRV_RX8010 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RTC_DRV_RX8581 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RTC_DRV_RX8025 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RTC_DRV_EM3027 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RTC_DRV_RV8803 is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># SPI RTC drivers</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_RTC_DRV_M41T93 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RTC_DRV_M41T94 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RTC_DRV_DS1302 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RTC_DRV_DS1305 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RTC_DRV_DS1343 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RTC_DRV_DS1347 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RTC_DRV_DS1390 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RTC_DRV_MAX6916 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RTC_DRV_R9701 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RTC_DRV_RX4581 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RTC_DRV_RX6110 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RTC_DRV_RS5C348 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RTC_DRV_MAX6902 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RTC_DRV_PCF2123 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RTC_DRV_MCP795 is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_RTC_I2C_AND_SPI</span>=y</span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># SPI and I2C RTC drivers</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_RTC_DRV_DS3232 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RTC_DRV_PCF2127 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RTC_DRV_RV3029C2 is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Platform RTC drivers</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_RTC_DRV_CMOS</span>=y</span><br><span class="line"><span class="comment"># CONFIG_RTC_DRV_DS1286 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RTC_DRV_DS1511 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RTC_DRV_DS1553 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RTC_DRV_DS1685_FAMILY is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RTC_DRV_DS1742 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RTC_DRV_DS2404 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RTC_DRV_DA9052 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RTC_DRV_STK17TA8 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RTC_DRV_M48T86 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RTC_DRV_M48T35 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RTC_DRV_M48T59 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RTC_DRV_MSM6242 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RTC_DRV_BQ4802 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RTC_DRV_RP5C01 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RTC_DRV_V3020 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RTC_DRV_WM831X is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># on-CPU RTC drivers</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_RTC_DRV_FTRTC010 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RTC_DRV_PCAP is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># HID Sensor RTC drivers</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_RTC_DRV_HID_SENSOR_TIME is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_DMADEVICES</span>=y</span><br><span class="line"><span class="comment"># CONFIG_DMADEVICES_DEBUG is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># DMA Devices</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_DMA_ACPI</span>=y</span><br><span class="line"><span class="comment"># CONFIG_ALTERA_MSGDMA is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INTEL_IDMA64 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INTEL_IOATDMA is not set</span></span><br><span class="line"><span class="comment"># CONFIG_QCOM_HIDMA_MGMT is not set</span></span><br><span class="line"><span class="comment"># CONFIG_QCOM_HIDMA is not set</span></span><br><span class="line"><span class="comment"># CONFIG_DW_DMAC is not set</span></span><br><span class="line"><span class="comment"># CONFIG_DW_DMAC_PCI is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># DMABUF options</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_SYNC_FILE</span>=y</span><br><span class="line"><span class="comment"># CONFIG_SW_SYNC is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_AUXDISPLAY</span>=y</span><br><span class="line"><span class="comment"># CONFIG_HD44780 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_IMG_ASCII_LCD is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_UIO</span>=y</span><br><span class="line"><span class="comment"># CONFIG_UIO_CIF is not set</span></span><br><span class="line"><span class="comment"># CONFIG_UIO_PDRV_GENIRQ is not set</span></span><br><span class="line"><span class="comment"># CONFIG_UIO_DMEM_GENIRQ is not set</span></span><br><span class="line"><span class="comment"># CONFIG_UIO_AEC is not set</span></span><br><span class="line"><span class="comment"># CONFIG_UIO_SERCOS3 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_UIO_PCI_GENERIC is not set</span></span><br><span class="line"><span class="comment"># CONFIG_UIO_NETX is not set</span></span><br><span class="line"><span class="comment"># CONFIG_UIO_PRUSS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_UIO_MF624 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_VFIO is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_VIRT_DRIVERS</span>=y</span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Virtio drivers</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_VIRTIO_PCI is not set</span></span><br><span class="line"><span class="comment"># CONFIG_VIRTIO_MMIO is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Microsoft Hyper-V guest support</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_HYPERV is not set</span></span><br><span class="line"><span class="comment"># CONFIG_HYPERV_TSCPAGE is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_STAGING</span>=y</span><br><span class="line"><span class="comment"># CONFIG_IRDA is not set</span></span><br><span class="line"><span class="comment"># CONFIG_COMEDI is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RTS5208 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_FB_SM750 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_FB_XGI is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Speakup console speech</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_SPEAKUP is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_STAGING_MEDIA</span>=y</span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Android</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_DGNC is not set</span></span><br><span class="line"><span class="comment"># CONFIG_GS_FPGABOOT is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_SKEIN is not set</span></span><br><span class="line"><span class="comment"># CONFIG_UNISYSSPAR is not set</span></span><br><span class="line"><span class="comment"># CONFIG_FB_TFT is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MOST is not set</span></span><br><span class="line"><span class="comment"># CONFIG_KS7010 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_GREYBUS is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># USB Power Delivery and Type-C drivers</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_TYPEC_TCPM</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_TYPEC_TCPCI</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_TYPEC_FUSB302</span>=y</span><br><span class="line"><span class="comment"># CONFIG_DRM_VBOXVIDEO is not set</span></span><br><span class="line"><span class="comment"># CONFIG_PI433 is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_X86_PLATFORM_DEVICES</span>=y</span><br><span class="line"><span class="comment"># CONFIG_ACER_WMI is not set</span></span><br><span class="line"><span class="comment"># CONFIG_ACERHDF is not set</span></span><br><span class="line"><span class="comment"># CONFIG_ALIENWARE_WMI is not set</span></span><br><span class="line"><span class="comment"># CONFIG_ASUS_LAPTOP is not set</span></span><br><span class="line"><span class="comment"># CONFIG_DELL_LAPTOP is not set</span></span><br><span class="line"><span class="comment"># CONFIG_DELL_WMI is not set</span></span><br><span class="line"><span class="comment"># CONFIG_DELL_WMI_AIO is not set</span></span><br><span class="line"><span class="comment"># CONFIG_DELL_WMI_LED is not set</span></span><br><span class="line"><span class="comment"># CONFIG_DELL_SMO8800 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_FUJITSU_LAPTOP is not set</span></span><br><span class="line"><span class="comment"># CONFIG_FUJITSU_TABLET is not set</span></span><br><span class="line"><span class="comment"># CONFIG_HP_ACCEL is not set</span></span><br><span class="line"><span class="comment"># CONFIG_HP_WIRELESS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_HP_WMI is not set</span></span><br><span class="line"><span class="comment"># CONFIG_PANASONIC_LAPTOP is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SURFACE3_WMI is not set</span></span><br><span class="line"><span class="comment"># CONFIG_THINKPAD_ACPI is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SENSORS_HDAPS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_EEEPC_LAPTOP is not set</span></span><br><span class="line"><span class="comment"># CONFIG_ASUS_WMI is not set</span></span><br><span class="line"><span class="comment"># CONFIG_ASUS_WIRELESS is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_ACPI_WMI</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_WMI_BMOF</span>=y</span><br><span class="line"><span class="comment"># CONFIG_MSI_WMI is not set</span></span><br><span class="line"><span class="comment"># CONFIG_PEAQ_WMI is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TOPSTAR_LAPTOP is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TOSHIBA_BT_RFKILL is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TOSHIBA_HAPS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TOSHIBA_WMI is not set</span></span><br><span class="line"><span class="comment"># CONFIG_ACPI_CMPC is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INTEL_CHT_INT33FE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INTEL_INT0002_VGPIO is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INTEL_HID_EVENT is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INTEL_VBTN is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INTEL_IPS is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_INTEL_PMC_CORE</span>=y</span><br><span class="line"><span class="comment"># CONFIG_IBM_RTL is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SAMSUNG_LAPTOP is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_MXM_WMI</span>=y</span><br><span class="line"><span class="comment"># CONFIG_SAMSUNG_Q10 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_APPLE_GMUX is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INTEL_RST is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INTEL_SMARTCONNECT is not set</span></span><br><span class="line"><span class="comment"># CONFIG_PVPANIC is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INTEL_PMC_IPC is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SURFACE_PRO3_BUTTON is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INTEL_PUNIT_IPC is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MLX_PLATFORM is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MLX_CPLD_PLATFORM is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INTEL_TURBO_MAX_3 is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_PMC_ATOM</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_CHROME_PLATFORMS</span>=y</span><br><span class="line"><span class="comment"># CONFIG_CHROMEOS_LAPTOP is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CHROMEOS_PSTORE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CROS_KBD_LED_BACKLIGHT is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_CLKDEV_LOOKUP</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_CLK_PREPARE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_COMMON_CLK</span>=y</span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Common Clock Framework</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_COMMON_CLK_WM831X is not set</span></span><br><span class="line"><span class="comment"># CONFIG_COMMON_CLK_SI5351 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_COMMON_CLK_CDCE706 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_COMMON_CLK_CS2000_CP is not set</span></span><br><span class="line"><span class="comment"># CONFIG_COMMON_CLK_NXP is not set</span></span><br><span class="line"><span class="comment"># CONFIG_COMMON_CLK_PWM is not set</span></span><br><span class="line"><span class="comment"># CONFIG_COMMON_CLK_PXA is not set</span></span><br><span class="line"><span class="comment"># CONFIG_COMMON_CLK_PIC32 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_HWSPINLOCK is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Clock Source drivers</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_CLKEVT_I8253</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_CLKBLD_I8253</span>=y</span><br><span class="line"><span class="comment"># CONFIG_ATMEL_PIT is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SH_TIMER_CMT is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SH_TIMER_MTU2 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SH_TIMER_TMU is not set</span></span><br><span class="line"><span class="comment"># CONFIG_EM_TIMER_STI is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_MAILBOX</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_PCC</span>=y</span><br><span class="line"><span class="comment"># CONFIG_ALTERA_MBOX is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_IOMMU_API</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_IOMMU_SUPPORT</span>=y</span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Generic IOMMU Pagetable Support</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_IOMMU_IOVA</span>=y</span><br><span class="line"><span class="comment"># CONFIG_AMD_IOMMU is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_DMAR_TABLE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_INTEL_IOMMU</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_INTEL_IOMMU_SVM</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_INTEL_IOMMU_DEFAULT_ON</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_INTEL_IOMMU_FLOPPY_WA</span>=y</span><br><span class="line"><span class="comment"># CONFIG_IRQ_REMAP is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Remoteproc drivers</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_REMOTEPROC is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Rpmsg drivers</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_RPMSG_QCOM_GLINK_RPM is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># SOC (System On Chip) specific Drivers</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Amlogic SoC drivers</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Broadcom SoC drivers</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># i.MX SoC drivers</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Qualcomm SoC drivers</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_SUNXI_SRAM is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SOC_TI is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_PM_DEVFREQ</span>=y</span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># DEVFREQ Governors</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_DEVFREQ_GOV_SIMPLE_ONDEMAND</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_DEVFREQ_GOV_PERFORMANCE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_DEVFREQ_GOV_POWERSAVE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_DEVFREQ_GOV_USERSPACE</span>=y</span><br><span class="line"><span class="comment"># CONFIG_DEVFREQ_GOV_PASSIVE is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># DEVFREQ Drivers</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_PM_DEVFREQ_EVENT</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_EXTCON</span>=y</span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Extcon Device Drivers</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_EXTCON_GPIO is not set</span></span><br><span class="line"><span class="comment"># CONFIG_EXTCON_INTEL_INT3496 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_EXTCON_MAX3355 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_EXTCON_MAX77843 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_EXTCON_RT8973A is not set</span></span><br><span class="line"><span class="comment"># CONFIG_EXTCON_SM5502 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_EXTCON_USB_GPIO is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_MEMORY</span>=y</span><br><span class="line"><span class="comment"># CONFIG_IIO is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NTB is not set</span></span><br><span class="line"><span class="comment"># CONFIG_VME_BUS is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_PWM</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_PWM_SYSFS</span>=y</span><br><span class="line"><span class="comment"># CONFIG_PWM_LPSS_PCI is not set</span></span><br><span class="line"><span class="comment"># CONFIG_PWM_LPSS_PLATFORM is not set</span></span><br><span class="line"><span class="comment"># CONFIG_PWM_PCA9685 is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_ARM_GIC_MAX_NR</span>=<span class="number">1</span></span><br><span class="line"><span class="comment"># CONFIG_IPACK_BUS is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_RESET_CONTROLLER</span>=y</span><br><span class="line"><span class="comment"># CONFIG_RESET_ATH79 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RESET_BERLIN is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RESET_IMX7 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RESET_LANTIQ is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RESET_LPC18XX is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RESET_MESON is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RESET_PISTACHIO is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RESET_SOCFPGA is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RESET_STM32 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RESET_SUNXI is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RESET_TI_SYSCON is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RESET_ZYNQ is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RESET_TEGRA_BPMP is not set</span></span><br><span class="line"><span class="comment"># CONFIG_FMC is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># PHY Subsystem</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_GENERIC_PHY</span>=y</span><br><span class="line"><span class="comment"># CONFIG_BCM_KONA_USB2_PHY is not set</span></span><br><span class="line"><span class="comment"># CONFIG_PHY_PXA_28NM_HSIC is not set</span></span><br><span class="line"><span class="comment"># CONFIG_PHY_PXA_28NM_USB2 is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_POWERCAP</span>=y</span><br><span class="line"><span class="comment"># CONFIG_INTEL_RAPL is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MCB is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Performance monitor support</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_RAS</span>=y</span><br><span class="line"><span class="comment"># CONFIG_THUNDERBOLT is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Android</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_ANDROID is not set</span></span><br><span class="line"><span class="comment"># CONFIG_LIBNVDIMM is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_DAX</span>=y</span><br><span class="line"><span class="comment"># CONFIG_DEV_DAX is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_NVMEM</span>=y</span><br><span class="line"><span class="comment"># CONFIG_STM is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INTEL_TH is not set</span></span><br><span class="line"><span class="comment"># CONFIG_FPGA is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># FSI support</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_FSI is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Firmware Drivers</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_EDD is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_FIRMWARE_MEMMAP</span>=y</span><br><span class="line"><span class="comment"># CONFIG_DELL_RBU is not set</span></span><br><span class="line"><span class="comment"># CONFIG_DCDBAS is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_DMIID</span>=y</span><br><span class="line"><span class="comment"># CONFIG_DMI_SYSFS is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_DMI_SCAN_MACHINE_NON_EFI_FALLBACK</span>=y</span><br><span class="line"><span class="comment"># CONFIG_FW_CFG_SYSFS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_GOOGLE_FIRMWARE is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># EFI (Extensible Firmware Interface) Support</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_EFI_VARS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_EFI_ESRT</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_EFI_VARS_PSTORE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_EFI_VARS_PSTORE_DEFAULT_DISABLE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_EFI_RUNTIME_MAP</span>=y</span><br><span class="line"><span class="comment"># CONFIG_EFI_FAKE_MEMMAP is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_EFI_RUNTIME_WRAPPERS</span>=y</span><br><span class="line"><span class="comment"># CONFIG_EFI_BOOTLOADER_CONTROL is not set</span></span><br><span class="line"><span class="comment"># CONFIG_EFI_CAPSULE_LOADER is not set</span></span><br><span class="line"><span class="comment"># CONFIG_EFI_TEST is not set</span></span><br><span class="line"><span class="comment"># CONFIG_APPLE_PROPERTIES is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RESET_ATTACK_MITIGATION is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_EFI_CUSTOM_SSDT_OVERLAYS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_UEFI_CPER</span>=y</span><br><span class="line"><span class="comment"># CONFIG_EFI_DEV_PATH_PARSER is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Tegra firmware driver</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># File systems</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_DCACHE_WORD_ACCESS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_FS_IOMAP</span>=y</span><br><span class="line"><span class="comment"># CONFIG_EXT2_FS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_EXT3_FS is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_EXT4_FS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_EXT4_USE_FOR_EXT2</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_EXT4_FS_POSIX_ACL</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_EXT4_FS_SECURITY</span>=y</span><br><span class="line"><span class="comment"># CONFIG_EXT4_ENCRYPTION is not set</span></span><br><span class="line"><span class="comment"># CONFIG_EXT4_DEBUG is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_JBD2</span>=y</span><br><span class="line"><span class="comment"># CONFIG_JBD2_DEBUG is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_FS_MBCACHE</span>=y</span><br><span class="line"><span class="comment"># CONFIG_REISERFS_FS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_JFS_FS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_XFS_FS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_GFS2_FS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_OCFS2_FS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_BTRFS_FS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NILFS2_FS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_F2FS_FS is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_FS_DAX</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_FS_POSIX_ACL</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_EXPORTFS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_EXPORTFS_BLOCK_OPS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_FILE_LOCKING</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_MANDATORY_FILE_LOCKING</span>=y</span><br><span class="line"><span class="comment"># CONFIG_FS_ENCRYPTION is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_FSNOTIFY</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_DNOTIFY</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_INOTIFY_USER</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_FANOTIFY</span>=y</span><br><span class="line"><span class="comment"># CONFIG_FANOTIFY_ACCESS_PERMISSIONS is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_QUOTA</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_QUOTA_NETLINK_INTERFACE</span>=y</span><br><span class="line"><span class="comment"># CONFIG_PRINT_QUOTA_WARNING is not set</span></span><br><span class="line"><span class="comment"># CONFIG_QUOTA_DEBUG is not set</span></span><br><span class="line"><span class="comment"># CONFIG_QFMT_V1 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_QFMT_V2 is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_QUOTACTL</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_QUOTACTL_COMPAT</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_AUTOFS4_FS</span>=y</span><br><span class="line"><span class="comment"># CONFIG_FUSE_FS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_OVERLAY_FS is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Caches</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_FSCACHE is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CD-ROM/DVD Filesystems</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_ISO9660_FS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_UDF_FS is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># DOS/FAT/NT Filesystems</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_FAT_FS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_MSDOS_FS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_VFAT_FS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_FAT_DEFAULT_CODEPAGE</span>=<span class="number">437</span></span><br><span class="line"><span class="variable constant_">CONFIG_FAT_DEFAULT_IOCHARSET</span>=<span class="string">&quot;iso8859-1&quot;</span></span><br><span class="line"><span class="comment"># CONFIG_FAT_DEFAULT_UTF8 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NTFS_FS is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Pseudo filesystems</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_PROC_FS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_PROC_KCORE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_PROC_VMCORE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_PROC_SYSCTL</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_PROC_PAGE_MONITOR</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_PROC_CHILDREN</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_KERNFS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SYSFS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_TMPFS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_TMPFS_POSIX_ACL</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_TMPFS_XATTR</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HUGETLBFS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HUGETLB_PAGE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_HAS_GIGANTIC_PAGE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_CONFIGFS_FS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_EFIVAR_FS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_MISC_FILESYSTEMS</span>=y</span><br><span class="line"><span class="comment"># CONFIG_ORANGEFS_FS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_ADFS_FS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_AFFS_FS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_ECRYPT_FS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_HFS_FS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_HFSPLUS_FS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_BEFS_FS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_BFS_FS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_EFS_FS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRAMFS is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_SQUASHFS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SQUASHFS_FILE_CACHE</span>=y</span><br><span class="line"><span class="comment"># CONFIG_SQUASHFS_FILE_DIRECT is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_SQUASHFS_DECOMP_SINGLE</span>=y</span><br><span class="line"><span class="comment"># CONFIG_SQUASHFS_DECOMP_MULTI is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_SQUASHFS_XATTR</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SQUASHFS_ZLIB</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SQUASHFS_LZ4</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SQUASHFS_LZO</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SQUASHFS_XZ</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SQUASHFS_ZSTD</span>=y</span><br><span class="line"><span class="comment"># CONFIG_SQUASHFS_4K_DEVBLK_SIZE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SQUASHFS_EMBEDDED is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE</span>=<span class="number">3</span></span><br><span class="line"><span class="comment"># CONFIG_VXFS_FS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MINIX_FS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_OMFS_FS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_HPFS_FS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_QNX4FS_FS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_QNX6FS_FS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_ROMFS_FS is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_PSTORE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_PSTORE_ZLIB_COMPRESS</span>=y</span><br><span class="line"><span class="comment"># CONFIG_PSTORE_LZO_COMPRESS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_PSTORE_LZ4_COMPRESS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_PSTORE_CONSOLE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_PSTORE_PMSG is not set</span></span><br><span class="line"><span class="comment"># CONFIG_PSTORE_RAM is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SYSV_FS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_UFS_FS is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_NETWORK_FILESYSTEMS</span>=y</span><br><span class="line"><span class="comment"># CONFIG_NFS_FS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NFSD is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CEPH_FS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CIFS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NCP_FS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CODA_FS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_AFS_FS is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_NLS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_NLS_DEFAULT</span>=<span class="string">&quot;utf8&quot;</span></span><br><span class="line"><span class="comment"># CONFIG_NLS_CODEPAGE_437 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NLS_CODEPAGE_737 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NLS_CODEPAGE_775 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NLS_CODEPAGE_850 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NLS_CODEPAGE_852 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NLS_CODEPAGE_855 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NLS_CODEPAGE_857 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NLS_CODEPAGE_860 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NLS_CODEPAGE_861 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NLS_CODEPAGE_862 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NLS_CODEPAGE_863 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NLS_CODEPAGE_864 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NLS_CODEPAGE_865 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NLS_CODEPAGE_866 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NLS_CODEPAGE_869 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NLS_CODEPAGE_936 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NLS_CODEPAGE_950 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NLS_CODEPAGE_932 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NLS_CODEPAGE_949 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NLS_CODEPAGE_874 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NLS_ISO8859_8 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NLS_CODEPAGE_1250 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NLS_CODEPAGE_1251 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NLS_ASCII is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NLS_ISO8859_1 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NLS_ISO8859_2 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NLS_ISO8859_3 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NLS_ISO8859_4 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NLS_ISO8859_5 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NLS_ISO8859_6 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NLS_ISO8859_7 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NLS_ISO8859_9 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NLS_ISO8859_13 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NLS_ISO8859_14 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NLS_ISO8859_15 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NLS_KOI8_R is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NLS_KOI8_U is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NLS_MAC_ROMAN is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NLS_MAC_CELTIC is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NLS_MAC_CENTEURO is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NLS_MAC_CROATIAN is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NLS_MAC_CYRILLIC is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NLS_MAC_GAELIC is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NLS_MAC_GREEK is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NLS_MAC_ICELAND is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NLS_MAC_INUIT is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NLS_MAC_ROMANIAN is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NLS_MAC_TURKISH is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NLS_UTF8 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_DLM is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Kernel hacking</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_TRACE_IRQFLAGS_SUPPORT</span>=y</span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># printk and dmesg options</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_PRINTK_TIME</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_CONSOLE_LOGLEVEL_DEFAULT</span>=<span class="number">7</span></span><br><span class="line"><span class="variable constant_">CONFIG_MESSAGE_LOGLEVEL_DEFAULT</span>=<span class="number">4</span></span><br><span class="line"><span class="comment"># CONFIG_BOOT_PRINTK_DELAY is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_DYNAMIC_DEBUG</span>=y</span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Compile-time checks and compiler options</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_DEBUG_INFO is not set</span></span><br><span class="line"><span class="comment"># CONFIG_ENABLE_WARN_DEPRECATED is not set</span></span><br><span class="line"><span class="comment"># CONFIG_ENABLE_MUST_CHECK is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_FRAME_WARN</span>=<span class="number">1024</span></span><br><span class="line"><span class="variable constant_">CONFIG_STRIP_ASM_SYMS</span>=y</span><br><span class="line"><span class="comment"># CONFIG_READABLE_ASM is not set</span></span><br><span class="line"><span class="comment"># CONFIG_UNUSED_SYMBOLS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_PAGE_OWNER is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_DEBUG_FS</span>=y</span><br><span class="line"><span class="comment"># CONFIG_HEADERS_CHECK is not set</span></span><br><span class="line"><span class="comment"># CONFIG_DEBUG_SECTION_MISMATCH is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_SECTION_MISMATCH_WARN_ONLY</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_FRAME_POINTER</span>=y</span><br><span class="line"><span class="comment"># CONFIG_STACK_VALIDATION is not set</span></span><br><span class="line"><span class="comment"># CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_MAGIC_SYSRQ</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE</span>=<span class="number">0x1</span></span><br><span class="line"><span class="variable constant_">CONFIG_MAGIC_SYSRQ_SERIAL</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_DEBUG_KERNEL</span>=y</span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Memory Debugging</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_PAGE_EXTENSION</span>=y</span><br><span class="line"><span class="comment"># CONFIG_DEBUG_PAGEALLOC is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_PAGE_POISONING</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_PAGE_POISONING_NO_SANITY</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_PAGE_POISONING_ZERO</span>=y</span><br><span class="line"><span class="comment"># CONFIG_DEBUG_RODATA_TEST is not set</span></span><br><span class="line"><span class="comment"># CONFIG_DEBUG_OBJECTS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SLUB_DEBUG_ON is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SLUB_STATS is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_DEBUG_KMEMLEAK</span>=y</span><br><span class="line"><span class="comment"># CONFIG_DEBUG_KMEMLEAK is not set</span></span><br><span class="line"><span class="comment"># CONFIG_DEBUG_STACK_USAGE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_DEBUG_VM is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_HAS_DEBUG_VIRTUAL</span>=y</span><br><span class="line"><span class="comment"># CONFIG_DEBUG_VIRTUAL is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_DEBUG_MEMORY_INIT</span>=y</span><br><span class="line"><span class="comment"># CONFIG_DEBUG_PER_CPU_MAPS is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_DEBUG_STACKOVERFLOW</span>=y</span><br><span class="line"><span class="comment"># CONFIG_DEBUG_STACKOVERFLOW is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_ARCH_KASAN</span>=y</span><br><span class="line"><span class="comment"># CONFIG_KASAN is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_HAS_KCOV</span>=y</span><br><span class="line"><span class="comment"># CONFIG_KCOV is not set</span></span><br><span class="line"><span class="comment"># CONFIG_DEBUG_SHIRQ is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Debug Lockups and Hangs</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_LOCKUP_DETECTOR</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SOFTLOCKUP_DETECTOR</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HARDLOCKUP_DETECTOR_PERF</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HARDLOCKUP_CHECK_TIMESTAMP</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HARDLOCKUP_DETECTOR</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_BOOTPARAM_HARDLOCKUP_PANIC</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_BOOTPARAM_HARDLOCKUP_PANIC_VALUE</span>=<span class="number">1</span></span><br><span class="line"><span class="comment"># CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE</span>=<span class="number">0</span></span><br><span class="line"><span class="comment"># CONFIG_DETECT_HUNG_TASK is not set</span></span><br><span class="line"><span class="comment"># CONFIG_WQ_WATCHDOG is not set</span></span><br><span class="line"><span class="comment"># CONFIG_PANIC_ON_OOPS is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_PANIC_ON_OOPS_VALUE</span>=<span class="number">0</span></span><br><span class="line"><span class="variable constant_">CONFIG_PANIC_TIMEOUT</span>=<span class="number">0</span></span><br><span class="line"><span class="comment"># CONFIG_SCHED_DEBUG is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_SCHED_INFO</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SCHEDSTATS</span>=y</span><br><span class="line"><span class="comment"># CONFIG_SCHED_STACK_END_CHECK is not set</span></span><br><span class="line"><span class="comment"># CONFIG_DEBUG_TIMEKEEPING is not set</span></span><br><span class="line"><span class="comment"># CONFIG_DEBUG_PREEMPT is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Lock Debugging (spinlocks, mutexes, etc...)</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_DEBUG_RT_MUTEXES is not set</span></span><br><span class="line"><span class="comment"># CONFIG_DEBUG_SPINLOCK is not set</span></span><br><span class="line"><span class="comment"># CONFIG_DEBUG_MUTEXES is not set</span></span><br><span class="line"><span class="comment"># CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set</span></span><br><span class="line"><span class="comment"># CONFIG_DEBUG_LOCK_ALLOC is not set</span></span><br><span class="line"><span class="comment"># CONFIG_PROVE_LOCKING is not set</span></span><br><span class="line"><span class="comment"># CONFIG_LOCK_STAT is not set</span></span><br><span class="line"><span class="comment"># CONFIG_DEBUG_ATOMIC_SLEEP is not set</span></span><br><span class="line"><span class="comment"># CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_LOCK_TORTURE_TEST is not set</span></span><br><span class="line"><span class="comment"># CONFIG_WW_MUTEX_SELFTEST is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_STACKTRACE</span>=y</span><br><span class="line"><span class="comment"># CONFIG_WARN_ALL_UNSEEDED_RANDOM is not set</span></span><br><span class="line"><span class="comment"># CONFIG_DEBUG_KOBJECT is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_DEBUG_BUGVERBOSE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_DEBUG_LIST</span>=y</span><br><span class="line"><span class="comment"># CONFIG_DEBUG_PI_LIST is not set</span></span><br><span class="line"><span class="comment"># CONFIG_DEBUG_SG is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_DEBUG_NOTIFIERS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_DEBUG_CREDENTIALS</span>=y</span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># RCU Debugging</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_PROVE_RCU is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TORTURE_TEST is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RCU_PERF_TEST is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RCU_TORTURE_TEST is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_RCU_CPU_STALL_TIMEOUT</span>=<span class="number">60</span></span><br><span class="line"><span class="comment"># CONFIG_RCU_TRACE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RCU_EQS_DEBUG is not set</span></span><br><span class="line"><span class="comment"># CONFIG_DEBUG_WQ_FORCE_RR_CPU is not set</span></span><br><span class="line"><span class="comment"># CONFIG_DEBUG_BLOCK_EXT_DEVT is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CPU_HOTPLUG_STATE_CONTROL is not set</span></span><br><span class="line"><span class="comment"># CONFIG_NOTIFIER_ERROR_INJECTION is not set</span></span><br><span class="line"><span class="comment"># CONFIG_FAULT_INJECTION is not set</span></span><br><span class="line"><span class="comment"># CONFIG_LATENCYTOP is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_USER_STACKTRACE_SUPPORT</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_FUNCTION_TRACER</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_FUNCTION_GRAPH_TRACER</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_DYNAMIC_FTRACE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_DYNAMIC_FTRACE_WITH_REGS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_FTRACE_MCOUNT_RECORD</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_SYSCALL_TRACEPOINTS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_FENTRY</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_C_RECORDMCOUNT</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_TRACING_SUPPORT</span>=y</span><br><span class="line"><span class="comment"># CONFIG_FTRACE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_PROVIDE_OHCI1394_DMA_INIT is not set</span></span><br><span class="line"><span class="comment"># CONFIG_DMA_API_DEBUG is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Runtime Testing</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_LKDTM is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TEST_LIST_SORT is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TEST_SORT is not set</span></span><br><span class="line"><span class="comment"># CONFIG_BACKTRACE_SELF_TEST is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RBTREE_TEST is not set</span></span><br><span class="line"><span class="comment"># CONFIG_INTERVAL_TREE_TEST is not set</span></span><br><span class="line"><span class="comment"># CONFIG_ATOMIC64_SELFTEST is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TEST_HEXDUMP is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TEST_STRING_HELPERS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TEST_KSTRTOX is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TEST_PRINTF is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TEST_BITMAP is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TEST_UUID is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TEST_RHASHTABLE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TEST_HASH is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TEST_FIRMWARE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TEST_SYSCTL is not set</span></span><br><span class="line"><span class="comment"># CONFIG_TEST_UDELAY is not set</span></span><br><span class="line"><span class="comment"># CONFIG_MEMTEST is not set</span></span><br><span class="line"><span class="comment"># CONFIG_BUG_ON_DATA_CORRUPTION is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SAMPLES is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_ARCH_KGDB</span>=y</span><br><span class="line"><span class="comment"># CONFIG_KGDB is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_HAS_UBSAN_SANITIZE_ALL</span>=y</span><br><span class="line"><span class="comment"># CONFIG_ARCH_WANTS_UBSAN_NO_NULL is not set</span></span><br><span class="line"><span class="comment"># CONFIG_UBSAN is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_HAS_DEVMEM_IS_ALLOWED</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_STRICT_DEVMEM</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_IO_STRICT_DEVMEM</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_X86_VERBOSE_BOOTUP</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_EARLY_PRINTK</span>=y</span><br><span class="line"><span class="comment"># CONFIG_EARLY_PRINTK_DBGP is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_EARLY_PRINTK_EFI</span>=y</span><br><span class="line"><span class="comment"># CONFIG_EARLY_PRINTK_USB_XDBC is not set</span></span><br><span class="line"><span class="comment"># CONFIG_X86_PTDUMP_CORE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_X86_PTDUMP is not set</span></span><br><span class="line"><span class="comment"># CONFIG_EFI_PGT_DUMP is not set</span></span><br><span class="line"><span class="comment"># CONFIG_DEBUG_WX is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_DOUBLEFAULT</span>=y</span><br><span class="line"><span class="comment"># CONFIG_DEBUG_TLBFLUSH is not set</span></span><br><span class="line"><span class="comment"># CONFIG_IOMMU_STRESS is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_MMIOTRACE_SUPPORT</span>=y</span><br><span class="line"><span class="comment"># CONFIG_X86_DECODER_SELFTEST is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_IO_DELAY_TYPE_0X80</span>=<span class="number">0</span></span><br><span class="line"><span class="variable constant_">CONFIG_IO_DELAY_TYPE_0XED</span>=<span class="number">1</span></span><br><span class="line"><span class="variable constant_">CONFIG_IO_DELAY_TYPE_UDELAY</span>=<span class="number">2</span></span><br><span class="line"><span class="variable constant_">CONFIG_IO_DELAY_TYPE_NONE</span>=<span class="number">3</span></span><br><span class="line"><span class="variable constant_">CONFIG_IO_DELAY_0X80</span>=y</span><br><span class="line"><span class="comment"># CONFIG_IO_DELAY_0XED is not set</span></span><br><span class="line"><span class="comment"># CONFIG_IO_DELAY_UDELAY is not set</span></span><br><span class="line"><span class="comment"># CONFIG_IO_DELAY_NONE is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_DEFAULT_IO_DELAY_TYPE</span>=<span class="number">0</span></span><br><span class="line"><span class="comment"># CONFIG_DEBUG_BOOT_PARAMS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CPA_DEBUG is not set</span></span><br><span class="line"><span class="comment"># CONFIG_OPTIMIZE_INLINING is not set</span></span><br><span class="line"><span class="comment"># CONFIG_DEBUG_ENTRY is not set</span></span><br><span class="line"><span class="comment"># CONFIG_DEBUG_NMI_SELFTEST is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_X86_DEBUG_FPU</span>=y</span><br><span class="line"><span class="comment"># CONFIG_PUNIT_ATOM_DEBUG is not set</span></span><br><span class="line"><span class="comment"># CONFIG_UNWINDER_ORC is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_UNWINDER_FRAME_POINTER</span>=y</span><br><span class="line"><span class="comment"># CONFIG_UNWINDER_GUESS is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Security options</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_KEYS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_KEYS_COMPAT</span>=y</span><br><span class="line"><span class="comment"># CONFIG_PERSISTENT_KEYRINGS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_BIG_KEYS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_ENCRYPTED_KEYS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_KEY_DH_OPERATIONS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SECURITY_DMESG_RESTRICT is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_SECURITY</span>=y</span><br><span class="line"><span class="comment"># CONFIG_SECURITY_WRITABLE_HOOKS is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_SECURITYFS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SECURITY_NETWORK</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_PAGE_TABLE_ISOLATION</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SECURITY_PATH</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_INTEL_TXT</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_LSM_MMAP_MIN_ADDR</span>=<span class="number">65536</span></span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_HARDENED_USERCOPY_ALLOCATOR</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HARDENED_USERCOPY</span>=y</span><br><span class="line"><span class="comment"># CONFIG_HARDENED_USERCOPY_PAGESPAN is not set</span></span><br><span class="line"><span class="comment"># CONFIG_FORTIFY_SOURCE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_STATIC_USERMODEHELPER is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_SECURITY_SELINUX</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SECURITY_SELINUX_BOOTPARAM</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SECURITY_SELINUX_BOOTPARAM_VALUE</span>=<span class="number">0</span></span><br><span class="line"><span class="comment"># CONFIG_SECURITY_SELINUX_DISABLE is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_SECURITY_SELINUX_DEVELOP</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SECURITY_SELINUX_AVC_STATS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE</span>=<span class="number">0</span></span><br><span class="line"><span class="comment"># CONFIG_SECURITY_SMACK is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SECURITY_TOMOYO is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_SECURITY_APPARMOR</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SECURITY_APPARMOR_BOOTPARAM_VALUE</span>=<span class="number">0</span></span><br><span class="line"><span class="variable constant_">CONFIG_SECURITY_APPARMOR_HASH</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SECURITY_APPARMOR_HASH_DEFAULT</span>=y</span><br><span class="line"><span class="comment"># CONFIG_SECURITY_APPARMOR_DEBUG is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SECURITY_LOADPIN is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_SECURITY_YAMA</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_INTEGRITY</span>=y</span><br><span class="line"><span class="comment"># CONFIG_INTEGRITY_SIGNATURE is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_INTEGRITY_AUDIT</span>=y</span><br><span class="line"><span class="comment"># CONFIG_IMA is not set</span></span><br><span class="line"><span class="comment"># CONFIG_EVM is not set</span></span><br><span class="line"><span class="comment"># CONFIG_DEFAULT_SECURITY_SELINUX is not set</span></span><br><span class="line"><span class="comment"># CONFIG_DEFAULT_SECURITY_APPARMOR is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_DEFAULT_SECURITY_DAC</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_DEFAULT_SECURITY</span>=<span class="string">&quot;&quot;</span></span><br><span class="line"><span class="variable constant_">CONFIG_CRYPTO</span>=y</span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Crypto core or helper</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_CRYPTO_ALGAPI</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_CRYPTO_ALGAPI2</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_CRYPTO_AEAD2</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_CRYPTO_BLKCIPHER</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_CRYPTO_BLKCIPHER2</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_CRYPTO_HASH</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_CRYPTO_HASH2</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_CRYPTO_RNG2</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_CRYPTO_AKCIPHER2</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_CRYPTO_AKCIPHER</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_CRYPTO_KPP2</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_CRYPTO_ACOMP2</span>=y</span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_RSA is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_DH is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_ECDH is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_CRYPTO_MANAGER</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_CRYPTO_MANAGER2</span>=y</span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_USER is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_CRYPTO_MANAGER_DISABLE_TESTS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_CRYPTO_GF128MUL</span>=y</span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_NULL is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_CRYPTO_NULL2</span>=y</span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_PCRYPT is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_CRYPTO_WORKQUEUE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_CRYPTO_CRYPTD</span>=y</span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_MCRYPTD is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_AUTHENC is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Authenticated Encryption with Associated Data</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_CCM is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_GCM is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_CHACHA20POLY1305 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_SEQIV is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_ECHAINIV is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Block modes</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_CBC is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_CTR is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_CTS is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_CRYPTO_ECB</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_CRYPTO_LRW</span>=y</span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_PCBC is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_CRYPTO_XTS</span>=y</span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_KEYWRAP is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Hash modes</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_CMAC is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_HMAC is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_XCBC is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_VMAC is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Digest</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_CRYPTO_CRC32C</span>=y</span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_CRC32C_INTEL is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_CRC32 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_CRC32_PCLMUL is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_CRYPTO_CRCT10DIF</span>=y</span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_CRCT10DIF_PCLMUL is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_GHASH is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_POLY1305 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_POLY1305_X86_64 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_MD4 is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_CRYPTO_MD5</span>=y</span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_MICHAEL_MIC is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_RMD128 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_RMD160 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_RMD256 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_RMD320 is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_CRYPTO_SHA1</span>=y</span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_SHA1_SSSE3 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_SHA256_SSSE3 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_SHA512_SSSE3 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_SHA1_MB is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_SHA256_MB is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_SHA512_MB is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_CRYPTO_SHA256</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_CRYPTO_SHA512</span>=y</span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_SHA3 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_TGR192 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_WP512 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_GHASH_CLMUL_NI_INTEL is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Ciphers</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_CRYPTO_AES</span>=y</span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_AES_TI is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_AES_X86_64 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_AES_NI_INTEL is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_ANUBIS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_ARC4 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_BLOWFISH is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_BLOWFISH_X86_64 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_CAMELLIA is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_CAMELLIA_X86_64 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_CAMELLIA_AESNI_AVX_X86_64 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_CAMELLIA_AESNI_AVX2_X86_64 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_CAST5 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_CAST5_AVX_X86_64 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_CAST6 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_CAST6_AVX_X86_64 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_DES is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_DES3_EDE_X86_64 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_FCRYPT is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_KHAZAD is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_SALSA20 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_CHACHA20 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_CHACHA20_X86_64 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_SEED is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_CRYPTO_SERPENT</span>=y</span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_SERPENT_SSE2_X86_64 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_SERPENT_AVX_X86_64 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_SERPENT_AVX2_X86_64 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_TEA is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_TWOFISH is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_TWOFISH_X86_64 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_TWOFISH_X86_64_3WAY is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_TWOFISH_AVX_X86_64 is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Compression</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_DEFLATE is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_CRYPTO_LZO</span>=y</span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_842 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_LZ4 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_LZ4HC is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Random Number Generation</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_ANSI_CPRNG is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_DRBG_MENU is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_JITTERENTROPY is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_USER_API_HASH is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_USER_API_SKCIPHER is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_USER_API_RNG is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_USER_API_AEAD is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_CRYPTO_HASH_INFO</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_CRYPTO_HW</span>=y</span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_DEV_PADLOCK is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_DEV_FSL_CAAM_CRYPTO_API_DESC is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_CRYPTO_DEV_CCP</span>=y</span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_DEV_CCP_DD is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_DEV_QAT_DH895xCC is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_DEV_QAT_C3XXX is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_DEV_QAT_C62X is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_DEV_QAT_DH895xCCVF is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_DEV_QAT_C3XXXVF is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_DEV_QAT_C62XVF is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRYPTO_DEV_NITROX_CNN55XX is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_ASYMMETRIC_KEY_TYPE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ASYMMETRIC_PUBLIC_KEY_SUBTYPE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_X509_CERTIFICATE_PARSER</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_PKCS7_MESSAGE_PARSER</span>=y</span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Certificates for signature checking</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># CONFIG_SYSTEM_TRUSTED_KEYRING is not set</span></span><br><span class="line"><span class="comment"># CONFIG_SYSTEM_BLACKLIST_KEYRING is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_HAVE_KVM</span>=y</span><br><span class="line"><span class="comment"># CONFIG_VIRTUALIZATION is not set</span></span><br><span class="line"><span class="comment"># CONFIG_BINARY_PRINTF is not set</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># Library routines</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="variable constant_">CONFIG_BITREVERSE</span>=y</span><br><span class="line"><span class="comment"># CONFIG_HAVE_ARCH_BITREVERSE is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_RATIONAL</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_GENERIC_STRNCPY_FROM_USER</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_GENERIC_STRNLEN_USER</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_GENERIC_NET_UTILS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_GENERIC_FIND_FIRST_BIT</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_GENERIC_PCI_IOMAP</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_GENERIC_IOMAP</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_GENERIC_IO</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_USE_CMPXCHG_LOCKREF</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_HAS_FAST_MULTIPLIER</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_CRC_CCITT</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_CRC16</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_CRC_T10DIF</span>=y</span><br><span class="line"><span class="comment"># CONFIG_CRC_ITU_T is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_CRC32</span>=y</span><br><span class="line"><span class="comment"># CONFIG_CRC32_SELFTEST is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_CRC32_SLICEBY8</span>=y</span><br><span class="line"><span class="comment"># CONFIG_CRC32_SLICEBY4 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRC32_SARWATE is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRC32_BIT is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRC4 is not set</span></span><br><span class="line"><span class="comment"># CONFIG_CRC7 is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_LIBCRC32C</span>=y</span><br><span class="line"><span class="comment"># CONFIG_CRC8 is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_XXHASH</span>=y</span><br><span class="line"><span class="comment"># CONFIG_AUDIT_ARCH_COMPAT_GENERIC is not set</span></span><br><span class="line"><span class="comment"># CONFIG_RANDOM32_SELFTEST is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_ZLIB_INFLATE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ZLIB_DEFLATE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_LZO_COMPRESS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_LZO_DECOMPRESS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_LZ4_DECOMPRESS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ZSTD_DECOMPRESS</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_XZ_DEC</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_XZ_DEC_X86</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_XZ_DEC_POWERPC</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_XZ_DEC_IA64</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_XZ_DEC_ARM</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_XZ_DEC_ARMTHUMB</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_XZ_DEC_SPARC</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_XZ_DEC_BCJ</span>=y</span><br><span class="line"><span class="comment"># CONFIG_XZ_DEC_TEST is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_DECOMPRESS_GZIP</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_DECOMPRESS_BZIP2</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_DECOMPRESS_LZMA</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_DECOMPRESS_XZ</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_DECOMPRESS_LZO</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_DECOMPRESS_LZ4</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_GENERIC_ALLOCATOR</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_INTERVAL_TREE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_RADIX_TREE_MULTIORDER</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ASSOCIATIVE_ARRAY</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HAS_IOMEM</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HAS_IOPORT_MAP</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_HAS_DMA</span>=y</span><br><span class="line"><span class="comment"># CONFIG_SGL_ALLOC is not set</span></span><br><span class="line"><span class="comment"># CONFIG_DMA_NOOP_OPS is not set</span></span><br><span class="line"><span class="comment"># CONFIG_DMA_VIRT_OPS is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_CPU_RMAP</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_DQL</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_GLOB</span>=y</span><br><span class="line"><span class="comment"># CONFIG_GLOB_SELFTEST is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_NLATTR</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_CLZ_TAB</span>=y</span><br><span class="line"><span class="comment"># CONFIG_CORDIC is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_DDR</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_IRQ_POLL</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_MPILIB</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_OID_REGISTRY</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_UCS2_STRING</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_FONT_SUPPORT</span>=y</span><br><span class="line"><span class="comment"># CONFIG_FONTS is not set</span></span><br><span class="line">CONFIG_FONT_8x8=y</span><br><span class="line">CONFIG_FONT_8x16=y</span><br><span class="line"><span class="comment"># CONFIG_SG_SPLIT is not set</span></span><br><span class="line"><span class="variable constant_">CONFIG_SG_POOL</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_HAS_SG_CHAIN</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_HAS_PMEM_API</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_ARCH_HAS_UACCESS_FLUSHCACHE</span>=y</span><br><span class="line"><span class="variable constant_">CONFIG_SBITMAP</span>=y</span><br><span class="line"><span class="comment"># CONFIG_STRING_SELFTEST is not set</span></span><br></pre></td></tr></table></figure></details><p>你也可以把这个config64拷入这个仓库的linux目录，再生成<code>init.img</code>。</p><h1 id="编译交叉工具链"><a href="#编译交叉工具链" class="headerlink" title="编译交叉工具链"></a>编译交叉工具链</h1><p>下载LFS</p><figure class="highlight bash"><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></pre></td><td class="code"><pre><span class="line"><span class="built_in">cd</span> /root</span><br><span class="line"><span class="comment"># TODO add these to finalize_fhs.sh &amp; co</span></span><br><span class="line"><span class="built_in">mkdir</span> -p /dev/pts; mount -t devpts devpts /dev/pts</span><br><span class="line"><span class="built_in">cat</span> &gt; /etc/shells &lt;&lt; <span class="string">EOF</span></span><br><span class="line"><span class="string">/bin/bash</span></span><br><span class="line"><span class="string">/bin/sh</span></span><br><span class="line"><span class="string">/usr/bin/bash</span></span><br><span class="line"><span class="string">/usr/bin/sh</span></span><br><span class="line"><span class="string">EOF</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># Prepare lfs sources</span></span><br><span class="line"><span class="built_in">mkdir</span> lfs-sources</span><br><span class="line"><span class="built_in">cd</span> lfs-sources</span><br><span class="line">curl -L -O https://linuxfromscratch.org/lfs/downloads/12.0/LFS-BOOK-12.0-NOCHUNKS.html</span><br><span class="line">curl -L -O https://linuxfromscratch.org/lfs/downloads/12.0/wget-list-sysv</span><br><span class="line">curl -L -O https://linuxfromscratch.org/lfs/downloads/12.0/md5sums</span><br></pre></td></tr></table></figure><p>改为使用镜像</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sed  <span class="string">&#x27;s|http.*/|https://mirrors.ustc.edu.cn/lfs/lfs-packages/12.0/|g&#x27;</span> -i wget-list-sysv</span><br></pre></td></tr></table></figure><p>只保留交叉编译工具链</p><figure class="highlight bash"><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">sed -En -e <span class="string">&#x27;/\/(glibc|gcc|linux|binutils|mpc|mpfr|gmp)/p&#x27;</span> -i wget-list-sysv</span><br><span class="line">sed -En -e <span class="string">&#x27;/ (glibc|gcc|linux|binutils|mpc|mpfr|gmp)/p&#x27;</span> -i md5sums</span><br></pre></td></tr></table></figure><p>下载代码并校验</p><figure class="highlight bash"><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></pre></td><td class="code"><pre><span class="line"><span class="built_in">cat</span> wget-list-sysv | <span class="keyword">while</span> <span class="built_in">read</span> line; <span class="keyword">do</span></span><br><span class="line">    <span class="built_in">echo</span> <span class="variable">$line</span>;</span><br><span class="line">    curl -L -O <span class="variable">$line</span>;</span><br><span class="line"><span class="keyword">done</span></span><br><span class="line"><span class="built_in">md5sum</span> -c md5sums</span><br><span class="line"><span class="built_in">cd</span> ..</span><br></pre></td></tr></table></figure><p>创建lfs目录，配置环境，并开始编译交叉工具</p><figure class="highlight bash"><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><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br><span class="line">124</span><br><span class="line">125</span><br><span class="line">126</span><br><span class="line">127</span><br><span class="line">128</span><br><span class="line">129</span><br><span class="line">130</span><br><span class="line">131</span><br><span class="line">132</span><br><span class="line">133</span><br><span class="line">134</span><br><span class="line">135</span><br><span class="line">136</span><br><span class="line">137</span><br><span class="line">138</span><br><span class="line">139</span><br><span class="line">140</span><br><span class="line">141</span><br><span class="line">142</span><br><span class="line">143</span><br><span class="line">144</span><br><span class="line">145</span><br><span class="line">146</span><br><span class="line">147</span><br><span class="line">148</span><br><span class="line">149</span><br><span class="line">150</span><br><span class="line">151</span><br><span class="line">152</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">cd</span> ..</span><br><span class="line"><span class="built_in">mkdir</span> -p /lfs</span><br><span class="line"><span class="built_in">cp</span> -ar lfs-sources/ /lfs/sources</span><br><span class="line"></span><br><span class="line"><span class="built_in">cd</span> /lfs</span><br><span class="line"></span><br><span class="line"><span class="built_in">cd</span> distfiles</span><br><span class="line">curl -L -O $(sed -n <span class="string">&#x27;s/.*\(http.* \).*/\1/p&#x27;</span> /steps/linux-4.14.341-openela/sources)</span><br><span class="line"><span class="comment"># TODO this next file needs to be added to live-bootstrap</span></span><br><span class="line"><span class="built_in">cp</span> /steps/linux-4.14.341-openela/files/config64 config-linux</span><br><span class="line"><span class="built_in">cd</span> ..</span><br><span class="line"></span><br><span class="line"><span class="comment"># LFS chapter 4.2</span></span><br><span class="line"><span class="built_in">export</span> LFS=/lfs</span><br><span class="line"><span class="built_in">mkdir</span> -pv <span class="variable">$LFS</span>/&#123;etc,var&#125; <span class="variable">$LFS</span>/usr/&#123;bin,lib,sbin&#125;</span><br><span class="line"></span><br><span class="line"><span class="keyword">for</span> i <span class="keyword">in</span> bin lib sbin; <span class="keyword">do</span></span><br><span class="line">  <span class="built_in">ln</span> -sv usr/<span class="variable">$i</span> <span class="variable">$LFS</span>/<span class="variable">$i</span></span><br><span class="line"><span class="keyword">done</span></span><br><span class="line"></span><br><span class="line"><span class="built_in">mkdir</span> -pv <span class="variable">$LFS</span>/lib64</span><br><span class="line"><span class="built_in">mkdir</span> -pv <span class="variable">$LFS</span>/tools</span><br><span class="line"></span><br><span class="line"><span class="comment"># LFS chapter 4.3</span></span><br><span class="line">groupadd lfs</span><br><span class="line">useradd -s /bin/bash -g lfs -m -k /dev/null lfs</span><br><span class="line"><span class="built_in">chown</span> -R -v lfs <span class="variable">$LFS</span></span><br><span class="line">su - lfs</span><br><span class="line"></span><br><span class="line"><span class="comment"># LFS chapter 4.4</span></span><br><span class="line"><span class="built_in">cat</span> &gt; ~/.bash_profile &lt;&lt; <span class="string">&quot;EOF&quot;</span></span><br><span class="line"><span class="built_in">exec</span> <span class="built_in">env</span> -i HOME=<span class="variable">$HOME</span> TERM=<span class="variable">$TERM</span> PS1=<span class="string">&#x27;\u:\w\$ &#x27;</span> /bin/bash</span><br><span class="line">EOF</span><br><span class="line"></span><br><span class="line"><span class="built_in">cat</span> &gt; ~/.bashrc &lt;&lt; <span class="string">&quot;EOF&quot;</span></span><br><span class="line"><span class="built_in">set</span> +h</span><br><span class="line"><span class="built_in">umask</span> 022</span><br><span class="line">LFS=/lfs</span><br><span class="line">LC_ALL=POSIX</span><br><span class="line">LFS_TGT=x86_64-lfs-linux-gnu</span><br><span class="line">PATH=/usr/bin</span><br><span class="line"><span class="keyword">if</span> [ ! -L /bin ]; <span class="keyword">then</span> PATH=/bin:<span class="variable">$PATH</span>; <span class="keyword">fi</span></span><br><span class="line">PATH=<span class="variable">$LFS</span>/tools/bin:<span class="variable">$PATH</span></span><br><span class="line">CONFIG_SITE=<span class="variable">$LFS</span>/usr/share/config.site</span><br><span class="line"><span class="built_in">export</span> LFS LC_ALL LFS_TGT PATH CONFIG_SITE</span><br><span class="line">EOF</span><br><span class="line"></span><br><span class="line"><span class="built_in">source</span> ~/.bash_profile</span><br><span class="line"></span><br><span class="line"><span class="comment"># LFS chapter 5</span></span><br><span class="line"><span class="built_in">cd</span> /lfs/sources</span><br><span class="line"></span><br><span class="line">tar xvf binutils-2.41.tar.xz</span><br><span class="line"><span class="built_in">cd</span> binutils-2.41</span><br><span class="line"><span class="built_in">mkdir</span> -v build</span><br><span class="line"><span class="built_in">cd</span>       build</span><br><span class="line"><span class="keyword">time</span> (../configure --prefix=<span class="variable">$LFS</span>/tools \</span><br><span class="line">             --with-sysroot=<span class="variable">$LFS</span> \</span><br><span class="line">             --target=<span class="variable">$LFS_TGT</span>   \</span><br><span class="line">             --disable-nls       \</span><br><span class="line">             --enable-gprofng=no \</span><br><span class="line">             --disable-werror &amp;&amp; make -j4 &amp;&amp; make install)</span><br><span class="line"><span class="built_in">cd</span> /lfs/sources</span><br><span class="line"><span class="built_in">rm</span> -rf binutils-2.41</span><br><span class="line"></span><br><span class="line">tar xvf gcc-13.2.0.tar.xz</span><br><span class="line"><span class="built_in">cd</span> gcc-13.2.0</span><br><span class="line">tar -xf ../mpfr-4.2.0.tar.xz</span><br><span class="line"><span class="built_in">mv</span> -v mpfr-4.2.0 mpfr</span><br><span class="line">tar -xf ../gmp-6.3.0.tar.xz</span><br><span class="line"><span class="built_in">mv</span> -v gmp-6.3.0 gmp</span><br><span class="line">tar -xf ../mpc-1.3.1.tar.gz</span><br><span class="line"><span class="built_in">mv</span> -v mpc-1.3.1 mpc</span><br><span class="line">sed -e <span class="string">&#x27;/m64=/s/lib64/lib/&#x27;</span> \</span><br><span class="line">    -i.orig gcc/config/i386/t-linux64</span><br><span class="line"><span class="built_in">mkdir</span> -v build</span><br><span class="line"><span class="built_in">cd</span>       build</span><br><span class="line">../configure                  \</span><br><span class="line">    --target=<span class="variable">$LFS_TGT</span>         \</span><br><span class="line">    --prefix=<span class="variable">$LFS</span>/tools       \</span><br><span class="line">    --with-glibc-version=2.38 \</span><br><span class="line">    --with-sysroot=<span class="variable">$LFS</span>       \</span><br><span class="line">    --with-newlib             \</span><br><span class="line">    --without-headers         \</span><br><span class="line">    --enable-default-pie      \</span><br><span class="line">    --enable-default-ssp      \</span><br><span class="line">    --disable-nls             \</span><br><span class="line">    --disable-shared          \</span><br><span class="line">    --disable-multilib        \</span><br><span class="line">    --disable-threads         \</span><br><span class="line">    --disable-libatomic       \</span><br><span class="line">    --disable-libgomp         \</span><br><span class="line">    --disable-libquadmath     \</span><br><span class="line">    --disable-libssp          \</span><br><span class="line">    --disable-libvtv          \</span><br><span class="line">    --disable-libstdcxx       \</span><br><span class="line">    --enable-languages=c,c++</span><br><span class="line">make -j4</span><br><span class="line">make install</span><br><span class="line"><span class="built_in">cd</span> ..</span><br><span class="line"><span class="built_in">cat</span> gcc/limitx.h gcc/glimits.h gcc/limity.h &gt; \</span><br><span class="line">  `<span class="built_in">dirname</span> $(<span class="variable">$LFS_TGT</span>-gcc -print-libgcc-file-name)`/include/limits.h</span><br><span class="line"><span class="built_in">cd</span> /lfs/sources</span><br><span class="line"><span class="built_in">rm</span> -rf gcc-13.2.0</span><br><span class="line"></span><br><span class="line">tar xvf linux-6.4.12.tar.xz</span><br><span class="line"><span class="built_in">cd</span> linux-6.4.12</span><br><span class="line">make mrproper</span><br><span class="line">make headers</span><br><span class="line">find usr/include -<span class="built_in">type</span> f ! -name <span class="string">&#x27;*.h&#x27;</span> -delete</span><br><span class="line"><span class="built_in">cp</span> -rv usr/include <span class="variable">$LFS</span>/usr</span><br><span class="line"><span class="built_in">cd</span> /lfs/sources</span><br><span class="line"><span class="built_in">rm</span> -rf linux-6.4.12</span><br><span class="line"></span><br><span class="line">tar xvf glibc-2.38.tar.xz</span><br><span class="line"><span class="built_in">cd</span> glibc-2.38</span><br><span class="line"><span class="built_in">ln</span> -sfv ../lib/ld-linux-x86-64.so.2 <span class="variable">$LFS</span>/lib64</span><br><span class="line"><span class="built_in">ln</span> -sfv ../lib/ld-linux-x86-64.so.2 <span class="variable">$LFS</span>/lib64/ld-lsb-x86-64.so.3</span><br><span class="line">patch -Np1 -i ../glibc-2.38-fhs-1.patch</span><br><span class="line"><span class="built_in">mkdir</span> -v build</span><br><span class="line"><span class="built_in">cd</span>       build</span><br><span class="line"><span class="built_in">echo</span> <span class="string">&quot;rootsbindir=/usr/sbin&quot;</span> &gt; configparms</span><br><span class="line">../configure                             \</span><br><span class="line">      --prefix=/usr                      \</span><br><span class="line">      --host=<span class="variable">$LFS_TGT</span>                    \</span><br><span class="line">      --build=$(../scripts/config.guess) \</span><br><span class="line">      --enable-kernel=4.14               \</span><br><span class="line">      --with-headers=<span class="variable">$LFS</span>/usr/include    \</span><br><span class="line">      libc_cv_slibdir=/usr/lib</span><br><span class="line">make -j4</span><br><span class="line">make DESTDIR=<span class="variable">$LFS</span> install</span><br><span class="line">sed <span class="string">&#x27;/RTLDLIST=/s@/usr@@g&#x27;</span> -i <span class="variable">$LFS</span>/usr/bin/ldd</span><br><span class="line"><span class="built_in">cd</span> /lfs/sources</span><br><span class="line"><span class="built_in">rm</span> -rf glibc-2.38</span><br><span class="line"></span><br><span class="line">tar xvf gcc-13.2.0.tar.xz</span><br><span class="line"><span class="built_in">cd</span> gcc-13.2.0</span><br><span class="line"><span class="built_in">mkdir</span> -v build</span><br><span class="line"><span class="built_in">cd</span>       build</span><br><span class="line">../libstdc++-v3/configure           \</span><br><span class="line">    --host=<span class="variable">$LFS_TGT</span>                 \</span><br><span class="line">    --build=$(../config.guess)      \</span><br><span class="line">    --prefix=/usr                   \</span><br><span class="line">    --disable-multilib              \</span><br><span class="line">    --disable-nls                   \</span><br><span class="line">    --disable-libstdcxx-pch         \</span><br><span class="line">    --with-gxx-include-dir=/tools/<span class="variable">$LFS_TGT</span>/include/c++/13.2.0</span><br><span class="line">make -j4</span><br><span class="line">make DESTDIR=<span class="variable">$LFS</span> install</span><br><span class="line"><span class="built_in">rm</span> -v <span class="variable">$LFS</span>/usr/lib/lib&#123;stdc++,stdc++fs,supc++&#125;.la</span><br><span class="line"><span class="built_in">cd</span> /lfs/sources</span><br><span class="line"><span class="built_in">rm</span> -rf gcc-13.2.0</span><br></pre></td></tr></table></figure><p>以上命令皆由<a href="https://gist.github.com/Googulator/86af97ed078eb9e6c18c6eb49e46c96d">先人智慧</a>改编而来，其中，<code>-j4</code>改为你的CPU核数。</p><h1 id="交叉编译内核"><a href="#交叉编译内核" class="headerlink" title="交叉编译内核"></a>交叉编译内核</h1><p>照抄如下代码</p><figure class="highlight bash"><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></pre></td><td class="code"><pre><span class="line"><span class="built_in">cd</span> ../distfiles/</span><br><span class="line">tar xvf linux-4.14.336.tar.xz</span><br><span class="line">patch -p0 -i /steps/linux-4.14.341-openela/patches/deblob.patch</span><br><span class="line">patch -p0 -i /steps/linux-4.14.341-openela/patches/ddfd117714014cebe7b5d008fdec8eaec620cba1.patch</span><br><span class="line">patch -p0 -i /steps/linux-4.14.341-openela/patches/disable-broken-check.patch</span><br><span class="line">patch -p0 -i /steps/linux-4.14.341-openela/patches/drm_edid.patch</span><br><span class="line">patch -p0 -i /steps/linux-4.14.341-openela/patches/i2c-hid-dmi-quirks.patch</span><br><span class="line">patch -p0 -i /steps/linux-4.14.341-openela/patches/i915_sw_fence.patch</span><br><span class="line">patch -p0 -i /steps/linux-4.14.341-openela/patches/linking.patch</span><br><span class="line">patch -p0 -i /steps/linux-4.14.341-openela/patches/regen.patch</span><br><span class="line">patch -p0 -i /steps/linux-4.14.341-openela/patches/remove-alternative-asm.patch</span><br><span class="line">patch -p0 -i /steps/linux-4.14.341-openela/patches/wno-array-bounds.patch</span><br><span class="line"><span class="built_in">cd</span> linux-4.14.336</span><br><span class="line"><span class="built_in">cp</span> ../config-linux .config</span><br><span class="line">make ARCH=x86_64 CROSS_COMPILE=x86_64-lfs-linux-gnu- oldconfig</span><br><span class="line">make ARCH=x86_64 CROSS_COMPILE=x86_64-lfs-linux-gnu- -j4</span><br><span class="line"></span><br><span class="line"><span class="built_in">cp</span> /lfs/distfiles/linux-4.14.336/arch/x86/boot/bzImage /lfs/vmlinuz</span><br><span class="line"><span class="comment"># reboot or kexec to /lfs/vmlinuz, e.g. by running kexec -f --reuse-cmdline /lfs/vmlinuz as root</span></span><br></pre></td></tr></table></figure><h1 id="编译内核后"><a href="#编译内核后" class="headerlink" title="编译内核后"></a>编译内核后</h1><p>如上文注释，你可以在root权限下，用如下命令切换内核</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">kexec -f --reuse-cmdline /lfs/vmlinuz</span><br></pre></td></tr></table></figure><p>此外，你也可以用<code>cat</code>修改<code>/boot/grub/grub.cfg</code>，给GRUB增加一条启动项。然后重启系统，选择内核。</p><p>查看内核可以使用<code>uname -m</code>或<code>uname -a</code>来确认。<br><img src="kernelx64.png"></p>]]></content>
    
    
    <summary type="html">&lt;p&gt;这件事情一看就很烦，为什么要做呢？&lt;/p&gt;
&lt;p&gt;烦在哪里：刚刚自举的Linux系统，一没软件商店，二没包管理器。&lt;br&gt;软件商店是个什么玩意儿，在单位用过信创系统的都懂🙂。&lt;br&gt;包管理器没有，这你叫我怎么活？软件的依赖关系两眼一抹黑。&lt;/p&gt;
&lt;p&gt;既然很烦，为什么要做？：&lt;/p&gt;</summary>
    
    
    
    <category term="技术相关" scheme="https://blog.xuzhou-jiang.su/categories/%E6%8A%80%E6%9C%AF%E7%9B%B8%E5%85%B3/"/>
    
    <category term="信创天地" scheme="https://blog.xuzhou-jiang.su/categories/%E6%8A%80%E6%9C%AF%E7%9B%B8%E5%85%B3/%E4%BF%A1%E5%88%9B%E5%A4%A9%E5%9C%B0/"/>
    
    
    <category term="超长代码预警" scheme="https://blog.xuzhou-jiang.su/tags/%E8%B6%85%E9%95%BF%E4%BB%A3%E7%A0%81%E9%A2%84%E8%AD%A6/"/>
    
    <category term="踩坑心得" scheme="https://blog.xuzhou-jiang.su/tags/%E8%B8%A9%E5%9D%91%E5%BF%83%E5%BE%97/"/>
    
    <category term="一点偷工减料的干货" scheme="https://blog.xuzhou-jiang.su/tags/%E4%B8%80%E7%82%B9%E5%81%B7%E5%B7%A5%E5%87%8F%E6%96%99%E7%9A%84%E5%B9%B2%E8%B4%A7/"/>
    
    <category term="自助创新" scheme="https://blog.xuzhou-jiang.su/tags/%E8%87%AA%E5%8A%A9%E5%88%9B%E6%96%B0/"/>
    
    <category term="互联网非物质文化遗产" scheme="https://blog.xuzhou-jiang.su/tags/%E4%BA%92%E8%81%94%E7%BD%91%E9%9D%9E%E7%89%A9%E8%B4%A8%E6%96%87%E5%8C%96%E9%81%97%E4%BA%A7/"/>
    
    <category term="Linux邪教" scheme="https://blog.xuzhou-jiang.su/tags/Linux%E9%82%AA%E6%95%99/"/>
    
    <category term="交叉编译Linux内核" scheme="https://blog.xuzhou-jiang.su/tags/%E4%BA%A4%E5%8F%89%E7%BC%96%E8%AF%91Linux%E5%86%85%E6%A0%B8/"/>
    
  </entry>
  
  <entry>
    <title>用Windows编译Linux操作系统（一）：用Windows生成live-bootstrap的init.img</title>
    <link href="https://blog.xuzhou-jiang.su/2026/05/31/Windows-to-stage0/"/>
    <id>https://blog.xuzhou-jiang.su/2026/05/31/Windows-to-stage0/</id>
    <published>2026-05-31T05:46:32.000Z</published>
    <updated>2026-07-18T08:46:08.000Z</updated>
    
    <content type="html"><![CDATA[<blockquote><p><font color=yellow>注意⚠：千万不要用<del>未拔除所有硬盘的主机插上烧录init.img的</del>U盘运行live-bootstrap！否则，你将会损失1个硬盘的所有数据！<br>于2026年6月4日测试🕯<br>于2026年6月6日更新本文<br>2026年6月11日更新：已完成裸机编译测试，自举成功</font></p></blockquote><span id="more"></span><p>前几篇博客，我提到了超硬核的Linux发行版gentoo，还提到了stage1已经失传了这件事。<br>我记得在十几年前，这个系统就是以自己编译著称的，从引导区到stage1都是自己编译的，但是现在只有stage3存在了。当然，直到今天，你也可以通过<a href="/2026/05/04/stage3-to-stage1/">自托管</a>来从头进行编译。</p><p>不论是安装LFS还是Gentoo，都对系统有最低要求，你没有Linux头文件，没有Linux内核，你就无法编译Linux。其实只要自托管（self-hosted，用自己来编译自己）也足够了，如果你需要新功能或者对现在的代码不满意，想要自行修复bug，你下载一个现成的Linux发行版，它的包管理器一般都有gcc的，你随时都可以修改系统的底层代码。</p><h1 id="本文适合人群"><a href="#本文适合人群" class="headerlink" title="本文适合人群"></a>本文适合人群</h1><p>本文主要写给我自己看，以供日后翻阅。<br>如果你心中跟我有同样的疑问，通过搜索找到我这篇博文，并且有问题不会把别人当作客服来颐使气指，要别人为你的操作负责。那么恭喜你，你就是我的受众。<br>如果你之前因为技术无关的原因关注了我的长毛象，发现我写了这篇文章，但不知道我在说些什么，那你现在应该马上离开。</p><h1 id="系统要求"><a href="#系统要求" class="headerlink" title="系统要求"></a>系统要求</h1><p>依旧是至少4核8G以上（<font color=yellow>强烈<strong>不推荐</strong>配置这么低的</font>。<font color=grey>假如你的家庭是那种，你考上了计算机专业还不准你买电脑，让你用纸和笔来写代码，并且还收走你打工赚来的工资，叫你多给老师送礼，多拍拍马屁。那么，我就建议你去垃圾堆里找一台4核8G的破电脑，或者跟老师、亲戚、朋友“借”一台二手的4核8G电脑，然后以后再想办法买一台好的电脑。</font>）<br>笔者用的依旧是16核16G。亲测给虚拟机分配20线程10G已经够用（但是如果要安装gentoo的桌面图形环境，还是远远不够，当时我分配了swap空间才完成了编译）。<br>最重要的一点：你的CPU架构必须是x86_64 ！！！32位CPU和arm的肯定不行，只能说原作者还没开发出来。</p><h1 id="live-bootstrap的自举条件"><a href="#live-bootstrap的自举条件" class="headerlink" title="live-bootstrap的自举条件"></a>live-bootstrap的自举条件</h1><p>如果满足<a href="/2026/05/04/gentoo-stage0/">bootstrap</a>的条件，那自然应该也可以自举gentoo（这个截至目前，笔者只试过在Linux下自举到stage3，也没人有这时间随便编译安装完整的gentoo桌面版）和NixOS（这个系统没有试过）。</p><p>在Linux环境下，可以通过chroot来进行自举。一般来说，chroot需要你的容器内拥有<code>/bin/bash</code>以及它所需要的完整的动态链接库。但是这个不需要，因为<code>/bin/bash</code>只是<code>chroot</code>的默认参数，实际上你需要运行的就是<code>/bootstrap-seeds/POSIX/x86/kaem-optional-seed</code>。这个程序根本不需要库和<code>bash</code>。</p><h2 id="具备mount和chroot的系统"><a href="#具备mount和chroot的系统" class="headerlink" title="具备mount和chroot的系统"></a>具备mount和chroot的系统</h2><p>不是所有类UNIX系统都是Linux，苹果系统不是Linux，FreeBSD也不是Linux，UNIX更不是Linux。有Python3，你可以根据<a href="https://github.com/fosslinux/live-bootstrap">官方文档</a>使用Python脚本自动完成编译。没有Python，那你也可以使用chroot来进行编译。</p><h2 id="Windows系统"><a href="#Windows系统" class="headerlink" title="Windows系统"></a>Windows系统</h2><p>工欲善其事，必先利其器。前面讲到如何求人给你买一台电脑，但是如果你没有Linux电脑怎么办？chroot和mount也不能用，这时自举的优势体现出来了，Linux不需要任何编译器就能对自己进行编译，哪怕连系统内核都不要。<br>通过作者自带的python脚本，或者别的工具，拼接出磁盘映像，并写入磁盘（U盘我还没试过，试过以后我再回来修改这篇文章）。你也可以通过虚拟机来进行测试和编译。</p><h1 id="使用Windows开始bootstrap-Linux系统"><a href="#使用Windows开始bootstrap-Linux系统" class="headerlink" title="使用Windows开始bootstrap Linux系统"></a>使用Windows开始bootstrap Linux系统</h1><p>首先根据<a href="https://github.com/fosslinux/live-bootstrap">官方文档</a>或<a href="https://mid-kid.root.sx/git/mid-kid/bootstrap/src/branch/master/gentoo-2025.8/gentoo.txt">gentoo自举脚本</a>从GitHub克隆代码、检出代码并下载子模块。</p><blockquote><p>注意⚠：由于时间已经过去半年，代码老化，需要把<code>git -C live-bootstrap submodule update --init --recursive --depth=1 --progress</code>改为<code>git -C live-bootstrap submodule update --init --recursive --progress</code>，去掉<code>--depth=1</code>。否则子模块下载失败，如果无视报错和警告，最终自举会失败并浪费你接下来操作的所有时间。 </p></blockquote><p>Windows下，很多指令效果与Linux明显不同，所以需要进行变通和修改。通过<code>download-distfiles.sh</code>下载软件需要使用Git Bash。你也可以通过<a href="https://archive.org/download/gentoo-bootstrap-2025.8/distfiles.tar/">https://archive.org/download/gentoo-bootstrap-2025.8/distfiles.tar/</a> 来下载并解压软件，但是前提是必须检出到<code>63b24502c7e5bad7db5ee1d2005db4cc5905ab74</code>这个提交。</p><h1 id="踩坑问题"><a href="#踩坑问题" class="headerlink" title="踩坑问题"></a>踩坑问题</h1><p>用qemu运行Windows生成的<code>init.img</code>会出现一些bug，以及一些编译失败的问题。原因我总结下来有3点：</p><ol><li>路径反斜杠<code>\</code></li><li>换行符</li><li>软链接</li></ol><h2 id="软链接导致的问题"><a href="#软链接导致的问题" class="headerlink" title="软链接导致的问题"></a>软链接导致的问题</h2><p>问题表现：自举过程中，musl编译出错，显示<code>pass1.sh</code>命令无法运行。<br>在GitHub仓库查看代码后发现，<code>pass2.sh</code>本应是软链接，结果却变成了文本文件。其实<code>init.img</code>中应当让<code>pass2.sh</code>填充<code>pass1.sh</code>的内容。<br>修复软链接的办法在<a href="https://murphypei.github.io/blog/2021/03/git-symlink">这里</a><br>删除仓库，用管理员权限打开终端（并非需要Git Bash），运行如下命令重新克隆代码</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git <span class="built_in">clone</span> -c core.symlinks=<span class="literal">true</span> https://github.com/fosslinux/live-bootstrap.git</span><br></pre></td></tr></table></figure><h2 id="路径反斜杠"><a href="#路径反斜杠" class="headerlink" title="路径反斜杠\"></a>路径反斜杠<code>\</code></h2><p>在自举进程达到shell的时候，会报错然后关机。这是因为Windows采用反斜杠，而POSIX标准的系统不支持这种形式的路径。</p><figure class="highlight diff"><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></pre></td><td class="code"><pre><span class="line"><span class="comment">diff --git a/lib/generator.py b/lib/generator.py</span></span><br><span class="line"><span class="comment">index 8913c6c..832bb40 100755</span></span><br><span class="line"><span class="comment">--- a/lib/generator.py</span></span><br><span class="line"><span class="comment">+++ b/lib/generator.py</span></span><br><span class="line"><span class="meta">@@ -171,13 +171,13 @@</span> class Generator():</span><br><span class="line">     @staticmethod</span><br><span class="line">     def output_dir(srcfs_file, dirpath):</span><br><span class="line">         &quot;&quot;&quot;Add a directory to srcfs file system&quot;&quot;&quot;</span><br><span class="line"><span class="deletion">-        srcline = f&quot;src 0 &#123;dirpath&#125;\n&quot;</span></span><br><span class="line"><span class="addition">+        srcline = f&quot;src 0 &#123;dirpath.replace(&#x27;\\&#x27;,&#x27;/&#x27;)&#125;\n&quot;</span></span><br><span class="line">         srcfs_file.write(srcline.encode())</span><br><span class="line"></span><br><span class="line">     @staticmethod</span><br><span class="line">     def output_file(srcfs_file, filepath):</span><br><span class="line">         &quot;&quot;&quot;Add a file to srcfs file system&quot;&quot;&quot;</span><br><span class="line"><span class="deletion">-        srcline = f&quot;src &#123;os.path.getsize(filepath)&#125; &#123;filepath&#125;\n&quot;</span></span><br><span class="line"><span class="addition">+        srcline = f&quot;src &#123;os.path.getsize(filepath)&#125; &#123;filepath.replace(&#x27;\\&#x27;,&#x27;/&#x27;)&#125;\n&quot;</span></span><br><span class="line">         srcfs_file.write(srcline.encode())</span><br><span class="line">         with open(filepath, &#x27;rb&#x27;) as srcfile:</span><br><span class="line">             srcfs_file.write(srcfile.read())</span><br></pre></td></tr></table></figure><h2 id="换行符"><a href="#换行符" class="headerlink" title="换行符"></a>换行符</h2><p>自举过程中，一些代码出现某些字符导致了bug。配置文件也有问题。在Windows下用<code>vim -b</code>（一定要用二进制方式打开）打开后，发现所有文件的行尾都有<code>^M</code>。这是因为Windows的换行符是CRLF，Linux的换行符是LF。</p><blockquote><p>概念解析：CRLF是回车+换行，LF是换行。<br>何谓回车？就是打字机按下回车键以后，直接回到行首。回到行首的动作就是“回车”。</p></blockquote><p><a href="https://docs.github.com/zh/get-started/git-basics/configuring-git-to-handle-line-endings">Git的解决办法</a><br>在你的Windows用户文件夹，找到隐藏文件<code>.gitconfig</code>，修改配置<code>autocrlf</code>为如下值</p><figure class="highlight bash"><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">[core]</span><br><span class="line">autocrlf = input</span><br></pre></td></tr></table></figure><p>然后删除仓库重新拉取或<code>git reset</code>。<br><a href="https://blog.csdn.net/tangyin025/article/details/123108752">配置文件的解决办法</a>：添加<code>newline=&#39;\n&#39;</code></p><figure class="highlight diff"><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></pre></td><td class="code"><pre><span class="line"><span class="comment">diff --git a/rootfs.py b/rootfs.py</span></span><br><span class="line"><span class="comment">index 7cbb4bc..8bfe3d7 100755</span></span><br><span class="line"><span class="comment">--- a/rootfs.py</span></span><br><span class="line"><span class="comment">+++ b/rootfs.py</span></span><br><span class="line"><span class="meta">@@ -30,7 +30,7 @@</span> def create_configuration_file(args):</span><br><span class="line">     customize bootstrap.</span><br><span class="line">     &quot;&quot;&quot;</span><br><span class="line">     config_path = os.path.join(&#x27;steps&#x27;, &#x27;bootstrap.cfg&#x27;)</span><br><span class="line"><span class="deletion">-    with open(config_path, &quot;w&quot;, encoding=&quot;utf_8&quot;) as config:</span></span><br><span class="line"><span class="addition">+    with open(config_path, &quot;w&quot;, newline=&#x27;\n&#x27;, encoding=&quot;utf_8&quot;) as config:</span></span><br><span class="line">         config.write(f&quot;ARCH=&#123;args.arch&#125;\n&quot;)</span><br><span class="line">         config.write(f&quot;ARCH_DIR=&#123;stage0_arch_map.get(args.arch, args.arch)&#125;\n&quot;)</span><br><span class="line">         config.write(f&quot;FORCE_TIMESTAMPS=&#123;args.force_timestamps&#125;\n&quot;)</span><br></pre></td></tr></table></figure><p>然后删除<code>target/</code>，重新生成映像文件。</p><p>在重新拉取仓库后，首先观察软链接，再用<code>view -b</code>或notepad++观察换行符。生成<code>init.img</code>后，再用<code>view</code>或notepad++观察换行符和反斜杠问题（注意最好用只读模式，千万不要保存）。确保Windows生成的映像文件与Linux生成的无异后，方可开始编译。</p><h2 id="不建议的操作"><a href="#不建议的操作" class="headerlink" title="不建议的操作"></a>不建议的操作</h2><p>有聪明的读者可能要问了：我改改python代码，把整个<code>distfiles/</code>都给写入<code>init.img</code>行不行？我的回答是：我试过，不行！<br>因为裸机加载文件，编译软件，都是把文件存在内存里的，写硬盘的软件e2fsprog都还没编译出来呢。你把整个目录都给拖家带口地带上，只会拖累编译。<br>又有自作聪明的读者要问了：那我电脑内存比你大，就是比你屌。<br>我的回答是：你尽管去试！内存管理也是内核的职责，你没听说过拿你现在的电脑去运行MS-DOS，内存其实还是不到1G？</p><h1 id="自举（bootstrap）的方式"><a href="#自举（bootstrap）的方式" class="headerlink" title="自举（bootstrap）的方式"></a>自举（bootstrap）的方式</h1><p>在这里，可以用虚拟机和裸机两种方式运行拼接出的映像。</p><h2 id="裸机（不建议，仅限实验验证与学习）"><a href="#裸机（不建议，仅限实验验证与学习）" class="headerlink" title="裸机（不建议，仅限实验验证与学习）"></a>裸机（不建议，仅限实验验证与学习）</h2><p>在<code>live-bootstrap</code>目录下，运行</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">./rootfs.py -b --cores &lt;你的核数&gt; -m <span class="string">&#x27;http://archive.org/download/gentoo-bootstrap-2025.8/distfiles.tar&#x27;</span></span><br></pre></td></tr></table></figure><p>该脚本的参数不同，生成的映像宏观上仅有<code>/steps/bootstrap.cfg</code>的内容不同，但是每个文件头都必须记录文件的字节数，结尾也必须用二进制的0填满扇区直到整MB。所以，更改参数可以用<code>vim</code>，但我强烈建议把<code>target/</code>删了，重新运行一遍上述命令。<br>参数我解释一下：</p><ol><li><code>-b</code>是指我将用裸机（bare-metal）进行编译。</li><li><code>--cores</code>是指编译最大线程数。该程序跑到后期，Linux系统快成形时，会采用多核编译。前期读盘也要单核CPU。有影响，但不大。</li><li><code>-m</code>是指镜像，从哪个网址下载后续需要的软件。该参数也写入硬盘。家里有软路由的前提下，可以从网络上下载。没有软路由，你就不要指望裸机能给你翻墙，你只能在家搭建文件服务器，把制作映像前下载的文件挂上面以供下载。一旦发生无法下载，bootstrap进程将前功尽弃！<br>建议在内网用另一台计算机搭建文件服务器，提供<code>distfiles</code>内的所有文件。该参数设置为该文件服务器的URL<blockquote><p><font color=yellow>注意⚠：如上地址，结尾不能有<code>/</code>，否则下载会出错，导致自举失败，全程作废！协议必须是<code>http://</code>而不能是<code>https://</code>！因为自举程序在安装openssl之前就开始下载代码压缩包了！裸机无法对网络连接进行加密解密！</font></p></blockquote></li></ol><p><font color=orange>在写入该映像并用裸机运行前，请<strong>务必</strong>用虚拟机多次完整运行自举流程！！！</font></p><p><font color=grey><del>然后将生成的<code>init.img</code>写入U盘。</del><br><del>启动电脑，设置该U盘启动。</del><br><del>或者拔除所有硬盘和外设，插入启动。</del></font><br>该电脑必须插网线，不可以用WiFi，因为装过gentoo的小伙伴都知道，WiFi需要额外配置，而裸机是连无线网卡的驱动都没有。<br><strong>网线必须插入千兆以下网口！否则无法联网！</strong> 如果主板只有2.5G网口，则需要配备USB外接网卡和USB2.0接口！</p><font color=yellow>于2026年6月5日凌晨更新：<p>笔者于今晚进行了测试，遇到了几个问题：</p><ol><li>键盘似乎不兼容，在安装完kiwix之后，会随机自动中断自举进程，并重启。拔除USB键盘和鼠标后，不再有此BUG</li><li>网卡似乎不兼容linux-4.14.341，根据提示似乎无法获取dhcp。</li><li><strong>最大的问题</strong>：自举后期出现kernel panic。回到Windows后，发现盘符少一个，经过仔细检查，我损失了全部软件安装包，包括gentoo全套自举代码和配置文件，以及所有Linux发行版的安装盘。</li><li>该系统无法使用U盘启动（于2026.6.6测试，后续将刻录到SATA硬盘进行测试）</font></li></ol><font color=aquamarine>于2026年6月11日更新：<p>笔者于今天凌晨完成了裸机自举，总结以下几点，如果不具备做到的条件，那么请使用qemu完成实验，或换一台可以拆解的且符合条件的主机：</p><ol><li>必须是x86_64架构的CPU。如果是32位CPU，也就是x86架构的CPU，也可以完成自举，但是后续无法在裸机上编译出Gentoo的stage3文件了。</li><li>主机必须支持BIOS启动。如果仅支持UEFI，也请跳过此节。</li><li>支持SATA硬盘。不能使用USB引导。但是，你可以尝试修改<code>rootfs.py</code>,从而修改中间文件<code>/steps/bootstrap.cfg</code>中的<code>DISK</code>参数，从而使用nvme硬盘来进行自举（本替代方案没有经过测试，不能保证成功。笔者在VMWare虚拟机里使用U盘作为虚拟机的硬盘，也发生了无法读写硬盘的故障，从而无法完成自举。故非SATA硬盘可能会导致不可预料的错误！）</li><li>E1000e以下的网卡。如上文所说，linux-4.14.341不兼容Realtek 2.5G网卡。USB网卡可以实现降级的效果，但是还应该注意不要插USB3.0接口。没有USB2.0以下的接口，也没低端网卡的主机&#x2F;主板，可以考虑降级或更换（放弃本节实验）了。</li><li>实验开始前，先关机。拔除所有其他SATA硬盘（nvme硬盘不受影响，<strong>如果没有改过live-bootstrap代码的话</strong>），否则自举程序在内核切换成功后的某阶段报错，并格式化你其他SATA硬盘！<br>开始引导那个唯一正确的SATA盘后，尽快拔掉键盘和鼠标，该程序不需要也不能收到任何键盘鼠标的信号，否则不论你按什么按键，是否按下按键，都将中断程序流程，并自动进行重启。<br>唯有拔掉键盘鼠标才能正确运行硬盘里的程序！</font></li></ol><h2 id="VMWare（推荐）"><a href="#VMWare（推荐）" class="headerlink" title="VMWare（推荐）"></a>VMWare（推荐）</h2><p>你需要安装qemu，用于把<code>init.img</code>转换为虚拟机硬盘。<br>还是如上执行</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">./rootfs.py -b --cores &lt;你虚拟机的核数&gt; -m <span class="string">&#x27;http://&lt;你的文件服务器地址&gt;&#x27;</span></span><br></pre></td></tr></table></figure><p>为了防止网络问题，我推荐在主机上开启文件服务器。其实不难，下载<a href="https://sourceforge.net/projects/miniweb/">miniweb</a>并拷到<code>distfiles/</code>里面通过命令行运行就行了。如果你的镜像服务器根目录就提供文件，那么镜像结尾有<code>/</code>也没问题。<br>生成<code>init.img</code>后，用<code>qemu-img</code>转化映像文件为虚拟硬盘，移入虚拟机目录。<font color=yellow>注意：硬盘接口类型选择SATA，并且将虚拟硬盘大小扩容！</font><br>没使用的参数<code>--external-sources</code>我也解释一下：使用了这个参数，你需要准备另外一块硬盘，必须格式化为<code>ext3</code>，并将你的<code>distfiles/</code>目录拷入此硬盘。听上去很好对不对？问题有很多：</p><ol><li>Windows无法将硬盘和虚拟硬盘格式化为ext等Linux可用的格式。即使用工具格式化了，还有另外的问题等着你。</li><li>我在Windows上用工具格式化的<code>ext3</code>分区，虽然可用拷文件进去，但是无法被live-bootstrap正确读取。</li><li>自举程序完成后，将会格式化硬盘2，之后在硬盘2上面启动。然而，我在虚拟机上用这个参数运行了自举程序，结果却无法启动！</li></ol><p>虚拟硬盘配置好后，确保你的CPU虚拟化打开、Hyper-V关闭，启动虚拟机等待5小时即可。</p><h2 id="Qemu"><a href="#Qemu" class="headerlink" title="Qemu"></a>Qemu</h2><p>没有虚拟机的情况下你可以使用Qemu来编译Linux。<br>条件：在UEFI&#x2F;BIOS把CPU虚拟化打开、控制面板Hyper-V打开（你将无法使用虚拟机）。<br>接下来分2种情况了</p><h3 id="通过-q参数运行"><a href="#通过-q参数运行" class="headerlink" title="通过-q参数运行"></a>通过<code>-q</code>参数运行</h3><p>运行如下命令，生成16G的虚拟硬盘文件</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">./rootfs.py -q --cores &lt;你虚拟机的核数&gt; -m <span class="string">&#x27;http://&lt;你的文件服务器地址&gt;&#x27;</span></span><br></pre></td></tr></table></figure><p>我来解释一下<code>-q</code>和<code>-b</code>的区别。其实还是仅有配置文件的参数不同，但是运行起来的效果却不一样。<code>-q</code>参数会把标准输出给输出到ttyS0去，而<code>-b</code>会把标准输出给输出到显示器。这个设置不同，可能会导致该有显示的地方没有显示，程序是否在运行也没人知道。<br>运行上述命令后，它会报错，因为Windows没法使用<code>qemu-system-x86_64 -enable-kvm</code>这个参数。<br>然后可以无视刚才那个报错，运行命令：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">qemu-system-x86_64 -m 10G -smp &lt;你虚拟机的核数&gt; -drive file=init.img,format=raw -nic user,model=e1000 -machine kernel-irqchip=off -accel whpx -no-reboot -nographic</span><br></pre></td></tr></table></figure><p>我解释一下参数：</p><ol><li><code>-m</code>内存大小</li><li><code>-smp</code>qemu的核数</li><li><code>-drive</code>虚拟硬盘</li><li><code>-nic</code>网络类型，<code>user</code>是NAT网络，<code>model=e1000</code>是网卡型号</li><li><code>-machine</code>跟官方文档不一样，不选择这个，会卡顿甚至导致得重开</li><li><code>-accel</code>这个选项是使用Hyper-V。Windows下的qemu仅有这个虚拟化技术，如果不采用，几天几夜都无法完成，也无法观察为何失败并总结原因了。</li><li><code>-no-reboot</code>遇到问题不要重启，你可以查看报错，以便解决bug重新运行，找出正确的启动方式</li><li><code>-nographic</code>不输出任何图像，将标准输出，输出到命令行。如果没有这个参数，那将打开一个黑屏的模拟显示器，你将无法观察它的过程和错误信息了。</li></ol><h3 id="通过-b参数运行（不推荐）"><a href="#通过-b参数运行（不推荐）" class="headerlink" title="通过-b参数运行（不推荐）"></a>通过<code>-b</code>参数运行（不推荐）</h3><p>运行如下命令生成映像文件</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">./rootfs.py -b --cores &lt;你虚拟机的核数&gt; -m <span class="string">&#x27;http://&lt;你的文件服务器地址&gt;&#x27;</span></span><br></pre></td></tr></table></figure><p>再用<code>qemu-img</code>将它扩容。本小节和上一小节的映像文件都是直接写0的，未使用的空间也会被占用！<br>然后运行qemu进行编译</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">qemu-system-x86_64 -m 10G -smp &lt;你虚拟机的核数&gt; -drive file=init.img,format=raw -nic user,model=e1000 -machine kernel-irqchip=off -accel whpx -no-reboot</span><br></pre></td></tr></table></figure><p>参数解释：这里<code>-nographic</code>要去掉，否则无法显示标准输出。<br>表现大致上跟虚拟机一样，但是比上一小节要慢得多。大概要花10个小时才能编译完成。</p><p>编译完成后如图所示<br><img src="windows-stage0.png"></p><h1 id="编译Linux后的操作"><a href="#编译Linux后的操作" class="headerlink" title="编译Linux后的操作"></a>编译Linux后的操作</h1><p>通过参数<code>-q</code>编译出的系统，开机加载内核会没有输出。解决办法其实也很简单，修改<code>/boot/grub/grub.cfg</code>即可解决。两种参数编译出的系统也就这点区别而已。<br>然而，该系统既无包管理器，也没有任何文本编辑器。修改文件的办法仅有<code>sed</code>和<code>cat</code>而已，所以建议先备份该文件。</p>]]></content>
    
    
    <summary type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;font color=yellow&gt;注意⚠：千万不要用&lt;del&gt;未拔除所有硬盘的主机插上烧录init.img的&lt;/del&gt;U盘运行live-bootstrap！否则，你将会损失1个硬盘的所有数据！&lt;br&gt;于2026年6月4日测试🕯&lt;br&gt;于2026年6月6日更新本文&lt;br&gt;2026年6月11日更新：已完成裸机编译测试，自举成功&lt;/font&gt;&lt;/p&gt;
&lt;/blockquote&gt;</summary>
    
    
    
    <category term="技术相关" scheme="https://blog.xuzhou-jiang.su/categories/%E6%8A%80%E6%9C%AF%E7%9B%B8%E5%85%B3/"/>
    
    <category term="信创天地" scheme="https://blog.xuzhou-jiang.su/categories/%E6%8A%80%E6%9C%AF%E7%9B%B8%E5%85%B3/%E4%BF%A1%E5%88%9B%E5%A4%A9%E5%9C%B0/"/>
    
    
    <category term="踩坑心得" scheme="https://blog.xuzhou-jiang.su/tags/%E8%B8%A9%E5%9D%91%E5%BF%83%E5%BE%97/"/>
    
    <category term="一点偷工减料的干货" scheme="https://blog.xuzhou-jiang.su/tags/%E4%B8%80%E7%82%B9%E5%81%B7%E5%B7%A5%E5%87%8F%E6%96%99%E7%9A%84%E5%B9%B2%E8%B4%A7/"/>
    
    <category term="自助创新" scheme="https://blog.xuzhou-jiang.su/tags/%E8%87%AA%E5%8A%A9%E5%88%9B%E6%96%B0/"/>
    
    <category term="时间杀手预警" scheme="https://blog.xuzhou-jiang.su/tags/%E6%97%B6%E9%97%B4%E6%9D%80%E6%89%8B%E9%A2%84%E8%AD%A6/"/>
    
    <category term="互联网非物质文化遗产" scheme="https://blog.xuzhou-jiang.su/tags/%E4%BA%92%E8%81%94%E7%BD%91%E9%9D%9E%E7%89%A9%E8%B4%A8%E6%96%87%E5%8C%96%E9%81%97%E4%BA%A7/"/>
    
    <category term="Linux邪教" scheme="https://blog.xuzhou-jiang.su/tags/Linux%E9%82%AA%E6%95%99/"/>
    
    <category term="编译Linux系统" scheme="https://blog.xuzhou-jiang.su/tags/%E7%BC%96%E8%AF%91Linux%E7%B3%BB%E7%BB%9F/"/>
    
    <category term="警告" scheme="https://blog.xuzhou-jiang.su/tags/%E8%AD%A6%E5%91%8A/"/>
    
    <category term="内含危险操作！" scheme="https://blog.xuzhou-jiang.su/tags/%E5%86%85%E5%90%AB%E5%8D%B1%E9%99%A9%E6%93%8D%E4%BD%9C%EF%BC%81/"/>
    
  </entry>
  
  <entry>
    <title>gentoo的自举</title>
    <link href="https://blog.xuzhou-jiang.su/2026/05/04/gentoo-stage0/"/>
    <id>https://blog.xuzhou-jiang.su/2026/05/04/gentoo-stage0/</id>
    <published>2026-05-04T08:58:56.000Z</published>
    <updated>2026-05-04T10:16:44.000Z</updated>
    
    <content type="html"><![CDATA[<p>上回说到，<a href="https://wiki.gentoo.org/wiki/Project:Prefix">Gentoo Prefix</a>可以（<em>理论上</em>）让你在任何机器上使用portage，其实，有很多gentoo功能是不能使用的。首先，你不能在不完整的gentoo上安装二进制包（<code>FEATURES=&quot; getbinpkg &quot;</code>），prefix上也别这么做，否则会在安装过程中报错。其次，还有很多软件无法使用。用途最明显的就是gentoo prefix的wine不错，这似乎是arch linux也做不到的事情。<br>但是，叫它编译一个完整的stage文件就做不到了。</p><p>因此，我尝试了爆改Gentoo Prefix的脚本，也无济于事。<br>直到我搜索了……</p><h1 id="Gentoo-Full-Source-Bootstrap"><a href="#Gentoo-Full-Source-Bootstrap" class="headerlink" title="Gentoo Full Source Bootstrap"></a>Gentoo Full Source Bootstrap</h1><p>这个脚本就在官方的Gentoo Wiki里面，似乎未写完，要鸽不鸽的样子。地址：<a href="https://wiki.gentoo.org/wiki/Full_Source_Bootstrap">https://wiki.gentoo.org/wiki/Full_Source_Bootstrap</a><br>里面引用了一个网站，写了个脚本，旧版的似乎不顶用了，应该看看新版的<a href="https://mid-kid.root.sx/git/mid-kid/bootstrap/src/branch/master/gentoo-2025.8/gentoo.txt">https://mid-kid.root.sx/git/mid-kid/bootstrap/src/branch/master/gentoo-2025.8/gentoo.txt</a><br>这个脚本亲测可用！建议所有读者下载！如果作者删了，详见<a href="https://web.archive.org/web/20260504092152/https://mid-kid.root.sx/git/mid-kid/bootstrap/src/branch/master/gentoo-2025.8/gentoo.txt">互联网档案馆</a><br>同时，我也导出了该作者的git<a href="https://github.com/dongzhimin-xz/Linux-bootstrap/blob/master/gentoo-2025.8/gentoo.txt">点击查看</a><br>或者，我将代码贴在此处</p><details><summary>点击展开代码</summary><figure class="highlight bash"><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><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br><span class="line">124</span><br><span class="line">125</span><br><span class="line">126</span><br><span class="line">127</span><br><span class="line">128</span><br><span class="line">129</span><br><span class="line">130</span><br><span class="line">131</span><br><span class="line">132</span><br><span class="line">133</span><br><span class="line">134</span><br><span class="line">135</span><br><span class="line">136</span><br><span class="line">137</span><br><span class="line">138</span><br><span class="line">139</span><br><span class="line">140</span><br><span class="line">141</span><br><span class="line">142</span><br><span class="line">143</span><br><span class="line">144</span><br><span class="line">145</span><br><span class="line">146</span><br><span class="line">147</span><br><span class="line">148</span><br><span class="line">149</span><br><span class="line">150</span><br><span class="line">151</span><br><span class="line">152</span><br><span class="line">153</span><br><span class="line">154</span><br><span class="line">155</span><br><span class="line">156</span><br><span class="line">157</span><br><span class="line">158</span><br><span class="line">159</span><br><span class="line">160</span><br><span class="line">161</span><br><span class="line">162</span><br><span class="line">163</span><br><span class="line">164</span><br><span class="line">165</span><br><span class="line">166</span><br><span class="line">167</span><br><span class="line">168</span><br><span class="line">169</span><br><span class="line">170</span><br><span class="line">171</span><br><span class="line">172</span><br><span class="line">173</span><br><span class="line">174</span><br><span class="line">175</span><br><span class="line">176</span><br><span class="line">177</span><br><span class="line">178</span><br><span class="line">179</span><br><span class="line">180</span><br><span class="line">181</span><br><span class="line">182</span><br><span class="line">183</span><br><span class="line">184</span><br><span class="line">185</span><br><span class="line">186</span><br><span class="line">187</span><br><span class="line">188</span><br><span class="line">189</span><br><span class="line">190</span><br><span class="line">191</span><br><span class="line">192</span><br><span class="line">193</span><br><span class="line">194</span><br><span class="line">195</span><br><span class="line">196</span><br><span class="line">197</span><br><span class="line">198</span><br><span class="line">199</span><br><span class="line">200</span><br><span class="line">201</span><br><span class="line">202</span><br><span class="line">203</span><br><span class="line">204</span><br><span class="line">205</span><br><span class="line">206</span><br><span class="line">207</span><br><span class="line">208</span><br><span class="line">209</span><br><span class="line">210</span><br><span class="line">211</span><br><span class="line">212</span><br><span class="line">213</span><br><span class="line">214</span><br><span class="line">215</span><br><span class="line">216</span><br><span class="line">217</span><br><span class="line">218</span><br><span class="line">219</span><br><span class="line">220</span><br><span class="line">221</span><br><span class="line">222</span><br><span class="line">223</span><br><span class="line">224</span><br><span class="line">225</span><br><span class="line">226</span><br><span class="line">227</span><br><span class="line">228</span><br><span class="line">229</span><br><span class="line">230</span><br><span class="line">231</span><br><span class="line">232</span><br><span class="line">233</span><br><span class="line">234</span><br><span class="line">235</span><br><span class="line">236</span><br><span class="line">237</span><br><span class="line">238</span><br><span class="line">239</span><br><span class="line">240</span><br><span class="line">241</span><br><span class="line">242</span><br><span class="line">243</span><br><span class="line">244</span><br><span class="line">245</span><br><span class="line">246</span><br><span class="line">247</span><br><span class="line">248</span><br><span class="line">249</span><br><span class="line">250</span><br><span class="line">251</span><br><span class="line">252</span><br><span class="line">253</span><br><span class="line">254</span><br><span class="line">255</span><br><span class="line">256</span><br><span class="line">257</span><br><span class="line">258</span><br><span class="line">259</span><br><span class="line">260</span><br><span class="line">261</span><br><span class="line">262</span><br><span class="line">263</span><br><span class="line">264</span><br><span class="line">265</span><br><span class="line">266</span><br><span class="line">267</span><br><span class="line">268</span><br><span class="line">269</span><br><span class="line">270</span><br><span class="line">271</span><br><span class="line">272</span><br><span class="line">273</span><br><span class="line">274</span><br><span class="line">275</span><br><span class="line">276</span><br><span class="line">277</span><br><span class="line">278</span><br><span class="line">279</span><br><span class="line">280</span><br><span class="line">281</span><br><span class="line">282</span><br><span class="line">283</span><br><span class="line">284</span><br><span class="line">285</span><br><span class="line">286</span><br><span class="line">287</span><br><span class="line">288</span><br><span class="line">289</span><br><span class="line">290</span><br><span class="line">291</span><br><span class="line">292</span><br><span class="line">293</span><br><span class="line">294</span><br><span class="line">295</span><br><span class="line">296</span><br><span class="line">297</span><br><span class="line">298</span><br><span class="line">299</span><br><span class="line">300</span><br><span class="line">301</span><br><span class="line">302</span><br><span class="line">303</span><br><span class="line">304</span><br><span class="line">305</span><br><span class="line">306</span><br><span class="line">307</span><br><span class="line">308</span><br><span class="line">309</span><br><span class="line">310</span><br><span class="line">311</span><br><span class="line">312</span><br><span class="line">313</span><br><span class="line">314</span><br><span class="line">315</span><br><span class="line">316</span><br><span class="line">317</span><br><span class="line">318</span><br><span class="line">319</span><br><span class="line">320</span><br><span class="line">321</span><br><span class="line">322</span><br><span class="line">323</span><br><span class="line">324</span><br><span class="line">325</span><br><span class="line">326</span><br><span class="line">327</span><br><span class="line">328</span><br><span class="line">329</span><br><span class="line">330</span><br><span class="line">331</span><br><span class="line">332</span><br><span class="line">333</span><br><span class="line">334</span><br><span class="line">335</span><br><span class="line">336</span><br><span class="line">337</span><br><span class="line">338</span><br><span class="line">339</span><br><span class="line">340</span><br><span class="line">341</span><br><span class="line">342</span><br><span class="line">343</span><br><span class="line">344</span><br><span class="line">345</span><br><span class="line">346</span><br><span class="line">347</span><br><span class="line">348</span><br><span class="line">349</span><br><span class="line">350</span><br><span class="line">351</span><br><span class="line">352</span><br><span class="line">353</span><br><span class="line">354</span><br><span class="line">355</span><br><span class="line">356</span><br><span class="line">357</span><br><span class="line">358</span><br><span class="line">359</span><br><span class="line">360</span><br><span class="line">361</span><br><span class="line">362</span><br><span class="line">363</span><br><span class="line">364</span><br><span class="line">365</span><br><span class="line">366</span><br><span class="line">367</span><br><span class="line">368</span><br><span class="line">369</span><br><span class="line">370</span><br><span class="line">371</span><br><span class="line">372</span><br><span class="line">373</span><br><span class="line">374</span><br><span class="line">375</span><br><span class="line">376</span><br><span class="line">377</span><br><span class="line">378</span><br><span class="line">379</span><br><span class="line">380</span><br><span class="line">381</span><br><span class="line">382</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># vim:set ft=sh:</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># Distfiles mirror:</span></span><br><span class="line"><span class="comment"># https://archive.org/download/gentoo-bootstrap-2025.8/distfiles.tar/</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># Changelog:</span></span><br><span class="line"><span class="comment"># - 2025.8:</span></span><br><span class="line"><span class="comment">#   - Set up a proper gentoo install using prefix, by building a bunch of tools</span></span><br><span class="line"><span class="comment">#     in a temporary prefix, and then cross-compiling a final prefix.</span></span><br><span class="line"><span class="comment">#   - Use crossdev to build the final system.</span></span><br><span class="line"><span class="comment">#   - Both of these changes make the instructions significantly more</span></span><br><span class="line"><span class="comment">#     future-proof, although there&#x27;s still a lot of bugs to fix upstream, and</span></span><br><span class="line"><span class="comment">#     ways to lessen the amount of compilation needed.</span></span><br><span class="line"><span class="comment"># - 2025:</span></span><br><span class="line"><span class="comment">#   - Upstreamed portage patch</span></span><br><span class="line"><span class="comment">#   - Cross-compile all packages in packages.build for the profile</span></span><br><span class="line"><span class="comment">#     (this simplifies the steps afterwards significantly)</span></span><br><span class="line"><span class="comment">#   - Pin to GCC 13 (gcc 14 isn&#x27;t working...)</span></span><br><span class="line"><span class="comment">#   - Future proofing by ignoring HTTPs certificates</span></span><br><span class="line"><span class="comment">#     (portage verifies the checksums anyway)</span></span><br><span class="line"><span class="comment">#   - Avoid using wget (need to set FETCHCOMMAND anyway...)</span></span><br><span class="line"><span class="comment">#   - Future proofing by not hardcoding a python version</span></span><br><span class="line"><span class="comment"># - 2024.8:</span></span><br><span class="line"><span class="comment">#   - Rewrite bootstrap to avoid using LFS</span></span><br><span class="line"><span class="comment">#   - Pin the repository version</span></span><br><span class="line"><span class="comment"># - 2024:</span></span><br><span class="line"><span class="comment">#   - Initial version</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># Overview of bootstrap:</span></span><br><span class="line"><span class="comment"># step 0: Build live-bootstrap as a starting point</span></span><br><span class="line"><span class="comment"># step 1: Install a temporary copy of portage to /tmp/portage</span></span><br><span class="line"><span class="comment"># step 2: Setup a prefix-guest using the live-bootstrap toolchain, build a few additional tools</span></span><br><span class="line"><span class="comment"># step 3: Set up a target prefix, build glibc, and a cross compiler targetting it</span></span><br><span class="line"><span class="comment"># step 4: Build portage and necessary utilities for the target prefix</span></span><br><span class="line"><span class="comment"># step 5: Switch to it and emerge the rest of @world</span></span><br><span class="line"><span class="comment"># step 6: Install crossdev and build the final system</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># Build live-bootstrap</span></span><br><span class="line">git <span class="built_in">clone</span> https://github.com/fosslinux/live-bootstrap</span><br><span class="line">git -C live-bootstrap checkout 63b24502c7e5bad7db5ee1d2005db4cc5905ab74</span><br><span class="line">git -C live-bootstrap submodule update --init --recursive --depth=1 --progress</span><br><span class="line"><span class="built_in">cd</span> live-bootstrap</span><br><span class="line">python3 -m venv <span class="built_in">env</span></span><br><span class="line"><span class="built_in">env</span>/bin/pip install -U --no-binary :all: pip</span><br><span class="line"><span class="built_in">env</span>/bin/pip install -v --no-binary :all: requests</span><br><span class="line">./download-distfiles.sh</span><br><span class="line"><span class="comment">#sudo -s  # if not root already</span></span><br><span class="line"><span class="built_in">umask</span> 022</span><br><span class="line"><span class="built_in">env</span>/bin/python ./rootfs.py -c --external-sources --cores $(<span class="built_in">nproc</span>) -m <span class="string">&#x27;&#x27;</span></span><br><span class="line">umount target/dev/shm  <span class="comment"># double mounted?</span></span><br><span class="line">umount target/dev/shm target/sys target/proc target/tmp</span><br><span class="line"></span><br><span class="line"><span class="comment"># Optional: Back up the system</span></span><br><span class="line"><span class="built_in">rm</span> -r target/dev/*  <span class="comment"># allow extracting as non-root</span></span><br><span class="line"><span class="built_in">env</span> -i <span class="built_in">chroot</span> target tar --exclude=<span class="string">&#x27;/external&#x27;</span> --<span class="built_in">sort</span>=name -cf /target.tar /</span><br><span class="line"><span class="built_in">env</span> -i <span class="built_in">chroot</span> target bzip2 -9v /target.tar</span><br><span class="line"><span class="built_in">mv</span> target/external/repo .</span><br><span class="line"><span class="built_in">mv</span> target/target.tar.bz2 .</span><br><span class="line"><span class="built_in">rm</span> -rf target/external</span><br><span class="line"></span><br><span class="line"><span class="comment"># Optional: Keep distfiles in one place</span></span><br><span class="line"><span class="built_in">mkdir</span> -p target/var/cache/distfiles</span><br><span class="line">mount --<span class="built_in">bind</span> distfiles target/var/cache/distfiles</span><br><span class="line"></span><br><span class="line"><span class="comment"># Chroot into the live-bootstrap system</span></span><br><span class="line"><span class="built_in">cd</span> target</span><br><span class="line">mount -t proc proc proc</span><br><span class="line">mount -t sysfs sysfs sys</span><br><span class="line">mount -t devtmpfs devtmpfs dev</span><br><span class="line">mount -t devpts devpts dev/pts</span><br><span class="line"><span class="built_in">env</span> -i TERM=<span class="string">&quot;<span class="variable">$TERM</span>&quot;</span> <span class="built_in">chroot</span> . /bin/bash -l</span><br><span class="line"></span><br><span class="line"><span class="built_in">umask</span> 022</span><br><span class="line"><span class="built_in">source</span> /steps/env</span><br><span class="line"><span class="built_in">cd</span> /tmp</span><br><span class="line"></span><br><span class="line"><span class="comment"># Optional: Configure additional mirrors for missing/removed distfiles</span></span><br><span class="line"><span class="comment"># This is a space-separated list of URLs, but full paths to local directories</span></span><br><span class="line"><span class="comment">#   can be added as well.</span></span><br><span class="line"><span class="built_in">export</span> GENTOO_MIRRORS=<span class="string">&quot;/mirror http://distfiles.gentoo.org&quot;</span></span><br><span class="line"></span><br><span class="line"><span class="built_in">mkdir</span> -p /var/cache/distfiles; <span class="built_in">cd</span> /var/cache/distfiles</span><br><span class="line">curl -LO http://gitweb.gentoo.org/proj/portage.git/snapshot/portage-3.0.68.tar.bz2</span><br><span class="line">curl -LO http://distfiles.gentoo.org/snapshots/squashfs/gentoo-20250801.xz.sqfs</span><br><span class="line">curl -LO https://github.com/plougher/squashfs-tools/archive/refs/tags/4.7.2/squashfs-tools-4.7.2.tar.gz</span><br><span class="line"><span class="built_in">cd</span> /tmp</span><br><span class="line"><span class="comment"># TODO: gentoo currently uses squashfs-tools-4.7, but that fails to build, upgraded to 4.7.2</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># Build squashfs-tools to extract the ::gentoo tree</span></span><br><span class="line"><span class="comment"># TODO: Include in live-bootstrap proper</span></span><br><span class="line">tar xf /var/cache/distfiles/squashfs-tools-4.7.2.tar.gz</span><br><span class="line"><span class="built_in">cd</span> squashfs-tools-4.7.2</span><br><span class="line">make -C squashfs-tools install \</span><br><span class="line">    INSTALL_PREFIX=/usr \</span><br><span class="line">    LZO_SUPPORT=0 LZ4_SUPPORT=0 ZSTD_SUPPORT=0</span><br><span class="line"><span class="built_in">cd</span> ..</span><br><span class="line"><span class="built_in">rm</span> -rf squashfs-tools-4.7.2</span><br><span class="line"></span><br><span class="line"><span class="comment"># Make some additional root modifications</span></span><br><span class="line"><span class="built_in">cp</span> /usr/include/asm-generic/mman.h /usr/include/asm  <span class="comment"># needed by dev-libs/openssl</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># Unpack the ::gentoo tree</span></span><br><span class="line">unsquashfs /var/cache/distfiles/gentoo-20250801.xz.sqfs</span><br><span class="line"><span class="built_in">mkdir</span> -p /var/db/repos</span><br><span class="line"><span class="built_in">rm</span> -rf /var/db/repos/gentoo</span><br><span class="line"><span class="built_in">mv</span> squashfs-root /var/db/repos/gentoo</span><br><span class="line"></span><br><span class="line"><span class="comment"># Install temporary copy of portage</span></span><br><span class="line">tar xf /var/cache/distfiles/portage-3.0.68.tar.bz2</span><br><span class="line"><span class="built_in">ln</span> -sfT portage-3.0.68 portage</span><br><span class="line"></span><br><span class="line"><span class="comment"># Add portage user/group</span></span><br><span class="line"><span class="built_in">echo</span> <span class="string">&#x27;portage:x:250:250:portage:/var/tmp/portage:/bin/false&#x27;</span> &gt;&gt; /etc/passwd</span><br><span class="line"><span class="built_in">echo</span> <span class="string">&#x27;portage::250:portage&#x27;</span> &gt;&gt; /etc/group</span><br><span class="line"></span><br><span class="line"><span class="comment"># Create cross repository</span></span><br><span class="line"><span class="built_in">mkdir</span> -p /var/db/repos/cross/profiles</span><br><span class="line"><span class="built_in">echo</span> cross &gt; /var/db/repos/cross/profiles/repo_name</span><br><span class="line"><span class="built_in">mkdir</span> -p /var/db/repos/cross/metadata</span><br><span class="line"><span class="built_in">printf</span> <span class="string">&#x27;%s\n&#x27;</span> <span class="string">&#x27;masters = gentoo&#x27;</span> <span class="string">&#x27;thin-manifests = true&#x27;</span> \</span><br><span class="line">    &gt; /var/db/repos/cross/metadata/layout.conf</span><br><span class="line"><span class="built_in">mkdir</span> -p /var/db/repos/cross/cross-base</span><br><span class="line"><span class="built_in">ln</span> -sfT /var/db/repos/gentoo/sys-devel/binutils /var/db/repos/cross/cross-base/binutils</span><br><span class="line"><span class="built_in">ln</span> -sfT /var/db/repos/gentoo/sys-devel/gcc /var/db/repos/cross/cross-base/gcc</span><br><span class="line"><span class="built_in">mkdir</span> -p /var/db/repos/cross/cross-base/glibc</span><br><span class="line"><span class="built_in">printf</span> <span class="string">&#x27;%s\n&#x27;</span> EAPI=8 SLOT=0 KEYWORDS=<span class="string">&#x27;&quot;*&quot;&#x27;</span> &gt; /var/db/repos/cross/cross-base/glibc/glibc-0.ebuild</span><br><span class="line"></span><br><span class="line"><span class="comment"># Register i686-cross-linux-gnu toolchain</span></span><br><span class="line"><span class="built_in">echo</span> cross-i686-cross-linux-gnu &gt;&gt; /var/db/repos/cross/profiles/categories</span><br><span class="line"><span class="built_in">ln</span> -sfT cross-base /var/db/repos/cross/cross-i686-cross-linux-gnu</span><br><span class="line"></span><br><span class="line"><span class="comment"># Configure prefix for host tools</span></span><br><span class="line"><span class="built_in">mkdir</span> -p /cross/etc/portage/make.profile</span><br><span class="line"><span class="built_in">cat</span> &gt; /cross/etc/portage/make.profile/make.defaults &lt;&lt; <span class="string">&#x27;EOF&#x27;</span></span><br><span class="line">FETCHCOMMAND=<span class="string">&quot;curl -k --retry 3 -y 60 --ftp-pasv -o \&quot;\$&#123;DISTDIR&#125;/\$&#123;FILE&#125;\&quot; -L \&quot;\$&#123;URI&#125;\&quot;&quot;</span></span><br><span class="line">RESUMECOMMAND=<span class="string">&quot;curl -C - -k --retry 3 -y 60 --ftp-pasv -o \&quot;\$&#123;DISTDIR&#125;/\$&#123;FILE&#125;\&quot; -L \&quot;\$&#123;URI&#125;\&quot;&quot;</span></span><br><span class="line">FEATURES=<span class="string">&quot;-news -sandbox -usersandbox -pid-sandbox -ipc-sandbox -network-sandbox -parallel-fetch&quot;</span></span><br><span class="line">BINPKG_COMPRESS=bzip2</span><br><span class="line">CLEAN_DELAY=0</span><br><span class="line"></span><br><span class="line">ARCH=x86</span><br><span class="line">ACCEPT_KEYWORDS=<span class="string">&quot;<span class="variable">$ARCH</span>&quot;</span></span><br><span class="line">CHOST=i686-unknown-linux-musl</span><br><span class="line">IUSE_IMPLICIT=<span class="string">&quot;prefix prefix-guest kernel_linux elibc_musl elibc_glibc sparc m68k alpha amd64 x86&quot;</span></span><br><span class="line">USE=<span class="string">&quot;prefix prefix-guest kernel_linux elibc_musl x86 python_targets_python3_13&quot;</span></span><br><span class="line"></span><br><span class="line">C_INCLUDE_PATH=<span class="string">&quot;<span class="variable">$EROOT</span>/usr/include&quot;</span></span><br><span class="line">CPLUS_INCLUDE_PATH=<span class="string">&quot;<span class="variable">$EROOT</span>/usr/include&quot;</span></span><br><span class="line">LIBRARY_PATH=<span class="string">&quot;<span class="variable">$EROOT</span>/usr/lib&quot;</span></span><br><span class="line">PKG_CONFIG_PATH=<span class="string">&quot;<span class="variable">$EROOT</span>/usr/lib/pkgconfig:<span class="variable">$EROOT</span>/usr/share/pkgconfig&quot;</span></span><br><span class="line">LDFLAGS=<span class="string">&quot;-Wl,--disable-new-dtags,-rpath,<span class="variable">$EPREFIX</span>/usr/lib&quot;</span></span><br><span class="line">EOF</span><br><span class="line"><span class="built_in">cat</span> &gt; /cross/etc/portage/repos.conf &lt;&lt; <span class="string">&#x27;EOF&#x27;</span></span><br><span class="line">[cross]</span><br><span class="line">location = /var/db/repos/cross</span><br><span class="line">EOF</span><br><span class="line"><span class="built_in">cat</span> &gt; /cross/etc/portage/package.use &lt;&lt; <span class="string">&#x27;EOF&#x27;</span></span><br><span class="line">dev-lang/perl minimal</span><br><span class="line">dev-libs/libxml2 -python</span><br><span class="line">sys-apps/file -seccomp</span><br><span class="line">sys-apps/util-linux -su</span><br><span class="line">cross-i686-cross-linux-gnu/gcc -sanitize -fortran openmp</span><br><span class="line">EOF</span><br><span class="line"><span class="built_in">cat</span> &gt; /cross/etc/portage/package.mask &lt;&lt; <span class="string">&#x27;EOF&#x27;</span></span><br><span class="line">sys-devel/binutils</span><br><span class="line">sys-devel/gcc</span><br><span class="line">EOF</span><br><span class="line"><span class="built_in">cat</span> &gt; /cross/etc/portage/make.profile/package.provided &lt;&lt; <span class="string">&#x27;EOF&#x27;</span></span><br><span class="line">sys-devel/binutils-2.27</span><br><span class="line">sys-devel/gcc-6.2</span><br><span class="line">app-arch/xz-utils-0</span><br><span class="line">EOF</span><br><span class="line"><span class="built_in">mkdir</span> -p /cross/etc/portage/env/cross-i686-cross-linux-gnu</span><br><span class="line"><span class="built_in">cat</span> &gt; /cross/etc/portage/env/cross-i686-cross-linux-gnu/gcc &lt;&lt; <span class="string">&#x27;_EOF&#x27;</span></span><br><span class="line">EXTRA_ECONF=<span class="string">&#x27;--with-sysroot=/gentoo&#x27;</span></span><br><span class="line"><span class="function"><span class="title">post_src_install</span></span>() &#123;</span><br><span class="line"><span class="built_in">cat</span> &gt; <span class="string">&quot;<span class="variable">$ED</span>/usr/lib/gcc/<span class="variable">$CTARGET</span>/specs&quot;</span> &lt;&lt; <span class="string">&#x27;EOF&#x27;</span></span><br><span class="line">*<span class="built_in">link</span>:</span><br><span class="line">+ %&#123;!shared:%&#123;!static:%&#123;!static-pie:-dynamic-linker %&#123;m64|mx32:;:/gentoo/lib/ld-linux.so.2&#125;%&#123;m64:/gentoo/lib64/ld-linux-x86-64.so.2&#125;%&#123;mx32:/gentoo/libx32/ld-linux-x32.so.2&#125;&#125;&#125;&#125;</span><br><span class="line">EOF</span><br><span class="line">&#125;</span><br><span class="line">_EOF</span><br><span class="line"><span class="built_in">mkdir</span> -p /cross/etc/portage/env/dev-lang</span><br><span class="line"><span class="built_in">cat</span> &gt; /cross/etc/portage/env/dev-lang/python &lt;&lt; <span class="string">&#x27;EOF&#x27;</span></span><br><span class="line"><span class="function"><span class="title">pre_src_prepare</span></span>() &#123;</span><br><span class="line">sed -i <span class="string">&#x27;s/\[MULTIARCH=\$(.*\]/[MULTIARCH=]/&#x27;</span> configure.ac || die</span><br><span class="line">&#125;</span><br><span class="line">EOF</span><br><span class="line"><span class="built_in">mkdir</span> -p /cross/etc/portage/env/dev-build</span><br><span class="line"><span class="built_in">echo</span> <span class="string">&#x27;CFLAGS=-std=c17&#x27;</span> &gt; /cross/etc/portage/env/dev-build/make</span><br><span class="line"></span><br><span class="line"><span class="comment"># TODO: Upgrade to findutils 4.9 for portage, and add pax-utils for &quot;scanelf&quot;. Both of these are required by portage&#x27;s `estrip`</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># Initialize environment</span></span><br><span class="line">PORTAGE_OVERRIDE_EPREFIX=/cross ./portage/bin/emerge -D1n sys-apps/baselayout</span><br><span class="line"><span class="built_in">echo</span> <span class="string">&#x27;PATH=/usr/bin&#x27;</span> &gt; /cross/etc/env.d/99host</span><br><span class="line">PORTAGE_OVERRIDE_EPREFIX=/cross ./portage/bin/env-update</span><br><span class="line"><span class="built_in">mkdir</span> -p /cross/bin</span><br><span class="line"><span class="built_in">ln</span> -sf /bin/sh /cross/bin  <span class="comment"># Required by sys-devel/gcc</span></span><br><span class="line"><span class="built_in">ln</span> -sf /bin/bash /cross/bin  <span class="comment"># Required by eautoreconf</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># Build tools missing from/broken in live-bootstrap</span></span><br><span class="line"><span class="comment"># TODO: Include in live-bootstrap proper</span></span><br><span class="line">PORTAGE_OVERRIDE_EPREFIX=/cross MAKEOPTS=-j1 ./portage/bin/emerge -D1n dev-build/make  <span class="comment"># make in live-bootstrap has trouble with parallel builds under portage</span></span><br><span class="line">PORTAGE_OVERRIDE_EPREFIX=/cross ./portage/bin/emerge -D1n net-misc/rsync  <span class="comment"># https://bugs.gentoo.org/963902</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># Configure target prefix</span></span><br><span class="line"><span class="built_in">mkdir</span> -p /gentoo/etc/portage</span><br><span class="line"><span class="built_in">ln</span> -sfT /var/db/repos/gentoo/profiles/default/linux/x86/23.0/i686/prefix/kernel-3.2+ /gentoo/etc/portage/make.profile</span><br><span class="line"><span class="built_in">cat</span> &gt; /gentoo/etc/portage/make.conf &lt;&lt; <span class="string">&#x27;EOF&#x27;</span></span><br><span class="line">FETCHCOMMAND=<span class="string">&quot;curl -k --retry 3 -y 60 --ftp-pasv -o \&quot;\$&#123;DISTDIR&#125;/\$&#123;FILE&#125;\&quot; -L \&quot;\$&#123;URI&#125;\&quot;&quot;</span></span><br><span class="line">RESUMECOMMAND=<span class="string">&quot;curl -C - -k --retry 3 -y 60 --ftp-pasv -o \&quot;\$&#123;DISTDIR&#125;/\$&#123;FILE&#125;\&quot; -L \&quot;\$&#123;URI&#125;\&quot;&quot;</span></span><br><span class="line">FEATURES=<span class="string">&quot;-news -sandbox -usersandbox -pid-sandbox -ipc-sandbox -network-sandbox -parallel-fetch&quot;</span></span><br><span class="line">BINPKG_COMPRESS=bzip2</span><br><span class="line">CLEAN_DELAY=0</span><br><span class="line"></span><br><span class="line">PORTDIR=/var/db/repos/gentoo</span><br><span class="line">DISTDIR=/var/cache/distfiles</span><br><span class="line">PORTAGE_TMPDIR=/var/tmp</span><br><span class="line"></span><br><span class="line">CHOST=i686-cross-linux-gnu</span><br><span class="line">ACCEPT_KEYWORDS=<span class="string">&quot;-~<span class="variable">$ARCH</span>&quot;</span></span><br><span class="line">USE=-nls</span><br><span class="line">INSTALL_MASK=/etc/env.d/99host</span><br><span class="line">EOF</span><br><span class="line"><span class="built_in">mkdir</span> -p /gentoo/etc/portage/profile</span><br><span class="line"><span class="built_in">cat</span> &gt; /gentoo/etc/portage/profile/package.use &lt;&lt; <span class="string">&#x27;EOF&#x27;</span></span><br><span class="line">sys-devel/gcc -sanitize -fortran</span><br><span class="line">app-arch/gzip pic</span><br><span class="line">EOF</span><br><span class="line"><span class="built_in">cat</span> &gt; /gentoo/etc/portage/profile/package.accept_keywords &lt;&lt; <span class="string">&#x27;EOF&#x27;</span></span><br><span class="line">~net-misc/curl-8.15.0  <span class="comment"># Fix bug that prevents --ftp-pasv from working</span></span><br><span class="line">EOF</span><br><span class="line"><span class="built_in">cat</span> &gt; /gentoo/etc/portage/bashrc &lt;&lt; <span class="string">&#x27;EOF&#x27;</span></span><br><span class="line"><span class="keyword">if</span> [ <span class="string">&quot;<span class="variable">$CBUILD</span>&quot;</span> = i686-unknown-linux-musl ]; <span class="keyword">then</span></span><br><span class="line"><span class="built_in">export</span> BUILD_CFLAGS=<span class="string">&quot;-I<span class="variable">$BROOT</span>/usr/include&quot;</span></span><br><span class="line"><span class="built_in">export</span> BUILD_LDFLAGS=<span class="string">&quot;-L<span class="variable">$BROOT</span>/usr/lib -Wl,--disable-new-dtags,-rpath,<span class="variable">$BROOT</span>/usr/lib&quot;</span></span><br><span class="line"><span class="built_in">export</span> PKG_CONFIG_LIBDIR=<span class="string">&quot;<span class="variable">$EROOT</span>/usr/lib/pkgconfig:<span class="variable">$EROOT</span>/usr/share/pkgconfig&quot;</span></span><br><span class="line"><span class="built_in">export</span> PKG_CONFIG_SYSTEM_INCLUDE_PATH=<span class="string">&quot;<span class="variable">$EROOT</span>/usr/include&quot;</span></span><br><span class="line"><span class="built_in">export</span> PKG_CONFIG_SYSTEM_LIBRARY_PATH=<span class="string">&quot;<span class="variable">$EROOT</span>/lib:<span class="variable">$EROOT</span>/usr/lib&quot;</span></span><br><span class="line"><span class="built_in">export</span> CONFIG_SITE=<span class="string">&quot;<span class="variable">$EROOT</span>/etc/portage/config.site&quot;</span></span><br><span class="line"><span class="keyword">fi</span></span><br><span class="line">EOF</span><br><span class="line"><span class="built_in">cat</span> &gt; /gentoo/etc/portage/config.site &lt;&lt; <span class="string">&#x27;EOF&#x27;</span></span><br><span class="line">ac_cv_file__dev_ptmx=<span class="built_in">yes</span>  <span class="comment"># dev-lang/python</span></span><br><span class="line">ac_cv_file__dev_ptc=no  <span class="comment"># dev-lang/python</span></span><br><span class="line">gl_cv_func_strcasecmp_works=<span class="built_in">yes</span>  <span class="comment"># sys-apps/diffutils</span></span><br><span class="line">EOF</span><br><span class="line"><span class="built_in">mkdir</span> -p /gentoo/etc/portage/env/dev-lang</span><br><span class="line"><span class="built_in">cat</span> &gt; /gentoo/etc/portage/env/dev-lang/python &lt;&lt; <span class="string">&#x27;_EOF&#x27;</span></span><br><span class="line"><span class="keyword">if</span> [ <span class="string">&quot;<span class="variable">$CBUILD</span>&quot;</span> = i686-unknown-linux-musl ]; <span class="keyword">then</span></span><br><span class="line"><span class="function"><span class="title">pre_src_prepare</span></span>() &#123;</span><br><span class="line">sed -i <span class="string">&#x27;s/\[MULTIARCH=\$(.*\]/[MULTIARCH=]/&#x27;</span> configure.ac || die</span><br><span class="line">&#125;</span><br><span class="line"><span class="keyword">fi</span></span><br><span class="line">_EOF</span><br><span class="line"></span><br><span class="line"><span class="comment"># Initialize prefix</span></span><br><span class="line">PORTAGE_OVERRIDE_EPREFIX=/gentoo USE=build ./portage/bin/emerge -D1n sys-apps/baselayout</span><br><span class="line"><span class="built_in">echo</span> <span class="string">&#x27;man:x:13:15:System user; man:/dev/null:/sbin/nologin&#x27;</span> &gt;&gt; /gentoo/etc/passwd</span><br><span class="line"><span class="built_in">echo</span> <span class="string">&#x27;man:x:15:&#x27;</span> &gt;&gt; /gentoo/etc/group</span><br><span class="line"><span class="comment"># TODO: The acct-user and acct-group should create the groups honestly</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># Build libc and adapt compiler for target prefix</span></span><br><span class="line"><span class="comment"># Usually, CC and CXX should be the CHOST compilers, to cross compile. However, they&#x27;re compatible enough here.</span></span><br><span class="line"><span class="comment"># Using --nodeps because the live-bootstrap environment is guaranteed to provide enough to build glibc</span></span><br><span class="line">PORTAGE_OVERRIDE_EPREFIX=/cross PORTAGE_CONFIGROOT=/gentoo EPREFIX=/gentoo CBUILD=i686-unknown-linux-musl CC=i686-unknown-linux-musl-gcc CXX=i686-unknown-linux-musl-g++ BOOTSTRAP_RAP=y ./portage/bin/emerge -O1n sys-kernel/linux-headers</span><br><span class="line">PORTAGE_OVERRIDE_EPREFIX=/cross PORTAGE_CONFIGROOT=/gentoo EPREFIX=/gentoo CBUILD=i686-unknown-linux-musl CC=i686-unknown-linux-musl-gcc CXX=i686-unknown-linux-musl-g++ BOOTSTRAP_RAP=y ./portage/bin/emerge -O1n sys-libs/glibc</span><br><span class="line">PORTAGE_OVERRIDE_EPREFIX=/cross ./portage/bin/emerge -D1n cross-i686-cross-linux-gnu/glibc  <span class="comment"># Dummy package to use proper flags in gcc</span></span><br><span class="line">PORTAGE_OVERRIDE_EPREFIX=/cross ./portage/bin/emerge -D1n cross-i686-cross-linux-gnu/binutils  <span class="comment"># TODO: cross-gcc doesn&#x27;t depend on the right binutils</span></span><br><span class="line">PORTAGE_OVERRIDE_EPREFIX=/cross ./portage/bin/emerge -D1n cross-i686-cross-linux-gnu/gcc</span><br><span class="line"></span><br><span class="line"><span class="comment"># Build compiler and initial tools for prefix</span></span><br><span class="line">PORTAGE_OVERRIDE_EPREFIX=/cross ./portage/bin/emerge -D1n sys-libs/ncurses  <span class="comment"># https://bugs.gentoo.org/963660</span></span><br><span class="line">PORTAGE_OVERRIDE_EPREFIX=/cross ./portage/bin/emerge -D1n dev-lang/python  <span class="comment"># TODO: dev-util/re2c requires dev-lang/python</span></span><br><span class="line">PORTAGE_OVERRIDE_EPREFIX=/cross PORTAGE_CONFIGROOT=/gentoo EPREFIX=/gentoo CBUILD=i686-unknown-linux-musl USE=build ./portage/bin/emerge -D1n \</span><br><span class="line">    app-alternatives/awk \</span><br><span class="line">    app-alternatives/gzip \</span><br><span class="line">    app-shells/bash \</span><br><span class="line">    dev-build/make \</span><br><span class="line">    sys-apps/coreutils \</span><br><span class="line">    sys-apps/diffutils \</span><br><span class="line">    sys-apps/grep \</span><br><span class="line">    sys-apps/portage \</span><br><span class="line">    sys-apps/sed \</span><br><span class="line">    sys-devel/binutils \</span><br><span class="line">    sys-devel/gcc \</span><br><span class="line">    sys-devel/patch</span><br><span class="line"></span><br><span class="line"><span class="comment"># Finalize prefix</span></span><br><span class="line">/gentoo/usr/bin/emerge -DUu @world</span><br><span class="line">/gentoo/usr/bin/emerge -c</span><br><span class="line"></span><br><span class="line"><span class="comment"># Optional: Back up</span></span><br><span class="line">tar --<span class="built_in">sort</span>=name -cf /gentoo.tar /gentoo</span><br><span class="line">bzip2 -9v /gentoo.tar</span><br><span class="line"></span><br><span class="line"><span class="comment"># Create a cross compiler</span></span><br><span class="line">/gentoo/usr/bin/emerge -Dn sys-devel/crossdev app-eselect/eselect-repository sys-apps/shadow</span><br><span class="line">( . /gentoo/etc/profile; eselect repository create crossdev )</span><br><span class="line"><span class="built_in">mkdir</span> -p /gentoo/etc/portage/profile/package.use.mask</span><br><span class="line"><span class="built_in">printf</span> <span class="string">&#x27;cross-x86_64-pc-linux-gnu/%s -multilib cet\n&#x27;</span> linux-headers glibc binutils gcc gdb &gt; /gentoo/etc/portage/profile/package.use.mask/cross-x86_64-pc-linux-gnu.multilib</span><br><span class="line">( . /gentoo/etc/profile; crossdev -A <span class="string">&#x27;amd64 x86&#x27;</span> -S -P -v x86_64-pc-linux-gnu )</span><br><span class="line"></span><br><span class="line"><span class="comment"># Configure new system</span></span><br><span class="line">( . /gentoo/etc/profile; PORTAGE_CONFIGROOT=/gentoo/usr/x86_64-pc-linux-gnu eselect profile <span class="built_in">set</span> --force default/linux/amd64/23.0 )</span><br><span class="line">( m=/gentoo/usr/x86_64-pc-linux-gnu/etc/portage/make.conf; \</span><br><span class="line">    <span class="built_in">test</span> -f <span class="string">&quot;<span class="variable">$m</span>&quot;</span> &amp;&amp; <span class="built_in">mv</span> <span class="string">&quot;<span class="variable">$m</span>&quot;</span> <span class="string">&quot;<span class="variable">$m</span>.tmp&quot;</span> &amp;&amp; <span class="built_in">mkdir</span> <span class="string">&quot;<span class="variable">$m</span>&quot;</span> &amp;&amp; <span class="built_in">mv</span> <span class="string">&quot;<span class="variable">$m</span>.tmp&quot;</span> <span class="string">&quot;<span class="variable">$m</span>/0100_crossdev.conf&quot;</span> )</span><br><span class="line"><span class="built_in">cat</span> &gt; /gentoo/usr/x86_64-pc-linux-gnu/etc/portage/make.conf/1000_make.conf &lt;&lt; <span class="string">&#x27;EOF&#x27;</span></span><br><span class="line">FEATURES=<span class="string">&quot;<span class="variable">$FEATURES</span> -news -sandbox -usersandbox -pid-sandbox -ipc-sandbox -network-sandbox -parallel-fetch&quot;</span></span><br><span class="line">PORTDIR=/var/db/repos/gentoo</span><br><span class="line">DISTDIR=/var/cache/distfiles</span><br><span class="line"></span><br><span class="line">ACCEPT_KEYWORDS=<span class="string">&quot;-~<span class="variable">$ARCH</span>&quot;</span></span><br><span class="line">CONFIG_SITE=/gentoo/usr/share/config.site  <span class="comment"># Needed because --prefix for target != /gentoo/usr</span></span><br><span class="line">EOF</span><br><span class="line"><span class="built_in">cat</span> &gt; /gentoo/usr/x86_64-pc-linux-gnu/etc/portage/bashrc &lt;&lt; <span class="string">&#x27;EOF&#x27;</span></span><br><span class="line"><span class="built_in">export</span> SOURCE_DATE_EPOCH=315532800  <span class="comment"># 1980-01-01, because 0 is too old for zip files (e.g. python wheels)</span></span><br><span class="line">EOF</span><br><span class="line"><span class="built_in">mkdir</span> -p /gentoo/usr/x86_64-pc-linux-gnu/etc/portage/env/dev-libs</span><br><span class="line"><span class="built_in">cat</span> &gt; /gentoo/usr/x86_64-pc-linux-gnu/etc/portage/env/dev-libs/libassuan &lt;&lt; <span class="string">&#x27;EOF&#x27;</span></span><br><span class="line"><span class="comment"># https://bugs.gentoo.org/962780</span></span><br><span class="line"><span class="built_in">export</span> GPGRT_CONFIG=<span class="string">&quot;<span class="variable">$ESYSROOT</span>/usr/bin/<span class="variable">$CHOST</span>-gpgrt-config&quot;</span></span><br><span class="line">EOF</span><br><span class="line"><span class="built_in">cat</span> &gt; /gentoo/usr/x86_64-pc-linux-gnu/etc/portage/env/dev-libs/libgcrypt &lt;&lt; <span class="string">&#x27;EOF&#x27;</span></span><br><span class="line"><span class="comment"># https://bugs.gentoo.org/963810</span></span><br><span class="line"><span class="built_in">export</span> GPGRT_CONFIG=<span class="string">&quot;<span class="variable">$ESYSROOT</span>/usr/bin/<span class="variable">$CHOST</span>-gpgrt-config&quot;</span></span><br><span class="line">EOF</span><br><span class="line"><span class="built_in">cat</span> &gt; /gentoo/usr/x86_64-pc-linux-gnu/etc/portage/env/dev-libs/libksba &lt;&lt; <span class="string">&#x27;EOF&#x27;</span></span><br><span class="line"><span class="comment"># https://bugs.gentoo.org/963811</span></span><br><span class="line"><span class="built_in">export</span> GPGRT_CONFIG=<span class="string">&quot;<span class="variable">$ESYSROOT</span>/usr/bin/<span class="variable">$CHOST</span>-gpgrt-config&quot;</span></span><br><span class="line">EOF</span><br><span class="line"></span><br><span class="line"><span class="comment"># Work around an ebuild bug</span></span><br><span class="line"><span class="built_in">ln</span> -s /gentoo/lib/ld-linux.so.2 /lib  <span class="comment"># https://bugs.gentoo.org/962756</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># Cross compile the new system</span></span><br><span class="line">( . /gentoo/etc/profile; USE=build x86_64-pc-linux-gnu-emerge -D1n sys-apps/baselayout )</span><br><span class="line">( . /gentoo/etc/profile; x86_64-pc-linux-gnu-emerge -DUu @world )</span><br><span class="line"></span><br><span class="line"><span class="comment"># Create final rootfs</span></span><br><span class="line">( . /gentoo/etc/profile; ROOT=/target USE=build x86_64-pc-linux-gnu-emerge -KDU1n sys-apps/baselayout )</span><br><span class="line">( . /gentoo/etc/profile; ROOT=/target x86_64-pc-linux-gnu-emerge -KDUu @world )</span><br><span class="line"></span><br><span class="line"><span class="comment"># Set up final system</span></span><br><span class="line"><span class="built_in">mkdir</span> -p /target/etc/portage</span><br><span class="line"><span class="built_in">ln</span> -sfT ../../var/db/repos/gentoo/profiles/default/linux/amd64/23.0 /target/etc/portage/make.profile</span><br><span class="line"><span class="built_in">echo</span> <span class="string">&#x27;nameserver 1.1.1.1&#x27;</span> &gt; /target/etc/resolv.conf</span><br><span class="line"><span class="built_in">echo</span> <span class="string">&#x27;C.UTF8 UTF-8&#x27;</span> &gt; /target/etc/locale.gen</span><br><span class="line"></span><br><span class="line"><span class="comment"># This is the point where you have to move from the x86 system to an x86_64 system.</span></span><br><span class="line"><span class="comment"># Make sure that you are running a x86_64 kernel before chrooting, or booting it.</span></span><br><span class="line"><span class="built_in">exit</span></span><br><span class="line">umount dev/pts dev sys proc</span><br><span class="line">umount var/cache/distfiles</span><br><span class="line"></span><br><span class="line"><span class="comment"># Optional: Back up the system</span></span><br><span class="line"><span class="built_in">env</span> -i <span class="built_in">chroot</span> target tar --<span class="built_in">sort</span>=name -cf /target-gentoo.tar /</span><br><span class="line"><span class="built_in">env</span> -i <span class="built_in">chroot</span> target bzip2 -9v /target-gentoo.tar</span><br><span class="line"><span class="built_in">mv</span> target/target-gentoo.tar.bz2 ..</span><br><span class="line"></span><br><span class="line"><span class="comment"># Copy ::gentoo repo and distfiles</span></span><br><span class="line"><span class="built_in">mkdir</span> -p target/var/db/repos</span><br><span class="line">rsync -a var/db/repos/gentoo/ target/var/db/repos/gentoo</span><br><span class="line">rsync -a var/cache/distfiles/ target/var/cache/distfiles</span><br><span class="line"></span><br><span class="line"><span class="comment"># Enter the final, x86_64 system</span></span><br><span class="line"><span class="built_in">cd</span> target</span><br><span class="line">mount -t proc proc proc</span><br><span class="line">mount -t sysfs sysfs sys</span><br><span class="line">mount -t devtmpfs devtmpfs dev</span><br><span class="line">mount -t devpts devpts dev/pts</span><br><span class="line"><span class="built_in">env</span> -i TERM=<span class="string">&quot;<span class="variable">$TERM</span>&quot;</span> <span class="built_in">chroot</span> . /bin/bash -l</span><br><span class="line"></span><br><span class="line"><span class="built_in">umask</span> 022</span><br><span class="line"></span><br><span class="line"><span class="comment"># Initialize system and break dependency cycles</span></span><br><span class="line">ldconfig</span><br><span class="line">USE=<span class="string">&#x27;-nls&#x27;</span> emerge -1n sys-devel/gettext</span><br><span class="line"></span><br><span class="line"><span class="comment"># Rebuild everything</span></span><br><span class="line">emerge -e @world</span><br></pre></td></tr></table></figure></details><h2 id="系统要求"><a href="#系统要求" class="headerlink" title="系统要求"></a>系统要求</h2><h3 id="硬件"><a href="#硬件" class="headerlink" title="硬件"></a>硬件</h3><p>最低配置：4核8G<br>推荐配置：64核线程撕裂者</p><p>笔者使用20核虚拟机，编译了<font color=yellow>大约12小时</font><br>其中，下载fosslinux&#x2F;live-bootstrap所需代码花费了大约2小时，20核编译<font color=yellow>至少4小时</font>。构建gentoo时还需多次编译gcc。笔者的AMD编译gcc需要<font color=yellow>至少半小时</font>，如果使用国产8核CPU，编译一次gcc则<font color=yellow>至少需要2小时</font>。</p><h3 id="软件"><a href="#软件" class="headerlink" title="软件"></a>软件</h3><p>运行此脚本系统需要安装Python3。Ubuntu还需要安装python3.13-env，Arch Linux仅需要安装python3。<br>建议安装<code>arch-install-scripts</code>。<br><strong>无需安装任何编译器</strong></p><h2 id="踩坑笔记"><a href="#踩坑笔记" class="headerlink" title="踩坑笔记"></a>踩坑笔记</h2><p>笔者在测试时，总体顺利，但也经历了若干次编译失败。<br>失败原因：</p><ol><li>代码下载失败。gentoo官方从服务器删除代码，fosslinux代码下载失败</li><li>gentoo python3编译失败</li></ol><h3 id="download-distfiles-sh发生错误"><a href="#download-distfiles-sh发生错误" class="headerlink" title="./download-distfiles.sh发生错误"></a><code>./download-distfiles.sh</code>发生错误</h3><p>这种情况下千万不要执行<code>env/bin/python ./rootfs.py -c --external-sources --cores $(nproc) -m &#39;&#39;</code>，执行了的话应该<code>rm -rf target</code>。这时代码不完整。<code>./download-distfiles.sh</code>脚本会校对下载的代码包，如果有错误，应当删除校验失败的代码包，再重新执行此脚本。<br>如果反复出现错误，应该执行</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">./download-distfiles.sh https://live-bootstrap.stikonas.eu/</span><br></pre></td></tr></table></figure><p>截至2026年5月2日，上一条命令可以完整下载所需代码包。</p><h3 id="gentoo代码下载错误"><a href="#gentoo代码下载错误" class="headerlink" title="gentoo代码下载错误"></a>gentoo代码下载错误</h3><p>这是因为官方已经从软件源核代码仓库删除该版本软件导致的。<br>**千万不要手动修改软件仓库!**因为它有校验码。而且新版本软件或仓库会引发依赖冲突和循环依赖！<br>解决办法：<br>从<a href="https://archive.org/download/gentoo-bootstrap-2025.8/distfiles.tar/">https://archive.org/download/gentoo-bootstrap-2025.8/distfiles.tar/</a> 下载代码，拷到相应目录，例如<code>live-bootstrap/distfiles</code>。此时gentoo会假装自己从预定网址下载到了正确代码。上一小节代码错误或无法下载时也可以如此处理。</p><p>此外，我还将代码包上传到了<a href="https://github.com/dongzhimin-xz/gentoo-distfile/blob/master/distfiles.tar">GitHub</a>。<br>毕竟这是最好还免费的存储方案了。以后可能搬到家里服务器。如果用别的存储方案，要么托管商关门跑路，要么我没钱维持存储，只能跑路了。<br>当然，我还是远不如互联网档案馆靠谱。<br>还是希望大家都能fork一下，有1.8G硬盘空间的能下载一下这些代码。</p><h3 id="gentoo-Python3编译错误"><a href="#gentoo-Python3编译错误" class="headerlink" title="gentoo Python3编译错误"></a>gentoo Python3编译错误</h3><p>这应该是只有部分发行版才会有的错误，是因为没有挂载<code>/dev/shm</code>导致的。另开一个终端，将它挂载到容器中的<code>/dev/shm</code>即可。<br>最好的解决办法是安装<code>arch-install-scripts</code>，使用<code>arch-chroot</code>来代替<code>mount</code>和<code>chroot</code>。这个命令退出chroot时也会自动解除挂载，非常方便，效率很高。</p><h1 id="建议"><a href="#建议" class="headerlink" title="建议"></a>建议</h1><p>上述脚本应该逐行（有<code>cat</code>和<code>EOF</code>的那种应该复制多行）复制执行。执行过程中应该灵活变通，尤其是最好把<a href="https://archive.org/download/gentoo-bootstrap-2025.8/distfiles.tar/">https://archive.org/download/gentoo-bootstrap-2025.8/distfiles.tar/</a> 全部下载，再解压到<code>live-bootstrap/distfiles</code>。执行过程中按脚本将它挂载到容器中，免除所有下载，也避免软件下架的问题。我记得它一周之内已经新增2个软件代码被删了，以后会更多。</p><h1 id="点评"><a href="#点评" class="headerlink" title="点评"></a>点评</h1><p>这个脚本让我见识到了gentoo是很难做出从任意系统自举的操作的。本来以为只需要用portage编译出一个stage1就行了，其实它还需要多次交叉编译才能实现。</p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;上回说到，&lt;a href=&quot;https://wiki.gentoo.org/wiki/Project:Prefix&quot;&gt;Gentoo Prefix&lt;/a&gt;可以（&lt;em&gt;理论上&lt;/em&gt;）让你在任何机器上使用portage，其实，有很多gentoo功能是不能使用的。首先，你不能</summary>
      
    
    
    
    <category term="技术相关" scheme="https://blog.xuzhou-jiang.su/categories/%E6%8A%80%E6%9C%AF%E7%9B%B8%E5%85%B3/"/>
    
    <category term="信创天地" scheme="https://blog.xuzhou-jiang.su/categories/%E6%8A%80%E6%9C%AF%E7%9B%B8%E5%85%B3/%E4%BF%A1%E5%88%9B%E5%A4%A9%E5%9C%B0/"/>
    
    
    <category term="超长代码预警" scheme="https://blog.xuzhou-jiang.su/tags/%E8%B6%85%E9%95%BF%E4%BB%A3%E7%A0%81%E9%A2%84%E8%AD%A6/"/>
    
    <category term="踩坑心得" scheme="https://blog.xuzhou-jiang.su/tags/%E8%B8%A9%E5%9D%91%E5%BF%83%E5%BE%97/"/>
    
    <category term="一点偷工减料的干货" scheme="https://blog.xuzhou-jiang.su/tags/%E4%B8%80%E7%82%B9%E5%81%B7%E5%B7%A5%E5%87%8F%E6%96%99%E7%9A%84%E5%B9%B2%E8%B4%A7/"/>
    
    <category term="自助创新" scheme="https://blog.xuzhou-jiang.su/tags/%E8%87%AA%E5%8A%A9%E5%88%9B%E6%96%B0/"/>
    
    <category term="时间杀手预警" scheme="https://blog.xuzhou-jiang.su/tags/%E6%97%B6%E9%97%B4%E6%9D%80%E6%89%8B%E9%A2%84%E8%AD%A6/"/>
    
    <category term="互联网非物质文化遗产" scheme="https://blog.xuzhou-jiang.su/tags/%E4%BA%92%E8%81%94%E7%BD%91%E9%9D%9E%E7%89%A9%E8%B4%A8%E6%96%87%E5%8C%96%E9%81%97%E4%BA%A7/"/>
    
    <category term="Linux邪教" scheme="https://blog.xuzhou-jiang.su/tags/Linux%E9%82%AA%E6%95%99/"/>
    
    <category term="删前下载" scheme="https://blog.xuzhou-jiang.su/tags/%E5%88%A0%E5%89%8D%E4%B8%8B%E8%BD%BD/"/>
    
  </entry>
  
  <entry>
    <title>stage1和stage2在哪里？</title>
    <link href="https://blog.xuzhou-jiang.su/2026/05/04/stage3-to-stage1/"/>
    <id>https://blog.xuzhou-jiang.su/2026/05/04/stage3-to-stage1/</id>
    <published>2026-05-04T08:01:27.000Z</published>
    <updated>2026-05-04T10:17:02.000Z</updated>
    
    <content type="html"><![CDATA[<p>现在gentoo的官网，上面只能找到如何使用stage3来安装系统，那stage1和stage2去哪了？<br>这个东西，其实我在十年前的暗网上看到过，现在也没印象了。当时说是要想登录“马里亚纳网络”，就必须得使用gentoo。点进链接就是说从stage1开始编译系统。</p><span id="more"></span><p>我业余时间在网上搜了好几天，都说这个stage1和stage2费时费力，并且“没有任何教学意义”，所以“Gentoo发行工程团队”就把它删掉了，以后开发也用不上它了。所以就这么失传了<br>？？？</p><p>最近一次见到stage1还是用gentoo-prefix的时候。编译的时候它会显示目前处于stage1~stage3。<a href="https://wiki.gentoo.org/wiki/Project:Prefix">Gentoo Prefix</a>是官方宣称的在其它系统使用portage的最佳方案。<br>这真的确实，是这样的。不过经过官方测试，红帽系列（CentOS）运行prefix脚本必定失败；我测试下来，Arch Linux运行脚本也必定失败。<br>我在这里强烈不建议读者去测试，因为每次测试，它至少要编译3次gcc！</p><p>那么用<a href="https://wiki.gentoo.org/wiki/Project:Prefix">Gentoo Prefix</a>编译出一个stage文件可以吗？答案也是不可以，因为它的动态链接库自带前缀，完全没法chroot运行。</p><h1 id="系统要求"><a href="#系统要求" class="headerlink" title="系统要求"></a>系统要求</h1><p>最小：4核8G<br>推荐：AMD 64核 线程撕裂者，内存越大越好</p><blockquote><p>警告⚠：笔者使用了20核进行编译，总共花费<font color=yellow>大约6小时</font></p></blockquote><h1 id="stage1在哪里？"><a href="#stage1在哪里？" class="headerlink" title="stage1在哪里？"></a>stage1在哪里？</h1><p>经过我在网上没日没夜地搜索，找到了一个前gentoo社区成员发布的stage1文件，地址在这<a href="https://gentoofan.org/">https://gentoofan.org</a> 。按照<a href="https://gentoo.org/">Gentoo官网</a>的文档解压后，<code>arch-chroot</code>进去，再<code>qlist -I</code>，就会发现它是用portage安装100多个软件组成的。<br>所以说，要生成stage1其实很简单，在gentoo官方的portage软件仓库里，有一个<code>packages.build</code>（<a href="https://github.com/gentoo/gentoo/blob/master/profiles/default/linux/packages.build">GitHub上在这</a>）文件。它的注释写得很清楚</p><blockquote><p>Copyright 1999-2024 Gentoo Authors<br> Distributed under the terms of the GNU General Public License v2</p><p>This file describes the packages needed to build a stage1 based on this<br> profile.  Packages in this file are built in order.</p></blockquote><p>意思是stage1正是由这些软件包组成的。</p><p>所以，现代获取stage1的方式就是，找一台运行完整gentoo的机器，或者直接官网下载stage3，<code>arch-chroot</code>即可。先把<code>packages.build</code>复制出来，把注释和空白行删掉。然后运行</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">USE=<span class="string">&quot;build -openmp -nls&quot;</span> ROOT=<span class="string">&quot;/mnt/gentoo&quot;</span> emerge -av1 $(<span class="built_in">cat</span> packages.build)</span><br></pre></td></tr></table></figure><p>这时，你就会发现，它安装依赖和软件包，跟<a href="https://gentoofan.org/">https://gentoofan.org</a> 上下载的差不多。这就是stage1，带所有权和属性打包后，就是stage1文件。</p><h1 id="stage2在哪里？"><a href="#stage2在哪里？" class="headerlink" title="stage2在哪里？"></a>stage2在哪里？</h1><p>这个操作就很简单了，但是时间依然要花不少。<br>执行<a href="https://github.com/gentoo/gentoo/blob/master/scripts/bootstrap.sh">软件仓库中的脚本</a>。顺利完成后就是stage2。<br>执行<code>bootstrap.sh</code>有几个坑<br>首先，应该先执行</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">./bootstrap.sh -f</span><br></pre></td></tr></table></figure><p>先下载文件，同时检查依赖。不建议不带<code>-f</code>边下载边安装，因为用我上一节方法安装的stage1和<a href="https://gentoofan.org/">https://gentoofan.org</a> 下载的stage1执行脚本，必定会出现依赖问题。你需要做的就是把提示的软件给手动<code>emerge</code>安装一遍。<br>顺利跑完仅下载模式，再进行编译。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">./bootstrap.sh</span><br></pre></td></tr></table></figure><h1 id="stage3是怎样炼成的"><a href="#stage3是怎样炼成的" class="headerlink" title="stage3是怎样炼成的"></a>stage3是怎样炼成的</h1><p>顺利跑完上一节的代码后，运行</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">emerge -ave @system</span><br></pre></td></tr></table></figure><p>如果有问题，先重新编译一遍gcc <code>emerge -av1 gcc</code><br>建议时间充裕时运行，不建议多次中断。因为它<strong>必须</strong>重复安装<strong>大量</strong>软件（截至目前，gentoo需要<strong>编译安装300个</strong>软件包）。</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;现在gentoo的官网，上面只能找到如何使用stage3来安装系统，那stage1和stage2去哪了？&lt;br&gt;这个东西，其实我在十年前的暗网上看到过，现在也没印象了。当时说是要想登录“马里亚纳网络”，就必须得使用gentoo。点进链接就是说从stage1开始编译系统。&lt;/p&gt;</summary>
    
    
    
    <category term="技术相关" scheme="https://blog.xuzhou-jiang.su/categories/%E6%8A%80%E6%9C%AF%E7%9B%B8%E5%85%B3/"/>
    
    <category term="信创天地" scheme="https://blog.xuzhou-jiang.su/categories/%E6%8A%80%E6%9C%AF%E7%9B%B8%E5%85%B3/%E4%BF%A1%E5%88%9B%E5%A4%A9%E5%9C%B0/"/>
    
    
    <category term="踩坑心得" scheme="https://blog.xuzhou-jiang.su/tags/%E8%B8%A9%E5%9D%91%E5%BF%83%E5%BE%97/"/>
    
    <category term="一点偷工减料的干货" scheme="https://blog.xuzhou-jiang.su/tags/%E4%B8%80%E7%82%B9%E5%81%B7%E5%B7%A5%E5%87%8F%E6%96%99%E7%9A%84%E5%B9%B2%E8%B4%A7/"/>
    
    <category term="自助创新" scheme="https://blog.xuzhou-jiang.su/tags/%E8%87%AA%E5%8A%A9%E5%88%9B%E6%96%B0/"/>
    
    <category term="时间杀手预警" scheme="https://blog.xuzhou-jiang.su/tags/%E6%97%B6%E9%97%B4%E6%9D%80%E6%89%8B%E9%A2%84%E8%AD%A6/"/>
    
    <category term="Linux邪教" scheme="https://blog.xuzhou-jiang.su/tags/Linux%E9%82%AA%E6%95%99/"/>
    
    <category term="赛博考古系列" scheme="https://blog.xuzhou-jiang.su/tags/%E8%B5%9B%E5%8D%9A%E8%80%83%E5%8F%A4%E7%B3%BB%E5%88%97/"/>
    
  </entry>
  
  <entry>
    <title>如何在VPS上安装gentoo</title>
    <link href="https://blog.xuzhou-jiang.su/2026/05/04/install-gentoo-from-stage3/"/>
    <id>https://blog.xuzhou-jiang.su/2026/05/04/install-gentoo-from-stage3/</id>
    <published>2026-05-04T05:54:33.000Z</published>
    <updated>2026-05-04T07:59:48.000Z</updated>
    
    <content type="html"><![CDATA[<p>本博客也算是一季一更了。最近既没玩宝可梦、《识质存在》，也没研究AI，没赶任何潮流。但是，我仍觉得我折腾的东西有用。<br>今天写的头两篇文章，主要给我那个自举（<em>bootstrap</em>）gentoo linux的教程起到一个<em>承上启下</em>的作用。</p><span id="more"></span><h1 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h1><h2 id="本文适合人群"><a href="#本文适合人群" class="headerlink" title="本文适合人群"></a>本文适合人群</h2><p>本文适合哪些读者呢？说实话，本文的目的也就是收集整理网上资料，桌面版Linux圈子应该也算挺冷门的，就怕原作者哪天删了跑路，所以我要把人家的劳动成果复读一遍，最后给我自己看的。不指望任何读者读懂。</p><h2 id="Linux发行版"><a href="#Linux发行版" class="headerlink" title="Linux发行版"></a>Linux发行版</h2><p>我最推荐新手读者使用Ubuntu系统作为个人电脑的操作系统，因为它安装方便，生态环境也不错，支持的软件也多。这个对于新手来说，只需要一键安装就可以了。也有主播使用Mint，我没用过，不太好评价，听说使用体验跟Windows最接近。<br>Debian也可以，比Ubuntu轻盈，安装难度高一些，灵活性也高一些。</p><h3 id="Arch-Linux"><a href="#Arch-Linux" class="headerlink" title="Arch Linux"></a>Arch Linux</h3><p>Arch Linux属于邪教。它的安装难度比除了某些发行版以外的都要大。但是如果熟练的话，重装一次系统还是非常快的。<br>你可以从安装（使用<code>archinstall</code>除外）中，学到如何手动给硬盘分区，如何给一个空硬盘安装软件，最后设置引导区使你新装的系统能够启动。</p><h4 id="archinstall"><a href="#archinstall" class="headerlink" title="archinstall"></a>archinstall</h4><p>我并不觉得使用一键脚本的人应该受歧视，也不觉得这个行为应该在玩家圈子中感到羞愧。你安装Linux肯定有自己的用途，可能当黑客，可能开发软件，可能运维一些服务，你确实不应该把时间浪费在重装系统上。反倒嘲笑别人，秀优越的人倒是应该在歧视链底端。</p><h4 id="灵活性"><a href="#灵活性" class="headerlink" title="灵活性"></a>灵活性</h4><p>你使用其他发行版的一键安装（不使用专家模式），或者arch linux的<code>archinstall</code>，势必会使系统丧失它的灵活性。你安装出来的系统，也会变得更加臃肿。我手动安装的Arch Linux，它的空间就占得很小，你用了<code>archinstall</code>，就会比我大好几个G。</p><p>还有个问题就是何谓“灵活性”？我就举个例子，这个btrfs很方便吧？它的子卷特性可以让我在一个分区塞好几个发行版，甚至其他类型的类UNIX系统。并且我随时可以恢复到以前的快照。<br>最不济的情况，就是我需要重装某个系统了。重装Ubuntu和国产的那些傻瓜Linux系统，就是要比重装Arch Linux麻烦！<br>在btrfs分区重装或插入Debian系统就必须得使用专家模式。<br>所以说，有些事情确实只有高手才能做到。</p><h3 id="Gentoo"><a href="#Gentoo" class="headerlink" title="Gentoo"></a>Gentoo</h3><p>Gentoo属于极端派的邪教。除了手动分区和chroot以外，最极品的就是它的所有软件，包括内核，都是从源代码编译的。你可以从官网<a href="https://gentoo.org/">https://gentoo.org</a> 和<a href="https://github.com/gentoo">Github</a>上，顺藤摸瓜找到它整个操作系统的源代码。<br>理论上，只要你下载并安装了它的包管理器Portage，就可以安装它的整个系统。但是，我在Arch Linux和Ubuntu上试下来，安装portage后再安装gentoo系统是不行的，因为缺少各种gentoo独有的软件，手动补上以后，直接bash编译失败。根本无法完成自举。<br>只有使用stage3或安装完毕的gentoo系统，才能编译它自身。</p><p>当然，并非上面所有软件都可以从源代码编译。就比如Nvidia驱动，WPS办公软件，这些本来就不开源。我觉得还有我长毛象需要的elasticsearch 8.4.1，这个我只能从官网下载二进制，然后手动复制&#x2F;移动安装它，这样才能恰到好处地使用文档里地全部功能。</p><p>Gentoo的兼容性是最好的。但是我不推荐任何人使用它，除非你想学习操作系统是如何编写、编译的。</p><h4 id="不推荐服务器使用Gentoo"><a href="#不推荐服务器使用Gentoo" class="headerlink" title="不推荐服务器使用Gentoo"></a>不推荐服务器使用Gentoo</h4><p>尽管官方帮你编译了二进制内核和二进制软件包，但是大部分软件依然需要自行编译。服务器上的系统资源是非常宝贵的，用来给长毛象升级就已经很要命了，更不用说编译内核了。<br>它的优点就是，如果哪个开源软件出现了漏洞，那么它将是第一个发布补丁的发行版，毕竟全都是用户在编译，它只需要在自己软件仓库里面加上原作者发布代码的链接就行了。这个优点掩盖不了它的缺点。</p><h4 id="不推荐个人电脑使用Gentoo"><a href="#不推荐个人电脑使用Gentoo" class="headerlink" title="不推荐个人电脑使用Gentoo"></a>不推荐个人电脑使用Gentoo</h4><p>gentoo是滚动更新，一星期不上线，你再更新就会滚挂。平时上学上班就已经够忙了，你还得给它天天签到，这跟网游没区别。</p><h3 id="LFS"><a href="#LFS" class="headerlink" title="LFS"></a>LFS</h3><p>站在Linux歧视链顶端的就是<a href="https://linuxfromscratch.org/">Linux From Scrach</a>。有个梗图说的就是“你是不会使用LFS才使用Gentoo的”。<br>它的兼容性和灵活性都很低，因为没有包管理器，也仅有作者在测试各个软件是否兼容。<br>最极端且有包管理器的Linux发行版也只有Gentoo了。</p><h2 id="折腾这些的意义"><a href="#折腾这些的意义" class="headerlink" title="折腾这些的意义"></a>折腾这些的意义</h2><p>说实话，找不到它的意义。也许可以让你每天上班摸鱼时，显示器上显示<code>emerge</code>运行的过程，显得你像个黑客？</p><h1 id="在VPS上安装gentoo"><a href="#在VPS上安装gentoo" class="headerlink" title="在VPS上安装gentoo"></a>在VPS上安装gentoo</h1><h2 id="【热烈推荐】-最简单的办法"><a href="#【热烈推荐】-最简单的办法" class="headerlink" title="【热烈推荐】 最简单的办法"></a>【热烈推荐】 最简单的办法</h2><p>使用一键脚本。地址在这<a href="https://github.com/bin456789/reinstall">https://github.com/bin456789/reinstall</a> （假如原作者跑路，<a href="https://github.com/dongzhimin-xz/reinstall">我fork了</a>）<br>你必须要注意的是，首先你要确定你的VPS是否支持重装（应该都支持的）、救援盘是否好用（vultr的救援盘就不太好用）、有没有VNC？<br>如果没有上述功能，建议不要在这家VPS尝试安装gentoo。如果你不能熟练使用上述功能，请不要继续阅读本文。</p><p>有时，这个脚本运行完以后可能无效。</p><h2 id="删除，并复制安装新的系统文件-【最难方法】"><a href="#删除，并复制安装新的系统文件-【最难方法】" class="headerlink" title="删除，并复制安装新的系统文件 【最难方法】"></a>删除，并复制安装新的系统文件 【最难方法】</h2><p>这个<a href="https://wiki.gentoo.org/wiki/User:Jbara/Installing_Gentoo_on_Free_Oracle_VPS">办法</a>亲测可用（原作者被删或访问错误，请访问<a href="https://web.archive.org/web/20260504071904/https://wiki.gentoo.org/wiki/User:Jbara/Installing_Gentoo_on_Free_Oracle_VPS">档案馆</a>）</p><p>这个办法我点评一下：它最充分地发挥了stage3文件的各种妙用，这个社区成员写的教程，比官方文档更有教育意义！<br>以防链接和档案消失，以及读者看不懂，我再复述一遍它的操作。</p><ol><li>在根目录新建一个文件夹<code>/gentoo</code></li><li>下载stage3并完整地解压到<code>/gentoo</code>目录下。这个目录相应的程序带有属性（软链接）和所有权，可以视为一个Linux的系统目录。</li><li>把部分内核拷入新系统</li><li>使用容器化技术。首先通过挂载系统设备的方式，将本机内存中的内核借给新系统使用。再用chroot更改根目录，使软链接和动态链接库指向新系统。这个原理跟docker是一样的，也是基本上所有操作系统的安装方式。</li><li>将本机的根目录挂载到新系统里</li><li>进入gentoo容器后，用批处理命令把那旧系统里的文件全给删除，再复制新系统的文件进去（出来）。</li><li>再chroot进容器化的根目录（不能退出）。安装ssh，并进行测试。</li><li>登录VPS官网，进入该机器的面板，进行<strong>硬重启</strong>（软重启会卡死，可能会导致必须把VPS退订！）</li></ol><p>讲一下我的踩坑经验：</p><ul><li>一定要使用你相应CPU架构的<strong>openrc</strong>的stage3文件！</li><li>推荐使用<strong>至少</strong>4核8G的VPS安装Gentoo！</li><li>推荐在VPS上使用二进制包，<code>emerge</code>在tmux中进行！</li><li>整个安装过程中，建议不要断开ssh连接！</li><li>在虚拟机中也可以复现此操作，但是请通过ssh连接进行,因为通过其他内核使用gentoo键盘会非常卡顿！</li><li>安装成功后首先要做的，就是删除旧系统的内核，安装新内核（包括initramfs和grub）！别看它没有自己的内核也能运行，实际上，安装systemd必定会出错！旧内核删除后，可以断线，但是千万不要重启机器（千万不要断电）！否则你只能通过救援盘继续安装了！</li><li>gentoo内核安装成功后，才可以安装systemd！否则一律使用openrc！（以后编译stage3也一样！）</li></ul><h1 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h1><p>本文没有涉及硬盘分区，大头主要在<code>chroot</code>上。练习分区最好的发行版就是Arch Linux，gentoo主要是用来给你学习工具链和容器化的，以及如何编译那些可以让电脑显示出文字的软件（就比如ncurses）。</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;本博客也算是一季一更了。最近既没玩宝可梦、《识质存在》，也没研究AI，没赶任何潮流。但是，我仍觉得我折腾的东西有用。&lt;br&gt;今天写的头两篇文章，主要给我那个自举（&lt;em&gt;bootstrap&lt;/em&gt;）gentoo linux的教程起到一个&lt;em&gt;承上启下&lt;/em&gt;的作用。&lt;/p&gt;</summary>
    
    
    
    <category term="技术相关" scheme="https://blog.xuzhou-jiang.su/categories/%E6%8A%80%E6%9C%AF%E7%9B%B8%E5%85%B3/"/>
    
    <category term="信创天地" scheme="https://blog.xuzhou-jiang.su/categories/%E6%8A%80%E6%9C%AF%E7%9B%B8%E5%85%B3/%E4%BF%A1%E5%88%9B%E5%A4%A9%E5%9C%B0/"/>
    
    
    <category term="踩坑心得" scheme="https://blog.xuzhou-jiang.su/tags/%E8%B8%A9%E5%9D%91%E5%BF%83%E5%BE%97/"/>
    
    <category term="一点偷工减料的干货" scheme="https://blog.xuzhou-jiang.su/tags/%E4%B8%80%E7%82%B9%E5%81%B7%E5%B7%A5%E5%87%8F%E6%96%99%E7%9A%84%E5%B9%B2%E8%B4%A7/"/>
    
    <category term="赛博考古系列" scheme="https://blog.xuzhou-jiang.su/tags/%E8%B5%9B%E5%8D%9A%E8%80%83%E5%8F%A4%E7%B3%BB%E5%88%97/"/>
    
    <category term="自主创新？？？" scheme="https://blog.xuzhou-jiang.su/tags/%E8%87%AA%E4%B8%BB%E5%88%9B%E6%96%B0%EF%BC%9F%EF%BC%9F%EF%BC%9F/"/>
    
  </entry>
  
  <entry>
    <title>保姆级教程（二）从零开始翻墙</title>
    <link href="https://blog.xuzhou-jiang.su/2026/02/22/tutorial-guide-2/"/>
    <id>https://blog.xuzhou-jiang.su/2026/02/22/tutorial-guide-2/</id>
    <published>2026-02-22T07:49:37.000Z</published>
    <updated>2026-02-22T18:24:32.000Z</updated>
    
    <content type="html"><![CDATA[<p>上一篇保姆级教程写完，春节假期还有一段时间。第一篇的知识点，都是我小学时就已经学会的技能了。<br>为什么要这么写？说个大白话，小学知识除了这些其他全都是错的。</p><span id="more"></span><p>说得严谨一些，首先，你下载虚拟机和制作安装盘，或者重装系统，根本不需要登录任何账号，也不需要任何邮箱，就可以完成对电脑的安装、翻新和维修。然而，其他操作，不论是你注册社交帐号（不论是长毛象还是推特）、购买虚拟电话号码、使用密码管理器保管包括邮箱账号在内的账号密码、租用VPS、使用VPS或Cloudflare之类的公共服务将本地端口转发到公网（实现出门在外随时随地操作家里的电脑），都需要你填写邮箱，并且使用你的邮箱来验证身份防止盗号。更不用说创建长毛象实例了，需要对接各项服务。<br>当然，本篇租机场、搭梯子翻墙也需要使用邮箱。</p><blockquote><p><strong>注意⚠：</strong> 本文具有时效性。软件和政策会更新。没有特殊说明的情况下，以本文<em><strong>发表日期</strong></em>为准，因为我在旧博客的文件只是按下保存，它也会更新“更新于”的时间。你也可以看看本站<a href="https://dongzhimin-xz.github.io/">https://dongzhimin-xz.github.io</a> 的gitblame，但也不一定可靠，因为我可能会把本站删了重新部署<del>能想得到这方法，也不是小白了</del></p></blockquote><h1 id="我推荐机场的标准"><a href="#我推荐机场的标准" class="headerlink" title="我推荐机场的标准"></a>我推荐机场的标准</h1><ol><li>翻墙成功率和速度。以前我都用PPTP和L2TP翻墙的，现在这些VPN的翻墙成功率基本上为0，所以我就不推荐了。<br>还有那个自由门，除了大纪元和其他法轮功网站以外，全都不能上，安全性再好也只能进垃圾桶。</li><li>安全性和稳定性。我最喜欢用的机场，我也不在这里推荐。因为我一旦推荐了，可能网警和GFW的工作人员通过爬虫搜集到信息，也去购买这个服务，然后根据入口节点和出口节点信息，把这个机场给封了。我估计他们会跑路，毕竟他们推特已经十年没更新了。<br>此外，老王VPN这种五毛梯子也决不推荐。</li><li>能否浏览大纪元<a href="https://epochtimes.com/">https://epochtimes.com</a> 。今天能封大纪元，明天会封什么我不敢想。<br>所有￥40&#x2F;月以下的机场都淘汰掉了<br>大纪元和其他一切法轮功刊物，要我说，一个字都不能信。跟新闻联播比起来，可以信他一个标点符号😁。还有大纪元的日期和时间应该也比CCTV可信一些，因为CCTV直播会延迟半分钟左右进行审查，以防不雅画面和突发冲塔事件发生。至于它的三观，它上台以后，你们的日子比共产党统治时期还要惨。还要它每天介绍的生活小常识，虽然也是一个字都不要信，但也不要跟它反着来就是。</li><li>能否连接服务器的22端口。其实这个是应该封的，我当机场主也会封。因为有人会拿它进行<code>brutespray</code>，甚至直接爆破渗透别人的网站。<br>这个也是所有40元以下的都淘汰掉了，40元以上也不好说。迷雾通大部分服务器也封了22端口。<br>不过我还是很在意这个，因为我要配置新服务器就很需要连22端口。新服务器需要搞迁移，如果改了端口，我的<code>rsync</code>命令就得加一个参数了。<br>此外，本博客发表文章也是靠github.com:22进行的，可以靠连接GitHub的22端口来测试节点和机场是否靠谱。</li><li>能否看网飞。这个影响了它的价值</li><li>IP的纯净度。我会登录<a href="http://ip123.in/">http://ip123.in</a> 查看IP是否干净。你也不想你的推特账号被秒封吧。这个纯净度取决于IP出口的使用者有没有武德。天天攻击渗透别人的服务器，或者拿这个IP进行DDOS的，就会导致大家屏蔽你这个IP。机场所有用户即使没干坏事，也统统没得玩了。<br>使用者的武德极大程度受VPS价格和机场价格影响，你价格便宜，我就开100个小号来买你服务，天天攻击别人、创建tor节点（甚至是tor出口）、挖矿、恶意发帖刷大量垃圾信息对别人进行诽谤<del><font color=red>就跟王畅睿干一样的事</font></del>。搞到最后，我这个骇客付出的代价很小，你的IP地址被GFW封了，所有用户被推特永久封禁，</li></ol><h1 id="年轻人要讲武德"><a href="#年轻人要讲武德" class="headerlink" title="年轻人要讲武德"></a>年轻人要讲武德</h1><p>不论是租VPS还是用梯子，哪怕是Cloudflare，包括但不仅限于以下的事情不要去干：</p><ol><li>扫端口</li><li>密码爆破</li><li>没事对别人数据库进行渗透测试，就比如<code>DROP DATABASE;</code></li><li>挖矿</li><li>搭建tor节点，尤其是出入口节点。我在国内家里的电脑上搭建tor节点，再用Cloudflare或者反向代理把入站端口转发出去，靠透明代理作为出口行不行？绝对不行！</li><li>其他用户协议禁止的内容</li></ol><h1 id="迷雾通"><a href="#迷雾通" class="headerlink" title="迷雾通"></a>迷雾通</h1><p>截至2025年，我最能推荐的翻墙软件还是迷雾通。收费版的网速还可以，免费版没有任何门槛即可上手，非常时期被封锁后会赔时间。两会也不会被封。双重加密，并且无法从浏览内容追踪到用户个人。还支持支付宝。</p><p>迷雾通的官网是<a href="https://geph.io/">https://geph.io</a> （永久有效，除非作者跑路），但是官网已被墙，所以截至2026&#x2F;2&#x2F;22，可以访问 <a href="https://waa.ai/xiazaimiwutong">https://waa.ai/xiazaimiwutong</a> 下载迷雾通的安装包。<br><img src="geph-download1.png"><img src="geph-download2.png"><br>安装过程节约你们流量不再赘述<br>购买过程如下所示：<br>首先点击<code>购买Plus</code><br><img src="geph1.png"><br><img src="geph2.png"><br><img src="geph3.png"><br><img src="geph4.png"><br>目前只有桌面版迷雾通才能支持支付宝支付，网页版和手机版都不行。<br><img src="geph5.png"><br>以防有人帮我多买一个迷雾通来支持我，所以我涂掉了。<del>要支持请直接给我转BCH或者XMR😁</del><br>购买迷雾通后，可以在其他终端登录账号来进行使用，不用多次购买。但注意不要登出或删除账号，否则钱会打水漂。<br>所有梯子一概不退款！</p><h1 id="自建节点"><a href="#自建节点" class="headerlink" title="自建节点"></a>自建节点</h1><p>接下来的操作可能会被墙，运气好的话，也可能免于翻墙。如果有操作卡住不动了，那多半是你的访问被墙了，可以使用刚才教的免费或收费的迷雾通来进行操作。<br>到这里，如果遇到墙，读者和笔者就八仙过海————各显神通吧。翻墙来学习翻墙技术也是很有必要的，一个翻墙办法挂了，我硬盘里还有很多梯子，根本拦不住我。<br>笔者如果遇到GitHub无法访问时，会打开透明代理使用便宜机场通过。读者最差也能用迷雾通对付以下。</p><h2 id="下载v2rayN"><a href="#下载v2rayN" class="headerlink" title="下载v2rayN"></a>下载v2rayN</h2><p>v2ray是个非常强大，还很适合新手的软件。可惜真正的新手并不会感觉到这一点，因为它需要手动配置config文件。你用Windows的记事本编辑配置文件，必定会发生括号多一个少一个的问题。所以推荐使用vscode <a href="https://code.visualstudio.com/">https://code.visualstudio.com</a></p><p>然而今天并不需要手搓配置。还有个强大的软件v2rayN。<br>我们去GitHub下载它<a href="https://github.com/2dust/v2rayN">https://github.com/2dust/v2rayN</a></p><blockquote><p><strong>关于GFW的基础知识⚠：</strong> 没挂梯子的前提下，你可以直接点击链接<a href="https://github.com/2dust/v2rayN">https://github.com/2dust/v2rayN</a> ，也可以先输入github.com后再在后面补充路径。但唯独不可以直接在空白页或者其他网页的地址栏输入github.com&#x2F;2dust&#x2F;v2rayN进行访问！<br>因为你敲回车，全新下载的浏览器极大可能会以http协议访问网站的80端口，这时候后面路径以明文传输。GitHub在中国不是被墙的网站，至少我家这边不是，因为这里码农很多。之前被墙了一段时间，是因为有键政人员在GitHub上活动。<br>所以截至本文创建时，GFW对GitHub进行关键词屏蔽，一旦触发，就会导致暂时无法访问网站。<br>但是当你在补全前面<code>https://</code>后再敲回车，后面路径不再明文传输，这个世界上0人可以发现你在访问github.com的什么路径。你也就可以访问梯子的页面了。</p></blockquote><p><img src="v2rayN-down1.png"><br>这里可以在<code>Releases</code>和项目网站处下载v2rayN<br>下载完成后，校验sha256，正确后解压。以管理员身份运行<code>v2rayN.exe</code><br><img src="v2rayN1.png"><br>更新内核<br><img src="v2rayN2.png"><br><img src="v2rayN3.png"><br>不挂梯子需要很长时间</p><p>此时，这款开源的翻墙软件已在本地部署完毕。但是，本机仍然无法翻墙！这时，有读者就要问了：“我下载了你的软件，为什么还是不能翻墙？什么？还要自己找节点？🤬”<br><img src="niyijiku.jpg"><br>所以说，在去跟机场主沟通之前，首先就应该学会自己搭建节点。</p><h2 id="手机端下载（略过，只提注意事项）"><a href="#手机端下载（略过，只提注意事项）" class="headerlink" title="手机端下载（略过，只提注意事项）"></a>手机端下载（略过，只提注意事项）</h2><p>我是苹果手机，用的是ShadowRocket。苹果手机相对更安全。<br>我用的ShadowRocket用的是自己申请的账号买的，别问我找的哪家淘宝代购的。现在因为苹果商店风控政策原因，不知能否购买。<br>如果你要使用别人共享的账号，千万别登录别人的iCloud，否则对方会远程锁定你的手机，你无法自行解锁，恢复和越狱均没有用，你的手机将被视为对方遗失的手机！<br><a href="https://zhuanlan.zhihu.com/p/1948722982823368489">注册美区苹果ID</a>（它自称截至大约2026年1月有效，无效请想别的办法）<br>如果你拥有了美区苹果ID，那么可以继续。<br>你是不能用你的国内VISA信用卡给美区账号充钱的。你需要购买礼品卡<a href="https://www.apple.com/shop/gift-cards">https://www.apple.com/shop/gift-cards</a> ，把兑换码发给自己，并完成兑换，即可完成充值。教程在此- YouTube<br><a href="https://youtu.be/K89kjY_3PuE?si=4HC-D_Zd2PXTa14Y%EF%BC%88%E5%9B%A0%E4%B8%BA%E6%88%91%E6%97%A9%E5%9C%A810%E5%B9%B4%E5%89%8D%E5%B0%B1%E5%B7%B2%E7%94%A8%E5%88%AB%E7%9A%84%E6%96%B9%E5%BC%8F%E4%B8%8D%E6%8C%82VPN%E5%B0%B1%E7%94%B3%E8%AF%B7%E4%BA%86%E8%B4%A6%E5%8F%B7%EF%BC%8C%E6%89%80%E4%BB%A5%E6%B2%A1%E6%9C%89%E5%AE%9E%E6%B5%8B%EF%BC%89">https://youtu.be/K89kjY_3PuE?si=4HC-D_Zd2PXTa14Y（因为我早在10年前就已用别的方式不挂VPN就申请了账号，所以没有实测）</a><br>除了买小火箭，还可以买各种手机游戏，就比如《瘟疫公司》和《宝可梦》什么的，这些都是国区没有的游戏。</p><h2 id="下载XShell"><a href="#下载XShell" class="headerlink" title="下载XShell"></a>下载XShell</h2><p>搭建节点需要在服务器端部署软件，通过ssh，你就可以操作远程的电脑，就跟操作自己家的Linux虚拟机和Linux设备一样。当然，不论是Windows还是Linux，ssh只能通过命令行进行输入输出。很可惜，没有图形界面。</p><p>有很多ssh客户端可以用，就比如secureCRT和MobaXterm。我喜欢用XShell，搭配Xftp可以自由上传下载文件。<br>访问<a href="https://xshell.com/">https://xshell.com</a> ，选择下载XShell<br><img src="xshell-down.png"><br>在此页面选择家庭和学校用户的免费许可证。<br><img src="xshell-down1.png"><br>现在发现，我们不仅可以同时连接多个服务器，还可以开启多个<code>top</code>和编译界面监视系统状态，以便调试。</p><h2 id="租用VPS"><a href="#租用VPS" class="headerlink" title="租用VPS"></a>租用VPS</h2><p>网上教程都是租用搬瓦工之类的VPS。我搭建翻墙节点使用的是最便宜的vultr和Digital Ocean。这些VPS虽然没贵的干净，也没象友用的那些厂商性价比高，但是租期非常灵活，是按小时收费的。现在确认，可以使用支付宝充值。如果你不打算用了，随时可以删除VPS，立刻停止计费（但是最小单位是小时，5美元一个月，大概至少收你1美分）。<br>这些VPS你也可以用来创建长毛象实例，如果你发现你并不适合建站这条路，随时都可以撤，不用搭进去一个月或者一年的租金，留着一台Linux机器也不知道干什么用。如果发现你想长期把网站开下去，那更好办了，找个性价比高的服务商，租一台VPS，进行实例迁移步骤，最后再把这台VPS给删掉。<br>vultr和Digital Ocean的机器也非常灵活，不仅可以随时升级（但是不能降级），还可以挂载块存储，也就是给你的VPS挂载一块新的硬盘，解决硬盘空间不足的问题。</p><h3 id="vultr"><a href="#vultr" class="headerlink" title="vultr"></a>vultr</h3><p>登录到vultr官网<a href="https://vultr.com/">https://vultr.com</a><br><img src="vultr1.png"><br>非常显而易见，可以马上在首页注册账号部署服务器<br><img src="vultr2.png"><br>这里它就要你马上付钱，可以发现，你是可以用支付宝（Alipay）的。<br><img src="vultr3.png"><br>你会发现，这里机器的最低价也很便宜，就是这配置不太适合做实验罢了。<br><img src="vultr4.png"><br>今天不在vultr做演示，就不充值了。</p><h3 id="登录Digital-Ocean的VPS"><a href="#登录Digital-Ocean的VPS" class="headerlink" title="登录Digital Ocean的VPS"></a>登录Digital Ocean的VPS</h3><p>登录到Digital Ocean官网<a href="https://digitalocean.com/">https://digitalocean.com</a><br><img src="do1.png"><br>注册按钮也很明显<br><img src="do2.png"><br>这里选择Email注册<br><img src="do3.png"><br>这里马上就能完成注册<br><img src="do4.png"><br>完成人机验证后，验证邮箱<br><img src="do5.png"><br>验证邮箱后，马上就能安装服务器<br><img src="do6.png"><br>在如图选项卡添加支付方式<br><img src="do7.png"><br>这里发现，可以使用支付宝充值<br><img src="do8.png"><br>充值完后，选择<code>Create</code>&gt;<code>Droplets</code>开始创建VPS<br><img src="do9.png"><br>在这个页面根据需要和价格来选择虚拟机的参数。这里选个离我近一点的，这样延迟低，其余部分，只能选最便宜的<br><img src="do10.png"><br>这里可以选择无密码登录，改用sshkey更安全<br><img src="do11.png"><br>密钥可以通过xshell来生成。如果VPS供应商不能帮你安装公钥，你也可以自行用密码登录，再上传公钥，并禁用密码登录<br><img src="do12.png"><br>打开用户密钥管理者<br><img src="do13.png"><br>生成密钥<br><img src="do14.png"><br>选择私钥长度长的最好，所以选择RSA4096，至今无人能破解<br><img src="do15.png"><img src="do16.png"><br>这里不设密码，因为是测试图方便。平时假如别人可以访问你的终端，建议设置密码。<br><img src="do17.png"><img src="do18.png"><br>双击打开刚才生成的密钥，复制公钥填入表格<br><img src="do19.png"><br>公钥设置完成<br><img src="do20.png"><br>点击开始部署，安装系统<br><img src="do21.png"><img src="do22.png"><br>得到IP地址，可以登录22端口<br><img src="do23.png"><br>点击新建会话，填入主机，点击连接<br><img src="do24.png"><br>这一台电脑第一次连接这台主机时，会有这个提示。如果远程主机进入救援模式或者被别的盘引导，远程主机重装系统，远程主机更换ssh端口，则也会有类似提示。但是，如果主机无缘无故返回新的密钥，并且没被重装，那么这说明你多半遭遇了中间人攻击！<br><img src="do25.png"><img src="do26.png"><img src="do27.png"><br>输入用户名<code>root</code>，使用密钥通过验证（原理略过，不适合新手，感兴趣的读者自行上网搜索），进入远程主机的Linux界面</p><h3 id="使用3x-ui面板构建节点"><a href="#使用3x-ui面板构建节点" class="headerlink" title="使用3x-ui面板构建节点"></a>使用3x-ui面板构建节点</h3><p>首先，更新操作系统<br><img src="3x-ui1.png"><br>这里发现操作系统版本落后，确实需要升级<br><img src="3x-ui2.png"><br>由于该主机不在中国，且具有公网IP，所以升级速度极快。</p><p>通过GitHub上的<a href="https://github.com/MHSanaei/3x-ui">3x-ui</a>得知，它有一键脚本，亲测比docker好用</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">bash &lt;(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh)</span><br></pre></td></tr></table></figure><p><img src="3x-ui3.png"><br>配置端口，不要默认的2053<br><img src="3x-ui4.png"><br>这里配置IP证书。证书可以配置失败，但不能不配置，否则无法安装面板<br><img src="3x-ui5.png"><br>面板安装成功。面板网址可以记下来，但是没必要，因为可以通过<code>x-ui</code>命令便捷重设用户名、密码、路径、端口等信息。<br>并且，最好打开防火墙把ssh以外的所有非必要端口（尤其是面板端口）给屏蔽，以免审查系统扫描。<br><img src="3x-ui6.png"><br>重设现场<br><img src="3x-ui7.png"><br>最安全的方式就是将面板通过ssh隧道转发到本地<br><img src="3x-ui8.png"></p><p>接下来配置vless+reality<br><img src="3x-ui9.png"><br>配置入站列表<br><img src="3x-ui10.png"><br>这里的配置详细解释一下：</p><ul><li>这个节点使用443端口进行代理翻墙</li><li>使用vless协议。vless协议不对传输内容进行加密，不套安全层肯定会寄</li><li>传输层使用TCP，把vless伪装成HTTP报文</li><li>外面的TLS层套用Reality。假装访问苹果官网，实际上访问的是我VPS的IP。<br>每次访问都用苹果官网的证书来跟我客户端握手，再用自己生成的密钥进行通信。</li></ul><p><img src="3x-ui11.png"><img src="3x-ui12.png"><br>导出链接并复制<br><img src="3x-ui13.png"><img src="3x-ui14.png"><br>编辑导入的链接<br><img src="3x-ui15.png"><br>把真正的IP粘贴到地址，代替<code>localhost</code>，其余配置不变<br><img src="3x-ui16.png"><br>改完后，测试真连接延迟和网速，图示为正常<br><img src="3x-ui17.png"><br>现在可以访问墙外网站<br><img src="3x-ui18.png"><img src="3x-ui19.png"><br>可以通过扫码让手机也连接</p><p>如果你能跟我做，并且成功访问外网，这说明你已学会如何搭建节点。<br>也可以说，你已学会了v2rayN和小火箭的使用，也了解了机场的原理。</p><p>接下来，你可以用v2rayN订阅机场了。</p><h1 id="订阅机场"><a href="#订阅机场" class="headerlink" title="订阅机场"></a>订阅机场</h1><p>就在刚才，我发现之前那些便宜机场不是跑路就是被人给攻击了，可能是同行干的，也可能是晶哥干的。<br>我用到现在没出问题的机场，我也不推荐了，怕它也出事。</p><p>现在，我就推荐两个机场：</p><ol><li>https:&#x2F;&#x2F;魔戒.com 这是一个神奇的中文域名，无限时间，按量计费，最低只需要1块钱</li><li><a href="https://waitu.asia/">https://waitu.asia</a> 这是象友推荐的，今天我不示范如何使用这个了，因为最便宜的套餐也要几十块钱一付</li></ol><p>就以魔戒为例吧<br><img src="mojie.png"><img src="mojie1.png"><img src="mojie2.png"><br>这里直接注册<br><img src="mojie3.png"><br>这里购买订阅<br><img src="mojie4.png"><br>一块钱你买不了吃亏，一块钱你买不了上当<br><img src="mojie5.png"><img src="mojie6.png"><br>还很贴心地给了教程，其实没必要<br><img src="mojie7.png"><br>直接复制订阅链接。订阅链接可以在左边个人中心那里点<code>重置</code>吊销，在此不赘述。<br><img src="mojie8.png"><img src="mojie9.png"><br>粘贴进v2rayN，再点击“更新全部订阅”<br><img src="mojie10.png"><br>就可以使用了。</p><p>只要掌握搭梯子的原理，就可以去订阅机场。<br>然后你就会发现，订阅机场比搭梯子省事得多。</p><h1 id="透明代理"><a href="#透明代理" class="headerlink" title="透明代理"></a>透明代理</h1><p>这一章节，对于萌新暂时没有实操的必要。</p><p>我讲一下<strong>透明代理</strong>的意义吧。<br>之前讲到，v2rayN和迷雾通有代理模式和VPN模式。</p><ol><li>代理模式可以让浏览器和少数一些软件把请求打包成http协议或socks5协议，发给翻墙软件或者tor。<br>然而，有些软件并不支持把请求包装起来送给代理软件。</li><li>tun模式和VPN模式，可以劫持任何TCP协议和UDP协议的数据，用翻墙协议打包，发给代理服务器，最后把回包给解包，发给大多数软件。这可以让你顺畅地更新Linux系统，而不需要换源。<br>但是，假如你在安装Ubuntu时忘记拔网线了，或者安装Arch Linux和Gentoo时忘记换源了，就很尴尬了。<br>此外，还有一些软件，就比如X和TikTok，可能会检测你本机是否有开代理，彻底锁死了你翻墙进去看它的路</li><li>透明代理就是把隧道模式运行在路由器上，这样跨境电商需要的软件就无法检测代理是否运行了，只能检测你的IP是否干净。<br>更重要的是，Linux在你梯子流量充足、线路良好时，安装体验不是一般的好。<br>此外，键政的安全性也获得极大提升。</li></ol><p>擅于折腾的读者可以刷openwrt，但是我的方案是直接购买华硕路由器，然后去<a href="https://koolcenter.com/">https://koolcenter.com</a> 下载固件，找这个教程<a href="https://github.com/dongzhimin-xz/Merlinclash">https://github.com/dongzhimin-xz/Merlinclash</a> 安装MerlinClash<br>下载MerlinClash需要安装telegram，并进行注册。我建议购买Google Voice号码来注册tg号，即使gv号被收回，telegram账号依旧可以使用。</p><p>这些翻墙软件本身，也带了很多机场的广告。不论什么机场，我都不建议买太长期的套餐。</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;上一篇保姆级教程写完，春节假期还有一段时间。第一篇的知识点，都是我小学时就已经学会的技能了。&lt;br&gt;为什么要这么写？说个大白话，小学知识除了这些其他全都是错的。&lt;/p&gt;</summary>
    
    
    
    <category term="翻墙教程" scheme="https://blog.xuzhou-jiang.su/categories/%E7%BF%BB%E5%A2%99%E6%95%99%E7%A8%8B/"/>
    
    <category term="隐私安全" scheme="https://blog.xuzhou-jiang.su/categories/%E7%BF%BB%E5%A2%99%E6%95%99%E7%A8%8B/%E9%9A%90%E7%A7%81%E5%AE%89%E5%85%A8/"/>
    
    <category term="键政基础" scheme="https://blog.xuzhou-jiang.su/categories/%E7%BF%BB%E5%A2%99%E6%95%99%E7%A8%8B/%E9%9A%90%E7%A7%81%E5%AE%89%E5%85%A8/%E9%94%AE%E6%94%BF%E5%9F%BA%E7%A1%80/"/>
    
    
    <category term="言论自由只在这里" scheme="https://blog.xuzhou-jiang.su/tags/%E8%A8%80%E8%AE%BA%E8%87%AA%E7%94%B1%E5%8F%AA%E5%9C%A8%E8%BF%99%E9%87%8C/"/>
    
    <category term="多图预警" scheme="https://blog.xuzhou-jiang.su/tags/%E5%A4%9A%E5%9B%BE%E9%A2%84%E8%AD%A6/"/>
    
  </entry>
  
  <entry>
    <title>保姆级教程（一）邮箱注册和虚拟机的安装</title>
    <link href="https://blog.xuzhou-jiang.su/2026/02/18/tutorial-guide-1/"/>
    <id>https://blog.xuzhou-jiang.su/2026/02/18/tutorial-guide-1/</id>
    <published>2026-02-18T09:31:19.000Z</published>
    <updated>2026-02-22T07:53:44.000Z</updated>
    
    <content type="html"><![CDATA[<p>各位读者，新年好！🎇🎇🎇<br>我早就想写一篇小白也看得懂的关于搭建长毛象实例，以及其他Fediverse实例的建站保姆级教程了，但是从哪开始，这我认为需要从最基础的开始。如果没耐心看我废话，可以查看本站目录，或者跳到下一课去阅读。</p><span id="more"></span><h1 id="闲聊一点废话"><a href="#闲聊一点废话" class="headerlink" title="闲聊一点废话"></a>闲聊一点废话</h1><p>本博客开始以来，也有写了二十几篇了。我也折腾了很多东西没有写在博客上的。就比如在tor上建立长毛象实例、Pleroma实例、mitra实例，这些都折腾成功了，我的长毛象嘟文上也有记载。但是，这些成果意义不大。因为没有一定技术储备和钻研精神的用户，是没法看见tor实例上发表的内容的。当然，也可以用桥，但是别人看见一次以后，再想回头找到我，就几乎不可能了。<br>我还搞过中继节点，技术含量上也挺有说法的。但是反正也不会有人加，也没写博客了。<br>还有一些我没搞成功的，就比如中继串联（要用rust修改代码），在本博客的主题下加入staticman评论插件。这些意义上弊大于利，技术上对我来说也很有难度，也没继续了。</p><p>最近我实例又完成了一次搬家，也没什么特别好的新游戏可以玩，就填一下这个大坑。</p><h1 id="面向的读者"><a href="#面向的读者" class="headerlink" title="面向的读者"></a>面向的读者</h1><h2 id="需要的基础知识"><a href="#需要的基础知识" class="headerlink" title="需要的基础知识"></a>需要的基础知识</h2><p>保姆级教程是基础中的基础，所以对于读者的基础基本上没有要求。</p><ol><li>会使用鼠标</li><li>会用双手打字</li><li>最好能掌握Windows系统的开关机、左单击、双击、右单击</li><li>如果会操作Linux系统，或者会使用命令行，那么请无视本自然段，你已合格。</li></ol><h2 id="对读者的责任心有一点小小的要求"><a href="#对读者的责任心有一点小小的要求" class="headerlink" title="对读者的责任心有一点小小的要求"></a>对读者的责任心有一点小小的要求</h2><p>此外，读者要为自己的行为负责，不能有以下行为，做不到请<strong>立即离开</strong>：</p><ul><li>把包括笔者在内的其他社区用户当成客服人员使唤</li><li>因为遭遇DDOS攻击、黑客攻击、电脑病毒，或者被有关部门上门请喝茶，而找笔者这个保姆打官司。</li><li>因为翻墙以及翻墙后的一切行为，喝茶或被捕入狱时，想拖笔者下水</li></ul><h2 id="前提条件"><a href="#前提条件" class="headerlink" title="前提条件"></a>前提条件</h2><p>拥有一台可以供你重装系统或者不含360全家桶任意成员和国产软件的电脑。如果电脑无法开机，请自己负责硬件维修。</p><p>关于系统重装，请<a href="/2026/02/18/tutorial-guide-1/#%E5%85%A8%E6%96%B0%E5%AE%89%E8%A3%85Windows-10%E5%AE%98%E6%96%B9%E5%8E%9F%E7%89%88%E7%BA%AF%E5%87%80%E7%B3%BB%E7%BB%9F">参考下文安装虚拟机</a>，但是驱动程序请从硬件官网下载。</p><h1 id="注册邮箱"><a href="#注册邮箱" class="headerlink" title="注册邮箱"></a>注册邮箱</h1><p>很多人喜欢用QQ邮箱注册推特，现在甚至来注册长毛象。对于某些人，<del>我不知道你用的谁的手机绑的QQ邮箱，或者用的谁的黑灰产三件套绑的QQ号，</del>我奉劝请不要使用任何时间注册的，任何形式的QQ邮箱上外网。<br>网易邮箱其次，因为网易邮箱绑定实名手机，也不要使用。</p><p>邮箱对于注册长毛象和搭建实例都非常重要。购买梯子和租用VPS自建梯子，也需要使用邮箱注册。<br>教程到后面，我可能会教大家如何用自己域名的邮箱收发邮件，但是那代替不了你在大网站注册的邮箱。你自建邮箱的安全性比不上，而且你的域名如果被吊销或者无法续费，那么你注册的服务都可能会永远无法登录。</p><p>在邮箱这一块，我推荐使用</p><ul><li>微软的outlook <a href="https://outlook.com/">https://outlook.com</a> </li><li>protonmail <a href="https://proton.me/">https://proton.me</a><br>可惜的是，protonmail需要翻墙，我假定读者读到这里为止是不会翻墙的。<br>这两个邮箱，假如你IP地址足够干净，那么你注册将不需要验证手机号<br>现在我将关闭透明代理，开始示范如何注册邮箱。</li></ul><p>在注册邮箱之前，可以先下载浏览器，我推荐火狐和谷歌（隐私的风评不好，不建议登录谷歌账号）。</p><ul><li>火狐浏览器 <a href="https://firefox.com/">https://firefox.com</a></li><li>谷歌浏览器 <a href="https://google.cn/chrome">https://google.cn/chrome</a><br>以上链接皆无需翻墙。虽然谷歌已被封，但是独独这个网页是可以访问，并且下载浏览器的。</li></ul><h2 id="outlook-com"><a href="#outlook-com" class="headerlink" title="outlook.com"></a>outlook.com</h2><blockquote><p><strong>注意⚠：</strong> 本节无需翻墙</p></blockquote><p>首先输入邮箱后缀地址<br><img src="input-outlook.png"><br>回车后界面如下<br><img src="outlook-index.png"><br>单击<code>登录</code>按钮下的<code>&gt;创建免费帐户</code>，跳转到如下界面<br><img src="outlook-step1.png"><br>点击<code>同意并继续</code><br><img src="outlook-agree.png"><br>输入电子邮件的用户名，并选择电子邮件的域名，并点击下一步<br><img src="outlook-step2.png"><br>设定密码。如果你以后想用这个邮箱来作为你的密码管理器注册邮箱，那么你的密码一定要长，并且包含大小写字母、数字、特殊符号，还要由你自己背下来，终身记住，而不是交给密码管理器。当然，你之后再设双因素认证（2FA）也是可以的。<br><img src="outlook-step3.png"><br>输入你的出生年月日，但是要注意，你必须是成年人（未成年也可以啦，只是功能会有所限制）<br><img src="outlook-step4.png"><br>输入你的名字，再点击下一步<br><img src="outlook-bot.png"><br>验证你不是机器人<br><img src="outlook-complete.png"><br>至此，一个不需要你提供任何实名信息的邮箱注册完成了！🎉🎉🎉</p><h3 id="outlook邮箱的缺点"><a href="#outlook邮箱的缺点" class="headerlink" title="outlook邮箱的缺点"></a>outlook邮箱的缺点</h3><p>其实，outlook邮箱有个隐私问题，它并没有前端加密<br><img src="outlook-password.png"><br>如图，它用TLS明文传输了我的密码。好消息是它套了TLS，坏消息是它不防中间人攻击<a href="https://info.support.huawei.com/info-finder/encyclopedia/zh/%E4%B8%AD%E9%97%B4%E4%BA%BA%E6%94%BB%E5%87%BB.html">https://info.support.huawei.com/info-finder/encyclopedia/zh/%E4%B8%AD%E9%97%B4%E4%BA%BA%E6%94%BB%E5%87%BB.html</a><br>CDN也能看你的密码，你的信息安全取决于它是否有心盗你号了</p><h2 id="ProtonMail"><a href="#ProtonMail" class="headerlink" title="ProtonMail"></a>ProtonMail</h2><p><a href="https://proton.me/">https://proton.me</a> 邮箱具有前端加密，也可以不验证手机号就能注册。但是，注册该邮箱不得不翻墙。<br>所以，本教程就先提前进行翻墙教学</p><h3 id="使用迷雾通翻墙"><a href="#使用迷雾通翻墙" class="headerlink" title="使用迷雾通翻墙"></a>使用迷雾通翻墙</h3><p>迷雾通不需要电子邮箱即可注册使用。</p><p>访问迷雾通免翻墙镜像（截至本文发布时，可以使用）<a href="https://waa.ai/xiazaimiwutong">https://waa.ai/xiazaimiwutong</a><br><img src="xiazaimiwutong.png"><br>根据你的系统，下载最新版本<br><img src="download-geph.png"><br>双击安装迷雾通<br><img src="open-geph.png"><br>选择中文<br><img src="geph-step1.png"><br>按照如下步骤安装<br><img src="geph-step2.png"><img src="geph-step3.png"><img src="geph-step4.png"><img src="geph-step5.png"><img src="geph-step6.png"><img src="geph-step7.png"><br>启动迷雾通<br><img src="start-geph.png"><br>单击注册<br><img src="reg-geph.png"><img src="reg-geph2.png"><br>单击登录<br><img src="login-geph.png"><br>不必购买<br><img src="nobuy-geph.png"><br>迷雾通界面如下：<br><img src="geph.png"><br>单击右上角齿轮<br><img src="geph-settings.png"><br>其实此时并不需要更改配置，它会自动连接迷雾通网络，并且开启入口。给电脑配置代理，让所有能使用代理的软件指向<code>localhost:9909</code>和<code>localhost:9910</code>两个代理地址。浏览器即可翻墙，除非你没有让浏览器使用系统代理，而是不使用代理，或者单独使用其他代理配置。</p><blockquote><p><strong>注意⚠：</strong> 但我还是建议分流中国大陆流量</p></blockquote><p>回到主界面，单击<code>连接</code><br><img src="geph-connecting.png"><img src="geph-connected.png"><br>这时就可以登录墙外网站了</p><h3 id="注册protonmail"><a href="#注册protonmail" class="headerlink" title="注册protonmail"></a>注册protonmail</h3><p>输入proton.me<br><img src="proton.me.png"><br>单击<code>Create a free account</code><br><img src="proton-step1.png"><br>输入用户名，并<code>立即创建免费账户</code><br><img src="proton-step2.png"><br>输入密码<br><img src="proton-step3.png"><br>进行人机验证。好消息：</p><ol><li>无需验证备用邮箱和手机号</li><li>如图所示，密码有前端加密</li></ol><p><img src="proton-step4.png"><br>由于protonmail前端加密，忘记密码将永远失去账户（有听说protonmail有协助警方搜查的历史）<br><img src="proton-step5.png"><br>自此邮箱创建完成</p><p>以上的邮箱，我<em><strong>不能</strong></em>保证它绝对安全，能够预防盗号和搜查。但是，这些邮箱，只要你网络环境够干净，你想注册多少个就能注册多少个！完全免费，不需要任何你的个人信息和支付方式（包括比特币）。</p><h1 id="安装虚拟机"><a href="#安装虚拟机" class="headerlink" title="安装虚拟机"></a>安装虚拟机</h1><p>虚拟机我推荐2种，一种是Virtualbox，另一种是VMWare。<br>我平时一直都用VMWare，因为它运行十分流畅。但本文将只介绍Virtualbox，因为它免费，开源。而我的VMWare是破解版的，最新版可能无法破解，所以局限性很大。<br>如果有哪位读者想要我介绍VMWare的，请在评论区留言，再到长毛象上@我一下，我的长毛象联系方式在本博客首页可以找到，留言区我不怎么看，但是长毛象我天天上线。到时候我会把VMWare的安装包和激活码上传到GitHub，也就是本静态博客。</p><h2 id="安装Virtualbox"><a href="#安装Virtualbox" class="headerlink" title="安装Virtualbox"></a>安装Virtualbox</h2><p>首先，进入BIOS打开因特尔CPU的VT-x或AMD的AMD-V。此步骤难以截图，因此略过</p><h3 id="虚拟机的安装准备"><a href="#虚拟机的安装准备" class="headerlink" title="虚拟机的安装准备"></a>虚拟机的安装准备</h3><p>首先进入win10的设置界面（win11大同小异）<br><img src="windows-settings.png"></p><h4 id="关闭Hyper-V和虚拟机平台"><a href="#关闭Hyper-V和虚拟机平台" class="headerlink" title="关闭Hyper-V和虚拟机平台"></a>关闭Hyper-V和虚拟机平台</h4><p>进入应用<br><img src="applications.png"><br>向下滚动，找到<code>程序和功能</code><br><img src="cxhgn.png"><br>点击<code>启用和关闭Windows功能</code><br><img src="windowsgn.png"><br>将所有虚拟机相关的功能关闭，并点击确定，必要时重启<br><img src="disable-hyperv.png"></p><h4 id="关闭内核隔离"><a href="#关闭内核隔离" class="headerlink" title="关闭内核隔离"></a>关闭内核隔离</h4><p>进入Windows安全中心，打开设备安全性<br><img src="aqzx.png"><img src="sbaqx.png"><br>打开内核隔离，关闭内存完整性，必要时重启<br><img src="ncwzx.png"></p><h3 id="下载安装Virtualbox"><a href="#下载安装Virtualbox" class="headerlink" title="下载安装Virtualbox"></a>下载安装Virtualbox</h3><p>登录<a href="https://virtualbox.org/">https://virtualbox.org</a><br><img src="virtualbox.org.png"><br>单击<code>Download</code><br><img src="vb-downloads.png"><br>下载相应平台的VirtualBox和右边的扩展包<br><img src="download-vb.png"><br>双击安装Virtualbox<br><img src="click-vb.png"><br>按照以下步骤安装<br><img src="vb-step1.png"><br><img src="vb-step2.png"><br><img src="vb-step3.png"><br><img src="vb-step4.png"><br><img src="vb-step5.png"><br><img src="vb-step6.png"><br><img src="vb-step7.png"><br><img src="vb-step8.png"><br><img src="vb-step9.png"></p><p>关闭Virtualbox，安装扩展包<br><img src="click-ext.png"><br>按以下步骤安装<br><img src="ext-step1.png"><br><img src="ext-step2.png"><br>以上界面，拖动到底再点<code>我同意</code></p><h2 id="安装Windows-10"><a href="#安装Windows-10" class="headerlink" title="安装Windows 10"></a>安装Windows 10</h2><h3 id="下载Windows-10安装盘镜像"><a href="#下载Windows-10安装盘镜像" class="headerlink" title="下载Windows 10安装盘镜像"></a>下载Windows 10安装盘镜像</h3><p>浏览器打开<a href="https://microsoft.com/">https://microsoft.com</a><br><img src="microsoft.png"><br>搜索“media creation tool”<br><img src="mct.png"><br>根据第一个结果下载镜像制作工具<br><img src="windows-download1.png"><img src="windows-download2.png"><br>双击打开，开始制作映像<br>务必根据图中选择进行制作，请勿安装家庭中文版<br><img src="setup-step1.png"><br><img src="setup-step2.png"><br><img src="setup-step3.png"><br><img src="setup-step4.png"><br><img src="setup-step5.png"><br><img src="setup-step6.png"><br><img src="setup-step7.png"><br><img src="setup-step8.png"></p><h3 id="虚拟机安装Windows-10"><a href="#虚拟机安装Windows-10" class="headerlink" title="虚拟机安装Windows 10"></a>虚拟机安装Windows 10</h3><p>双击打开<code>Oracle VirtualBox</code>，选择<code>新建</code><br><img src="open-vb.png"><br>输入虚拟机名称，如果名称带有操作系统类型，它将自动指定默认的操作系统版本<br><img src="create-vm.png"><br>配置虚拟CPU、内存和虚拟硬盘<br><img src="vm-cpu.png"><img src="vm-harddisk.png"><br>单击<code>完成</code>，在第一次运行前务必选择该虚拟机，单击<code>设置</code>，检查虚拟机的“硬件”和网络配置<br><img src="vm-created.png"></p><h4 id="建议修改的配置"><a href="#建议修改的配置" class="headerlink" title="建议修改的配置"></a>建议修改的配置</h4><p>大部分选项都不建议修改，否则可能会导致一些BUG。<br>可以修改的选项我列在下面：<br>除非你在翻墙进行键政和黑客活动，甚至还要敏感的操作，这里可以选择允许共享剪贴板和拖拽。据我经验，在开机后更改此配置，可能会导致无法拖放和共享剪贴板<br><img src="vm-drag.png"><br>假如你要使用虚拟机<font color=red><strong>进行上述危险活动</strong></font>，那么建议对虚拟机进行加密，这样你被晶哥请喝茶之前，可以直接删除虚拟机，让检方难以取证。</p><blockquote><p><strong>注意⚠：</strong> 虚拟机加密，一定要在安装系统前！<br>在安装系统后加密，会导致加密时间非常长，甚至还会导致虚拟机系统无法启动的BUG！<br>在已经产生敏感数据后加密，已经来不及了，机械硬盘将留下明文敏感信息的痕迹！<br>在安装系统前加密，完全无需等待，之后的安装和使用，只需要输入密码进入虚拟机即可，VMWare也一样。至于为什么，等你不再是小白时，自然就明白了。</p></blockquote><p><img src="vm-crypt.png"><br>嵌套虚拟化建议打开，虚拟机套娃必备功能。VMWare在AMD电脑上无法嵌套，敬请注意。<br><img src="vm-amd-v.png"></p><p>虚拟机网卡这一块就很有说法了，这里不全介绍</p><ol><li>网络地址转换(NAT)：此虚拟机连接主机，主机对其进行地址转换（简称NAT），即给它的每个网络连接分配一个端口，然后转发给你家的路由器。电脑开全局VPN时，可以起到透明代理的效果。</li><li>桥接网卡：直接桥接到电脑的网卡。你家路由器&#x2F;交换机会收到它的MAC地址，DHCP服务也会给它分配一个跟你主机处于同一网段的IP地址。就相当于你家主机的兄弟姐妹，用爽剧的方式来解释，尽管是你从外面捡来的小弟，但在你父母面前一样有不亚于你的名分。</li><li>内部网络：无法联通主机，也无法连接你家局域网和外网，但是同一个“内部网络”名下的所有主机都可以互联，只要配置好IP地址的话。这个用途也是显而易见的，假如你发现了一个比特币病毒样本，就比如本文落笔10年前的永恒之蓝，你构建了好几个虚拟机来观察它是如何传染的。这时，你就千万不能使用NAT、桥接、仅主机，因为这些模式首先必定会感染你的主机，其中桥接网卡更是直接殃及你家局域网中所有电脑！因此只能使用内部网络来进行测试。<br>正常的用法也有很多，就比如你要练习去考网络工程师的证书，你的虚拟机可以模拟路由器交换机。</li><li>仅主机：顾名思义，让你的虚拟机只能连接主机。但是你的Windows主机不能当软路由使用。一般来说，你开全局代理，不分流，这样你的虚拟机就无法直连任何墙内网站，也不怕跳转的把戏。跨境电商连自建节点、键政人员连tor使用这个模式。</li><li>NAT网络：这个我用得少，你可以这么理解：虚拟机通过NAT连接外网的同时，虚拟机之间也可以互联。就是<code>1</code>和<code>3</code>的杂交版。</li></ol><p>剩下的功能我没试过。你最好根据需要选择，如果你需要拿虚拟机搭建Fediverse实例（长期24x7开机，固定IP），那么就选择桥接网卡；如果你翻墙键政，甚至翻墙还回国冲塔，以及从事黑客活动，还有其他诸如上暗网看&#x2F;搞猎奇东西（本文面向小白读者，应该不会涉及这些），那就选择仅主机Host-Only网络</p><p><img src="vm-network.png"></p><h4 id="全新安装Windows-10官方原版纯净系统"><a href="#全新安装Windows-10官方原版纯净系统" class="headerlink" title="全新安装Windows 10官方原版纯净系统"></a>全新安装Windows 10<del>官方原版纯净系统</del></h4><p>单击选择你刚创建地虚拟机，再单击<code>启动</code>运行虚拟机<br><img src="vm-poweron.png"><br>如果你是未挂载iso文件，且是<strong>第一次运行该虚拟机</strong>，那么会提示你挂载光驱。如果不是第一次，或者其他未知原因没挂载光驱导致无法启动，你也可以手动通过设置挂载光驱。<br><img src="insert-iso.png"><br>选择其它<br><img src="vm-others.png"><br>找到刚做好的<code>Windows.iso</code>，点击<code>挂载并尝试启动</code><br><img src="windows.iso.png"></p><p>接下来，进入win10安装步骤<br><del>这些步骤不会用到老毛桃PE系统，也不含360和搜狗输入法</del><br><img src="win10-step1.png"><br>选择64位<br><img src="win10-step2.png"><br>点击<code>下一页</code><br><img src="win10-step3.png"><br>单击<code>现在安装</code><br><img src="win10-step4.png"><br>这里点击<code>我没有产品密钥(I)</code>。如果你有，可以安装完后再激活；如果没有，你可以在安装完后使用激活工具激活，但这是盗版</p><blockquote><p>题外话：如果不玩那种很冷门的3A大作游戏，强烈建议不使用Windows系统，Linux既免费又比Windows好用。现在中国政府也弃用Windows了。<br>最早政府用的也都是盗版，后来被微软发现了，就用上了“政府专用版”的Windows。</p></blockquote><p><img src="win10-step5.png"><br>选择<code>Windows 10 专业版</code><br><img src="win10-step6.png"><br>接受许可条款<br><img src="win10-step7.png"><br>这里要注意，由于是安装盘引导启动，所以<strong>只能</strong>选择<code>自定义：仅安装 Windows （高级）（C）</code>。如果点击升级的话，它会重启，跳回开头第一步！<br><img src="win10-step8.png"><br>这里只有一个盘，无需分区，直接点<code>下一页</code>即可。<em>如果这个盘里面有其他分区，那么就需要在这里手动分区。</em><br><img src="win10-step9.png"><br>这就是win10的安装&#x2F;重装界面，如果你的硬件（CPU和内存）没问题，在虚拟机安装系统时无需任何操作。如果在12代因特尔CPU的主机（非虚拟机）上全新重装win10，则在上一步需要“加载驱动程序”。<br>其余步骤，在虚拟机上和真实电脑上基本上没有任何差别，在这里到下一步操作，需要等很长时间。<br><img src="win10-no-push.png"><br>在安装过程中，之后显示的这个界面都不要按任何键，应该从硬盘引导启动。如果按了，那么又会跳回第一步。<br>跳回第一步也不必从头安装，只要关机后，再进入BIOS或者虚拟机的引导选项，把光盘&#x2F;U盘引导给拖到最底下，或者删掉，即可继续安装。<br>在安装完成之前，一律不准退出安装光盘&#x2F;拔出安装U盘。<br><img src="win10-step10.png"><br>选择地区，不考虑键政和跨境电商的用途，这里可以选择中国。<br><img src="win10-step11.png"><br>根据习惯，我选择拼音。我建议win10以上一律使用微软自带输入法，否则会泄露隐私。<br><img src="win10-step12.png"><br>选择跳过<br><img src="win10-step13.png"><br>这里一律选择<code>针对组织进行设置</code>。<br>有读者就要问了：我不属于任何组织为啥要选这个啊？这是因为你选了“针对个人”，它会强制你登录你的微软账号。这对你的隐私是重大打击。最好安装Windows之前，就拔掉网线，不要登录任何WiFi。<br><img src="win10-step14.png"><br>这里不要登录，选择<code>改为域加入</code>。选择这个，并不会让你加入域<del>，加域操作都是等安装完，退出安装盘后手动操作的，本教程不教这个</del>。<br><img src="win10-step15.png"><br>这里输入你的第一个用户的用户名。<br><img src="win10-step16.png"><br>这里可以设置密码，空白直接点<code>下一页</code>即为无密码。安装结束后可以再设置或者修改。<br><img src="win10-step17.png"><br>隐私全部选否<br><img src="win10-step18.png"><br>这里也是一样都不要选，直接跳过。<br><img src="win10-step19.png"><br>臭微软跟政府和360一样，都是压在我们头上的三座大山，所以我们都在连夜逃离Windows。点击<code>以后再说</code>。<br><img src="win10-step20.png"><br>这里直接点下一步，无法不同意。其实数据存在美国比存在中国大陆要好，因为他们的数据库都是加密的，这样你的证件照片不至于因此出现在tg电报群里<br><img src="win10-finish.png"><br>Windows的安装步骤基本上已经全部完成，至此可以退出安装盘。</p><h4 id="安装vmtools"><a href="#安装vmtools" class="headerlink" title="安装vmtools"></a>安装vmtools</h4><p>虚拟机安装完操作系统，会有分辨率太低的问题。相比在真电脑上安装Windows，虚拟机不需要安装一大堆驱动程序。<br>只有安装增强工具，虚拟机才能共享剪贴板和拖放。<br>首先，单击<code>设备</code>&gt;<code>安装增强功能</code>，将虚拟机光驱加载的文件切换为增强工具安装包。<br><img src="vmtool-step1.png"><br>双击运行安装程序<br><img src="vmtool-step2.png"><br>按照如下步骤安装<br><img src="vmtool-step3.png"><br><img src="vmtool-step4.png"><br><img src="vmtool-step5.png"><br><img src="vmtool-step6.png"><br><img src="vmtool-step7.png"><br>选择重启<br><img src="vmtool-finished.png"><br>安装完毕，现可拖放文件，且分辨率会根据窗口大小灵活变化</p><h2 id="虚拟机安装Ubuntu"><a href="#虚拟机安装Ubuntu" class="headerlink" title="虚拟机安装Ubuntu"></a>虚拟机安装Ubuntu</h2><p>Linux有众多发行版，其中生态最好的有Ubuntu。相比于国产的麒麟系统，它很少发生缺少软件依赖的情况。<br>Linux本身也是个有趣的开源操作系统，非常建议网友们学习。<br>比起操作，我想先啰嗦几句最常用的理论知识。</p><h3 id="你需要懂的知识"><a href="#你需要懂的知识" class="headerlink" title="你需要懂的知识"></a>你需要懂的知识</h3><h4 id="摆脱Windows的分区思维"><a href="#摆脱Windows的分区思维" class="headerlink" title="摆脱Windows的分区思维"></a>摆脱Windows的分区思维</h4><p>Linux的文件系统不分C盘D盘。有的小白读者要说了，我中标麒麟也有C盘和D盘啊。那个也只是国内厂商骗骗老爷用的，底层还是抄的开源软件。<br>不论你是什么系统，硬盘都是一样的。机械硬盘是从0磁头到最后一个磁头，每个磁头都是分很多个扇区。系统说：“我要到第几扇区的数据！”，硬盘就会控制磁头的距离和角度，读取那个扇区的数据。固态硬盘没有磁头，但是数据存储的结构也是一样的，最后也一样要跟整个计算机系统交差，还是得经常跟机械硬盘一起共事。<br>硬盘可以抽象成下图所示：<br><img src="volume.png"><br>你用市面上的那种硬盘分区助手，分出来的区都是这样的。当然，512字节的引导区不会显示，只能用“重建MBR”选项来擦写。分区1可能叫C盘，也可能叫&#x2F;dev&#x2F;sda1，插到Windows系统它还会提示“分区已损坏”，问你要不要格式化。这时可千万不要格式化。<br>Linux和其他类UNIX的系统，你是无法用网上下载的PE盘进行分区的。要想共存，也可以，你必须让Windows PE盘的分区助手给它空出足够未分区的地方。而Linux系统（及其安装盘）是可以识别出哪个分区是Windows的，哪个分区是Linux的。</p><p>对于Linux系统，你可以分区，也可以不分区。它没有C盘D盘这个说法，只有&#x2F;dev&#x2F;sda1，&#x2F;dev&#x2F;sda2这样的分区。Windows的系统盘也一样这么显示。你可以让用户的文件<code>/home</code>放到数据盘里去，下次重装完再重新挂载，根本不怕数据丢失。也可以把网站数据单独放到其他硬盘上，系统坏了就重装系统，或者把盘拆下来挂载到其他电脑上继续运行。</p><p>以后我再写教程教你如何给Linux系统分区，今天不分区。</p><h4 id="命令行与vim"><a href="#命令行与vim" class="headerlink" title="命令行与vim"></a>命令行与vim</h4><p>要熟练使用Linux桌面系统，你最好会命令行。要想使用root权限修改配置文件，你可以用<code>sudo 你的文本编辑器</code>，但用vim最好。<br>搭建梯子、部署Fediverse实例、部署其他各种服务，你可以把配置文件下载下来修改（这样的好处就在于不怕改到一半断电断网），但最好，或者说一定，要会使用vim。<br>vim最基本的操作：<br>首先进入vim，你是正常模式。在正常模式，输入<code>:</code>，你就进入了命令模式。<code>:q</code>是退出，<code>:w</code>是保存，以此类推，输入<code>:wq</code>是保存并退出。命令后跟上<code>!</code>，是强制执行，就比如你修改文件未保存，要放弃保存并退出，就输入<code>:q!</code>强行退出。<br>在所有模式下，你按方向键都可以移动光标。<br>在正常模式下，你按下<code>i</code>，直接进入插入模式。<br>在所有模式下，你按下<code>Esc</code>或<code>Ctrl+]</code>即可回到正常模式。</p><p>作为初学者只要会这些就行了，如果需要快速移动、搜索替换、宏命令操作、撤销重做，我只建议你</p><blockquote><p>带着问题学，活学活用，学用结合，急用先学，立竿见影，在“用”字上狠下工夫</p></blockquote><h3 id="下载Ubuntu"><a href="#下载Ubuntu" class="headerlink" title="下载Ubuntu"></a>下载Ubuntu</h3><blockquote><p>本章节所有操作全部无需翻墙</p></blockquote><p>访问 <a href="https://ubuntu.com/">https://ubuntu.com</a><br><img src="ubuntu.com.png"><br>这时发现它有中文网站<br><img src="cn.ubuntu.png"><br>点击上面的<code>下载</code><br><img src="ubuntu-download.png"><br>这里直接下载<code>Ubuntu 24.04.03 LTS</code>。如果显示403了，在英文站下载。速度较慢，但是裸连速度仍然可以接受。<br>下载完成后，校验文件，以免迅雷这种宵小之辈篡改你的文件 <a href="https://www.bilibili.com/video/BV15pFszyECB/">https://www.bilibili.com/video/BV15pFszyECB/</a><br><img src="checksum.png"></p><h3 id="安装Ubuntu"><a href="#安装Ubuntu" class="headerlink" title="安装Ubuntu"></a>安装Ubuntu</h3><p>首先创建虚拟机，这里图片略过。<br>要注意的是，安装系统时注意把网卡断开！因为安装时，默认不可避免地会下载更新，而更新地软件源来自美国！至于更新，请在安装完后，更换国内的软件源，再进行更新。只有这样才能跑满我家可怜的百兆带宽和你家的千兆带宽。</p><p>光盘引导ubuntu<br><img src="ubuntu-step1.png"><br>选择第一个，试用或安装Ubuntu<br><img src="ubuntu-step2.png"><br>选择语言，根据需要选择中文或英文<br><img src="ubuntu-step3.png"><br>这里根据你的键盘鼠标的可用性和你的手眼残疾程度选择辅助功能<br><img src="ubuntu-step4.png"><br>之前选了中文，这里就是汉语，一般来说不用换。如果之前选了英文，可以选择检测键盘布局<br><img src="ubuntu-step5.png"><br>这里不要联网<br><img src="ubuntu-step6.png"><br>这里直接选择安装<br><img src="ubuntu-step7.png"><br>这里不选择自动安装<br><img src="ubuntu-step8.png"><br>这里看使用环境安装应用<br><img src="ubuntu-step9.png"><br>这里发现ubuntu似乎对N卡适配很好<br><img src="ubuntu-step10.png"><br>不分区，不加密，快速安装。可以在以后重新分区<br><img src="ubuntu-step11.png"><br>设置密码。你可以免输入密码，但是一定要有。如果忘记的话，只要电脑在你手上，就可以重置登录密码（如果加密硬盘的密码忘记了，那就只有删除重装了）。<br><img src="ubuntu-step12.png"><br>设置时区。一般用途下，桌面版设置自己所在的时区，服务器版设置UTC。<br><img src="ubuntu-step13.png"><br>安装前最后的确认。其实不对的话，也可以擦掉再重装的。<br><img src="ubuntu-step14.png"><br>正式开始安装，点击右下角图标可以查看详细情况，也就是它的安装详细步骤<br><img src="ubuntu-step15.png"><br><img src="ubuntu-step16.png"><br>安装完成，单击重启。一般单击重启会自动弹出光盘，不像Windows这么啰嗦。<br><img src="ubuntu-step17.png"><br>安装完成。接下来要更换软件源了<br>连接网线，根据此步骤切换最快软件源<br><img src="apt-step1.png"><br><img src="apt-step2.png"><br><img src="apt-step3.png"><br><img src="apt-step4.png"><br><img src="apt-step5.png"><br>选择重新载入<br><img src="apt-step6.png"><br>这里相当于自动运行了一遍<code>sudo apt update</code><br><img src="apt-step7.png"><br>由此可见，换源已成功<br><img src="apt-update.png"></p><h3 id="安装增强功能"><a href="#安装增强功能" class="headerlink" title="安装增强功能"></a>安装增强功能</h3><p>就像前面Windows一样，点击“安装增强功能”插入虚拟光盘。<br>点开光盘，自动运行软件<br><img src="linux-vmtools.png"><br>提示缺少软件，但是幸好Ubuntu生态好，可以通过包管理器安装所缺软件<br><img src="vmtools-error.png"><br>提示缺少编译软件<br><img src="error2.png"><br>这时候要安装<code>build-essential</code>，过程如果不翻墙，使用阿里云的源，也是非常的慢。<br>安装完成后，放大缩小窗口，它也会适应分辨率。这样说明安装成功了。<br><img src="linux-success.png"><br>最后给操作系统进行一次升级，弥补一下安装时没有联网跳过的步骤<br><img src="apt-upgrade.png"></p><p>有了虚拟机以后，就可以藏你的翻墙软件甚至是黑客工具了。如果晶哥上门，你甚至可以将它们一键删除。<br>下一篇保姆级教程，将会教你如何使用翻墙软件。<br>顺序将会是,</p><ol><li>从零开始下载迷雾通</li><li>从GitHub上下载梯子</li><li>租用VPS（需要用到本教程申请的邮箱）</li><li>搭建翻墙节点</li></ol><p>最后可以用虚拟机进行host-only翻墙联网👍</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;各位读者，新年好！🎇🎇🎇&lt;br&gt;我早就想写一篇小白也看得懂的关于搭建长毛象实例，以及其他Fediverse实例的建站保姆级教程了，但是从哪开始，这我认为需要从最基础的开始。如果没耐心看我废话，可以查看本站目录，或者跳到下一课去阅读。&lt;/p&gt;</summary>
    
    
    
    <category term="翻墙教程" scheme="https://blog.xuzhou-jiang.su/categories/%E7%BF%BB%E5%A2%99%E6%95%99%E7%A8%8B/"/>
    
    <category term="隐私安全" scheme="https://blog.xuzhou-jiang.su/categories/%E7%BF%BB%E5%A2%99%E6%95%99%E7%A8%8B/%E9%9A%90%E7%A7%81%E5%AE%89%E5%85%A8/"/>
    
    
    <category term="言论自由只在这里" scheme="https://blog.xuzhou-jiang.su/tags/%E8%A8%80%E8%AE%BA%E8%87%AA%E7%94%B1%E5%8F%AA%E5%9C%A8%E8%BF%99%E9%87%8C/"/>
    
    <category term="多图预警" scheme="https://blog.xuzhou-jiang.su/tags/%E5%A4%9A%E5%9B%BE%E9%A2%84%E8%AD%A6/"/>
    
  </entry>
  
  <entry>
    <title>美国反对美国</title>
    <link href="https://blog.xuzhou-jiang.su/2025/12/28/A-A-A/"/>
    <id>https://blog.xuzhou-jiang.su/2025/12/28/A-A-A/</id>
    <published>2025-12-28T15:09:37.000Z</published>
    <updated>2025-12-28T15:15:26.000Z</updated>
    
    <content type="html"><![CDATA[<h1 id="美国反对美国（America-against-America）"><a href="#美国反对美国（America-against-America）" class="headerlink" title="美国反对美国（America against America）"></a>美国反对美国（America against America）</h1><blockquote><p>作者：王沪宁</p><p>发行时间：1991</p><p>注：经网友提醒 [issues6](<a href="https://github.com/zealotCE/AmericaOpposeAmerica/issues/6">项目名字可能不太对 · Issue #6 · zealotCE&#x2F;AmericaOpposeAmerica (github.com)</a>)，<strong>against</strong> 从词义上来说远比原项目名称中的 <strong><a href="https://github.com/zealotCE/AmericaOpposeAmerica">Oppose</a></strong> 更加合适因此未来我都会以 America against America 作为它的英文译名。</p></blockquote><h1 id="序"><a href="#序" class="headerlink" title="序"></a>序</h1><p>从 1988 年 8 月下旬起，我应邀去美国做学术访问，前前后后六个月时间。在这期间，我去过大大小小三十几座城市和近二十所大学，在数十个政府和私人部门做过调查，与众多的美国人和外国人讨论美国。我将每天讨论、访问和观察到的记录下来，于是有了这本书。</p><p>显而易见，我是作为一位观察者而非考察者去研究和看待美国这个社会的，可以说，在美国的访问，我是有目的的，这就是更多更细更真实地认识这个头号资本主义国家。我们应当把它当作一段历史、一种文化、一个民族、一套制度来看待，而不把它看作几个抽象的教条的概念。我在 1987 年出版的《比较政治分析》一书中提出了运用历史——社会——文化条件的景观分析社会政治运动的设计。在那本书中，大体上只是宏观框架的设计。此次也试图用这种方法来具体分析一个政治共同体——美国。</p><p>所以，这本书根本的目的，不在于它所描绘的那些纷繁多样的层面，那些五颜六色的景观，那些错综复杂的运动，而在于探讨美国这个社会的政治和社会管理过程，尽管本书力图展开尽可能大的层面，涉及尽可能多的话题，但其贯彻始终的分析仍是上述主题。一个社会的发展和流变，与它的政治和管理方式不可分割。可以说，有什么样的政治和社会管理，便有什么样的社会发展。分析和理解美国，离开了这一逻辑是困难的。我只想通过对社会多层面的解剖，来回答一个简单的问题：“为什么有美国？”这个问题虽然简单，但它已远远超出了我的能力，我深知这一点。</p><p>本书的方法是用历史一社会一文化条件的框架来分析美国社会，而不把其中任何因素孤立起来考虑。人类的社会生活也罢，政治生活也罢，文化生活也罢，是无限错综复杂的交织的网络。如果想孤立地或者说简单地分析和看待其中的一个问题，恐怕难以奏效。</p><p>既然是具体运用上述方法，那它就要求对一个社会的各个方面做出仔细和生动的观察、记录和分析。所以本书的具体描绘和事实记录多于抽象推理。任何抽象推理都只能源自对事实的观察和分析，抽象推理要能够说服人，很重要的一点是有没有令人信服的事实奠基。有时候人们需要做一种工作，这就是提供思维的机会，而非思维的结论。当然，本书中的各种现实生活记录都跟随着我的思维和结论，但我也力图使它能为他人提供思维的机会。</p><p>本书以美国为分析对象，因为美国同中国一样，构成了二十世纪人类的一种特殊现象，可称为“美国现象”。“中国现象”就是这个具有两千多年悠久历史的文明古老大国为什么在近代中衰落了？为什么落后于世界现代民族之林？这引起几代仁人志士苦苦思索。而“美国现象”的维度却不同，人们感到疑惑的是：为什么这个只有两百年短暂历史的民族，会成为当今世界首屈一指的发达国家？对于这两种现象，我认为生活在二十世纪的学者有责任加以研究。作为一名中国学者，具有双重的责任，他既有责任研究“中国现象”，也有责任研究“美国现象”。由此方能更好地认识自我和世界，更好地勘探中国的强盛之路。</p><p>《美国反对美国》，大概是一个奇怪而又颇为费解的书名。我起这个书名的用意在于表明，美国不是一个简单的均质的整体，用一句话就可以打发掉。在过去的年代，人们从教条主义的观念出发，把美国仅仅看成是“剥削剩余价值”，“资产阶级专政”、看得一无是处，那么现实的美国便会反对这祥的“美国”、僵化观念中的美国。如今又出现了另一种极端，有的人把美国想象成富丽天堂，十全十美，那么现实的美国同样反对这样的“美国”、理想化的美国。包括美国社会本身，它有它的肯定性力量，也有它的否定性力量，凡是在能发现肯定性力量的地方，都能发现否定性的力量。这便是《美国反对美国》的基本意蕴。</p><p>《美国反对美国》，表明了社会的基本运动。但凡只要是人类社会，就不可能是铁板一块，就不能也不可能把一个社会都归于一个既定的概念之下。《美国反对美国》，表示了本书试图揭示美国社会中什么因素分别构成这两种相对的为量。我们无法用一句话来说美国是什么，要说的话，只能是：“美国反对美国”。</p><p>越是深入地研究美国，越是摆脱了浮光掠影的图景，越容易发现美国社会这种内在的矛盾。作为一名学者，把一个社会当作科学研究的对象来加以研究，就不能用玫瑰色来涂抹自己的对象，当然也不能用煤灰色来涂抹它。而应当客观地辨别这个社会的利弊所在。总的说来，学者对既存的事物都应持批判的态度，这是推进社会发展最重要的动力。对美国，我是持这种批判态度的。值得注意的是，美国社会上存在的各种机制，无论是好的还是坏的，均是这个社会历史一社会一文化条件的产物，只有在这个环境中它们才存在，不能简单地将它们套用到其他社会中去。在这方面，不同国家之间不可能简单模仿。</p><p>美国是一个大国。在这个大国里，举出一种美国形象来，就可以举出一种与之对立的美国形象。如一般认为，美国是富甲天下的国家，的确，生活在这个地方的不少人很富有，富到拥有私人喷气客机的也不乏其人。大多数民众的生活也可以讲是“安居乐业”，普通人家一般都拥有小汽车等设备。但如果说，这就是美国，那人们马上就可以描绘出另一种美国。在加利福尼亚大学伯克利分校，有一块地方被称为”人民公园”（People’s Park）。所谓“人民公园”，原是伯克利分校的一块空地，但后来被无家可归的人占据。我在的时候，每天大约有上百名穿得破破烂烂始无家可归的人在那里过夜，他们有的用破布搭了小账篷，有的就在地上铺上报纸，席地而睡。这些美国人肮脏、污秽、无精打采的样子，无论如何不符合美国的概念。每天早晨由教会慈善机构来发早点，大学的游泳池定期开放，让他们来洗身。就在布什宣布就职第四十一任总统那天晩上，我看到在旧金山的布什大街两旁髙楼的门洞里，睡着不少无家可归的人。这不是美国吗？这是美国吗？恐伯不能用一字来回答。</p><p>一般人也认为美囯是一个西方民主国家，而且是一个典型的西方民主国家，美国人也以此为荣。宪法、竞选、三权分立、公民参政，如此等等，显示了这种制度的一个侧面，但从另一个侧面看，每一个平民百姓真的能主导这个国家的政治吗？我在本书中的分析表明，主导政治的权势集团是凌驾于平民百姓之上的。在美国的资本主义制度下私有财产对政治民主的制约，不能忽略。连美国学者都表示过：“在经济权力的差别是那么大，以致一个集团可以用非政治手段来决定另一个集团祸福的地方，一种政治的民主就不可能发挥适当的功能。因此，真正的政治民主必须包含着被统治者有通过他们的代表来控制经济政策的权利。”（悉尼•胡克：《理性、社会神话和民主》，第286页）美国的经济决策权主要地控制在私人财团手中。这是民主吗？这是不民主吗？恐怕也不能用一字来回答。</p><p>像这类悖论，比比皆是。说的是美国是一个富得流油的国家，也可以说美国是一个穷人满街的国家；说美国是一个典型的西方民主国家，也可以说美国一个不那么民主的国家；说美国是一个教育发达的国家，也可以说美国的教育问题成堆；说美国是一个平等至上的国家，也可以说美国并不那么平等；说美国是一个稳定发展的社会，也可以说美国是一个危机重重的社会。如此等等，我的想法是，用事实的美国反对想象中的美国。</p><p>美国仅是一个资本主义国家，也不能代表所有的西方资本主义社会。我仅仅想通过美国这个个案的研究，来促进我们对资本主义的认识，间接地也促进对社会主义的认识。</p><p>一百五十年前，马克思和恩格斯就在《共产党宣言》中宣布： “随着大工业的发展，资产阶级赖以生产和占有产品的基础本身也就从它的脚下被挖掉了。它首先生产的是它自身的掘墓人。”（《马克思恩格斯选集》，第一卷、第 263 页）列宁在本世纪初早就宣布帝国主义为“垂死的”和“腐朽的”。这么多年过去了，应该说，资本主义依然在发展，并且不可低估。历史唯物主义的判断和分析，从历史发展来看，是正确的。但历史唯物主义指示的人类社会犮展规律，需要历史条件的成熟。在这些条件没有成熟的时候，任何主观的判断反而不符合历史唯物主义的逻辑。长期以来，受意识形态强化的推动，一度对资本主义全盘否定，这一是受了教条主义的影响，教条主义使人们无法客观地、科学地判断资本主义社会，二是“左”的思潮的影响，一切以阶级斗争为纲，这干扰了我们对整个世界的透视，也妨碍人们借鉴其他国家的先进经验。不仅妨碍这一点，实际上也妨碍了人们正确认识和把握资本主义的弊端。</p><p>作为人类社会，无论是什么制度，都会有矛盾，冲突，需求。了解不同的人类社会通过什么方法来解决矛盾，缓和冲突，满足需求，应该是有益的。如若我对这些问题的分析，有助于中国社会的发展和进步，那就实现了我的初衷。</p><p>我想，对任何事物的认识，首先是准确或者精确地了解和把握它，然后才是分析和评价。本书即本着这样的逻辑。</p><p>本书共有十一章，我想在这里扼要点明一下：（1）社会不均衡发展及其诸特点；（2）主导政治生活的价值观念及其流变；（3）民族的多样性格及其社会功效；（4）调节人们社会活动的正式和非正式的机制；（5）在社会上活跃的政治力量及其关系；（6）竞选中的民主和非民主因素；（7）自上而下的政治运作及其特征；（8）非政治的协调机制及社会化的管制；（9）文化、价值观念乃至制度的复制与教育的关联；（10）思想在社会发展和管理中的作用；（11）危及未来发展的种种潜流。</p><p>虽然这十一章包含了不少方面，但由于对象是一个庞大的国家，所以实际上涉及的面只是美国社会有限的层面。从这个角度看，我想本书有两点不足：</p><p>第一：本书所涉及的面有限，不可能涵盖美国林林总总的各个层面，因此应该说有局限性。不能说这些面能充分地反映本书所要探讨的主题。我想做“窥斑见豹”的事，但问题是“斑”找到没有。我想是找到了一些，但不多。好在我们可以找到大量其他的文献，可以弥补本书的不足。</p><p>第二，我是作为一名观察者而非考察者来分析美国社会的，对不少事物均属于走马观花，有些数据及材料虽有来源，但达不到严格的统计学水准。恐怕对有些问题的论述，会是主观判断，甚或谬误。因此我希望人们从宏观社会学的角度来读这本书，而不要把它当做微生物学。</p><p>另外，在这本书中，我也不想用太多的思辩分析和理论引证来折磨读者，本书的目的不在于此。</p><p>最后，我要感谢很多机构和朋友，他（它）们对本书的成稿起了极大的作用，没有他（它）们，本书是不能写成的。</p><p>从机构来说，我要感谢美国政治学会（APSA），中国政治学会代表团应美国政治学会的邀请，由美方安排了非常丰富的计划，尤其是往美国实际政治运作方面，中国政治学会，给了我这样一个机会；美中学术交流委员会（CSCPRC），邀请我在代表团结束访问之后在美国做三个月的访问学者，提供了全部费用；复旦大学，安排出这样长的时间让我离开教学工作，使我有时间研究这一课题；爱荷华大学（The University of Iowa）政治学系在三个月的时间里接待了我，并向我提供了所有研究和办公的便利；密歇根大学的中国文化研究中心，俄亥俄州的迈阿密大学政治学系，加利福尼亚大学圣地亚哥分校国际关系学院，它们都安排我做了短期的访问；加利福尼亚大学的伯克利分校的东亚研究所，我在那里做了三个星期的访问学者，受到热情的接待。最后我要感谢日本庆应大学法学部，在那里的一周访问使我获得“太阳帝国”一节的感性认识。</p><p>从个人来说，那就太多了，我想感谢：美中学术交流委员会的佛杰纳·严女士，她精心安排了我的访问计划；爱荷华大学的斯代维斯教授和家人，他在三个月中给我提供的便利是任何他人不能比拟的；爱荷华大学政治学系主任道格拉斯•马德森教授及全体教职人员，他们帮助我克服了许多困难，其他的人还有美国政治学会主席路辛·派伊教授，迈阿密大学的阿诺德教授，密歇根大学的奥克森伯格教授和李侃如教授，锡拉求斯大学的罗森勃鲁姆教授，加利福尼亚大学圣地亚哥分校的马尔•卡勒教授，加利福尼亚大学伯克莱分校罗伯特•斯卡拉华诺教授和高若斯教授；日本庆应大学国分良成教授等人。他们给了我宝贵的帮助。</p><p>我要感谢我在美国的中国朋友，他们在美国生活多年，许多见解令我茅塞顿开，他们是郑世平、沈依、陈峰、公婷、周雪光、余旭、王人力、吴丹丽、林至敏、徐骅华、靳平、盖哲娅、赫雨凡、杨日均、黄庚、朱晟等人。他们生活在美国的不同地方，在我到达他们那里时，都得到了最典型的中国式的款待。</p><p>我还想感谢倪世雄副教授，我在伯克莱与他朝夕相处，他给了我真诚的帮助。在本书的最后整理阶段，任晓、仇开明、姚勤、郭定平、丁春芳等人帮助整理了草稿，丁春芳精心校读了全部书稿，在此表示衷心的感谢。我也感谢我们系资料室和办公室的全体人员，他们总是那样乐意帮助我。</p><p>我还要感谢我的妻子周琪，她对我的帮助是任何人不能替代的。</p><p>王沪宁</p><p>1989 年 4 月 1 日</p><p>于复旦大学国际政治系</p><h1 id="一、不均匀的土地"><a href="#一、不均匀的土地" class="headerlink" title="一、不均匀的土地"></a>一、不均匀的土地</h1><h2 id="1-美国制造的疑惑"><a href="#1-美国制造的疑惑" class="headerlink" title="1.美国制造的疑惑"></a>1.美国制造的疑惑</h2><p>CA985 经过日本东京，然后长途飞越波涛汹涌的太平洋，抵达旧金山。由于飞机误点，与欧洲抵美和日本抵美的班机挤在一起。平日里十分宽敞的取行李及过海关的大厅显得十分拥挤，人声鼎沸。不论从何处来的人，都带着一种抵达美国的兴奋心情。有一架飞机可能是从法国来的，许多人讲法语。排队过关，等了一个多小时，大家也象在中国一样发牢骚，等的时间太久。许多人都以为排队在西方应该是没有的，岂料一到美国就要排这么长时间的队。旧金山机场入境处的海关办理柜台分为三类：一是美国公民，二是非美国公民，三是新移民。左边前两个入口为美国公民的入口，人烟稀少，显出作为美国公民的优越。非美国公民，入关口人数最多，顿觉低人一等。</p><p>在入关处，有成群的日本人。现在世界上日本人到处旅游、经商，成群结队，显示了富国富民的实力。尽管不少外国人觉得日本人不可爱，但这种经济力量使人不得不刮目相看。据说，由于日本人太多，美国政府正在考虑给予日本人一种待遇：免签证。据统计，这样一来，美国海关入口处的办关速度可加快三分之一。但外交上需要同等待遇，日本人似乎不愿意免美国人的签证。从日本民族的发展，人们至少可以得出两个结论：一是经济实力是决定一个民族国际地位和国际形象的基本力量；二是一个民族的国际地位和国际形象并不仅仅取决于经济实力。</p><p>美国是一个许多方面都相当发达的社会，任何人一到美国都会感觉到一种“未来的冲击”。因此，人们就会思考，一种人是想如何享受美国，另一种人是思考为什么有美国。对后一个问题，不同的人有不同的回答。我问朋友。一位朋友答：一是资源异常丰富，二是鼓励人才竞争。另一位朋友补充说，至少人们刚到美国时是这样。我问 G，一位在斯坦福大学攻读博士学位的朋友，答：传统。我觉得这是一个最抽象、但又最有价值的解释。任何社会的发展都不是纯经济的力量所致，也非短期内的行为调整可致。一个社会发展到这样“富甲天下”的程度，绝非人为强行操作的结果。那么什么力量在主导这个社会中的人做出世代的奋斗呢？人们可以得出许多具体的概念，如创新、奋斗、勤俭等。最为重要的是，这些东西能否成为一种文化基因，一种传统。不论什么有利于社会发展的因素，如果不是构成传统，便不可能根深蒂固地发生作用。任何一种好的因素要产生作用，必须有几代人的努力。美国人整天讲创新，但实际上传统势力极强。中国人也整天讲创新，结果是传统屡起屡伏。有人言，美国人讲创新，并不在于反对传统。美国人的传统和创新如同一物，今日的传统只不过是三、五十年前的创新。中国人讲创新意在反传统。然而，一、二千年的传统却又不易反掉。</p><p>今天，人们大量涌入美国，便我们不能不深长思之。出来前几天，国内理论界正热烈讨论一个主题，就是对社会主义和资本主义的再认识。这个问题之所以目前在国内引起人们的讨论，基本原因在于社会主义搞了几十年，在经济等方面却不如资本主义。马克思在一百五十年前论证的社会发展程式究竟是否符合人类历史发展的进程？社会主义是否能最终战胜资本主义？这是当代人的疑惑。想起在飞往美国的波音 747 飞机上放的电影《洪湖赤卫队》。中国人推翻了长期以来压在他们身上的三座大山，但这有没有确保中国社会发展的方向？像中国革命这样一场以农村包围城市为主，以农村人口为主要力量的革命，对一个社会的发展究竟会会产生什么样的影响？的确值得思考。</p><p>今日美国之发展，以其经济繁荣，其政治过程、其生活方式、其国际地位，在当今世界上制造了一个大大的疑惑。处于发达国家中的人带有这样的疑惑：人类的科技和物质生活发展到这一步。是否违背了人的本性？是否会导致地球资源的枯竭？是否会最终致使人类走向毁灭？罗马俱乐部的同仁们对此忧心忡忡，长呼短吁。处于发展中国家的人却带着截然不同的疑惑：是什么力量创造了如此令人眼花繚乱的物质文明？什么体制在管理和智力上为这种发展创造了良好的条件？这样一个境界是偶然的抑或必然的？人们开始怀疑这种体制，人们开始怀疑自己的体制。无论怎么说，美国都制造了一种疑惑。</p><p>走进美国，便走进了这种疑惑。没有走进美国，也会陷入这种疑惑。一个奇怪的现象是：走入疑惑易，走出疑惑难。</p><h2 id="2-曼哈顿和唐人街"><a href="#2-曼哈顿和唐人街" class="headerlink" title="2.曼哈顿和唐人街"></a>2.曼哈顿和唐人街</h2><p>飞机抵达纽约上空。下来后，取了行李。人都走光了，还不见约定来接人的朋友的影子，心里紧张。听朋友介绍，一到纽约，会觉得一种恐怖感，这里犯罪率极高。生怕遭遇上歹徒，因而颇为忐忑不安。半个小时后，朋友前来，如释重负。出机场后，直接来到联合国大厦。联合国大厦的建筑雄伟堂皇。我们去了安全理事会，拍了照。又前往联合国大会会场，找到中国代表团的席位，坐上去拍了一张照片。又在联合国讲台上各人照了一张发表演说的照片。在联合国参观时，看到各国送的精美而贵重的礼品，如中国的象牙雕塑，泰国的御船，苏联送的图画等等。这表明这个世界上的公民都想在联合国得到一种声誉，但现实生活中又有多少国家信奉联合国的原则呢？这似乎与一个人的团体一样，每个人都想加入它，并显示自己对它的热爱，但实际上处处违背它。当今世界，利益多元化，意识形态壁垒森严，各种冲突层出不穷，联合国的确没有起到它应有的作用。但是，联合国也起了不可低估的作用，尤其是在社会经济文化发展方面。在消弭冲突方面，两伊停火也算是个杰出的例子。今天的世界仍然是一个需要人类加以控制的世界。望着联合国大厦前化剑为犁的雕像，思索人们该用什么方法来熔化利剑。过去的历史表明，许多人认为战火也是一种手段，结果是以剑化剑，总不成犁。纽约的唐人街，觉得风格颇为熟悉。比起其他地方显得稍微脏乱一些。据说唐人街是一块复杂的地区，中国人特有的现象在这里都有。令人想起柏杨的“丑陋的中国人”。没有在唐人街多走，从外表看看，做小本生意的很多。在这块熙熙攘攘的地段，望着满街写满中国字的招牌，令人回想起遥远的中国。这块地方与曼哈顿区的其他地段形成鲜明的对照。一个令人想起中国文化，一个告诉人们西方文化。在美国，畅谈美国和中国，几乎是所有在美国的中国学者和留学生的永恒话题。在这个永恒的话题中，又有两个永恒的中心：经济发展和政治民主。美国在本世纪取得的经济成就和科技进步，是有目共睹的，当今世界还没有哪个国家能超越它。日本人虽然咄咄逼人，来势凶猛，后来居上，但除了经济上的竞争实力之外，在军事、文化、资源等领域还是不能与美国相提并论。需要加以分析的是，美国的经济发展对其政治发展究竟起了什么作用。在这两个方面，美国皆为世界所瞩目。而中国在这两个方面欠账太多。因而，这两个方面都成为现代化过程中永恒的话题。中国的经济现代化如何实现？最根本问题是，在公有制条件下能否完成经济现代化的过程？当今世界上发达国家大都不是公有制。这一现实，给人们最大的思维挑战。其次是政治民主如何发展？与经济同步，还是不同步？这两大课题成了今年来讨论的热点。一种说法是，没有政治民主，经济现代化不可能达到；反驳的一件事，香港、台湾、新加坡、南朝鲜在经济起飞阶段并没有政治民主，香港是殖民统治，台湾是一党专政，南朝鲜是军人干政。另一种说法是，经济发展了，政治民主就有了条件，例子是新兴工业地区和国家的民主化运动；反驳的意见也很强烈：西方发达国家在资产阶级革命后，经济并不算发达，远不能和今天一些发展中国家的经济实力相比，但民主共和制的体制基本建立了。这个问题，大约是中国理论界必须深长思之的。经济发展只是一种现象，集中或者民主都有可能促进或者抑制经济发展，需要关心的是，在经济发展后社会中的哪些变化会有利于发展政治民主。由于经济不发展，发展中国家在经济上就不能不依赖发达国家。主要是在高科技、设备、精密仪器等方面。不过也要视各个国家的发展阶段不同，如非洲国家，就主要需要食品以维持基本生存条件。不论需要什么，结果形成了一种特殊的交换机制：发展中国家要拿出最好的东西与发达国家交换。于是发展中国家的人民无法享受本国生产的最优产品，甚至是第二等产品也不能享受。因为第二等产品要供来到这些国家的外国人消费。美国市场上各国各地区的产品都有，中国、台湾、南朝鲜、日本、牙买加、墨西哥等。世界各国各地区的精华产品都涌向美国市场，以换取美元。由于大家都想取得美元，形成强大的竞争，产品的质量很高，价格却很低。这种状况造成美国市场空前的繁荣。这是市场机制造成的结果，也是二次大战后布雷顿森林会议确定的美元的世界地位给美国带来的好处。当然，外国的产品大批进入美国，冲击美国本身的工业，造成工厂倒闭，失业增加，这一点也不能不看到，所以自由贸易和保护主义这两大势力始终争斗不休。</p><h2 id="3-四个-C-多"><a href="#3-四个-C-多" class="headerlink" title="3.四个 C 多"></a>3.四个 C 多</h2><p>在美国生活不久之后，发现这个社会有几样东西特别多。透过这些东西的表面现象，可以发现社会动态组织的一些基本条件。先说这四多。</p><ol><li>车多（Car）大小城市，高速公路和乡村公路上时时都跑着成串的汽车。车的形状千姿百态，各种各样的型号应有尽有。在华盛顿时，英国 Essex 大学的副校长安东尼·金（Antony King）曾指着街上形形色色的车对我说：“十年前，我在美国看到的大部分车都是美国制造的，如今各式各样的车都有，日本车尤其多。”美日之间的汽车战已经是众所周知。日本汽车之所以能打入美国市场，一个重要的原因是，美国汽车市场实在是太大，汽车对于个人实在太重要。在美国没有汽车就像没有腿。高速公路系统十分发达，一般左右各三个通道。分高、中、慢三档，有的地方左右各有七个车车道。上面日夜不停地跑着各种汽车。一般家庭都有汽车，许多家庭不止一辆。在斯坦福大学我曾去一位教授家，共有三辆车。美国的私人拥有汽车总数之大在世界上也是屈指可数的。</li><li>电话多（Call）在美国，走到哪里都可以看到电话。所有的办公室和家庭都有电话。家庭的电话还有一个到几个分机。在公共场所，都有自动电话机，投入一定数目的硬币就可以打。现在又推出一种电话卡电话机，打电话时只要将卡塞入电话机就可以打。机场里，有一排排这种自动电话。在旅馆里也设置了很多这类电话。我在华盛顿时住过 Sheraton 和 Hilton 饭店，楼下大厅里都有成排的自动电话。在大学中，公共场所也设有这类电话，如图书馆、饭堂、会场、计算机中心、语言中心等。不仅电话多，而且灵捷方便。无论打到哪里，都很迅速。国内长途电话，拿起话筒拨号，最多半分钟便可接通。打到世界各地，也不费事，拿起电话来拨就行。人们办事地一大特点是利用电话，很多事情均靠电话来解决，包括谈恋爱。有不少家长对我说，子女打电话谈恋爱，一打两个小时，其他电话打不进来，费用颇巨。自然，电话系统发达的社会功能不在这里，可以谈恋爱，也可以谈别的。</li><li>电脑多（Computer）电脑之多，也是一大特色。无论走到哪里，都可以看到与你打交道的人要用电脑。参观国家安全委员会时，发现里面的人都使用电脑。大学教授办公室或家里都有电脑。在旅馆住，整个管理是电脑化的。在运输部办驾驶执照，都要输入电脑。在商店和饭堂购物，付账是电脑化的。在图书馆检索，资料检索是电脑化的。到银行存钱，其系统是电脑化的。工厂生产、政府办公、军队作战、飞机上天等等，都大量使用电脑。电脑使一切事物变得迅速、准确、易查。电脑还可并入全国性或世界性的网络。我在耶鲁大学参观图书馆时，他们东亚负责人马先生马上打入我的名字，几秒钟便查出在另外两所大学有我的《国家主权》和《比较政治分析》两书。电脑还可以相互通话，只要知道对方的电脑号码（Bignet ID），就可以输入想告诉对方的内容。</li><li>卡多（Card）这里的“卡”绝不是中国的“卡”的概念，中国有过一些卡，如煤球卡、蛋卡、日用品卡、菜卡等，都是纸做的卡。这里讲的卡是一种塑料质地的卡，背后有一条磁带式的东西，可以存储信息。此类卡，多得不胜枚举，如信用卡，取钱卡，借书卡，电话卡，身份卡……每一种卡又有不同种类。新的卡还在不断涌现，报纸上曾经刊登一则消息说，一家航空公司推出一项新的服务，购一定的票可以免费享受头等舱的待遇，凭证是一张这样的卡。我从旧金山到爱荷华，坐联合航空公司的飞机，机票其实就是一张类似于这样的卡。卡和电脑联系在一起，只要把卡插入一定的电脑，就可以办成有关的事情，如：取钱、存钱、查自己的存款数目，都可用卡和电脑来解决，不必找银行职员。差不多有工作的人拿出皮夹子，里面都有一大堆卡。由于卡多，皮夹子也变革了，里面有数个专门用来放卡的袋子。中国现在做的皮夹子，恐怕是不能出口到美国或者其他西方国家，因为没有放卡的地方。</li></ol><p>以上将的是“四个 C 多”的现象。重要是它们在社会组织和社会管理中起的作用：</p><ol><li>车多，使整个社会构成一个动态的整体，随着车辆运动的不仅有人和物品，还有思想、观念和精神；</li><li>电话多，使整个社会构成四通八达的信息系统，语言的传递伴随着情感、信息的传递；</li><li>电脑多，使整个社会管理的一体化达到很高的程度，电脑信息是一种公平的管理；</li><li>卡多，使整个社会的管理符号化，使人们对实物（人和物）的管理中解放出来，变成符号管理。</li></ol><p>以上四个方面的发展对一个社会至关重要，其中这些方面是政治社会化，政治沟通的一股动力，一条渠道。这些方面的进展，使一个社会的制度、原则和精神日益深入人心，日益物质化，日益巩固。</p><p>“四个 C 多”带来的问题也不少，现代化是要人类社会和自然界付出代价的。</p><ul><li>车多——污染多，交通事故多，浪费多；</li><li>电话多——干扰、窃听多；</li><li>电脑多——社会通讯系统变得脆弱，一旦机器出故障，或有“病毒”侵入电脑，马上波及一大片，有时大批的数据资料荡然无存；</li><li>卡多——失窃多，报失多，伪造犯罪多。</li></ul><p>一个社会怎样巩固自己的制度是重大问题。单从制度着手，难得有牢固的制度，只有把制度真正注入到民众生活中去，才是真正的巩固。</p><h2 id="4-高度的商品化"><a href="#4-高度的商品化" class="headerlink" title="4.高度的商品化"></a>4.高度的商品化</h2><p>美国社会或美国文化的另一大特点，就是其高度的商品化。可以说这是一个典型的资本主义“花花世界”。走进各式各样的商店，里面陈列的商品琳琅满目，应有尽有，颇令人眼花缭乱，在这个典型的资本主义社会中，差不多任何东西都可以成为商品，从人的肉体、空气、抽象的观念到各类具体用物，无不商品化。所以当年马克思在分析资本主义社会时，把商品视为这种生产方式的社会的细胞，是一种真知灼见。当今的资本主义社会，这一特征发展得更为充分，尽管在表现形态上有诸多不同。</p><p>商品，依然是这个社会的基本因素，其最典型的表现，就是人成为商品。这种大规模的全面的商品化，是资本主义生产方式的基本趋向，不是人们主观意志可以主导的。</p><p>需要提出的问题不是这种高度的商品化是如何产生的，高度商品化达到了何种程度。研究一个社会的管理过程，我们需要研究的是：高度商品化对一个社会错综复杂的管理过程有什么作用？</p><p>现代人类社会的发展，现代人类生活各个方面要求的提高，现代社会、政治、经济、文化、娱乐、卫生、艺术、交通等各个领域盘根错节的复杂交织，向社会的管理系统提出了严峻的挑战。一个政治和行政系统能否承担现代社会带来的全部重担？这是各个国家均遇到的一个难题。从理论和实践两个方面讲，恐怕没有一个政治和行政系统有这样大的能量来直接管理和承担全部责任。如果政治和行政系统由于结构和功能的制约，必须承担的话，必然会导致鞭长莫及的局面。因为任何政治和行政系统的能量都是有限的，对小型社会来说，政府有独挡一面的可能性，如新加坡，香港，南朝鲜等。对大型社会，尤其是人口达数亿之众的社会，政府直接和全面管理社会各个层面，各个领域的可能性不大。历史证明，由于体制设计而走上这条道路的社会，政治和行政系统往往没有很好地解决社会的很多基本需要，积累下来成堆的问题。努力使社会生活的各个领域有自行的组织和动力，自行满足社会的需要，从而使政治系统或行政系统只起间接管制的作用，是在这个方面取胜的一个有效的途径。</p><p>要实现这个结构，先决条件是使社会生活的各个领域能够形成一个自组织系统，使这些具体而繁杂的活动范畴与政治活动脱钩。商品化是这个转化过程的催化剂。住房、食品、交通、就业、教育这些问题是困扰每一个社会的基本难题。不少政府为这些问题所困扰，不能脱身。欲退不得，欲进不能。高度的商品化使美国社会在这些领域中形成了较为特别的结构。</p><p>我们可以来看商品化如何使这些领域成为自组织系统的，它们又是如何运转的。</p><ul><li>住房，在不少发展中国家都是令人头痛的问题。一些发展中的国家的政府为使“居者有其屋”，苦心经营。但在美国，住房问题得到较好的解决。尽管在大城市中满街都是无家可归的人踯躅徘徊，但大多数人家都有宽敞的住房。每家有一幢住房是一般的水平。不少住房，七、八间房间，实际上只有一、二个人住。新的住房仍在不断建成。住房管理完全是商品化的。每个人要想有自己的房子，或想租房子，就得花钱购买或租。房地产成为经济领域中的一个重要支柱，由经济杠杆予以调节。在不同的地区，价格不同。在中部小城市，10 万美元左右可以买到的房子，在旧金山和纽约可能 20 万都买不到。在纽约曼哈顿租一间房子可能要 400-500 美元，在小的城镇可能只需要 200-300 美元。由于商品化后，房产有利可图，造房业一直有动力。这么多年下来，住房就积累起来，越造越多。政府所做的是管制这些活动，使其在合法的范畴内进行，而不直接去营造住房、分配住房、维修住房。政府营建的穷人住房，只是很小一部分。</li><li>食物，是困扰当今许多国家的又一难题，有的国家连温饱问题都没有解决。有的国家过了这一关，但在副食品供应和花色品种方面远不能满足社会需要。政府为这些矛盾和商品的短缺而疲于奔命。但在这个社会，食物之丰富多样是惊人的，甚至令人觉得浪费。供应食物的系统完全是商品化的。作为生产者，人们生产市场所需要的东西，然后由市场系统销售给消费者。其间生产者、销售者等各个环节都得到利润。商品化带来利润，这是最主要的动力。当然，不能说商品化可以解决一切问题，科学技术和生产手段的充分发展，也是一项不可或缺的因素。</li><li>交通，是现代社会必然会面临的挑战。现代社会，人的发展，经济的发展，文化的发展，社会的发展，均意味着流动性的增加。如果不能为这种流动性开辟通途，社会将会面临一种难以名状的压力，社会的政治、经济和文化发展也会受阻。而交通问题，恰恰是不少国家感到棘手的事。交通手段大都商品化了。空中交通，由私营的航空公司负责，如 United，Delta，Northwest，TWA 等，完全是自负盈亏的企业。航空事业之发达，是经济发展的一大决定要素。陆上交通，著名的长途汽车“灰狗”（greyhound），连结全国四面八方。如此等等。商品化刺激人们去经营，为了赢利和提高利润，各经营单位就必须想方设法改善服务，扩大经营范围。</li><li>就业，是现代社会的一大逻辑矛盾：一方面科学技术的发展将越来越多的人排挤出来，另一方面越来越多的人需要寻找工作，需要谋生。在这个社会里，劳动力是商品化的。政府并不直接安置人们就业，政府通过政系指导就业，创造就业机会。每个企业都可以自行雇佣人员，每个人都可以到任何企业去找工作。（当然，理论上是这样，这不等于每个想找某项工作的人都能找到该工作）不过，在商品化高度发达的地方，人们看重的不是工作性质，而是得到的交换价值。有合适的报酬，人们就会愿意去交换。有了钱之后，再进入商品化的社会，可以得到任何其他人想得到的东西。商品化之后、就业问题就不由政府来具体管理，而由各个企业与个人在相互之间进行协调。</li></ul><p>商品经济的发展，使社会的治理结构形成了一个双重结构：社会自组织系统负责各类具体事务，政治系统负责协调各个自组织系统。这是这个社会宏观管理的一大特色。以上只是几例，但不能就此认为商品化就一定能把事情做得十全十美。这只是说，商品化提供了使政府轻装上阵的可能性。政府如果卷入社会千头万绪的事务之中，是不可能高效运转的。但政府轻装之后，仍然要管制各个领域中的活动，只不过此时已由直接变为间接。</p><p>商品化具有惊人的力量，它推使人们走向每一块有利可图的地方。最典型的像肯塔鸡、汉堡包、可口可乐、百事可乐、Crest 牙膏、万宝路香烟、联合邮包递运公司等，到处可见，哪怕是在非常偏僻的地方。可以说，只要哪个地方有铜板可图，人们就会把商品和服务送到哪里。商品化不仅往地理广度上推动商品流通，从而促进社会的均衡发展，而且驱使商品向多样化发展，驱使商品走向每一个没有开发的领域。在日常小商品中是这样，在高科技方面也是如此。</p><p>任何事物都具有两重性，高度商品化带来的光怪陆离的现象比比皆是。人的肉体、性、知识、政治、权力、法律，都可能成为商品化的目标。纽约四十二街上的黄色文化，大概也是商品化的一个重要产物。商品化，在不少方面腐蚀着社会，引出不少严重的社会问题。这些问题，反过来也会增加政治和行政系统的压力。</p><p>所以，商品化可以减轻政治和行政系统的负担，但有一个重要的前提，这就是政治和行政系统必须管制商品化。商品化的真正本质不在于每样东西都成为商品，而在于商品处在合理的运转机制之中。经济杠杆协调这个机制，政治和行政系统也得协调。当社会的许多基本领域都成为自组织系统之后，政治和行政系统将有条件与它们分离，有条件从直接管理走向间接管理。商品化的过程，就是这些领域成为自组织系统的过程。这个过程不是短时间里可以形成的，即便是经过相当长时间的发展，其间的矛盾、冲突、阻碍和混乱仍是不可避免的。然而，比起管理成千上万的具体活动来说，管理几十个大的自组织系统，政治和行政系统将更富实力，更有效力。</p><h2 id="5-边远地区"><a href="#5-边远地区" class="headerlink" title="5.边远地区"></a>5.边远地区</h2><p>这里说的“边远地区”，只是借用这个概念。其实这些地区既不边，也不远。就在现代化的城市旁边。我说的“边远地区”指的是亚美尼亚人的居住区。亚美尼亚人是一个非常奇特的群体。其主要特征就是拒绝现代化，与高度发达的先进科学技术格格不入，依然保持着十七、十八世纪传统的生活方式，这是一个很有趣的历史现象。西方社会的现代化吸引了整个世界，并且冲击着整个世界，但却没有冲击到近在眼前的亚美尼亚人。</p><p>离开爱荷华市（Iowa City）不远，大约十几分钟的汽车行程，就有一块亚美尼亚人的居住区，叫科罗那（Kolona）。带着上述问题，我来到这个地方。在快要进入科罗那时，就可以在公路上看到十七、十八世纪欧洲式样的马车，一匹马拖着一个小车厢，里面坐着一般穿着黑色服装的亚美尼亚人。这里的公路也有特别的设计，在汽车道两旁，划了马车道。因为亚美尼亚人不接受现代化的汽车，要坐马车。政府有关部门花了很多气力才说服他们，马车在公路上是非常危险的，要他们在马车后面，装一块醒目的红牌子，提醒开车的人注意。</p><p>奇怪的亚美尼亚人是从哪里来的？为什么他们要到美国？这是解开这个谜的一个重要线索。亚美尼亚人从欧洲移民过来。他们形成于十六世纪欧洲的宗教动乱之中。亚美尼亚人有自己的宗教，但他们受到当时正统宗教的迫害。据闻当时的国家教会对他们进行了血腥的镇压，将他们烧死，处刑，关押等。大约从 1750 年起，一些亚美尼亚人为了躲避迫害，开始流浪，他们去过德国、法国、荷兰和俄国，但始终没有找到安身之地。随之他们决定投奔“新世界”。在这里他们可以找到土地并拥有土地。亚美尼亚人十分看重土地，他们认为土地是上帝赐予的看得见的礼物，无比珍贵，人不能离开土地。这种信念是亚美尼亚人死守土地，保持传统生活方式的一个基本原因。今天美国大约有 112 个亚美尼亚人居住地，遍布全美国。虽然不同的居住地有不同的变化，如亚美尼亚人以耕种为主，有些地方的亚美尼亚人接受了拖拉机和康拜因。但总的说来他们维持着古老的生活精神和生活方式。</p><p>何谓古老的生活精神和生活方式？亚美尼亚人的生活精神是采纳任何东西时要看它们有没有用：衣服可以御寒，但不能艳美。亚美尼亚人一度拒绝金属纽扣，认为这是一种奢侈，象征财富。家里不可挂色彩绚丽的图画。他们往往挂一些画面单调的年历。这反映了亚美尼亚人的生活精神：简朴、自然、自足。</p><p>亚美尼亚人的生活方式也很奇特，在现代人看来似乎有些不可思议。在最典型的亚美尼亚人的居住地，他们拒绝使用电，因而这些村子里没有电。这体现着亚美尼亚人的自足精神。亚美尼亚人长期受迫害，养成了自给自足的生活方式，不依靠外界。他们拒绝使用拖拉机和康拜因，主要用马做生产工具。妇女都穿着旧式的裙子，没有人穿现代的牛仔裤。美国人一般家家有电话，然而亚美尼亚人的家中没有电话。有些地方的亚美尼亚人接受了洗衣机和冰箱，但他们不用外面的电，而是用自己的柴油机发电。亚美尼亚人外出走动，都乘马车。许多亚美尼亚人一辈子没有去过十分钟汽车路的爱荷华城。用现代人的眼光看，他们是一个很闭塞、很落后的群体。他们自己大约并不清楚世界上发生了并么，但他们觉得生活得很悠闲自得，也符合他们的宗教信仰。</p><p>亚美尼亚人还有一些令现代人迷惑不解的行为。冬天，男人们会成群结队地到河面上去采冰，然后运回来保存起来以度过暑天。他们懂得很好的保存冰的技术，大概可以保存到第二年的九月。传统的取冰技术取代冰箱的功能。中国古代也有类似的保存冰的方法。如今虽然不是非做这项劳作不可，但亚美尼亚人把这视为保持其精神的一个部分。亚美尼亚人在家里讲一种德语方言，不讲英语，他们有自己的学校，但大部分儿童受不到高等教育，因为他们自己的学校教育水准不高，他们也不愿意去大城市。</p><p>亚美尼亚人的宗教生活也别具一格。他们大约两周举行一次活动，轮流在各家举行。大家围着这家的房子，举行活动。被选中的这家人家，要做精心的准备，还要准备午餐。亚美尼亚人是父权制的，妇女没有什么权利，得听男人的。每个男孩女孩都要学会驭马，这是他们生活中的一个重要的组成部分。</p><p>这么多年来，尽管亚美尼亚人有这样和那样不同的变化，但这个群体的基本精神没有多大变化。令人感到奇怪的是：为什么如此强大的现代文明没能影响并改造他们？西方文明不是冲击了很多非常遥远的民族吗？</p><p>带着这个问题，我访问了住在科罗娜的一位作家，叫约翰•M•齐林斯基（John·M·Zielinski）。她写过一本书，叫《跨越美国的亚美尼亚人》。她的回答是：“试想一个人从小就在这样的环境中长大，从小就受这样严格的教育，他就不容易抛弃这些观念。另外，亚美尼亚人没有受过高等教育，没有从事现代化工作的技能，他们所受的训练就是耕耘。他们在这里才感到是最安全的。”我想后一句话是亚美尼亚人最根本的心理积淀。齐林斯基补充说：“另一方面，美国宪法保证他们有这种权利，政府不能强行改变他们的生活方式和宗教。”</p><p>这是一个真正值得思考的社会现象。在世界现代化的心脏地带，有这么一批人拒绝现代化。他们的边远地区不是在地理范围内，而是在精神世界。他们自愿隔离于现代化。从这里我们可以得出一个看法：如果人们在精神领域中拒绝现代化，那么现代化就难以侵入他们。这种现象在不同社会中都可看到。现代化真正的动力在人们的内心世界。</p><p>另一个值得深长思之的问题就是“心理安全感”。亚美尼亚人觉得他们这种生活方式提供了最安全的环境，如果改变它就会是危机和动乱。这种心理恐惧也是他们拒绝现代化的一个重要原因，现代化过程自然是改造旧社会结构的过程，也是某种安全感消失的过程。如果人们均对安全环境的消失感到害怕，现代化乃至任何社会变革都会遇到强大无比的阻力。</p><p>社会在协调这些矛盾时，釆用的方法和手段是听之任之，并不强求一律。它也无法强求一律。如果政府强迫亚美尼亚人接受现代化，那它只会给自己增加压力。象亚美尼亚人这类的例子，在美国很多。不少地方的人都有自己的生活方式，与社会的主流格格不入，但它们可以存在。社会的一部分矛盾就在这种眼开眼闭中化解了。没有人为亚美尼亚人的落后感到脸红，反而认为这是美国精神的典型反映。美国社会的一些管理方法实际上是不加管理。这在某种条件下是一种较有效的管理方法。</p><p>回来时，看到一对老夫老妻赶着马车走在现代化的公路上。他们是那样心安，那样自得。难道是现代化错了吗？任何一种生活方式的选择都伴随着由此而带来的便利和为此而付出的代价。</p><h2 id="6-阿马拿移民地"><a href="#6-阿马拿移民地" class="headerlink" title="6.阿马拿移民地"></a>6.阿马拿移民地</h2><p>阿马拿移民地（The Amana Colonies）是爱荷华（Iowa）州的一块特殊的地方。美国人称之为美国的“社会主义”或“集体主义”。这样一块地方为什么能在美国这样一个资本主义社会中生存下来？它究竟是个什么样的组织？引起了我这位来自中国的人的极大好奇，美国人搞“集体主义”，如何搞？</p><p>阿马拿移民地有着悠久的历史。1714 年，在德国的西南部，有两个人发动一种宗教运动。这个宗教运动日后演变成著名的“真正灵感社团”（Community of True Inspiration）。这就是阿马拿社团的前身。1842 年，由于他们的宗教而受到迫害，阿马拿人的祖先便远渡重洋来到北美大陆，先在纽约州建立六个村庄，在加拿大建立了两个村庄。由于他们居住的布法罗（Buffalo）地区迅速城市化了，阿马拿人开始向西部购买土地。1854 年，他们购买了现在的土地。当时向政府购买了 25,000 英亩土地，后又购买了 1,000 英亩。阿马拿人就在这块土地上耕种、生活。来到这块土地之后，人们选择了一种宗教式的共同生活方式，所有财产集体所有，所有宗教和世俗的决策均由统一的领导决定。这种生活方式一直持续了一个多世纪，直到 1932 年才投票决定实行政教分离，建立自由企业。</p><p>早期阿马拿的宪章规定社团的目标是：“社团作为宗教团体的目标不是世界性的也不是自私的，而是热爱赐福于我们的上帝，齐心协力伺服上帝，遵从上帝的法律和要求……为了达到这个目标，我们的在这里集体许诺，共同接收并签署这份宪章。”可见，这个团体最初的集体主义是在一种宗教精神的鼓舞下形成的。集体主义必须有某种精神做主导，否则难以维系。是这样吗？值得深思。</p><p>在这种精神鼓舞下，阿马拿的所有财产都是集体所有的，土地、谷物、牲畜、住房、农具。阿马拿具有各种集体主义的特征，除集体所有制外，它还负责教育儿童、出版、照料老弱病残等事务。</p><p>阿马拿移民地的领导机构别具一格。1883 年以前由鼓动人们从欧洲迁往美洲的克里斯蒂安·梅兹为领袖。他过世以后，便由一个 13 人组成的托管人会议管理。该会每年从一定数量的长老中选出。每位在宪章中签名的男子或寡妇，及年龄在 30 岁以上的女子可以选举。长老过去由梅兹选择，1883 年之后，改由长老会提名，董事会确认。长老们领导教会事务，每个星期日早晨见面。地方长老会每周见面，最高会议（托管人会议）每月一次。地方会议只管理地方事务。最高会议管理教俗两个方面的事务。在他们的管理下，阿马拿人过着集体生活。</p><p>阿马拿人开始为什么选择集体生活方式呢？它的创始人梅兹说：“教会是上帝的仆人，上帝通过教会赐福和保佑我们。我们不应通过完全献身于教会而献身于上帝吗？……因此，一切都应属于教会，教会向大家提供需要。任何人不关心这件事可以远走他乡，想留下的人应当接受我的话。”那么阿马拿是什么意思呢？阿马拿一词来自《圣经》第四章：“随我离开黎巴嫩，我的妻，随我离开黎巴嫩，从阿马拿山上眺望……”</p><p>1932 年，阿马拿发生了最大的历史性转变。通过投票，阿马拿人放弃了共同生活的制度，大踏步地转入了包围着他们的自由企业的制度。政教分离，教会的长老不再负责领导的全部事务。这个转变十分值得探讨。究竟是什么因素促使阿马拿人放弃共同生活的制度？是这种体制本身有毛病？还是外部的其他制度太强大？还是人们对基本的宗教信仰丧失了信念？共同生活的体制至今依然面临着严峻的挑战，原因在哪里？</p><p>接待我们的官员的回答，令我们感到十分耳熟：共同生活制度的一个基本缺点是个人没有主动性，不能尽职尽责地工作；当时有许多懒汉。另外的原因是青年一代对阿马拿精神原则的怀疑，他们受到了外界生活的诱惑，不愿意每周做八次弥撒。阿马拿的长老每年选送一部分年轻人到外面去接受高等教育，如医生、教师和商人。年轻人的愿望无法实现。男孩子没有好的工作，姑娘们只能去阿马拿的食堂工作。另外的一个原因是政治性的，长老会总是这些人，而且有世袭的倾向，这种等级制度消毁了团体的精神。</p><p>今天的阿马拿已经实行股份制，任何人都可以购买股票。集体财产已经股份化。阿马拿人买股票的可以分红利，被雇佣的可以拿工资。私人企业近一百个，大部分是商店和饭店。股份化的集体财产，由董事会管理。集体拥有一些工厂，如冰箱厂、染布厂、纺织厂、家具厂、农场和旅店等。今天人们早已不过集体生活。阿马拿自己出的宣传品上还特地声明：阿马拿式的共产主义与俄国的政治共产主义不同，共同拥有财产只是为了解决经济问题，而不是一种基本学说，也非一种信念。</p><p>这个解释实际上与阿马拿的早期精神不相符。阿马拿的早期生活就是建立在一种信念之上。不过这种信念是宗教化的，而非政治性的。在政教合一的条件下，区别这个对人们的实际生活并无多大意义。只有把握了这个基本精神，才能从阿马拿 1932 年的转变中看出名堂。1932 年的转变，最根本的原因可能是年轻一代对这种信念的放弃和冷漠。在这个繁华社会的强大诱惑下，年轻一代转向了别的价值取向。一旦年轻一代发生这种转变，任何力量都难以保证一种体制的长存不朽。对各类社会制度来说，都有这个问题。今天世界许多国家面临的问题就是年轻一代对制度基础的信任危机。这个问题不加以解决，制度就会面临挑战。阿马拿的历史演变是一个非常好的实例：两种体制相互作用，相互影响的结果。阿马拿最终选择了美国的主导价值观念，因为它无论在政治、经济上还是文化上，都太虚弱，它无法战胜在各方面都强于它的现代资本主义。</p><p>阿马拿如今已经成为国家历史保护地，这是它最有意义的地方。它告诉人们，在这样的一个环境中，其他任何价值选择都会成为历史。美国现行的主要价值观念什么时候会成为历史，要看有没有更强的选择。</p><h2 id="7-乡土景观"><a href="#7-乡土景观" class="headerlink" title="7.乡土景观"></a>7.乡土景观</h2><p>一般人走马观花，得到的印象是繁华的大城市，鳞次栉比的摩天大厦，风驰电掣的汽车，五光十色的商场，形形色色的人群。美国的繁华主要体现在它的城市和大都市里。走马观花者，很容易把这些印象与美国等同起来。其实美国并不仅仅只有城市。城市具有举足轻重的地位，但它们不等于全部美国。</p><p>美国存在较大的城乡差别，乡村的生活水平远不能与大城市相比。不到乡村去走走看看，不能算了解了真实的美国，至少不能算了解了全景。乡村的条件落后，驱使大批人涌向城市，乡村人口越来越少。如今，美国乡村人口只占全部人口的百分之几，百分之九十几的人居住在城市中。也许这可以解释为农业发达，不需要那样多的农业劳动人口。实际上美国是世界上最大的食品进口国（其出口量也大）。另一方面，由于人口大量涌入城市，农业必须采用机械化操作。</p><p>比较典型的农业州是中部、中东部和中西部几个州。如果坐飞机从东海岸飞往西海岸，不一定能了解在广大的平原上究竟有什么东西与大都市不同。只有在这些地方生活，或开车在这些平原的公路上行驶，人们才能感觉到差别。这叫做脚踏实地。天马行空，恐怕难以了解乡村景观。</p><p>在东海岸和西海岸一些地方，不容易看到大片的农田和点缀在这些田野中的农舍，也难得看到悠闲自得的放养的牛群和猪群，难得看到尘土飞扬的公路。我从纽黑文坐火车去费城，没有看到什么农田。而我乘车从爱荷华市去伊利诺州、密苏里州，以及在俄亥俄州内坐车，均能看到大片的农田。我愿意乘汽车五、六个小时以上，以观察乡土景观。</p><p>何谓乡土景观，这里可以做一些描绘：</p><ul><li>农业州一般拥有广大无边的农田，这是美国得天独厚的自然条件。大片的农田，除了一些坡度之外，很少有山丘、河流。这为农业机械化创造了很好的条件。象中国江浙那样的地势，要实现机械化极难。农田看上去很肥沃，黝黑的泥土。一位朋友告诉我，他在自己住的房子后面栽了西红柿，结果多得吃不了。土地只开发利用了不到二百年，肥力仍在。中国的土地开发了两千多年，大部分已成为贫地。</li><li>农业地区人烟稀少，开车几乎见不到人，可以看到的一些相互隔开的房屋。这些房屋隔得很远。通常是一家一户地经营农场。房屋的水准不低，但不能跟城市相比。农村地区过于清静，动物反而自得其乐，不少公路旁边竖有招牌“小心有鹿”。一次在去芝加哥的路上，我亲眼看到三、四头鹿在路边玩耍。</li><li>农业地区商品经济不那么发达，文化也不发达，主要的中心是一些小镇小城。我们大约经过数十个这样的小城镇。小城镇一般较为破旧。实际上有的就是一条街，两旁有些商店。主要商品倒不缺，应有尽有。这是商品经济的力量。小城镇一般是两三层高的老式楼房，没有现代建筑艺术的成果。房子也不多，人口稀少。小城镇的人在文化上和心理上相对保守一些，不如大城市里的人那样开化。乡村的公路也不能跟州际公路相提并论。乡村公路大部分是一来一往两条线，路面也不那么平整，与中国好一些的长途公路相差无几。但这些公路均有明确的交通标志，路面上划着明确的道线。从这些公路分出去的路，如通往农田或农舍，不少碎石子铺的，并无柏油，开起车来尘土飞扬，大有风尘仆仆之感。</li><li>乡村地区有不少破旧房屋，有的房屋倒塌之后，也无人管理，大概也没有人住。有的房子有人住，看上去也不很雅观。由于人们不断往城里走，农村地区的房屋不少均年久失修，或者无人居住。下一代一般到城里念大学，念完大学在城里找到工作。上一代过世后，他们也不会返回故里，或者贱卖，或者任其风吹雨淋。乡村地区显得有些破旧，与大城市的灯红酒绿形成鲜明对照。有些地方人全部走完，成为“鬼村”。</li><li>乡村地区提供了一些在发展中国家特有的景象，如草地上的牛群、马群和猪群。自然这些畜群不能与内蒙古草原上的畜群相比。美国一般是一家一户经营，养不了多少。农民采用两种办法养牲畜，一种叫圈养，这平时看不见。另一种叫放养，把牛、猪、羊、马放在一个大围子里。有时候可以感到粪臭扑鼻而来。在美国这是很难得的体验。</li><li>乡村地区的生活水准不如城市，不少人常常为经济问题犯愁。一些人受的教育程度不高，也难以找到好的工作，没有移入城市的条件。不少农民只能做些小买卖。我到密苏里州密西西比河边上的一家渔民家里去过。他平时捕些鱼，在家里卖，价钱也不贵。他住的地方就比较破烂，虽然有较大的地方，但多年失修。有少数地方极为贫穷。Y 先生告诉我他去过美国一个最穷的地方。那里的人住在破房子里，没有什么家具，只有几张破桌子和椅子，一进屋有一股难闻的味道。那里的人情绪低落，无精打采。虽然不能说这类人在乡村地区比比皆是，但为数不少。</li></ul><p>乡村地区的状况，是相对高度繁荣的大城市而言的，与一些发展中国家和不发达国家相比，美国的乡村属于发达之列。这个对照告诉人们的道理是，城乡差别在任何社会都不可避免地会存在，但这种差别对不同社会具有不同的意义。对美国社会，百分之九十以上的人口在城市，乡村难以构成紧张态势。尽管没有找到良策来解决这一问题，这一问题还会长期存在，并且有恶化的倾向，不过乡村问题暂时或在一定条件下掀不起大波大澜。但对中国社会来说，百分之八十多的人口在乡村，其政治意义和社会意义就迥然不同。</p><p>美国的实际过程是，把人们吸引出相对落后的地区，使他们集中到城市中来。这个过程中和生产的发展过程结为一体，以此来化解农村地区的紧张态势。其实乡村存在的问题没有真正的解决。这个过程的极限在哪里？显然是有极限的。如果农业生产受到严重威胁，城乡差别就将成为一个严重的问题。在目前的体制下，很难想象有什么力量或方策能扭转人口的实际流向。</p><p>城乡差别存在的不可避免，是任何社会须当注意的。生活水准的差异，必定会在不同的人口之间构成紧张态势。这种紧张态势出现的时机有早有晚，但现代化过程中最终总要遇到这个挑战。问题不在于乡村发展了多少，而在于矛盾化解了多少，化解矛盾的方法是否产生新的矛盾。</p><h2 id="8-农场的衰落"><a href="#8-农场的衰落" class="headerlink" title="8.农场的衰落"></a>8.农场的衰落</h2><p>农场一直令我感兴趣，最简单的原因是：美国大概只有百分之三、四的农业人口，但他们生产的产品除了保证两亿多人口的消费外，还有大量出口。记得苏联曾大量进口美国的粮食。而许多国家的城乡人口是前者小后者大，但尚不能自给自足。解决这个问题是一个国家走向现代化的关键。中国有差不多十一亿人口，百分之八十多的人在农村，但粮食及各类副食品供应并不那么阔绰。</p><p>粮食问题困扰了人类无数年，大概从有人类开始就存在这个问题。至今人类并没有解决这个问题。非洲的粮荒已经达到惊人的地步，多少人面临死亡的威胁。粮食恐怕是人类生命最大的赌注。我记得《战争风云》里曾经记载，在二次大战刚刚结束后的柏林，由于没有吃的，年轻姑娘可为一点点食物贡献肉体。人类生命的延存是人的基本需要，在这个问题发生困难时，很难谈尊严和权利。</p><p>我参观的农场是许多个农场中的一个，是非常典型的农场。农场主家里只有两人，他和夫人。儿子在外面读了大学后，在别的州工作。在一大片旷野之中，他们有一座非常漂亮的住房，在与城市里见到房子相比，差不多。城市里有各种现代化设备，应有尽有，如电话、电、自来水等。</p><p>这是一件值得讨论的现象，一般而言，不论走到哪里，这些基本设备总是齐备的。有的时候走很远的路才遇到一户人家。这家人会什么也不缺。各个公司也愿意为这家人提供服务，实际上有点得不偿失。从生活条件来说，农场主并不亚于别人。“农民”，实际上是农场主（Farmer）。农场是私人的，土地也是私人的。谈起农场，绝对不能用中国的概念去理解。我们一个农场可能有几千人，美国一般只有两三个人。</p><p>我们来看一些具体资料，就可以明白美国农业的不同之处了。农场主叫奥伯曼（Oberman）。他介绍说，他一共有 800 英亩的土地，相当于 4857 亩土地。由他自己负责耕种，他还雇了一位长日工，加上他年迈的父亲有时帮一些忙，就行了。劳动生产率很高。除了耕种他的 800 英亩土地之外，他还养猪，讲出来的数字吓人一跳：他一个人养了 1,200 头猪。这是在圈的数目，每年出产是 2,400 头猪。除了这些之外，他还是一家农业银行的董事，农闲时还要管银行事务。另外，还要处理社会活动，制定一些规划来促进社会的发展。可见，它的能量发挥到什么程度。</p><p>问题是，一个农场主如何能有这样的能量？</p><p>为了增加感性认识，我们提出要参观一下它的养猪场和农田。他先用车带我们在他的 800 英亩农田转了一下，我们有了一个大概的概念。然后，带我们参观他的农业机械，他有三台拖拉机，有两台是非常大型的，还有一台康拜因，像黑龙江农场的那么大。另外还有各类农业机械，因此他的耕种全部是机械化的。康拜因每天能耕种 80 英亩，所以 800 英亩对他来说并不是难事。他主要种玉米和大豆，收割回来后，有人工风干的设备，自动化程度很高。加上美国农场是大片平原，这是美国得天独厚的地方。大型机械开起来，无阻无栏。有了这个条件，机械化就易于实行。而中国浙江一带农村，沟河山丘太多，大型机械难以运用。</p><p>它的养猪场自动化程度也很高，配料都是现代化的，共有四个猪棚，存栏数密集。食料配方有固定的比例，以促进猪的快速生长，养六个月之后，便可以上市。他一个人提供的猪肉，大概可以供几百人消费。</p><p>当然，农场主也有种种困难，这对农业是个挑战。其一是经济问题，农场主的经济收入并不高，付出的劳动很多。这家农场每年的收入在二、三万美元，但用贷款买的康拜因就值十二万美元，不论其他设备。当然，有的农场较大，较好，收入也很可观。今年美国普遍干旱，农场主收入降低，收入大约只有一半，经济状况就很糟糕。我们在农田里看到，玉米长得只有标准的一半高，果实瘪小。与其他职业相比而言，农场主的收入低，影响着农业发展。</p><p>其二是劳动强度高。农场主的劳动强度很高，这是在城里坐办公室或在工厂里的空调车间不能相比的。农田主要是野外作业。无论怎样，自然界的风云变幻没有法子避免。养猪可以说是又脏又臭。这家农场虽然自动化程度高，但又脏又臭无法排除。猪不知讲究清洁，没有办法。我们去参观猪棚，臭气熏人，令人却步。但农场主必须做。他说每天干完活，要洗好几遍澡，才能把气味洗掉。这在美国，恐怕能接受的人不多。</p><p>其三是年轻一代的厌倦，由于上述问题和大城市的吸引，年轻一代向往城市生活。城市生活有文化、娱乐设施，农村没有。这家农场主告诉我，他的儿子大学毕业后，告诉他暂时不想回来，他感到打击很大。但他相信他最终会回来。如果不回来，农场就成问题，因为他就一个儿子，后继无人。</p><p>尽管存在种种问题，但由于市场机制的作用，还是有不少人被挤到农业生产领域。重要的问题是，农业生产的高产量保证了政治社会生活的稳定。试想有一天美国人没有足够的食物，会发生什么样的情况？大多数发达国家，共同的现象是解决基本生活用品，使这些产品充分涌流。而大部分不发达国家，都不能很好解决这个问题。农业发展是社会的稳定器，是经济的启动器，苏联长期以来为农业问题所困惑：经济政治徘徊不前。其他社会的情况，也大致相似。</p><p>在人口日益剧增的世界上，农业是生命线。</p><h1 id="二、古老的政治精神"><a href="#二、古老的政治精神" class="headerlink" title="二、古老的政治精神"></a>二、古老的政治精神</h1><h2 id="1-“美国精神”"><a href="#1-“美国精神”" class="headerlink" title="1.“美国精神”"></a>1.“美国精神”</h2><p>H·S·康马杰是美国著名历史学家、评论家。美国大学图书馆的书架上一般均存放着他的著作。他被视为美国研究的大师。它的著作《美利坚合众国的成长》在中国学术界很有地位。《美国精神》是他于 1950 年推出的著作，推出后得到社会的热烈欢迎，重版 20 余次。我看的是南木等译的中文版。从上海带到美国，可谓千里迢迢。这本书对于理解美国精神的确是必备之书。</p><p>H·S·康马杰文笔老到，下笔有力，观察问题深刻，善于概括总结。康马杰自述他不准备写历史书，是阐释不是记录。他竭力想发现难以捉摸的“美国精神”，一种独特的美国思想、性格和行为方式。他选择了 19 世纪 80 年代中叶至 20 世纪 40 年代这段时间，认为这是美国历史和思想的分水岭。《美国精神》是一本大厚书，凡 50 万字，全书论述深入浅出，生动鲜明，史料之翔实，分析之出奇，均可令人赞叹。</p><p>康马杰认为“美国精神”包括什么呢？首要的前提是美国人有自己的性格和自己的哲学。美国的性格是继承和环境交互作用的产物。美国的文化和制度的渊源可以追溯到古希腊、罗马和巴勒斯坦，如教会和家庭制度，以及价值观念。但康马杰认为这种继承是高度选择的继承，环境作用于选择，二百年来政治制度和司法制度变动很少，但社会组织发生了天翻地覆的变化，心理方面发生了革命性的变化。美国的环境消融了来到这里的不同种类、不同文化背景的人的差别。</p><p>康马杰说，不是局部环境而是美国的整个的环境决定了美国人的性格或造成了美国式的人。整个环境指土地辽阔，便于流动，独立的气氛，崇尚乐观进取的精神。在欧洲，由于有悠久的封建主义和民族主义传统，局部超越了总体；而在美国，由于在工业革命期间已日趋成熟，不承认强烈的地方性传统，须打破这种传统，于是总体超越了局部。他提出了一个值得深思的问题：美国人种族血统异常复杂，气候和土壤条件各地不同，却容易形成鲜明而稳定的民族性格，这不仅使批评家难以逆料，而且整个历史和经验也无法解释。每一个想理解美国的人，首要的是准备思考这个问题。</p><p>康马杰认为美国人民精神的主要特点是什么呢？我摘录下来，大概有以下一些：</p><ol><li>乐观精神是异常寻常的。这个国家万事顺利，自然条件如此优越，每一个有进取心和运气的人都可以致富。乐观主义来自现实变化，每天荒野变良田，村庄变城市，理想变现实。</li><li>信念是世上没有办不到的事，不达全胜决不罢休。美国人关心未来甚于关心过去和今天，他们没有历史观念，认为只有那些对未来不可能发生兴趣的老妪才对过去的家族感兴趣。所以，他们从每一个打赤脚的男孩身上看到未来的总统和百万富翁，关心和爱护儿童，为他们工作，放手让他们成长。</li><li>视野广阔，想象力驰骋于整个大陆，讨厌琐碎的事务、犹豫不决和胆小怕事，希望大场面，容易接受大规模的计划和豪迈的事业。</li><li>文化是物质性的，认为生活舒适是理所当然的，并且怀着优越感看待那些生活水准不如他们的人。</li><li>总是顽强地去战胜困难，部分原因是他们确信坚韧不拔加上勤劳、智慧和运气，总会有好结果。他们的信条是艰苦工作，以偷懒为罪恶。任何有利于增加财富的事都被认为是理所当然的。</li><li>有强烈的数量概念，倾向于以数量来评价几乎所有的事物，如人口统计、摩天大楼、铁路里程、生产记录等。要描写美国人需要新词汇，甚至新数学。</li><li>注重实际，对政治、宗教、文化和科学尤其讲实际，不过对商务往往带有浪漫色彩。美国人总想发明新工具或新技术来适应新情况。喜欢创新，不太注重传统，对于任何事情都愿意试一试。他们对各种事情的反应是很实际的，美国有成千上万种发明，美国人以热衷搞小发明而闻名于世。美国高校最早开设技术课程。</li><li>讨厌理论和抽象思辨，像健康人不吃药那样避开那些深奥的政治哲学和行为哲学，任何一种超越常识的哲学都引不起他们的兴趣，唯一可以称之为他们的哲学的乃是有用即真理的工具主义。他们本能的认为不幸的人和糊涂的人才求助于那种深奥的哲学，可他们不是那种人。</li><li>宗教虽然源于加尔文教派，却也讲究实际，他们信宗教但不虔诚，他们不再信奉上帝拯救人类的教条，而是本能地确信只有通过工作才能得救。教派很多，但被认为是不同的组织而不是不同的教理，他们已不再能分辨卫理公会和长老会有什么不同，正如他们看不出共和党和民主党原则上有什么不同一样。</li><li>在政治方面非常厌恶空洞玄虚的理论和夸夸其谈的人。有人笑美国没有政治哲学，他们对此处之泰然，认为不受政治理论的约束是好事。任何政党的空谈理论都不会得到他们的支持。尽管美国人很年轻，很不老练，但在政治上是成熟的。他们的政治机构就像他们发明的机器一样灵活有效。</li><li>对待文化持既怀疑又宽容的态度，当它妨碍较重要的活动时，他们就持怀疑态度，当它成为暇时或妇女们的一种娱乐时，他们又持宽容态度。在特殊情况下，他们要求文化应成为某种有用的东西。美国人关心教育也舍得花钱办教育，他们希望教育能培养出有实际作用的人。</li><li>有一种夜郎自大的信念，他们轻视其他国家和民族几乎达到了旁若无人的程度。他们认为自己的国家优越，自己也比别人优越，这种优越感产生一种天然使命感，相信自己是世界的最高希望。</li><li>爱搞实验，美国本身就是一个最大的实验场，既然每一个群体都是一场赌博，一种机会，那么美国人就是赌徒和机会主义者，他们很少留恋一处地方，对搬家满不在乎。他们不喜欢老一套，总爱干别人没干过的事，愿意接受挑战。</li><li>是民主的，完全平等的。环境为才能和幸运开辟了道路。但他们的民主是社会的民主，而不是经济上的民主。平等观念渗透到美国人的生活和思想领域，他们的行为、工作、娱乐、语言和文学、宗教和政治无不体现平等观念，现实生活无不受这种观念的制约。实际上经济上的不平等被设想为平等的。平等使人与人之间的关系融洽和诚恳。</li><li>性情善良，宽厚、好客、爱交朋友，绝大多数人喜欢交际，喜欢集体生活。他们很随便，不拘小节，说话随便，衣着随便，吃东西随便，对人的态度也随便，可能会被认为是放纵粗鲁，不成体统。</li><li>觉得权威和规章条例是使人头痛的问题，认为要遵守某种规定是对他们的侮辱和挑战。学校几乎没有纪律。父母极少管孩子，孩子极少尊重父母，但家庭生活是幸福的。军队纪律松弛，但可以打仗。美国人表面上不尊重法律，实际上是尊重法治的，宪法是至高无上的法律。</li></ol><p>如此等等。康马杰的结论是：上述这些信念不能不产生实际的后果，不能不在美国人民的日常行为中有所反映。康马杰归纳这些特点的那一章叫“19 世纪美国人”。实际上在今天有些归纳还是适用的。自然，对于任何现实生活的抽象归纳，人们都可以举出支持和反对的实例。完全可以拿出许多例子来反驳康马杰。不过，作为一位美国学者对本民族的看法，姑且听之。康马杰说的均是优点，不免有些自吹自擂的味道。其实美国民族有不少缺点。</p><p>今天，可以从航天飞机和全球大战计划，层出不穷的新设备，大量的统计报表、讲究实际的精神，课堂中吵吵闹闹的景象，对政府丑闻的态度等种种实际生活中发现这些精神。</p><p>有时候，可以这样说，社会生活本无精神，等你去发现了，它便有了。或者说，世界上本来就有精神，问题是有没有发现。黑格尔就坚信他发现了“绝对精神”。美国人的精神就是没有“绝对精神”。</p><h2 id="2-“五月花号”"><a href="#2-“五月花号”" class="headerlink" title="2.“五月花号”"></a>2.“五月花号”</h2><p>麻萨诸塞州可以说是政治历史古迹州。美国的古迹，怎么说也没有多少年，但对美国社会和政治发展说来确实至关重要。欧洲人常常嘲笑美国没有历史，其实这里揭示了一个非常值得探讨的问题。美国现代社会只有两百年的历史，它为什么能发展成世界上的第一流强国。这是当今人类社会的一个重要现象。</p><p>中国也有人说美国没有历史。</p><p>美国的建国历史陈列大部分集中在两个州，一是宾夕法尼亚州的费城，一是麻萨诸塞州波士顿市附近的地区。在费城时，我曾去看了有关的历史古迹，包括独立战争时期几次重要会议的会场，宪法起草的地方，自由钟等。也有成群结队的美国人和外国人前来观光。这些地方都保存得很好，成为政治传统的实物教科书。从实物教科书说，美国人擅于此道。人们常常怀疑，美国社会没有什么政治教育。但其传统精神却深入人心。这里，“实物教科书”起了不少的作用。象美国总统退职后的图书馆等这类地方，都可视之为实物教科书。</p><p>实物教科书的最初几章在麻萨诸塞州。“五月花号”船于 1620 年将最早的移民送到美洲大陆。这是近代美国的肇始。“五月花号”是一艘较大的木质帆船，目前陈列的是仿制品，但据说与原型非常相象。船上的一切依然照旧，还有些穿着当时服装的人接待旅客，他们会一本正经的向参观者谈他们在海上的艰苦经历，并操着当时的语音语调。他们工作得很认真，一丝不苟。离“五月花号”船不远，有一块巨大的石头，据说这是“五月花号”上的人第一次踏上美国的地方，是美国的开始。</p><p>美国人一般把美国精神追溯到“五月花号”，并认为美国社会后来的基本原则在“五月花号”驶向大陆时就确立了。船上的六十几个人确立了社会的基础。这种解释也许有道理，但不能过分。有一点是确定的，这就是当时从欧洲到美洲来的人，大部分是宗教上受迫害或政治上受排挤的人。1620 年，正是英国斯图亚特王朝专制政治达到顶峰的时期，其后二十年就爆发了英国资产阶级革命。可见当时愿意离开欧洲和英国的是些什么人，他们怀有怎样的心境，他们来到这片荒凉之地是为了摆脱专制，逃避迫害，寻找自由和财富。这种精神鼓舞着他们来到新大陆。他们到达的是一块没有完整的政治秩序的广大的土地，所以他们可以实现他们的愿望。如果他们来到一块早就建立了完整的政治体系的地方，凭这几十个人无论如何化思想为行动，也只能接受现实。正象今天世界各地那样多的移民来到美国，谁也无法改变这里的制度。“五月花号”带来的精神之所以能生长发育，恰恰是由于这块土地在政治上也是荒芜的。</p><p>不过，有一点必须注意，这种精神只能在“五月花号”船上的人之间或与他们相同的人之间分享，也就是白人之间分享。在相当长的一段时间里，白人把印第安人和黑人排除在人的行列之外。美国的政治制度后来之所以能建立起来，很重要的一条原因往往被人们忽视了，这就是当时的土著——印第安人的文明程度不高，还过着氏族部落般的生活，没有掌握基本的生产技术和耕种技术。这种状况使得欧洲文明人无法奴役他们，因为他们不能提供更多的产品。欧洲移民唯一的选择就是向印第安人要脚下的土地。如果印第安人是个文明程度相当高的民族，情况将是如何呢？</p><p>这就是我在研究生期间的导师陈其人教授提出的著名论点。移民垦殖的殖民地和奴役土著的殖民地的差别。移民垦殖指宗主国的一部分居民移民到一块土地上，进行劳作，如美国、新西兰、澳大利亚等。奴役土著指的是一小部分宗主国的统者统治殖民地当地的人民，如非洲许多国家、印度、印度支那等地。这两种不同类型的殖民地形成了完全不同的政治制度。二十世纪的历史指明了这一点。奴役土著有一个前提：土著能否被奴役？亚洲社会在殖民者来到之前，已经发展到相当的水平，为欧洲殖民者的奴役提供了条件。美国人在新大陆没有这样有利的条件。印第安人很久一直被视为野人，文明人只奴役文明人，而不太愿意奴役他们认为的“野兽”。</p><p>“五月花号”的精神生存下来，不是谁有意要维持它，而是社会生活必须由它来调节。我也看了普利茅茨种植园（plimouth plantation），在那里保留了十七世纪的一个居住区，据说最早的移民就居住在这里。这个村子邻近海边，放眼远眺，万里碧波。村子里的木板房子和各项用具，都是典型的旧时农村的样子。可以用四个字来形容——贫穷落后。这是自然而然的。欧洲移民远道而来，一无所有，白手起家，只能是这个环境。象这样的村子，现在的世界上依然多如牛毛，它们意味着什么呢？</p><p>正因为移民是在一穷二白的基础上发展起来的，他们便尤其珍惜自己的财富和生活方式。生来富有的人不会象他们那样有强烈的情感。所以，当英国要剥削他们时，他们便会奋起捍卫自己的生活。1775 年，美国人与英国军队发生战争，打响了独立战争的第一枪。我去参观了美国人打出第一枪的地方，有一个纪念碑。在河对面的路边，也有一块纪念碑，那是被这一枪打死的英国士兵躺下的地方。战争的结果，美国人获胜。美国的独立战争同时受到欧洲资产阶级革命的精神鼓舞，尤其是作为统治者的英国自身发生过革命。从美国的宪法可以看出，其基本原则都是欧洲资产阶级革命时期英法思想家的创造。美国在创造新制度时并没有遇到强大的旧制度的反抗，与英国资产阶级革命和法国资产阶级革命不同，这使它更易于宣布实行反映资产阶级要求的思想原则。想想，德国在十九世纪中叶为何不能完成资产阶级革命？容克贵族的力量太强大了。</p><p>美国注重保存和保护这些实物教科书。在这些地方，都有专职人员管理，并且提供公众参观所需要的便利措施，如停车场、小卖部、饭店、各类说明。展览的设施也有水准，差不多每个地方都有播映室，访问者都可以看到特地摄制的影片和幻灯片。对一些在中国人看来算不上文物的东西，均加以精心保护。所以，将来美国人会有历史，因为它现在全力以赴地加以保护。他们深知自己没有历史，对有一点历史价值的东西都视若珍宝。在历史太丰富的国度里，比这价值大得多的东西都被弃之一边。</p><p>美国人不仅保护历史，而且很懂得使这些实物发挥教科书的作用。这些地点均向公众开放，并为公众充分了解它们提供最好的帮助。其实这就是传播美国精神，这就是一种社会化了的思想政治教育。</p><p>任何社会想长治久安，都应当传播自己的价值体系，只不过传播的方法各有不同，而传播的效果在很大程度上就取决于方法。</p><h2 id="3-政治信条"><a href="#3-政治信条" class="headerlink" title="3.政治信条"></a>3.政治信条</h2><p>欧洲人看不起美国人的重要原因之一，在于欧洲人认为美国人没有悠久的文化传统，没有文明，象一群突然暴富起来的“乡巴佬”。在政治领域中，这种观点反映在欧洲人认为美国人没有丰富的政治文化的遗产。欧洲贡献了亚里士多德、柏拉图、霍布斯、孟德斯鸠、洛克、卢梭、密尔、黑格尔等思想大家。他们的成就很重要的一面在于他们对人类的政治生活作出了精彩的论述。当今欧洲乃至西方政治中的许多基本信条均发源于这些思想大家。美国的政治思想不那么发达，美国只有两百年的历史。美国元老们选择的是欧洲已经存在的思想体系、他们作的新的贡献并不多。美国的政治学者们也直言不讳。</p><p>虽然如此，人们决不能断言说美国人没有政治信条，政治信条在美国不起作用。哈佛大学的政治学者塞缪尔•P•亨廷顿（Samuel P·Huntington）写了一本书，《American Politics：The Promise of Disharmony》（1981），专谈这个问题。他说如果认为政治思想在美国起的作用不如欧洲大，这将是一个错误。</p><p>根据亨廷顿的观点，“美国信条”（American Creed）从独立战争时期起就开始形成，从十八世纪末至十九世纪初，美国就已经形成了某些基本的政治价值，这便是美国信条。美国信条的核心内容来自欧洲资产阶级革命时期的思想家，但也具有更为源远流长的起源，可以追溯到古代希腊。这些信条不仅存在，而且为社会大多数成员所接受。这些信条在两百年的过程中有这样和那样的流变，但其核心始终如一。这些信条构成美利坚民族的“自我”的一部分。社会上并没有许多人整天在宣传这些信条，但人们在实践这些信条。大学、法院、政府、大众传播媒介在传播这些信条。在某种程度上，这些信条主导着社会。杜卡基斯和布什竞选中一个主要话题就是讨论何谓美国的主流（Mainstream），谁离开了美国的主流。双方都不愿意离开美国的主流，否则将失去选票。</p><p>什么是美国的信条？亨廷顿认为可以归纳为：（1）自由；（2）平等；（3）个人主义；（4）民主；（5）法治。看上去很简单明瞭。人类的难题就在这里，哪怕是一个简单的观念，要其成为社会的主导观念，也是难乎其难的，没有几代人的努力不能奏效，自然，美国信条和美国实践并不完全吻合。</p><p>信条从何而来？可以说来自独立宣言，在反对英国殖民统治的斗争中，这些信条被用来当作思想武器。也可以说来自欧洲的思想传统，这些基本观念早在独立战争以前就在欧洲发挥得淋漓尽致了。美国人早期对这些信念的向往，是出于情感上的动力，或者说情感上的动力多于理性的动力。美国人信仰这些信条，不过从来没有一位思想家很好地论述过这些观念之间的关系，人们一直把它们当作一种理想。这些理想之间存在着冲突是显而易见的。亨廷顿说，多数统治可能导致侵犯少数人的权利，法律至上可能会削弱人民主权，个人主义可能会破坏民主，如此等等。这些冲突不仅在逻辑上存在，在实际政治发展的过程中也显影出来。政治生活中的一些困境可以在这种境况中找到部分解释。美国人称道自己的民主，然而除了选举之外，普通人还能干什么？也许任何社会要组织起来，都超脱不了这种格局。</p><p>大部分人分享这些观念。这里有种种原因，一个主要原因是在独立战争前，没有形成欧洲那样等级分明的差别，也没有形成以这些差别为基础的不同的思想体系。人们一开始就从总体上接受了为新世界而创造的价值体系。自然，在后来的流变中，不同的社会阶层对这些信条有不同的解释。两党之争是其集中反映。今天，恐怕不能说所有人都接受这些信条，但大部分人接受它们。不少移民团体，由于不同文化的影响，难以真正认同这些信条。如中国人的移民社会、拉丁美洲的移民社会、日本人的移民社会等。主流依然存在。美国人不断用这些没有确定含义的信条来保护自己，因为没有确定内容，反而容易长存。</p><p>一百四十年前，法国历史学家阿莱克西•托克维尔（Alexis de Tocqueville）就说，美国人普遍认为人民是权力的来源。人们尊重自由和平等，大多数公民有政治权力等等。这些均为美国信条的构成要件。詹姆斯·布莱斯的归纳为：（1）个人有神圣的权力；（2）权力之源在民；（3）一切政府受法律和人民的限制；（4）地方政府优先于联邦政府；（5）大多数人比少数人明智；（6）最小的政府是最好的政府，这些信念都是可以左右解释的。在一般情况下，美国人并不觉得有解释的必要，谁都认为自己知道真传。不过，到了危机时刻，人们对这些信条便会有不同的解释。</p><p>亨廷顿认为在四个时期发生过这样的情形：革命时期、杰弗逊时期、南北战争和六十年代动乱时期。在这些时期发生了什么？主要有普遍不满，政治思想在论战中起到重要作用，政治动荡，反对政权的情绪强烈，变革心理强化，政治参与扩大等。更重要的原因是，实际政治并没有实现这些信条、潜在的冲突不断地积累，最后象火山一样爆发，从而找到新的结构。因为大多数人相信这些信条，所以在爆发时人们首先想到的是更好地体现这些信条，而非改变信条。社会一直在实现相同的信条，与不断改换信条的社会相比，其社会发展的延续性对其社会发展的功效不可忽视。</p><p>不少政治学者都承认美国存在着 IvI Gap，即政治信念和政治体制之间的差异（Gap between Idea and Institutions）。尽管这些信念为社会的主流，然而实际政治生活远远落在这些信念之后。自由、平等、个人主义、民主、法治在美国也是发展中的事物，只不过与某些社会相比，发展程度不同。问题不在于这些信念什么时候能全然实现，而在于社会何时能创造出条件来促成它们变为现实。可能很多人不喜欢这些信条，但社会主流不容许他们逆潮流而动。在大多数情况下，人们接受潮流，在必要时，人们才显示信条。</p><p>政治信条的状況，给人们一种启示。一个社会接受一种信条不容易，接受了之后要真正实践它们更不容易。对一个社会发展来说，第一步是核心价值成为社会主流，然后是使其成为现实。在核心价值没有成为主流时，要使其成为现实，难度自然更大。一个社会可以说它信仰什么，但不等于它实际上就拥有什么，或者不拥有什么。</p><h2 id="4-平等抑或自由"><a href="#4-平等抑或自由" class="headerlink" title="4.平等抑或自由"></a>4.平等抑或自由</h2><p>一个社会的价值观念中，总有核心价值，核心价值主导着整个社会的发展，主导着社会大部分人的精神活动，也是社会大部分人判断各类私人和公共事物的标准。美国的政治文化和社会文化中，占主导地位的价值观念是什么？对此众说纷纭莫衷一是。近年来有激烈的争论。如自由主义者主张基本价值观念是平等，宪法写明每个人生来平等。而新保守主义者强调核心价值是自由，而非平等，自由在任何时代都是主导观念，我在俄亥俄大学访问时，曾问过一个资深的研究美国政治的教授：“共和党和民主党究竟有什么区别？”他略微沉思后答道：“对自由和平等的看法不同，共和党侧重于自由，民主党侧重于平等。”可见对这两个西方传统政治文化中的基本方面，人们并非持一致的看法。</p><p>我个人的看法是，在今天的美国，倾向于以自由为主导价值观念的人多于选择平等为主导价值观念的人，自由的概念是今日美国精神和文化的主流。自然，不同的人倾向于这一概念，有不同的理解和选择，并且要用这个概念来维护各自不同的利益。从这个角度看问题，自由是一个更易于被具有不同利益的人随意运用的概念，平等显得幅度小一些。我将在下面分析这个问题。</p><p>将近一百五十年以前，阿莱克西·托克维尔在美国转了一圈之后，写了一本书叫做《美国的民主》，这本书后来成为经典，至今依然是研究美国政治的基本读物之一。在美国这样一个缺乏理论权威意识的社会中，十分不易。</p><p>托克维尔的一个重要论点是：最重要的事实是全面的条件平等（equality of conditions），这个观念对社会整个过程发生着不可低估的作用，社会上其他一切的价值观念均来自这个基本事实。这个论点可以说是对的，也可以说是不对的。就当时情况来说，独立战争之后，宪法正式承认了人生来平等的原则。美国没有封建贵族的传统，所以在殖民统治被推翻之后，较易于建立一个平等的环境。这里没有长年累月积累的财富，没有政治上的显贵，条件平等较易于形成。而在英国和法国这样有长期封建制历史的社会中就不难么容易。尽管法律可以规定人人平等，但事实上形成的不平等不能用武力摧毁。兴许可以摧毁物质上的不平等，但不能摧毁精神上、文化上的不平等。这一点美国有其有利条件。托克维尔来自具有浓厚封建传统的欧洲大陆，觉得这里有更好的条件是自然而然的。如果他是从美洲到了大革命后的法国，恐怕难以得到这个结论。</p><p>说其不对，是因为当时人们所赞成的平等，在很多情况下只是一种原则，远没有变为现实。哪怕是今天的美国社会，也难以说实现了宪法说的人人平等。不少学者和政治家不是在猛烈抨击这个社会的不平等吗？在托克维尔周游美国的时候，奴隶制在南方还普遍存在，南北战争那时候还没有爆发，妇女也没有平等的社会地位和政治权利，印第安人更不用说了，经济上的不平等从那时至今始终存在。如果仅说条件平等，不说结果平等，似乎也不能下定论说当时存在着普遍的条件平等。托克维尔之所以有这种印象，我觉得主要是一个在更不平等的环境中成长起来的人的感觉。</p><p>这并不是说，在这两个社会之间没有差别，应该说走向平等是历史的进步。同时也可以说，人民在那个时代是追求平等原则的，因为平等没有全然实现。</p><p>同时，选择自由的原则的人首先必须追求平等原则，因为没有平等的先决条件，自由难以充分实现。自由和平等，可以说是自洛克以来欧洲以及西方的两个主要价值核心。但他们并非是并行不悖的。在这两样价值均没有的阶段或者在这两样价值发展的初级阶段，他们之间的矛盾不会显露出来，或者显露得不充分。但在两种价值发展到一定阶段之后，这种冲突就会显示出来。如果讲人的自由，讲人的充分自由，那么平等就可能成为一种限制，因为平等要求不同的人具有同样的条件。如果讲结果平等，这种局限就更明显。如果讲平等，那就意味着每个人平等的自由，如同孔德所说。没有任何人可以享有更多的自由。在一个社会中，很难达成这种局面。对于这些概念，人们有不同的规定，又是引起分歧的一个地方。所以，在平等和自由发展到一定阶段的时候，新的矛盾又会产生。</p><p>托克维尔的时代，美国人的确追求平等，但这种平等是非常抽象和原则性的概念，现实生活中，平等的推行却很缓慢。妇女的选举权直到十九世纪下半期才慢慢确定，普选权直到二十世纪二十年代才确立。黑人的平等权利本世纪六十年代才成为人们考虑的问题。印第安人的平等权利始终受到侵犯。林肯总统为解放黑奴奋起呼吁。但他的基本精神并非是给黑人以与白人平等的地位。他曾保证：我从来没有说过让黑人进入政府担任官职，我从来没有说过黑人与白人联姻。我只是说黑人与白人之间存在着紧张状态。这不利于两个民族的共同生活。所以当代新保守主义的观念是：林肯只是给了黑人自由，而没有给黑人平等。</p><p>其实在美国人的心中的，大部分是倾向于自由。讲平等，只是在自由受到限制的时候。一旦这种约束被消除了，自由的价值或者期望值往往大于平等。</p><p>为何如此？因为西方体制保证的平等，只是形式上的政治平等，而非社会平等、经济平等。这一点已为西方学者所公认。形式上的政治平等确定之后，再进一步要求平等，就会涉及许多人的利益。历史决定了规定形式上的政治平等易，实现经济平等难。</p><p>政治平等，意味着平等地贯彻法律，平等的投票权和其他政治权利等。这个前提确立之后，人们便开始自己的社会活动、经济活动和文化活动。美国建国两百多年，在这个相对短的流变过程中，经济高度发展，相应地，社会的利益分化也必然明显，贫富差别越来越悬殊。时至今日，贫富差别构成社会主要的利益结构。在富裕社会中，真正的穷人不多，真正的富人也不多，但大多数中产阶级认为自己是富有的或会是富有的。这一部分人认为过去的富有或将来可能的富有依赖于经济领域的自由活动，如果限制这种自由，制造平等，就会损害他们的利益。经济领域不属于政治领域，不能强行要求平等。人们在这个领域中应当享有充分的自由。不能因强调平等，而拿别人的钱去给另外的人花。有钱的或有一部分钱的人都会有这种想法。质言之，这种论调反映了富有者的愿望，他们不愿意限制资本的自由，也不愿意与社会大众分享更深层次的平等。</p><p>一百五十年后，至少是这个年限，美国的状况已与托克维尔的时代大不相同。政治平等的问题经过战后黑人民权运动和女权运动，虽未解决，已有大的改观。而经济平等的问题却始终未能有实质性的推进。美国曾经搞了消灭贫困、福利政策、累进税来推进平等，但后来落得民怨载道。凯恩斯主义之福利政策，结果带来了滞胀。从此之后凯恩斯主义一蹶不振。大规模社会福利计划令人反感。民主党多次选举失败，也可以说明一点问题。</p><p>福利政策必须要抽取较高的税。以支持政府预算。抽高税，在任何地方都不会便人兴髙采烈，心悦诚服。美国人向往平等，但如今平等与高税收联系起来，他们就望而止步了。如果仍有人强烈主张这种平等，大部分人就会转向强调自由，认为这类平等是侵犯自由。自由成为主流，有深刻的社会经济原因，其实也反映了社会不同集团之间的利益冲突，反映了一种分化。</p><p>其实，从历史的角度看，美国人看自由重于平等，有时候追求自由的活动以追求平等的形式表现出来。在目的达到之后，保存下来的往往是自由。不能说有的人不向往平等，但他们只向往政治平等，如果再往前走，就难以接受了。</p><p>独立战争把平等推到一个新的层次，后来的发展也不断推进政治平等。但经济和社会领域的平等进展缓慢，原因是人们认为这属于自由领域，自由不可侵犯，尤其是私有财产的自由权。美国人只接受条件平等，而不接受结果平等。条件平等确定之后，便是自由领域。不少美国人确认条件平等已经实现，再讲平等只能是结果平等，这是自由成为当今主导价值的重要原因。</p><p>在个人主义盛行的今天，平等难以成为主导价值。</p><h2 id="5-二百年的宪法"><a href="#5-二百年的宪法" class="headerlink" title="5.二百年的宪法"></a>5.二百年的宪法</h2><p>费城和华盛顿这两个城市之间有某种历史性的联系。费城曾是美国独立战争时期的重要地点。1787 年，在费城召开会议制定了宪法。这部宪法一直延续至今，在世界上可称为最古老的成文宪法。华盛顿是当今首府，是具体体现宪法的扬所。1988 年是宪法制定二百周年，政府曾在自由女神下大搞庆祝活动，里根也到场讲话。美国人对自己的宪法最引以为豪。在费城时，我曾去过当年制定宪法的建筑物，但由于参观的人太拥挤，只在外面瞭望了一番。我在安那波里斯时曾见过当年美国宪法的一份手抄本，几张黄纸，竟能起这样大的作用？基础绝对在这些黄纸之外。</p><p>美国的宪法是独立战争的产物。这个演变大约是二十年间的事情：1770-1790，当时的美国有十三个分开的殖民地，归英国政府管辖。1774 年，第一次大陆会议召开，来自十三个殖民地的 55 名代表在费城开会，讨论共同关心的问题。1775 年，殖民地与英国之间发生战争，即在现麻萨诸塞州的激战。1776 年，美国政治思想家托马斯•潘恩发表《常识》一书，要求独立。1782年，独立战争接近尾声，在巴黎举行和谈，并签署了协议。1787年，起草宪法。1788年，足够数量的州批准宪法草案，宪法生效。1789年，乔治•华盛顿当选为美国第一任总统。1791年，在宪法中加入《人权宣言》。这就是当时政治发展的主要里程碑。从中可以看出，美国宪法产生于要求独立的斗争之中，其基本条文当然也是为了保障某些利益。</p><p>宪法的制定者就是本着这种意图。当时 13 个州向费城派了 55 名代表。起草宪法是一件艰巨的工作，但他们在一个夏天就完成了。可能是当时的政治、社会、文化关系还没有后来那样发达的缘故。如果换到今天，没有两年恐怕无法制定宪法。华盛顿、汉密尔顿、麦迪逊和富兰克林都参与了此项工作。这些人深受欧洲启蒙思想家的影响，他们熟知洛克的《政府论》、哈林顿的《大洋国》、孟德斯鸠的《论法的精神》。同时，他们也有丰富的实践经验。据说其中 20 人参加过各州宪法的起草，深通此道。有 30 人参与过各州的立法机关。熟谙官场利弊，也为宪法制定打下了基础。</p><p>在制定宪法时，遇到一个历史条件值得注意，这就是它是延续同一种制度，只是组织形式不同罢了。美国独立战争时，英国已完成“光荣革命”一百年，英国统治者已非传统封建贵族。因此对美国来说，基本上是仿照英国的政治原则设立一套新的体制。也就是说，被统治者想学统治者的样子生活。而不少国家的革命面临的问题是改变政治原则，这要困难得多，因为没有人知道新的原则的实践，一片空白，如英国资产阶级革命、法国资产阶级革命、俄国革命和中国革命。当然，在英、法、俄、中等国，因为旧制度的影响太大，所以也给建立一个新制度造成了困难。</p><p>出于自身的经历，美国人在制定宪法时，首要关心的问题是政府的权威和个人的自由。</p><p>英国人对殖民地的分而治之也给政制的形成创造了条件。这种分离使一州无法支配另一州，政治事务必须协商，制定宪法的人都有各州做后盾，有很大的讨价还价的砝码。各州都不想让某一州有超过自己的权力。因而会注意在宪法中产生一种机制，防范有一州获得这样的权力。肯尼思•普莱维特（Kenneth Prewitt）和锡尼•沃巴（Sidney Verba）在他们的著作《美国政府导论》中指出，宪法反映了一种哲学观点。他们引了约翰•亚当斯（John Adams）的一段话：</p><p>人类的欲望、激情、偏见和自爱从不会被仁爱和知识所征服……你说，“对自由的热爱扎根于人的灵魂之中”。那么它也在一头狼的灵魂之中啰。我怀疑一个人比另一个人更有理性、更宽容、更善于交往……因此，我们不应仅仅依靠人们灵魂中对自由的热爱。必须准备好某些政治体制，以帮助自由之爱反抗它的敌人。</p><p>普莱维特和沃巴的解释是：没有政治限制，人是不可信任的。因此宪法反映出的人性观是悲观主义的，而非乐观主义的。这是西方文化与东方文化的一大差别。也许这可以从某种角度解释东西方政治发展的差异。</p><p>本着这些想法，宪法确定了以下三大基本原则：</p><ul><li>实行代议制，包括废除贵族头衔，并放官职，定期选举，代议政治；</li><li>分权治理（分权包括纵向和横向两个方面，纵向指的是联邦制，各州保留较大的权力。在当时这是唯一可行的方案。横向指通常所说的”三权分立”）；</li><li>有限政府，即规定政府不能做什么，如不得干涉宗教、言论、写作、集会等方面的权利。同时规定“法治而非人治”原则（Government of laws, not of men），由于这样的原则的要求，宪法确定了法院系统。</li></ul><p>绝对不能认为制定宪法的人想到了所有劳苦大众，在为他们制定宪法。当时制定宪法的人想到的首先是维持他们的利益、这是一个新生的统治集团。宪法精神的大众化那是很久以后的事了。直到二十世纪六十年代，美国黑人还在为争取自身权利浴血奋战。直到今天，黑人还在奋战，虽然不常常浴血。</p><p>一个举世瞩目的问题是:为什么宪法能延续二百年，而其他国家没有这样的纪录。普莱维特和沃巴提供了一种解释：（1）宪法是一份政治文件，1780 年存在的政治冲突今天依然存在，只不过形式各异，如中央和地方的关系；（2）宪法保障的代议制、分权和有限政府在当时有足够的吸引力，今天也依然如故。</p><p>另一重要的原因是宪法的自身变化。如果宪法二百年中一成不变，很难想象它能维持到今天。宪法的变化特点是内容变，形式不变。宪法变化体现在很多方面、如宪法条文的普遍性，最高法院对宪法的新解释，宪法没有列举的权利，宪法修正案等。关键是宪法变的依据和程序还是出于这部宪法，而不是其他。世上没有不变的东西。今天美国人对宪法的解释早已大大异于二百年前，但大家宁愿说这就是二百年前的东西。因为今人说的话要叫人听从不容易，古人说的话要容易一些，有时要容易得多。</p><p>关键的问题是，实际上没有人有力量改变这部宪法，维持它并解释它是唯一出路。也许这是一条通则，如果还有某种力量可以改变宪法和政治制度，那这个社会在政治上和社会管理上就没有达到稳态。</p><h2 id="6-政治基因"><a href="#6-政治基因" class="headerlink" title="6.政治基因"></a>6.政治基因</h2><p>波士顿旁边有一座宁静的小镇，这个小镇的名字叫贝尔蒙（Belmont）镇。据说这里较为完整地保存了早期美国的政治制度。镇的管理具有很浓的自治色彩，是美国政制的源头，或者说是政治传统的一种体现。姑且称之为“政治基因”。所谓政治基因，是想探索一下政治制度和政治文化是在什么基本因子上发展起来的。1988 年任美国政治学会主席的路辛•派伊（Lucian Pye）教授也特别推荐这个镇，在他的陪同下，我们访问了这个特别的小镇。</p><p>贝尔蒙镇很小，离开波士顿大约半个小时的汽车路程，小镇共有居民 26,000 人。首先出来接待我们的是秘书。她是选任官。她第一句话就说，贝尔蒙小镇的管理组织是一种朋友和邻居自己管理自己的组织，即一种自治组织。她的第二句话是，这种组织和这种组织的精神起源于英国。在最早的移民到达美洲大陆时，他们就带来了这个传统，一直保存到现在。在东部地区，尤其是麻萨诸塞州，不少地方仍然保持着这种政治上的特色，成为政治生活中非常值得注意的现象。</p><p>可以简单地看一下这个镇的组织结构。该镇有一部根本大法，称 General by-laws，实际上相当于该镇的宪法。根据该镇组织法，享有最高权力的是全体公民，只要是居住在这个镇的成年公民，都有投票权。镇的具体组织分为两部分，一部分为选任官，另一部分为委任官。选任官由全体公民选出。行政首脑称为当选人（Selectman），也不是什么官衔，只证明他的地位。当选人共有三位，权力相等，组成当选人会议，负责日常的管理。当选人每年改选一位，可连选连任。除了行政首脑由选举产生外，其他有几位行政长官也都由选举产生，而非由行政首脑指定，如电力委员会、健康委员会、主持人、镇司库、学校委员会成员、自来水委员会等。这种机制保障所有的行政部门能对选民负责，而不至于由行政首脑主宰一切。同时还有一个选举性的镇会议，类似于议事机构，但真正有决定权的是全体公民大会。在选举人会议下面，有执行秘书、顾问委员会和镇委员会，负责帮助或协助选举人管理日常事务。执行秘书等均是委任官。执行秘书下有多名专管秘书，他们负责各类事务，如社区发展、老人事务、财政、消防、高速公路、警务、退伍军人服务等。在主持人（Moderator）下面，设有法律委员会、授权委员会、预算委员会等，这些均为委任官。这就是贝尔蒙镇政治组织的大概状况。可以看出，它有一个前提，即重要部门的行政官员均由选举产生，保证公民能有效监督和控制行政过程。</p><p>虽然是个小镇，每年的财政预算也在几千万美元。如 1986-1987 财政年度，财政支出为 31,709,621 美元。这样大的一笔费用如何用是镇里最大的政治问题。该镇的制度有效地保证了财务的正当使用，能够有力地排除贪污腐化行为，因为财政必须公开，必须得到全镇大会的认可。全镇大会一般每年召开一次，决定镇里的重大事务。我们来看一下 1987 年的全镇大会。1987 年全镇大会于 4 月 27 日在高中礼堂进行，因为这是镇里最大的会场。开全镇大会之前，已经印发了需要表决的事项。各项事务已由授权委员会加以研究，并提出意见。</p><p>1987 年会议共要表决 47 项。其中大部分涉及钱如何使用，公共设施如何扩建，生活水平如何提高。也有政治性的，如第 2 项就涉及到向当选人授权解决冲突的问题，第 35 项、37 项等涉及到修改基本法的问题。这些项目较少，多的是具体生活事项，如提高官员的工资，扩大自来水管道，向官员提供出差旅费，购买停车场的计时器，修建公路，购买大型扫雪机、大型卡车、复印机等。可以看出，不少很细的项目，都要得到公民大会的批准。行政官员不得擅自动用钱款。一切财务都得公开。在全镇大会上，要讨论财政委员会的报告和授权委员会的报告。这些报告将各类官员和委员会成员的工资和津贴罗列得一清二楚。这可以杜绝营私舞弊。在这种体制下，要营私舞弊极为困难。自然也不能排除有这种可能性。</p><p>这种体制与古罗马的公民大会十分相象，的确生动反映了西方政治体制的基本内质。不过，贝尔蒙镇并不是独立的。它在镇内事务上有一整套独特的机制，但它必须服从州和联邦法律，美国的政治体制有一个特点，就是它的地方政府并不千篇一律，尤其是县以下的政府。大部分地方政府都保存了传统的色彩。而美国人从未想到要使这些地方政府统一起来，而是任其发展。这种看问题的方法在世界上也是少见的。从组织体制来说，全国是一体化的，但具体运作方式却各有千秋。实际上，每个地方政府都适应了当地的传统、当地的观念和当地的需要。任何政治体制，只有做到这一点才能良好运转。在很大程度上，美国政治制度与历史——社会——文化条件的适应，并不体现在联邦和州级政府上，而是体现在县级以下的政府上。这是不少国家没有的机制。历史往往告诉人们，政治体制越是划一的社会，政治体制的适应性越小。怎样协调宏观政治体制与具体体制之间的关系，是政治发展中的一大难题。</p><p>说贝尔蒙的组织是政制的“基因”，指的是后来的政治体制是在这种小团体的政治规则上发展起来的。最初来到美国的人，在英国受到宗教迫害和政治迫害，对政治保障有最为强烈的愿望，对自身权利有最深切的认识，对政治权力怀有最大的戒心。另一方面，他们受的是西方文化的熏陶，他们在迫害中向往的是西方古代（古希腊）或中世纪公社的民主传统，他们不远万里来到新大陆，主要是逃避一种政治生活，建立另一种政治生活。这就是早期美国人为何有民主观念的原因。当然，与古罗马的奴隶主民主相似，这只能是他们之间的民主，而不是印第安人或后来的黑人的民主，不过，任何准备用于自己的政治权利，都要准备与别人分享，否则自己也会丧失它们。不仅很多国家的历史证明了这一点，中国现代历史的发展也显示了这一点。待到独立战争，美国人想巩固的便是这种基本精神。这种精神在美国易于得到制度化，与最早的移民的性质有关。试想如果都是英国的王公贵族来到新大陆，美国会是什么样呢？</p><p>拉丁美洲国家和非洲国家贡献了不少实例。</p><h2 id="7-政治规矩"><a href="#7-政治规矩" class="headerlink" title="7.政治规矩"></a>7.政治规矩</h2><p>1989 年 1 月 20 日，是布什当选为第四十一任总统的就职仪式日。这一天，布什和当选副总统奎尔要在国会山宣誓就职。所有的政界要人，白宫、国会参众两院和最高法院的领袖都要出席宣誓仪式。这个仪式将表明布什正式成为总统，里根正式卸职。此为政治生活中的一件大事，也是一项政治规矩。这项规矩其实成为对卸任总统和上任总统的约束，同时也向国民表示这个政治体制的基本运行方式。新任总统要在就职仪式上发表演说，表明自己的基本政策主张，这也是昭示国民。</p><p>政权的交接是人类政治生活中的一件最难解决的事情。不少社会在这个问题上没有发展出完善的程序，成为政治不稳定的原因。总统的就职宣誓，重要的意义不在于新总统有了权力，而在于旧总统因此失去权力，解甲归田，成为布衣。宪法并没有规定新旧总统如何交接，但就职宣誓仪式已有那样悠久的历史，如今已成为一个固定的政治规矩，整个过程非常程式化。</p><p>1 月 20 日早晨，国会大厦前面已准备好宣誓会场。各方要员和达官贵人先后进入会场。会场是露天的，有一个耸起的平台为宣誓的主席台。相当的时间，里根及各位要人坐车离开白宫，前往国会大厦。宣誓开始前，各方人马按一定仪式进入主席台。主席台后面连结国会大厦的一个门，用大红色的幕帘装饰，一条红地毡通往主席台前方，这里有一个话筒和讲台。首先是最高法院的法官入场，有导引人引入主席台。然后是女眷入席，包括里根、布什和奎尔各自的夫人，由导引人从另一条走廊引出。再是里根入席。里根之后是奎尔。最后是布什入席。每个人或每组人均有专门的人导引，相隔 1-2 分钟。</p><p>宣誓由国会两院联合会议主席主持。首先请一位牧师做祷告，祈祷上帝保佑美国，保佑布什总统和家人，保佑奎尔及其家人。然后由一个童声合唱团唱圣歌，赞美神。接着有一位黑人歌唱家唱赞美歌。奎尔首先宣誓，由最高法院法官奥科诺领读，她读一句，奎尔重复一句。奎尔夫人手捧一本家庭用的《圣经》，奎尔将左手放在这部《圣经》上面。奎尔宣誓完毕，布什宣誓。由最高法院首席法官威廉•H•莱因奎斯特领读。布什夫人手捧两本《圣经》，一本是家庭用的《圣经》，一本是当年第一任总统乔治•华盛顿宣誓时用过的《圣经》。布什将手放在上面，跟着大法官念。</p><p>宣誓完毕，由那位黑人歌手唱国歌，全场同唱。国歌唱完之后，由布什发表演说，公布他的基本国策：</p><ul><li>赞扬里根，说:“这个人在我们的心中和我们的历史上赢得了重要的位置。里根总统，我以我们民族的名义感谢您为美国所做的一切杰出的事情。”</li><li>向上帝祷告，说，“让我们更有力量从事您的事业，我们愿意听从您的意志，在我们的心中写下下述文字：用权力帮助人民。因为我们被赋予权力，不是去追求我们自己的目标，正确地使用权力只有一种，这就是服务于人民。”</li><li>呼吁振兴美国精神，说：“我们不能只希望留给我们的子孙更大的汽车，更大的银行户头。我们应当希望给予他们一种感觉，什么是忠诚的朋友，什么是具有爱心的父母，什么是一个好的公民。美国如不具备崇高的道德目标，它就不是真正的美国。今天我们有这样的目标，这就是让民族的形象更可爱，世界的形象更美好。”</li><li>号召与吸毒作斗争，他说，吸毒等“罪行应当被消除。”</li><li>要求国会予以合作，他说:“我们需要新的行动……我们需要妥协……我们需要和谐……我向你们伸出我的手。”</li><li>表示决心，他说:“我并不怀疑未来，我也不惧怕前面的事物。我们的问题是大的，但我们的意志更大，我们的挑战是大的，但我们的意志更大。如果我们的缺陷没有尽头，上帝的爱就的确是广大无边的。”</li></ul><p>布什演说完毕之后，便与里根夫妇告别。里根夫妇随即要离开华盛顿，也就是离开白宫。一架直升飞机将把里根夫妇直接送往安德鲁斯空军基地，他们将在那里坐飞机直飞他们在洛杉矶的家。布什夫妇和奎尔夫妇送里根夫妇登上飞机：里根时代宣告结束。</p><p>然后，布什返回国会大厦，在那里的一间办公室里签署了他作为总统的第一批文件，包括对他的内阁成员的任命书。在国会出席了午宴之后，返回白宫，有时步行，大约有 1.6 英里，标志着布什时代的开始。</p><p>这个过程，程式化程度很高，开支惊人。大概的统计数字是，整个就职活动（差不多一周）需要 3000 万美元，包括国家开支和私人开支。全套活动的门票（包括各种宴会、仪式等）为 25000 美元一张。正式庆典活动估计在 2000 万美元。1981 年，里根就职时花了 1600 万美元。这些钱都是私人捐助。政府也破费不小，国会对就职仪式的预算是 775,000 美元。华盛顿市政府拨款 230 万美元，提供警务、防火、医护等服务。国防部大约花了 250 万美元以提供军队、仪仗队等。整个活动的开支惊人，这也是美国体制的一个特征。大部分开支来自民间，虽然这里面说明没有政治义务，但究竟是否如此，就难说了。不过，作为一种既定的程序来交替权力，这些破费比起以混乱甚至流血交替权力来，代价不算髙。</p><p>整个活动高度公开，电视和报章对整个活动有大量报道。就职仪式，电视台电台都做现场实况转播。政治公开在某种程度上也保证了权力交替的正常进行。这个过程，其实也告诉国民，权力交替按照程序完成。</p><p>任何政治体制，最为根本的问题之一是如何进行权力交替。这个问题不解決，社会就难以有一个持续的稳定的政治秩序。美国在长期的历史发展过程中，形成一套政治规矩。人人必须遵守这套政治规矩，违背这套政治规矩，便不可能得到承认，不可能具备合法性。任何一位卸任总统想不离开白宫，都是不可想象的。布什宣誓就职的那天，里根就搬出了白宫。椭圆形的总统办公室人去室空。《纽约时报》上登了一幅照片：里根对这个空空如也的办公室投以最后一眼。宣誓仪式后，布什将在这里办公。里根班子的人也得搬出白宫。当里根离开白宫去参加仪式时，搬运卡车就开进了白宫。宣誓完毕，里根直接飞往洛杉矶，成为布衣。尽管卸任总统对美国政治起的作用要远远大于平民百姓，但他的时代毕竟结束了。</p><p>在这个过程中，可以看到政治规矩和政治传统有何作用。这套仪式是古老的，宣誓词是二百年前第一任总统所用的宣誓词，《圣经》也是二百年前乔治·华盛顿用的《圣经》。美国民族是一个十分重视传统的民族。这种状况似乎有些奇怪：美国人那样追求创新，那样个人主义，怎么会这样看重传统。其实，越是在没有人说了算的地方，传统便具有越大的权威。传统成为现代人唯一可以依赖的东西，而现代人却不能拿出一种东西来使众人信服。在全国或州或地方政治生活中，规矩和传统是不可忽视的力量。在权力更替这个敏感的问题上，规矩和传统更能约束人。凡是现代政治变动较大而没有形成政治规矩和政治传统的社会，权力更替都有某种困难，或者还在寻找合适的道路。</p><p>深究之，政治规矩和政治传统之所以有作用，在于它们能保护统治阶级内部不同团体之间的权力关系。社会形成的政治规矩和政治传统，其功能在于它适于协调社会不同集团之间的权力关系。这种关系植根于社会复杂的政治、经济和文化机制之中。政治规矩和政治传统是一种社会制度长期运作的结果，最能反映这个社会的基本特性。</p><p>有时候，政治规矩和政治传统比法律更有力量，因为一种是写在文字上，一种是写在人们的信仰里。一个社会政治发展之路，就在于把政治原则和信念变为政治规矩和政治传统。</p><h2 id="8-“第三共和国”"><a href="#8-“第三共和国”" class="headerlink" title="8.“第三共和国”"></a>8.“第三共和国”</h2><p>“美利坚第三共和国”，对不少人来说是个陌生的概念。不少人恐怕听说过法兰西第四共和国、法兰西第五共和国，却没有听说过“美利坚第三共和国”。这个概念的提出早在 1969 年。当然这只是一位学者在一本书中提出的概念。此人叫西奥多·罗威（Theodore J·Lowi）。此书叫《自由主义的终结:美利坚第二共和国》。罗威在书中分析了美国主流思潮的演变，并指出了社会发展的趋向。这些分析，对于了解美国还是很有价值的。</p><p>在 1988 年唇枪舌剑的竞选中，共和党总统候选人选择了一个关键战略，就是指责民主党候选人是“自由主义者”。言下之意，自由主义已经成为一个贬义词。著名的政治学家塞缪尔•马丁•李普塞特在10月27日的《纽约时报》上有一篇文章透视这种转换。他说，美国人一向是追求和憧憬自由主义的，当年独立战争的起因就是追求自由和平等。西方政治哲学的传统也以自由和平等为核心。如今，时过境迁，自由主义竟然成了反面的东西，被称为“自由主义者”似乎有些不光彩了。这个转折主要发生在二次世界大战之后，尤其是六十年代。从六十年代之后，支持自由主义的人日益下降。原因何在？</p><p>自由主义的身败名裂和凯恩斯主义有关。资本主义的经典信条是“看不见的手”和“自由放任”。这是亚当·斯密提出的资本主义的基本规则。然而，资本主义生产方式的内在矛盾，或者说社会化大生产所产生的调节要求，构成了资本主义社会社会结构的一些弊病的基础。这些矛盾的演化，到了二十世纪初，已愈演愈烈，严重威胁了西方社会和资本主义制度。此时不少西方学者意识到应当修正西方传统的观念，找出脱离困境的道路。于是，英国经济学家凯恩斯的学说不胫而走，形成后来著名的凯恩斯主义。凯恩斯主义的核心思想与传统的自由主义大为不同，他强调政府调节，强调政府通过“看得见的手”来促成“充分就业、调节“消费倾向”和“投资倾向”，搞公共工程。资本主义世界在二、三十年代遇到普遍的危机，凯恩斯主义应运成为主流。如果资本主义没有遇到那样巨大的危机，凯恩斯主义是难以在西方立住脚的。人的天性总是如此：不撞南墙不回头。在政府政策方面，也往往如此。马上就会看到，凯恩斯主义自身又是怎样走上这条路的。</p><p>这个时机，恰恰是罗斯福当政时期。由于这种原则，凯恩斯主义便与自由主义结合在一起。如果当时是主张保守主义的共和党执政，恐怕也会选择凯恩斯主义。时势造英雄。另一个促使自由主义与凯恩斯主义相结合的因素是自由主义的哲学信仰。自由主义的哲学信仰是：人是有理性的，只要给人们创造必要的条件，人就能自我控制和自我调节。保守主义的信仰是：人是没有理性的，应当对人的行为做出规范。按理说，保守主义更倾向于政府控制。然而创造良好条件的愿望和选举获胜的现实驱使自由主义与凯恩斯结合起来：通过政府活动创造良好的条件。罗斯福新政的一个成果就是大幅度地扩大政府的权限，政府广泛地干预经济，全面介入社会经济领域，政府的功能一下子膨胀起来。这与传统的资本主义信念大为不同。</p><p>罗威认为这场变革导致了两个结果：其一是国家主义，其二是多元主义。国家主义主张国家行为高于一切，多元主义更确切的说是利益集团多元主义（Interest-Group Pluralism）。罗威认为利益集团多元主义是资本主义的新哲学，是国家主义、资本主义和多元主义的杂烩，或称利益集团自由主义。</p><p>多元主义的含义是:（1）一旦集团成为市场规则，不完全竞争就成了社会关系的规则；（2）不完全竞争其实不是真正的竞争，而是某种讨价还价；（3）讨价还价是工业社会中取代暴力和强制的唯一选择；（4）如果制度稳定、和平，多元主义就可实现自我调节的属性。利益集团自由主义在某种程度上结合了多元主义。</p><p>利益集团自由主义，照罗威的说法，便是美利坚第二共和国。他说 1961 年以后的每届国会和每届行政当局都奉行这种主义。利益集团自由主义导致了严重的后果：政府机构摆脱了人民的控制，维护和建立了新的特权等。更为重要的是，这种新形态的自由主义并不能长期应付资本主义社会的基本矛盾。</p><p>罗威的解释是：自由主义的政府无法规划，规划要求权威性地应用权威，规划要求法律、选择。自由主义用讨价还价代替了规划。自由主义可以扩大政府功能，但却不能协调这些功能。凯恩斯主义政策也产生了严重的后果，赤字财政成为政府的难解之谜。到六十年代末这些问题逐渐爆发，经济危机、财政赤字、社会问题、经济凋敝、道德日下等。自由主义和凯恩斯主义结合的结果，并不是光彩夺目，而是昏暗凄凉。六十年代末的普遍混乱，可以充分说明自由主义在今日为何声名狼藉，为什么布什可以把自由主义当作一盆脏水泼向杜卡基斯。</p><p>罗威所谓的第一共和国，是 1787 年至 1930 年代的美国，特征是联邦结抅，中央政府权力有限，州政府权力较大。第二共和国起于 1930 年代，这时中央政府的权力大大扩展，其中主要的权力是管制和再分配的权力。管制和再分配的权力使高工资、高福利、高消费、高赤字成为可能，最后导致社会怨声载道。如今反自由主义的情绪颇为强烈。</p><p>第三共和国，意味着如何摆脱六十年代达到顶峰的困境，选择新的道路。利益集团多元主义败坏了传统的民主观念，使政府变得无能为力，没有威信，使政府无法再民主地运转。罗威所谓的第三共和国叫“司法民主制”（Judicial Democracy），强调在各个领域健全司法程序。</p><p>在凯恩斯主义的浪潮之后，社会的确面临新的选择。在凯恩斯主义下形成的社会框架和管理机制，如何才能改变，是一大难题。政府功能的膨胀如何才能缩小？正如一个人胖起来后，要想瘦便很不容易。一个是政府想瘦，第二个是民众想瘦。自由主义“奉献”了许多福利，这是不少美国人讨厌的，也是政府的一大包袱。问题是不能抛掉这个包袱，这是政治安定的一块重要基石。美国吃够了大政府的苦之后，想要小政府，但对美国社会来说，小政府肯定会造成整个社会的供血不足。社会的发展提出了全面协调的要求、科学技术也提供了必要的条件，但美国人在意识形态和情感上不能接受全面协调。自由主义的回忆仍然笼罩着人们的心灵。这个挑战，还将持续多年。</p><h1 id="三、多彩的民族性格"><a href="#三、多彩的民族性格" class="headerlink" title="三、多彩的民族性格"></a>三、多彩的民族性格</h1><h2 id="1-国际人"><a href="#1-国际人" class="headerlink" title="1.国际人"></a>1.国际人</h2><p>美国人，可以称作国际人。虽然大部分人并无主动加入这个世界的意识，但他们的社会机制和经济机制把他们强行带往这个纷繁多样的世界。比起那些被美国人或西方人视为落后和愚昧的民族，美国人的世界意识，总体而论，要弱得多。近年美国学者已多次呼吁，青年一代的世界知识少得可怜，不符合泱泱大国的地位。而发展中国家或落后国家的人们，由于向往繁荣和发展，向往外部世界，反而对世界抱着强烈的情感，拥有更多的知识。</p><p>在美国，大众是被动地世界化的，社会、经济、世界性的交往，强迫美国人世界化。早先盛行的门罗主义已经难以再现，除非有特定的历史条件。西部影片中描绘的戴着草帽、骑着马、一脸黄土的美国人，如今已经变成乘着波音 747，或乘着航空母舰与核潜艇，周游列国的形象了。相当一部分有识之士，均十分注重当今世界的发展，注重人的国际化。在教育和研究领域中下大力气，促进美国人的国际化。美国人可以说是养尊处优，一般民众对外部世界没有太大的兴趣，死守在自己的家门口。相当多的美国人，认识到这个问题，大力展开国际研究和国际教育，培养人才。</p><p>国际化的推动，主要有赖于两种机构：一是教育机构，二是科研机构。美国社会研究国际问题的机构之多，可能是名列世界各国前茅的。在大学中，都有分国或分地区的研究机构或研究计划，另外还有许多独立的科研机构。大学教育更加注重国际化教育，促使学生增强国际意识。</p><p>归纳一下，可以发现，这类机构有这样一些特点：</p><ul><li>区域性界线清楚。在大学中，有关国际的教育有专门的分类，而非笼而统之。大学政治学系一般有笼而统之的国际关系、比较政治研究课程，但同时有非常细的分工。如爱荷华州立大学就有中国研究计划、日本研究计划；密歇根大学的中国研究计划是闻名的；锡拉求斯大学的印度研究极强；西雅图华盛顿大学的中国研究计划也专列一门。大学中的研究所，也有专门的分类，如密歇根的当代中国文化研究所，专门研究中国问题。这些专门的机构或计划有力地集中了这个领域中的专家，强化了这个领域的发展。</li><li>教育性目标明确。人的国际化，重要的是一代一代的人如何获得国际意识。这个目标的达成，有赖于推行国际化教育计划。大学一般均十分注重这个目标的达成。我在中部几所大学访问时，那里的教授告诉我，中部人的观念较为保守、落后，不那么开放，不易于接受外来新知识、新观念，对世界更是觉得渺茫。要促进中部的发展，就要让这里的人更多地了解世界，所以重视国际化教育。在东部几所大学访问时，东部教授认为国际化教育是东部文化的传统，开放，了解世界，尤其是欧洲。东部的国际研究，实力很强。而在西部几所大学访问时，这里的教授强调二十一世纪将是亚太世纪，西海岸又遥对亚太地区，故应注重亚太研究，所以西部的亚太研究和教育特别发展。</li><li>政府注重推动。人的国际化，牵涉到一个国家政治、经济、文化各个方面的发展。一个社会的发展，最终要看人的素质如何。一个民族在国际上的地位和在国际社会中进行竞争的能力，最终也要取决于人的素质。决策者深谙此道。这是一个联邦制国家，各州政府对州立大学有决策权。各州政府均要求属下的大学大力发展国际化教育。举加利福尼亚大学圣地亚哥分校为例。那里过去是一所规模不大的学校，这两年迅速崛起，校园里到处大兴土木，他们建立了一个国际关系与太平洋研究研究生院，专门为加州向亚太地区发展培养人才，这个研究生院要雇佣 35 名教师，这在美国是个很大的数目。学校正用高薪在各大学挖名教授。伯克莱的一位著名日本专家已被挖去，据说给了很高的工资，大概年薪 15 万美元。这所学院正在太平洋海滨上建一座办公搂，面对太平洋的万顷波涛，坐在里面真可激发世界之幽情。这所学院是 1986 年由州政府建立的，是加利福尼亚大学系统（九个分校）中唯一的以太平洋地区为中心的国际问题教育中心。学院的介绍上写得很明白：学院的主要目标是培训对太平洋地区国家有兴趣的学生，使他们为承担企业、外交、公共机构和其他领域的领导职务做好准备，并使学院成为这个地区经济、政治、社会、技术和安全问题的研究中心。这只是美国许多大学中的一个例子。政府的意图自然不仅仅在训练学生，而在于图谋政治、经济和文化的发展。但是如果没有前面这一步，后面这一步是难以实现的。</li><li>重视国际交流。涉及国际问题的教育或研究机构，不仅注重推动本国教授研究外国问题，而且十分注意扩大与所研究国家学者的学术交流与合作。美国人大概最倾向于利用外国专家，在这方面这个民族最讲实用主义。只要有用，用谁都可以。在不少国际问题研究和教育机构中，可以看到不少国家来的访问学者，有时甚至成群结队。同时美国人也倾向于正式聘用来自某个国家的人做教授，如果他符合条件的话。因此，大学中的华裔、朝鲜裔、日本裔、印度裔、加拿大裔、法国裔、匈牙利裔的教授时常可见，这种现象在世界上恐怕都不多见。美国人的观念是实用的，因为你来自这个国家或这个地区，通晓当地的语言，熟悉那里的风土人情，在研究那个地区的问题时具有更为优越的条件。举加州大学伯克莱分校的东亚研究所为例。这个所的研究人员没有几个，只有行政人员，但所里却有几十位来自中国、南朝鲜、日本、尼泊尔等地的访问学者。所长罗伯特·斯卡拉皮诺（Robert A. Scalapino）的观点是：世界上一半以上的人口生活在亚太地区，世界上主要政治和战略大国也在这个地区，拥有大量的自然资源，这个地区具有世界性意义。研究所致力促进美国学者与亚洲学者间的交流。吸引外国学者来美国，达到的目的不仅仅是吸引，而且也是一种辐射。访问学者结束访问之后，返回各自的国家。他们成为美国学者可以继续沟通的同行，整个的学术交往将继续下去。至于这种交流中的非学术的作用，自然不在话下。</li></ul><p>美国人的国际化，从大众层面来说，不少是被动的，他们被世界经济一体化的过程卷入世界，欧洲、日本、亚洲的经济挑战，使他们不能不卷入国际经济生活。另一方面，政府政策的政策导向，也促使他们卷入国际生活，如中东问题、中美洲问题等。不过，从政府和有识之士的角度讲，他们在推行国际化方面是有的放矢的、有战略意图的。教育和科研机构也有长远目标。这些都是有意识、有组织、有规划的过程。美国过去、今天和未来的发展，不能与这个过程区分开来。使政治家和有识之士感到忧虑的是，年轻一代已越来越不那么国际化了。他们担心的实质是，美国这个世界大国的地位还能维持多久？他们是否真正了解这个世界？有没有能力在强手如林的国际舞台上进行竞争？</p><p>对任何社会、民族和国家都一样，在当今这个人类共同体休戚与共的世界上，要获得本民族、本社会或本国的发展，前提是熟知和了解其他民族和其他社会的实力和战略。当今世界是一个合作加竞争的世界，在某种意义上更是一个竞争的世界。世界各国在政治、经济、文化、军事、生活方式等方面展开全面竞争。在这场竞争中失败或落伍，就将意味着落后和贫困。近代史已经证明了这一点。目前的变化只是，这场竞争更加激烈，更加不平等。要在这场竞争中取胜，关键的因素是人。推动人的国际化，将是提高和强化人的素质的重要方面。试想赶着牛车，过着悠闲的乡居生活的人，和乘着喷气客机、过着紧张的城市生活的人，共同来到这个世界舞台上，面对着错综复杂的各种体制，谁将更有竞争力？</p><p>这里的关键不在于地理界限，在于心灵界限。生活于现代都市中的人，依然可能具有乡居的意识，居住与乡间的人，也可能具备浓烈的国际意识。教育是打破心灵界限的强大力量。只有真正和全面突破了这道界限，一个民族和社会才能真正加入国际社会，真正有效地开展国际竞争。</p><p>这道界限的打破，就是人的国际化。</p><h2 id="2-标新立异"><a href="#2-标新立异" class="headerlink" title="2.标新立异"></a>2.标新立异</h2><p>可以说，美国人在价值观念上仍是一个相当保守的民族，象性解放、摇滚乐、嬉皮士、同性恋、颓废、种族平等的观念，至今仍没有被全部美国人所接受。不少人仍持着老式的价值观。在政治方面尤其如此，传统的价值观依然占主导地位。共和党连续在总统选举中取胜，也可以说是这种倾向的一种表现。老百姓在评价政治领袖时、依然持着非常传统的标准，民主党骨干哈特因有桃色事件而不得不退出总统竞选，奎尔虽然当选为副总统，是沾了布什的光。不少人谈起奎尔就摇头，说他在学校中成绩不好，服兵役只去国民警卫队，没有经验，是靠了其有钱的爸爸走红的。不少东方人想当然地认为，在美国这样一个性解放的国度中，男女关系不会构成什么问题，但在政治领域中往往构成重大问题。在西方世界均一样。美国人在政治上遵循建国之父的观念，大体不变。整个体制也在维持这套观念，排斥其他观念，从这点来说，美国人趋向保守。</p><p>矛盾的是，美国人又是世界上最善于标新立异的民族。这个民族存在一种奇特的现象：大众既接受最古老，最悠久的东西，又乐于接受最新颖、最奇特的东西。这个社会有着比其他社会更多的发明创造，有着比其他社会更大胆、更勇敢的设想。最近几年，美国人发射了航天飞机，提出了星球大战计划，1988 年底展出了样式别出心裁的 B2 轰炸机。在小发明上，美国人也相当出色。走进大的百货商店，可以找到各式各样的商品，用于各种不同的目的。</p><p>一方面是具有保守性，另一方面具有创新性。这里面似乎有些矛盾。</p><p>这个矛盾表现在不同的领域中。美国人在价值领域中往往是保守的。但在技术领域中，却追求标新立异。技术领域中再大胆的设想都会得到赞同。有一些美国人在一块偏僻的地方建造了一个模拟的太空城，准备招募志愿者在里面封闭地生活两年，竟然很快完工了。如果明天有人提出在大西洋上造一条高速公路从美洲通往欧洲，或者在太平洋上造一条高速公路，从美洲通往亚洲，不会被认为是疯狂，而会被认为是一个了不起的想法。</p><p>运用人的能力去征服自然是美国传统的价值之一，于是在这里创新与传统并不矛盾。创新的过程就是遵循传统价值的过程。这个过程中异想天开的特性往往仅限于物质和技术领域。在物质和技术领域中，美国人准备接受一切。美国的历史发展和科技进步造就了这种心理状态。</p><p>我在圣路易市参观拱门（Gateway Arch）时，反复思考这个问题，想从中找出美国人标新立异的原因和作用。</p><p>圣路易市的拱门是世界上数一数二的，大约有 630 英尺高，将近两百米，全部由不锈钢制成。高高矗立，在阳光和蓝天下银光闪闪，十分雄伟。拱门的跨度也在两百多米开外，整个拱门就象一个特大的银色彩虹出现在密西西比河畔。拱门下面是杰佛逊国土扩展纪念馆，纪念美国十九世纪上半叶的托马斯•杰弗逊总统推进开发西部运动。拱门内有电梯，游客可以从下面一直来到拱门顶，拱门顶处有十米长的通道，有些窗口，可以鸟瞰圣路易市的全景。电梯从拱门的两条腿里上升或者下降。这真是一个奇特的设想。设计者是芬兰籍的美国建筑师Fero Saarinean，他的设计于1947年在全国性征稿中取胜。后由技术和工程人员于1963年开始建造，1965年完工。</p><p>建造工艺也别具一格。这么高的建筑物，也没有搭什么脚手架。从两条腿造起，吊车就架在两条腿上。造高一点，向上爬一点。两条腿按事先的计算凌空造起，在顶部逐渐靠拢，最后合拢。整个过程，从设计到建造都是标新立异的。但人们接受了，并造了出来。我也怀疑：会不会有人问造此物有何用？能否创收？为什么不造一个传统的纪念碑式样的？谁敢保证能成功？</p><p>密苏里州另一个体现美国人标新立异精神的建筑是 Fulton 学院的教堂，Fulton 是一个举世闻名的但不起眼的小地方。其闻名是 1946 年二次大战硝烟消散不久，英国首相温斯顿•丘吉尔在这里发表了著名的演说，曰“铁幕”已经降下，将东西方割裂开来。东西方之间的冷战从此开始。“铁幕”成为西方描绘苏联东欧国家的常用词。这个地方有一所教堂；从外表上着，教堂很不起眼，与美国数不清的教堂相比，没有什么特别之处。但这是一个别有风味的教堂。主要原因在于建筑这所教堂的石头均从英国运来。这原是英国的一所教堂，建于十二世纪，1677年全部改建。二次大战期间被炮火严重摧毁，剩下的只有残垣断壁、石头和十二根石柱。二战之后，教堂一直是废墟，这时威斯敏斯特学院纪念委员会提出将这些石头搬至密苏里来，建为学院的教堂和温斯顿·丘吉尔纪念馆。1965年开始动手，七百吨的石头跨越大西洋，共花去300万美元。美国总统哈里·杜鲁门为教堂奠基。1969年完工。这的确是美国人标新立异精神的一种典型体现。会不会有人问：为什么不就地取材？这要增加多少开支？哪里没有石头，要跨越大西洋去运这些破石头？</p><p>此仅为美国人标新立异的两个例子。我们还可以举出其他很多例子：爱荷华市的篮球场可容纳上万人，但在地面看只有一层楼那么高，体育馆整个地陷在地层下面。爱荷华大学法学院的建筑，赤膊的钢骨水泥，大圆顶，只有一些小窗，活象一个军事工事，如果作战，我看不那么容易攻破。美国人可以想出在一座大山上雕刻五位总统巨大无比的头像。华盛顿的无名英雄纪念碑，高耸入云，光秃秃的，类似埃及式的柱子。越战纪念碑，为一堵黑色的墙，上面刻有每位阵亡者的名字。家具店出售流行的水床，床垫子是差不多一尺高的水垫子，躺上去柔软无比，水还能加温和减温。电影中有最奇特的想象，《E.T.》、《星球大战》、《超人》、《第三类接触》等。最近推出的 B2 轰炸机，没有尾翼，整个就象一对翅膀，与传统的飞机式样迥然不同。服饰更是千奇百怪，新衣服，十分昂贵，买来时就被加工得破破烂烂，据说工艺十分复杂。在科技领域，美国人的标新立异精神更是硕果累累，如此等等，举不胜举。</p><p>当然，有时标新立异走到了极端，上面说的新破烂服装便是一例。另外，如有人造些超豪华的轿车，奇大无比，内有厨房、游泳池、高尔夫球场、电话、电视等各类设施。恐怕只有极少数人能享受了，有时候走在大街上，可以看到一些人的头发完全竖起来，爆炸式，或剃个阴阳头。有的公共场所挂着几块破铁皮，谓之现代雕塑。对于一些现代艺术，不少人不敢享用。</p><p>不论怎样，在技术上和物质领域中追求标新立异的精神，是这个社会发展的一股重要动力。科技进步和经济发展都是由这种精神推动出来的。既然说美国人在价值上有较大的保守性，为什么他们又成功地保护并推进了这种创新精神呢？</p><p>其一，对价值和技术、物质有明确的区分界限，价值涉及道德领域或公共领域，应当考虑到大部分人的倾向。后一领域属私人领域，标新立异是私人在这个社会上的砝码。要得到社会的承认，就要与众不同。政治历史没有提供其他社会具备的先决条件，如贵族、血统，人人均要依靠成功和创造。实际上，价值领域中的保守倾向保证了技术和物质领域的创新，使社会在一个有序的范围内创新。</p><p>其二，价值取向上的保守没有形成对技术和物质创新的特别束缚（不能说一点没有）。美国人从欧洲来到新大陆，本来就是在赤贫之地与自然的斗争中、在战胜自然中成长起来的，这成为美国传统中的一个固定价值。承认这类创新和接受这类创新，本身就是维护传統。一方面，美国人的观念似乎将技术和物质部分排除在价值范围之外，认为技术就是技术，物质就是物质。技术和物质创新是价值创新以外的东西，它们会充实传统价值。有些社会的文化没有这样明确的区分，社会一统，各类东西均与价值有关，这往往容易掣肘技术和物质进步。另一方面，传统价值的核心均很抽象，如自由、平等，追求幸福。于是，技术和物质创新可以被认为是自由的一种体现，接受创新可以被认为是平等的一种表现。</p><p>其三，社会的机制逼人创新。之所以说是逼，是因为如要取胜不能不创新。有两个机制逼人创新。一是金钱至上，任何人、任何团体要取得金钱，或得到更多的金钱，都必须与众不同，必须不断推出更新的东西来吸引人们和社会。二是充分富裕和发达。社会的充分富裕和发达，使人们在较高的层次上趋于平均化，没有特别的创造便不能出人头地。水涨船高，人人都在追求创新，创新以获得金钱，创新以获得自我，创新以获得社会承认。要取胜，就得更上一层楼。</p><p>其四，“大国虚荣心”促使美国人标新立异。，“大国虚荣心”不一定是好东西，但在促进创新方面有一定的作用。美国人自小就在“美国世界第一”的氛围下成长起来，大部分人均相信”美国世界第一”的说法。越是走向高科技，人们越要追求世界第一的倾向。这一心理的确促使美国人做出许多举世公认的创造。同时，也往往造成错觉，美国人老子天下第一的想法已碰了不少壁。但其促进创新的功效是存在的。</p><p>其五，社会上占统治地位的个体论也间接作用于创新。标新立异往往意味着某种形式的个体论。任何标新立异，首先是一种独特的、与众不同的设计。这种设计要求个人较少考虑他人意见和他人的要求。标新立异表示某种个性。有的大型创造不是一个人的创造，但最后可以分解为诸多个人的创造，是他们个性的总和。个体论使人们具有较强的个性，容易追求标新立异。在与之相反的文化氛围中，标新立异在个人的心理上和社会的接受上都要难一些。个体论对社会和谐有消极作用，但它也以某种方式作用于人和社会。</p><p>其六，传统价值中的民主成分，促成人们选择创新，接受创新。美国人乐于接受创新，说得俗一点，往往善于起哄，一个新东西出来后，如不说好，就有可能被认为最不民主或没有文化修养。好象有的人看抽象派的画，不敢说不好，生怕人家笑话。不过，许多人真心赞同标新立异。他们接受成功者，接受有不同想法的人。标新立异者往往享有特殊的名誉和尊敬。</p><p>一个社会的发展，离不开创新精神。创新精神的发扬，需要社会鼓励和接受标新立异。同时，对任何社会来说，价值的延续也都必不可少，否则社会稳定无以为继。问题是如何把价值延续与技术和物质创新划分开来，使价值延续保证后者的发展，又使后者的发展加强价值延续和传递。从这点看，标新立异的氛围能否形成，在很大程度上并不是技术和物质问题，而是价值本身的属性问题。</p><h2 id="3-非神秘化"><a href="#3-非神秘化" class="headerlink" title="3.非神秘化"></a>3.非神秘化</h2><p>美国社会是最少神秘感的社会。人们在这个社会中长大，对任何事务均无什么神秘感。这是美国文化中的一个不可分离的部分。不少民族有浓郁的神秘感，如非洲一些民族，拉丁美洲的一些民族，包括西欧文化的某些成分。神秘感在一个社会发展中起什么作用，值得探讨，至少它会成为很多传统观念和传统体制的围墙。对于自然界也一样，科学技术的进步在于不断征服自然界、战胜自然界，如果对自然界或对自然界的某些方面充满神秘感，便不能大踏步地踏入自然界的殿堂看个究竟，而会在外面徘徊不前，祈祷神灵保佑。美国人在这方面几乎没有什么禁忌，或者说禁忌并不成为禁忌。另一方面，社会的发展是人类自身发展，如果对人本身充满神秘感，人类社会的文化及社会制度就难以发展。</p><p>我们可以来看看如何非神秘化。</p><ul><li>不少民族对上苍怀有神秘的感觉，深深信奉。美国人有强烈的宗教情感，但这种情感并未使大多数人把天神秘化。阿波罗登月计划、航天飞机，是走出神秘感的努力。包括星球大战计划在内，把上苍视为人们能操纵并加以利用的一部分。天在美国人心目中是上帝居住的地方，但这块地方从来没有被神秘化。《星球大战》、《E.T.》、《第三类接触》与其说是神秘感的产物，不如说是非神秘感的产物。但在美国，宗教传道士们的力量极大，却又证明了宗教和上帝的神秘所在。</li><li>自然界在不少民族中往往带有神秘气质，美国人对自然界较少怀有神秘感，他们不断地认识自然界，不断地使自然界非神秘化。这种文化因素恐怕是推动美国社会发展的一种观念力量。科学技术发展的一个首要条件，就是应当相信没有任何事物在人的认识能力和创造能力之外。</li><li>对人自身，美国人也最少神秘感。信教的人知道《圣经》上说上帝造人。但社会依然在不断破除围绕着人的神秘感。医生打开胸腔和头颅，在心脏和大脑上动手动脚是常事，难度是纯技术性的，没有观念因素。美国人最想移植人造心脏。美国人的试管婴儿之多，在世界上也数一数二。非神秘化，推使美国人走向人造人。少年时期的性教育，也是非神秘化的产物。性的问题在很多社会中都被蒙上神秘的色彩。在美国社会，性成为油盐酱醋一样人人皆知的常识。赤身裸体的杂志虽有人反对，但大部分人并无特别的兴趣去看它，已经习以为常。对人自身的这种态度，不仅影响自然科学，也会影响社会科学。如果真正懂得人是什么，便不会有任何方面的神秘感。</li><li>政治在不少社会充满神秘感，美国人对政治最少神秘感。有时令人觉得美国人太实际、太实用。把政治当经济活动一样经营，缺少文化因子。文化中的非神秘感对维护政治制度起到了不可低估的作用。政治漫画充分表明了这一点。政治明星往往是政治漫画的主角。就 1988 年总统竞选而言，政治漫画家 Joe Sharpnack 就画过一幅画：一个小孩在床上打滚，又哭又闹，口中说:“我要做副总统！我要！我要!”另外一人酷似布什，拿着一面国旗，说:“好，好，看，爸爸给你做了一件新大衣。”这是讽刺共和党总统候选人布什和奎尔的。政治的非神秘化还表观往新闻界的报道上，新闻界在政治报道方面十分活跃，如水门事件就是由新闻界搞出来的，伊朗门事件、国防部受贿案，都与记者有关，政治象其他各种活动一样，有兴趣的人不多，一个国会议员候选人，得自己开着车到处拉选票。</li><li>对社会也没有什么神秘感，社会是人的创造，而非相反。只要有必要，就可以再创造。最近有位学计算机的大学生编了一个程序，输入五角大楼的网络，结果破坏了五角大楼的数据库。他编的程序成了“电脑细菌”，不断生长。对于人们自己设立和创造的东西，美国人尤其没有神秘感。能创造第一次，就能创造第二次。</li><li>在儿童教育中，少有神秘化的现象，这是非神秘化的社会化机制。美国人几乎没有鬼的观念。美国人发明和构想出很多鬼，可能比世界上任何国家都多，但不信鬼。小孩子就没有鬼的观念，Halloween 节，小孩子都装扮成各式各样的鬼在邻里之间活动。美国人从小培养的心理是，鬼不可怕，人才是真正可怕的。有些社会则完全相反，人不可怕，鬼才可怕。这两种不同的信条会产生怎样的后果，讨论起来定然有趣。</li></ul><p>非神秘化对社会发展有利有弊。任何事物都有消极和积极两个方面，无论是好事物还是坏事物。这种状况往往构成人类社会发展的一大难题。非神秘化无疑推进了美国人对自然界、对自身和对社会的认知，从而推进了社会进步。另一方面，非神秘化构成美国社会管理障碍的主要部件，非神秘化使人们缺乏权威、中庸、自持、自信，或者说易于使人们缺乏这些要素。如果一个社会人人都怀着一切都不可最后相信的念头，就可能成为最大的推动力量，也可能成为最大的破坏力量。这就是我说的人类社会的难题：我们不能有神秘化，又不能没有神秘感。</p><p>问题是如何形成了这种非神秘化的文化。这是一个太复杂的难题，恐怕一下子讨论不清楚。不过有一点可能有些价值。美国社会是在一个没有悠久文化的土地上发展来的。自然资源的丰富和地理条件的优越，使早期美国人发现，任何人的实际努力都会得到优厚的回报，早期主要是土地的回报。文化上没有神秘的东西可以神秘化，日常生活告诫人们认识简单而普遍的道理才会有回报。长期以来讲究实用主义和侧重经济发展也推进了非神秘化。甚至可以说，金钱造就了非神秘化。在金钱的驱使下，人们开始是不断突破自然界的神秘领域，后来扩展到人自身和由人组成的社会。经济发展要求非神秘化，非神秘化又可以在一定条件下促进经济和社会发展。这有两点，首先，美国人喜欢标新立异，独出心裁；其次，美国人习惯了挑战和征服。美国文化是一种攻击性的文化，中国文化是一种防卫性的文化。</p><p>什么叫神秘化？神秘化就是认为有些事物是普通人的能力无法认识和改变的，或者说不属于普通人的事务。自然，这里说的不是神化，神化讲的是人与超自然力量之间的关系，神秘化讲的是人与人之间的关系。</p><h2 id="4-神圣化"><a href="#4-神圣化" class="headerlink" title="4.神圣化"></a>4.神圣化</h2><p>美国人倾向于非神秘化，但他们也最倾向于神圣化。神圣化依然不是神化，因为它牵涉到的是人与人之间的关系。美国人很少把什么东西神化。在有些社会中，一种事物达到了超出普通人能力时，往往会被神化。如《众神之车》的作者所描绘的种种现象。太平洋岛屿上的一些人把二次大战时美军飞机的偶然降落神化，用木头做了一个逼真的飞机加以崇拜。在不少社会中，巫医具有神秘的感觉。美国社会没有这样的文化，虽然有人民圣殿教这样几百人集体自杀的案例，但这是罕见的。美国民族不倾向于神秘化和神化，但这个民族有一种特殊的天性，我称之为“神圣化”。</p><p>何为“神圣化”？神圣化首先是一个世俗领域。它带有某种崇拜的性质，但不是宗教崇拜。神圣化的过程，是将某一人间现象推到极高的地位。这个过程并非哪一个人或者哪一个组织发动的，而是社会化的过程。我们先来看我所谓的神圣化的具体实例，再来分析这种现象的社会功能。</p><p>美利坚民族是一个很容易感情冲动的种族，也是一个很容易接受外部事物的民族。神圣化可以在政治领域中看到。两党的全国代表大会，便是这种神圣化的典型表现。会场上的人们如痴如狂，那种热烈，那种激动，那种真情，都是一种少有的情感上的共鸣。两党各自的候选人。都会在这个会场上受到热烈的欢迎。他们出场时，人们可以欢呼十分钟之久。他们的讲话，不断地被鼓掌声和欢呼声打断。整个竞选过程中，两党候选人无论走到哪里，都会受到这样的欢迎。照理这样一个个人主义和平均主义的文化中，一个个人很难受到这样的崇拜。其中的原因就是他们被神圣化了，他们只是一个象征，一种文化或大家追求的目标的象征。人们更多地是在追求一种神圣化了的精神。</p><p>美国人对个人也极容易走到这一步。不论是什么人，从事什么行业，只要取得了成就，往往容易成为神圣化的对象。上至总统，可以说华盛顿和建国之父、林肯、罗斯福、肯尼迪等是被神圣化了的。美国人在赞美他们的同时，也在赞美一种精神。个人的神圣化并不仅仅体现在政治领域中，在体育界，很多著名的球星或其他运动员都被纳入神圣化的过程，如田径运动员刘易斯、跳水运动员洛加尼斯等。在经济界，被神圣化的可能性更大，艾柯卡一度是这种神圣化的热点，艾柯卡在福特汽车公司取得了光辉的业绩，被赶出福特公司后，加盟克莱斯勒汽车公司，又引人注目，他的书成为畅销书。电影明星自然在神圣化之列，著名导演、艺术家也不例外。尤伯罗斯因组织第 23 届奥运会而名声大震，也被神圣化。最近在伊朗门事件中受牵连的诺思中校，居然也成为神圣化的对象，因为许多人觉得他忠于职守，是美国精神。不过，好象很少有哪位教授成为神圣化的对象。歌星自然非君莫属，玛多纳红极一时，杰克逊更是红得发紫，连里根总统都授予他一个什么奖章。他的演出达到的效果，令人惊奇，听众们的崇拜劲头，恨不得死了去。科技界的人士，也极容易成为神圣化的对象，如苹果电脑公司的创始人、王安电脑公司的王安等。这个神圣化的过程，充分开放，不是由一个中心决定谁可以成为神圣化的对象，而是由社会大众加以选择的。</p><p>这种神圣化，自然也表现在其他方面。如橄榄球比赛，实际上也被神圣化了。人们不是在那里看球，而是看各自所信奉和拥戴的东西。比赛的整个进程，从奏国歌、仪仗、出场、比赛、球场休息时的演出，都超出了球赛本身的意义。如庆祝建国二百周年在自由女神像下搞的活动，热闹、场面大，其性质也非一般的庆祝，带有某种神圣化的味道。这是政府所为。政府常常成为神圣化的推动者，如军队，军队的神圣化很明显。尤其表现在美国人对军事胜利的态度和对在战场上阵亡的人身上。华盛顿有一座奇特的越南战争纪念碑，每一个阵亡的人都留下了名字。对于阵亡者，官方要举行隆重的葬礼。政府对航天飞机的态度，也是一个极好的实例。挑战者号航天飞机爆炸后，政府给予遇难的宇航员极高的评价和荣誉，把他们视为开拓美国精神的献身者。发现号航天飞机发射成功，政府视为美国精神的胜利，意义已在宇航技术突破之外了。</p><p>神圣化的过程，实际上是将各种人们信奉和选择的现象上升为美国精神的过程，同时也是人们接受美国精神的过程。社会培养了这种机制，人们有牢固的英雄崇拜、成就崇拜的心理沉淀。西部片中描绘的基本精神，就是英雄崇拜和成就崇拜。《星球大战》在另一个角度体现这种精神。今天的英雄已非昔日的牛仔形象，今天的成就概念也在变化。然而，美国人内心中英雄崇拜和成就崇拜的性格依然存在。美国民族缺乏鬼神崇拜，取而代之的是前两种崇拜。</p><p>这两种崇拜藏在人们的内心深处，在得到强而有力的呼唤时会显现出来，当代美国文化中平均主义、虚无主义、相对主义的生长，使这种性格受到很深的压抑。在一般条件下，很难想象美国人会有这样强烈的崇拜情感。神圣化过程，一方面是一个社会感应的过程，另一方面也是一个自我释放的过程。看一下球扬、会场和演唱会上观众疯狂的情感，就会明白它们如何满足了人的上述两种基本需要：崇拜感和个人释放感。</p><p>这种世俗崇拜，不同于神化崇拜。神化崇拜是崇拜超人和超自然的力量，如神、仙、鬼、图腾等。对上帝的情感，在美国人是一种信仰、一种情感、一种信念，而更多地不是一种崇拜。美利坚民族非神秘化的倾向，使他们很难产生神化崇拜，人的崇拜需要便转向世俗。人们在自己的周围寻找崇拜的寄托。美国人是个实用主义的民族，他们难以崇拜抽象的、传说中的、看不见的对象，但对自己周围的成功、勇敢、冒险、智慧，他们可以崇拜。这种崇拜夹带着复杂的因素，理性的，非理性的，情感的，非情感的，有意识的，无意识的。神圣化过程，实际上不是神圣化个人，而是神圣化一种精神。这种精神已构成文化的传统，成为其中的基因。社会的神圣化过程又不断地巩固它。这是一种什么精神，难以名状。抽象地讲，存在。有关这点，可见康马杰所写的《美国精神》一书。</p><p>神圣化的过程有一个基本的社会功能，这就是维持和传播社会的核心价值。社会的神圣化过程起着非同小可的作用。它一方面将其精神传播给社会各个层面，另一方面又吸引人们加入神圣化的过程。人们的情感、思想、信念、追求在这里达成某种一致。我想起卢梭说社会必须有公民宗教的论点，觉得社会神圣化的过程，十分象制造和传播公民宗教的过程。在这样一个个人主义的、自我中心的社会中，神圣化是最好的传播核心价值的机制。</p><p>一个社会没有核心价值就不能均衡发展。问题是核心价值从哪里来，又怎么样来维持。如果是来自对人们周围事物的提取，由人们自己来传播和维持，则可能是一种最有力量的机制。</p><h2 id="5-航天飞机的误导"><a href="#5-航天飞机的误导" class="headerlink" title="5.航天飞机的误导"></a>5.航天飞机的误导</h2><p>“发现号”航天飞机发射成功，飞黄腾达，直奔蓝天。各电视网都播发了现场镜头。这次发射成功，对美国人来说非同凡响。1986 年 1 月以后的两年多时间，美国没有发射过航天飞机。那一年，“挑战者号”爆炸，宇航员不幸遇难，曾震动世界。两年半之后，“发现号”发射成功，不能不说实现了许多人的梦想。</p><p>航天飞机的计划最好地体现了美国人的一种精神，也就是康马杰所云：美国人的信念是没有什么事是办不到的，除非得到全胜就绝不罢休。对太空的探索恰恰体现了这种信念。航天飞机的制造、发射和控制过程异常复杂。只要看一下控制中心令人眼花缭乱的成百台电脑，就可以想象这里面需要的科技能力。自从“挑战者号”出事之后，美国航天部门，花了两年半的时间来改进计划，共作了四百多项技术改进。美国人的信念是如上所说，所以他们坚信能找到办法，坚持不懈。这种精神促使他们进行许多极为大胆的想象，如星球大战计划、航天飞机等，也促使他们接受许多不起眼的小发明，如开信封的机器，开罐头的机器，电动削铅笔刀等。应当说，这种信念是推动社会发展的非常重要的一股力量。</p><p>不过，这种信念也会异化。这种信念促使美国人想出各种办法来解决面临的问题，结果是科学技术的高度发达，但科学技术高度发达之后，人们又往往产生错觉，似乎最终解决难题的不是人，而是科学技术成为最终的力量，人成了它的奴仆。</p><p>一位教授和我讨论这个问题，也有同感。这种错觉主导着很大一部分社会。在一些错综复杂的社会文化问题面前，美国人往往会认为是科学技术问题。或者是钱的问题（这是商业主义精神的结果），而不是人的问题，主观性的问题。在政治领域也是如此。对待苏联实力增长的态度是拼命发展优于苏联武器系统的装备，包括最终提出的星球大战计划。对待恐怖主义的方法，就是用先进的攻击力量打击对方。对待国际海域的威胁，就是强大的设备精良的舰队。对待不喜欢的政权，就是向反对派提供大量先进的武器。最典型的说明就是残疾人得到的装备，自动导向的轮掎，可以听从命令的床边服务设备，可以导向的眼镜。残疾人可以自由行动。但作为人，他们的问题没有解决。在政治和国际关系领域中，也如此。</p><p>一方面人们过分信仰技术，另一方面技术也成为政治。“发现号”发射成功后，肯尼迪航天中心主任佛莱斯特·麦克卡尼（Forrest McCartney）说：“今天每个美国人都肯定扬眉吐气。”总统里根在华盛顿看了电视，并发表演说：“美国重新回到了空间。”其实，航天计划从一开始就是政治砝码。六十年代，苏联登月成功，美国人大为恼怒，肯尼迪总统下令全力发展航天计划，后阿波罗登月，压倒苏联一筹。技术竞争背后存在着政治竞争，政治竞争需要技术竞争、技术竞争支持政治竞争。</p><p>二十世纪人类的一个重要走向，就是政治与技术的高度一体化，没有技术的政治无法成为强大的政治，当然，没有政治的技术也成不了强大的技术。</p><p>由于技术与政治的这种结合，技术本身异化了。这一现象在美国尤为鲜明。有时候，不是人掌握技术，而是技术掌握人。如果要压倒美国人，必须做一件事情：在科学技术上超越他们。对很多民族却不一样，有技术不行，还必须有文化的、心理的和社会学的条件。</p><p>美国人长期处在优越的地位，差不多从一次世界大战之后，它的优越地位就形成了。七十年时间里，美国有过几代人，二次大战之后出生的人目前也已是四十多岁。这一代美国人更是处在“美国第一”的氛围之中，心理上形成一种定势。因而，美国也是输不起的民族。技术优越感已渐渐发展成民族优越感，他们不能想象有什么民族可以超越他们。日本在战后几十年中迅速崛起，在高科技领域中发展异常快速，在有些方面已超越美国，如电子产品、汽车等。日本产品大量涌入美国市场，日本资金也大量涌入美国。有人说夏威夷的地产不少落入日本人手中，由于日本人纷纷来买房子，弄得地价飞涨。美国人对此是不服气的，对日本人往往不屑一顾，谈起来总带有轻蔑的神态。美国人在很长时间里不愿承认日本的成功。哈佛大学教授傅高义为使美国人明白这一点，花了不少气力。他的《日本名列第一》令美国人如梦初醒。类似的状况，我想美国人还会遇到。</p><p>政治和技术的这种奇妙的交合，也涉及航天飞机。而且这种高科技更是这种关系的集中反映。一些学者已经意识到这一点，开始批评这种“异化”。有一位叫阿伦（Allen）的物理学教授就认为，在“挑战者号”发射失败之后，为了挽回面子和出于政治上的动机，宇航局把发射成功放在首位。我说航天飞机的误导，只是个比喻，实际上指科学技术的误导。美国人可能需要花几代人的时间才能认识到这种“误导”。</p><h2 id="6-工作伦理"><a href="#6-工作伦理" class="headerlink" title="6.工作伦理"></a>6.工作伦理</h2><p>美国人对待工作的态度，自然不能说是清一色的，有很大差别。如果言整个社会的劳动力，那差别极大，很多人宁可领政府发的救济金，也不肯去找工作，有工作也不做。这构成社会的一个大问题，很多纳税人牢骚满腹：为什么政府要把我们口袋里的钱拿去给那些游手好闲的人？特别是中产阶级对此忿忿不平。</p><p>如果说在工作的人，那又是另外一回事。大多数工作的人，都工作得努力、勤奋、积极。对此，可以作多种解释。工作态度是一个社会最宝贵的财富。人们的工作态度认真、勤勉，社会就获得了这笔财富。反之，社会就会丧失这笔财富。日本、新加被、香港、南朝鲜的经济起飞、与人们的工作态度有密切的关系。</p><p>自然，往不同的社会中,人们可以通过不同的途径来促进工作态度。如在日本、南朝鲜、新加坡、香港这样的东方文化中，严格的管理制度可能是一个重要因素。在发达资本主义国家，例如美国，个人主义占主导地位，什么东西促进着人们的工作态度，很值得分析。无论如何，不管采用什么方法激发出来的良好的工作态度。均是一个社会的第一财富。</p><p>美国人的工作态度，可以说是认真的，勤勉的，而且有些人的工作态度使人觉得不易做到。</p><p>在所有的政府机关、公共场所、商店、机场、车站、饭店等地方，大部分人都有较好的工作态度。他们认真、热情、主动、熟习业务。我去过许多公共的或私人的部门，有的去做调查，有的是去办事，那儿大部分人都可以称得上工作称职。他们工作主动。我在国会议员内格尔（Negel）的联络处做调查时，那里的两个办事人员一件一件地认真解释，还翻箱倒柜地找参考资料。我在的政治学系的三位秘书，每天坐在那里，三个人很少讲话，自己忙自己的事情。大部分工作场合的人，都是忙忙碌碌的，闲着的人几乎没有。</p><p>如果到第三产业的部门去，服务态度均不错。饭店里的招待，热情主动；商店里的营业员，也一样，有问必答，常常主动问，要什么帮助。公共汽车的驾驶员，处处为乘客着想。我乘坐的一班车，由于时间长了。驾驶员知道我住在哪里，就在那个路口主动停车。乘坐飞机，如果有什么问题，航空公司会全程安排。我的一位朋友的父母来美国，老人不会讲英语，又遇上飞机误点。航空公司全部负责安排，包括误点安排旅馆、接送。如果坐在家里想吃 pizza，打一个电话去，有关公司就会送货上门。整个服务业，十分方便，令人感到不陌生。</p><p>讲到工作态度，许多美国人也是极其勤奋的。我认识的一位年轻助教，几乎每个星期六、星期天都要来办公室工作。他正在完成他的博士论文。大部分教师每天都来系里办公，坐在计算机前著书立说。据说一些人达到正教授的位置后，就不那么勤勉。一位教授的夫人，是搞激光的，那个工作劲头令人吃惊。几乎每个晩上和星期天都在实验室工作。可能日本人的工作态度还要厉害。日本人每天工作到深夜是很正常的。日本人有过一句名言，叫“工作到小便发红”。美国很多人也工作勤奋，但他们与日本人还是有区别。美国人有一个专门的字眼描绘这种人，叫 Workaholics，直译叫“酗工作者”，由“工作”和“酗酒”两个字眼组成。</p><p>问题是什么东西促使美国人这样工作？在这样一个资本主义社会中，在这样一个个人主义的社会中，有什么力量可以促使他们这样做？如果工作态度需要庞大的机构来促进的话，那这对社会的经济管理来说，将是不堪忍受的负担。</p><p>解释有多种、其一就是工作伦理（Work ethic）。工作态度受工作伦理的影响。工作伦理，也成为清教伦理，新教伦理。有的认为它们鼓动人们勤奋工作。这种精神由早期殖民者从欧洲带到美国，其基本精神是：物质上的成功是上帝恩赐的信号，实现了这些成功的将是上帝的选民，将会进入天堂。韦伯曾写过一本书来分析清教伦理与资本主义发展的内在关系，算是这派的著名理论家。如今，这种宗教色彩早已大大淡化，但这种精神在小范围内还存在。大部分人已不能说受这种宗教精神的影响。文化的发展，早就把这种宗教精神排挤到遥远的地方去了。如果说上了年纪的人还有这种观念，年轻一代就不知这种宗教信仰为何物了。所以，显然不能用宗教的感情来解释。宗教情感，对新一代人来说，已是十分遥远的故事了。</p><p>另一种解释就是美国之梦（American Dream）驱使人们勤奋工作，看过电视连续剧《埃利斯岛》的人，不难明白什么是典型的美国之梦：这就是发财致富。勤奋工作可以得到报酬，可以拥有财富，提髙社会地位。移民到美国来，结果“发”了，成为巨富这种解释，至今还能成立，大部分工作着的美国人出于几种交汇的动机，其中获得金钱是很基本的动机。但是否每个人都想腰缠万贯，难说。不少美国人已没有这样的兴致，只要能生活得舒适就行了。</p><p>还有一种是从心理学的角度来解释的。这种解释相信工作可以使人产生满足感，如马斯洛就有系统的理论分析。事实上，的确有不少美国人在工作中追求心理上的满足。这种现象可以从大量的自愿工作者的现象中得到证明。自愿工作者没有报酬，完全是义务的，但他们由工作可以摆脱个人的孤独感，得到社会的承认，发现自己存在的意义。但从纯粹心理学考虑问题的人毕竟不多。</p><p>应该还存在别的什么机制，促使人们认真工作。我觉得，最重要的是人们追求生活的愿望只有在勤奋工作时才能得到满足。产生这种机制的主要原则有两个：一是生活水准的提高与否主要决定于收入的多少，金钱的多少，金钱成为维持和改善生活之必需；二是大部分工作职位由私营的部门提供，不论是公共部门还是私人部门，都有充分的用人权，没有终身雇佣制。一方面是人们为了生存或生活得更好必须工作，另一方面如果要继续工作下去或得到更好的报酬，必须勤奋工作，不然就可能失去工作。这两种原则，是当今促使大部分美国人勤奋工作的主要动力。</p><p>当然，这两种原则要能发挥作用，还需要其他条件。从经济上来说，商品的充分涌流是一大条件。商品充分涌流使每一个有钱的人可以购买任何出售的东西，地位、权势、家族不再成为限制，这样大家就会去追求金钱，而非其他。从文化上来说，由于金钱在任何一件工作面前都是平等的，各行各业的髙低之分已不重要，重要的是拿这些钱一样可以达到一个人所追求的目标。搞环境卫生的人挣的钱并没有臭味，在社会上一样流通。当人们的消费欲望被充分刺激出来后，只要有钱便可以，而工作性质的差别是第二层次的东西。</p><p>可以说，这套机制具有强制性，它们把所有的人都纳入资本主义的运营方式之中，并且强迫进入这个机制的每一个人服从它们的规则，也可以说这是私有制的强制。它们可以把任何不愿服从这个机制的人驱逐出去。人们在这里得到金钱，资本也在这里得到利润。这套机制是资本主义社会得以运转的基本机制。同时，这套机制又在政治系统之外，人们的工作态度由这套机制来保证，而非由政治系统来保证。政治系统显得轻松多了。</p><p>以上说是概而论之的，社会存在反社会和反这套制度的力量。许多人宁愿游离于这套制度之外。</p><p>美国人工作勤勉，但也最善于放松。用美国人的话来说就是 to work hard and play hard，玩命地工作，玩命地玩。这一点和日本人不同，日本人大概只有前一半，玩命地工作。日本人最近纷纷议论一种病，叫“过劳死”，即许多人在中年时就因长期过度劳累而死去了。美国人在周末或在假日里，具有最雄心勃勃的计划，准备大笔大笔地花钱。学生在周末也最疯狂。也许是在工作中受的强制和压抑太多，要发泄一下。</p><p>任何社会要使人们具有良好的工作态度，都有一个先决条件，也很简单：就是想办法使每一个人都感到是在为自己工作，而非为别人工作。对大部分人来说这是重要的。怎样使人们产生这样的感觉，方法可以不同。这种感觉，仅在经济领域并不一定能产生，还需要政治、文化等其他条件。其实社会组织，无论何种方式，很少允许每个人都为自己工作，这样社会将不成其为社会，关键的是要使人们有这种感觉，这种信念。</p><h2 id="7-性解放"><a href="#7-性解放" class="headerlink" title="7.性解放"></a>7.性解放</h2><p>西方人的性解放，在东方人眼中是一件既诱惑人又觉得不可思议的事情。对西方人的性自由、性随便、性泛滥，东方人大都早有耳闻。其实这个问题对于一个刚刚踏入美国的人来说，并不那么容易探讨，因为无法深入美国人的生活。观光者可以看到街上有放 X 级电影的电影院，在纽约的大街上也可以看到成群结队的妓女。在电视节目中也有裸体和性生活的镜头。书店和杂货店陈列着《Playgirl》、《Playboy》、《Penthouse》这类黄色刊物。但是这些都是商业化的性解放。真正普通美国人对性问题的看法，并不那么容易了解。我所分析的，理论多于实际，因为我的确没有深入到美国普通人的思想和生活中去。我记得《光荣与梦想》这本书中，对性解放有非常记实的描绘。</p><p>有一点是确定无疑的，今天西方人和美国人对性的看法已大大异于十八世纪，甚至两次世界大战前。西方传统的观念和伦理也强调妇女的贞操和自重，强调女子应有整套严格的行为规范。旧式欧洲的文化更注重这一点。今天已经全然不同。经典的观念转变是：性不能被限定在一个肉体快乐的定义中，也不能仅仅理解为人与人之间深深结合的象征（Elizabeth Janeway）。因为如果作这样的理解，性活动就要受社会、宗教和道德价值的约束。欧洲中世纪的宗教生活是压抑性欲的，主张人压抑自己奉献上帝。《十日谈》描绘的是这种压抑下人们的内心追求。欧洲宗教精神基本认为性活动属于肉体范围，而不在灵魂升华之中。信奉上帝应追求灵魂升华，克制人的本能。西方社会传统上对人的欲望的制约来自这些根深蒂固的观念。二次大战之后，这些观念迅速地发生变化，今非昔比。美国人把旧时的性观念称为“僵化的维多利亚时代的性标准”。这个标准的核心是：性应限制在结婚之中，妓女无疑是一种罪恶，色情（pornography）是道德堕落，同性恋是邪恶。今天这些观念已经转变。自然不能说荡然无存，因为尚有不少人还保持着传统的观念。</p><p>为证明观念的转变，我们可以来看一些数字。根据商业部的统计，没有结婚而生活在一起的男女占百分之十五（1980），未婚生育的子女 1980 年有 66 万。八十年代初大约有 200 万妓女，其中 60 万是 18 岁或更年轻的姑娘。色情业的收入八十年代初每年大约四十亿美元。同性恋也正在得到越来越多的社会地位。在一些地方，同性恋是合法的，可以正式登记结婚，居住在一起。同性恋者经常举行游行，以争取“合法权利”。电视和电影最能给人这种转变的实例：动不动就“床上运动”。自然，一些优秀的电影的功力不在这里，如得奥斯卡金像奖的电影。</p><p>为了更好地认识这种转变，来看一下莱奥尼（Bruno Leone）和奥内尔（M.Teresa ONeill）写的一本书《性观念:对立的看法》，这本书介绍了对待性观念转变的不同看法：</p><ul><li>非婚性关系是否可以接受？有人认为，性生活首要功能是提供快乐，因此首要问题不是已婚未婚，而是有没有快乐。另一种观念认为性生活是要有爱，爱是有特定对象的，性没有特定对象，所以两者不能等同。另外一些人从纯科学的角度思考这个问题。有的认为性生活是一种放松、自我推进、经历、推进结婚选择、减少嫉妒、节省时间、结束性歧视、限制妓女等。相反的意见认为，性生活需要相互适应，个人沟通是性生活的关键，有罪心理会成为障碍等。对于政府是否要加以管理的问题，观念也截然不同，一些人认为政府管理侵犯私域，另一部分人认为政府管理有利于促进家庭成长。</li><li>美国普及在未成年的儿童中进行性教育，关于这个问题也引起争论。一些人认为性教育引出性活动，因为儿童原本不清楚这些问题，一说明白，大家都想试试，结果引起少女怀孕。另一种观念认为性教育促进了负责任的性行为，每年有百分之十的 15-19 岁的女青年怀孕，因此应当进行性教育。其实在这样性解放的社会环境中，少年从各个方面耳闻目睹，性教育也是“逼”出来的选择。由于观念不同，第三种意见是家长有权投票，以决定自己的子女受什么样的性教育，或不受什么样的性教育。</li><li>同性恋是否可以接受？一种观念认为同性恋对社会有害，这是一种比较保守的观念。这种观念认为同性恋导致男性原则的衰落。女性同性恋可能无害，但男同性恋十分有害，因为这样将会没有家庭。另一种观念针锋相对，认为同性恋对社会有责献，同性恋不是病态，同性恋使人们结合在一起。有人提出同性恋应当“闭门造车”，不可公开。有人宣传同性恋有权公开生活，应当让他们到光天化日之下，这是人的权利。</li><li>色情刊物有害吗？1968 年，尼克松总统组织了一个专门委员会来调查这个问题。委员会的八名成员对色情刊物和电影进行了调查。他们的报告认为色情业无害。他们认为这些媒介可以增加成年人之间的相互了解，公众舆论认为为立法禁止色情刊物是不可接受的。这是多数成员的报告。委员会少数派的报告认为色情刊物有害，认为它们对社会、公众道德、人类价值、家庭态度、文化有极大的危害，色情业违背人性。关于这个问题的争论，两派截然不同，赞成禁止的相信色情业导致性暴力、少年堕落、家庭崩溃等问题。反对的人认为色情可以安慰人的心理，符合自由社会的准则。关于色情业究竟有没有促进暴力行为，也是各执一端。</li><li>妓女是犯罪吗？妓女，中国人一般理解为“卖淫”。美国人围绕这个问题的争论也是泾渭分明。一部分人力主妓女是犯罪。另一部分人则认为妓女不算犯罪。两派争执不下。</li></ul><p>这些争论都与性解放有关。从前，这些问题都是不言自明的，今天反而不明白了。美国的文化如今已是一种容忍性的文化，五花八门都可以存在。这既是美国文化的长处，又是美国文化的短处。在美国，恐怕最优秀的东西可以存在，最恶劣的东西也可以存在。</p><p>“性解放”影响了年轻一代的性观念。现在成长起来的家长大多是六十年代“性解放”高潮中的一代。人们对性解放一般持较为开放的态度。高中生有女朋友或男朋友已是正常的事情。髙中生以上的就更是如此。年轻人从快感角度思考问题较多，似乎不把快感和成家立业联系在一起，这是两码事。家长们对这些事也是习以为常。常常指导自己的孩子如何正确过性生活，以免女孩子怀孕。有一位教授对我说，她的孩子不需要她指导，她一说话她的孩子就表示三年前早知道。大学生之间的性关系也较为平常，也很随便。对东方人来说，觉得有些观念还是难以接受。</p><p>何谓“性解放”？可以看一下 1976 年 2 月出现的《新性权利和责任的宪章》。《宪章》说：“肉体快乐与道德价值具有同等份值，传统的宗教和社会观念常常指责肉体快乐是“罪孽”。这些观念是非人道的，它们摧毁人与人之间的关系。行为科学的发现指出，剥夺肉体快乐，尤其是在人生成长期，往往导致家庭被裂、虐待儿童、犯罪、暴力、酗酒和其他非人道的行为。我们宣布人类关系范围内的肉体快乐是至关重要的。”这实际上是性解放的酵母：从惧怕肉体快乐到追求肉体快乐。</p><p>美国人的“性解放”恐怕已经达到高峰。没有任何东西剩下供后人发掘。色情杂志已将男男女女的一切暴露无遗。再发掘就成解剖学了。色情杂志往往用大幅彩照来渲染人的躯体，包括生殖器的细部。在许多州，这些杂志均可以公开出售。色情电影充斥着性行为。在这样一种环境下，各种争论自然会很激烈。</p><p>最大的问题，就是年轻一代。为了应付这样一个追求肉欲的时代，学校开设了这方面的课程。其他少年手册、家长手册更是数不胜数。各类图书馆都备有这类手册。少年学生都上这门课。这类书一般清清楚楚地告诉青少年男女的生理构造，青春期的变化，如何避孕等。这类教育十分普及。</p><p>虽然说“性解放”，但不少人对性的问题还是有自己的看法。一位朋友告诉我。美国人并不象电影里描绘的那样随便，至少他对这个问题很严肃。在政治生活中，有婚外性关系是丑闻。1988 年大选，原本想竞选总统的哈特由于这类故事，不得不退出竞选。在学校等领域，有时候这会成为一个问题。共和党的副总统候选人奎尔曾经也被卷入这种风波，幸好没有其事。所以，维持一个社会基本的秩序的道德规范并没有被完全冲破，它们仍然在起作用。</p><p>问题是为什么发展到六十年代之后会有“性解放”，以前没有？这与物质生产的高度发展有没有什么必然的逻辑联系？应该是有的。弗洛伊德说，文明生活的发展必然要压抑人的本能。马尔库塞称之为“必要的扭抑”。但在物质生活充分发展之后，人们毋需用全部精力去应付自然界和维持肉体生存时，人的本能就会奔放。社会物质水平的发展，导致了道德观念的革命。这个过程，更重要的问题是提出了社会管理的新课题：从物质生产管理转向人类行为管理。这恐怕是任何社会在物质水平达到一定程度后，均会遇到的问题。</p><p>马尔库塞把“性解放”视为现代人从资本主义大型机器的压抑下解放出来的手段，赋予它政治的含义。不过迄今为止，这种政治含义不那么明显。有一条可以确认，就是性解放的社会意义不在于个人获得更多的肉体快乐，而在于人们观念的变革，观念变革对于社会管理来说，是不可忽略的因素。</p><p>“性解放”产生了新的问题。在性活动受到严格的约束时，由性压抑引出的矛盾和冲突，往往成为家庭和社会管理的一个重要方面。性解放消除了这些矛盾存在的基础，家庭管理和社会管理放下了不小的包袱。尽管社会背上新的包袱，毕竟换了一个。对社会管理来说，维持旧秩序和旧观念是一项棘手的工作。时间越长，难度越大。自然，维持新秩序和新观念也是一项棘手的工作，时间越短，难度越大。这两者之间似乎有矛盾，是个两难困境，令人难以选择。美国社会的问题也在这里。“性解放”是最典型的样本，它所提出的新问题，现在已出现了，未来还会更明显。</p><h2 id="8-孤独的心灵"><a href="#8-孤独的心灵" class="headerlink" title="8.孤独的心灵"></a>8.孤独的心灵</h2><p>最近有一位作家写了一本书，名字叫《孤独的美国人》，颇引起轰动。书中主要思路是：在今天的美国社会，各式各样的人已经变得十分孤独，单身汉也好，结过婚的也好，少年也好，老年也好。孤独，或者说人们内心中深深的孤独感，给社会带来了重重困难和种种问题。尤其是作为有情感需要和交往需要的人，更容易在这种环境中产生苦闷、失落、凄凉、彷徨、惆怅、焦虑、忧愁……。这些内在的变异，以及精神上的压力，在很大程度上决定着人们的行为方式，因而也构成社会运行过程中的一股压力。人的孤独，正在向社会提出越来越严重的挑战，构成社会管理和政府管理的一个重要方面。</p><p>美国人如何是孤独的？有些人也不以为然，认为美国人并不孤独，至少他们自己也许不都这样认为。也许不能说每一个美国人都是孤独的，但有孤独感的大有人在。</p><ul><li>儿童在家里完全有可能是孤独的。儿童产生孤独感的原因很多。有不少儿童只有“单身家长”，也就是只有父亲，或只有母亲。产生这一状况的原因，可能是由于父母离异，也可能是由于母亲未婚生育。在这样的家庭中，儿童缺少必要的家庭温暖，久而久之，孤独感便会产生。“单身家庭“的现象极为普遍，少年儿童中有很大一部分人生活在这样的家庭中。即便是在一个完整的家庭中，这种状况也容易产生。如果父母忙于工作，那么便会无暇顾及子女。不少家庭采用美国式的抚养子女的方法，就是鼓励子女独立。孩子很小的時候就被放在单独的房间里，让他们自己生活。在一定意义上，这有利于儿童成长。但在某些因素的综合作用下，这也会导致儿童的孤独感。我不敢说这种哺育方式必然导致人们心灵中的孤独感，但它往儿童心灵中打下的烙印很难是反孤独感的。心理学家的发现表明，少年时代一个人的生活经历，将对这个人的一生发生不可磨灭的影响。</li><li>我们可以说少年不知孤独，生在孤独中，不知孤独。但老年人对此就深有感触。老年人的孤独感是美国社会一大令人头痛的向题。大多数老年人，都处在孤独状态之中。子女一般不与老年人生活在一起，各自有自己的事情。老年人没有什么心理上的慰藉。子女逢节假日回来看看，也是旋风式的。日常生活，子女很少干涉，认为这是每个人的私域，其实也不想插手。不少老年人生活在养老院里，到了年纪就搬到养老院中。得了奥斯卡金像奖、由亨利·方达主演的电影《金色池塘》，深深刻画了一对老年夫妇的内心孤独，以及他们对待这个问题的诙谐的态度，引起人们强烈的共鸣。老年人有自己的许多组织，都是为了消除孤独。如墓葬委员会，多由老年人组成，负责安排老人死后的殡葬事务。这个组织的存在，大概是很能说明问题。</li><li>处在儿童和老年中间的人们，由于种种原因，也感觉到各种各样的孤独。工作着的人们，似乎也难以发现某种消除孤独的机制。工作是一种纯粹的技术的或曰物质的活动，也就是说这里缺乏情感的和精神的交流。当然不是说任何工作场所均缺少这样的机制，但要形成这样的机制不容易。美国人的自我主义，往往体现在工作中，这就将工作发展成情感和精神交流的最大障碍。社会工作的流动性大，也构成超技术关系发展的障碍。不少打工的人，往往是干三、五天就走，何谈人际沟通？结婚的男女，一般来说较少孤独感，但也不尽然。不少伴侣之间仍有心灵沟通的困难。离婚的男女，有孤独感无须多言，而且这个问题成为美国的一大社会问题。美国的离婚率之高，恐怕为世界之最。离婚之后的男男女女，十分容易产生孤独感，也往往生活在孤独的境况之中。</li></ul><p>美国人的孤独感，有的是浅层的，有的是深层的，表现形态不一。这也是所有发达社会衍生的病痛。有一位朋友告诉我一个故事，栩栩如生地反映了一个美国人的孤独。故事的主人翁是一位近五十岁的妇女。她出身于一个富有的家庭，与一个教授结婚，后离婚。子女已长大成人，在外面独立生活。她现在一个人住一所房子。没有工作，靠打短工挣些钱。由于精神上忧郁，常常酗酒。酗了酒就神志不清，又哭又闹，这自然是由于精神上感到孤独而产生的。但使人感到她孤独的不在于她的境遇，而在于人们对她的态度。这位朋友借她家的房子住，他常常为这位妇人的状况担忧。他打电话给她的子女。她的子女说，这是她的事情，做子女的不能干涉，如果她觉得需要上医院或报警，应由她自己决定，作子女的无法决定。实际上是说不能管，只能任其发展。他打电话给她最好的朋友，答案也是一样，说无能为力。尽管是最好的朋友，也不能越俎代庖，这位朋友常常只能看着她发酒疯，束手无策。她的那位好朋友说：“她是想把我当母亲，对我撒娇。”从心底里，那位朋友也看不起她。问题是，她为什么会如此？是一种内心深处的孤独。她的孤独不仅表现在她自己内心之中，也表现在外在社会对她的态度上。她孤独于社会，社会也孤独于她。这是一个孤独的美国人所遇到的境况。</p><p>美国人如何是孤独的？这是一个难以用一句话回答的问题。我们可以说，美国的经济制度造成了人的孤独，社会对钱的突出和看重，使人与人之间的关系金钱化，而人情味在金钱关系中被强制压抑下去。一点温情可能就意味着金钱。我们可以说，美国的主导价值——个人主义导致个人的孤独。托克维尔说美国革命导致个人主义的生长，但个人主义同时意味着自我孤独。不接受自我孤独，恐怕也难以真正为个人主义创造条件。社会上个人主义的压倒性的地位，可能是对孤独的美国人的一个很好的注解。我们可以说，美国人对私域的保护，同时也保护了孤独，每个人不喜欢或不希望他人侵入自己的生活领域。这种愿望滋生孤独。也许美国人喜欢孤独，或者更准确地说，希望有适度的孤独。问题是，他们有没有准备好应付更大的或者说社会强加于他们的孤独。人们自己设计和建立的保证适度孤独的机制，在社会上总和起来，把难以忍受和承受的孤独强加给个人。这种机制给个人带来的问题，成为社会潜在的问题。人的孤独是社会体制的产物，只要这种社会体制不灭，要找出方策便是困难的。一种体制最难克服的便是他自己的副产品。</p><p>《大趋势》的作者认为，高科技的发展使人们更加追求高情感。一个社会对任何一种东西的过于集中的追求，都会构成政治管理问题。人的孤独，已经成为政治系统的一大负担，并且还将继续如此。分析政府的很多政策行为，不难发现，更为基本的动因在于每个人的孤独感的复杂而又恒久的作用。</p><h2 id="9-未来世界"><a href="#9-未来世界" class="headerlink" title="9.未来世界"></a>9.未来世界</h2><p>美国人的心态是一种复杂的综合，有时甚至令人觉得是那样的矛盾。流行的看法是：自詹姆士和皮尔士发展了实用主义哲学之后，这个民族便成为一个最讲究实用的民族。实用主义的观念和“兑现价值”的要求渗透在美国精神的每一个角落里。</p><p>所谓实用主义，体现在气象万千的社会生活和人的行为中，就是讲究一切都要达到有用、实效、实际的目标，而排斥虚无縹渺，可望不可即或似有若无的价值标准。在当代美国，这种精神又具体化为“金钱至上”，以眼见金钱为实用主义的验金石。任何事务，只要能 make money（挣钱），就具有压倒一切的价值。Make money，在某种程度上，已成为实用主义在现时代的本质。</p><p>在社会当中，当然有相当一部分人仍在奋斗，追求政治的、道德的、伦理的、宗教的、社会的或哲学的价值。但大部分往这些领域中从事工作的人，都没有那样多的理想色彩。大选当头、不少人为两党出汗马之力，但绝不是为了信仰，而是因为他们受雇于这些政党，拿了别人的钱就得替别人做事；在政府部门中，那样多的官员，大概不会有太多的人时时在思念美国人的理想，他们完成本职工作，是因为这只是工作，绝无”铁肩担道义”之类的责任感；在福利机抅中，人们热心地照顾穷人、残疾人，但很难说他们每一个人都是因为体恤社会下层人和穷困的人才这样做，而是因为这是工作，因为有人 pay（付钱）；大学教授著书立说，在课堂上慷慨激昂，批评政府，针贬时弊，呼吁变革，但大多数教授们只把这个作为工作，并没有那样多的人具有知识分子的使命感和责任感，他们认为这是 Job，这是一种工作，难得有“家事国事天下事，事事关己”的感觉……如此等等，不一而足。这里仅仅说明，实用主义如何主导着美国人的精神和社会，尤其是在这个认钱不认人的社会中。</p><p>另一方面，不可忽略，也令人奇怪的是，社会又充斥着另一种精神，我姑且称之为“未来主义”。在这个物欲横流的社会上，难得有什么力量能够压倒实用主义。然而，未来主义的观念却具有特别强大的吸引力和诱惑力。因此，在这个社会的一般精神中，未来主义也构成一个基本核心。别的观念难以说服大家，但未来主义的观念是强而有力的。所谓的未来主义，就是指目前没有直接作用，但将来会发生作用的东西，无论是具体物质，还是抽象的观念，或一种状态。这样看就会发现实用主义和未来主义是一对矛盾，一个追求现时现刻的价值，另一个追求未来的价值。但这两种精神的确主导着这个社会，所以说是一种复杂的综合。</p><p>我们可以来看一下关于未来主义精神的实例：</p><ul><li>在政治方面，可以看一下 1983 年的总统大选。布什和杜卡基斯的一个热门论题就是二十一世纪的美国，或者二十一世纪的世界与美国。美国能否保持它目前在世界上的地位？面对来自日本和欧洲的挑战，以及可能来自中国的挑战，美国将何去何从？苏联及东欧国家对美国形成全方位的挑战，美国又当如何抉择？两党在争取选民时，无不谈到自己的政策方略将如何使二十一世纪继续成为美国的世纪，他们认为二十世纪是美国的世纪。如今已有人谈二十一世纪将是日本的世纪或中国的世纪。布什常常说，二十一世纪将是美国世纪。这种口号是颇蛊惑人心的。尼克松 1987 年写的新书《1999：不战而胜》，其中反复出现的基调就是美国在未来如何取胜，未来美国会遇到仟么威胁，美国应如何选择对策等，立时成为畅销书。可见，这种关切不仅在于政治家、而且在于大众，不然以此作为拉选民的战略便不会成功。</li><li>在军事方面，美国人也有较强烈的未来主义的情感。在未来战争、战略、武器研究方面，美国一直十分关注，投下重金。耗资百亿的星球大战计划，是一种未来主义主导下的产物。这项计划，在很多人看来是一种奇想，但美国人决意认真地付诸实现，以对付未来可能出现的新一轮战略武器竞争。这一计划之所以引起轩然大波，引起朝野争论不休，其中潜在的一个因素就是实用主义精神与未来主义精神的冲突。在军备发展方面，未来主义精神大多数情况下占居上风。加之军火工业界大都支持未来主义，因为有利可图。尽管他们自己可能都是地地道道的实用主义者。最近推出的 B2 轰炸机，也是这种未来主义的典型反映。在战略要冲的发展上，占主导地位的是未来主义，而非实用主义，尽管表面上看是实用主义的。在尼加拉瓜、菲律宾、中东的冲突和波动中，美国政府的态度，大多基于未来主义的战略思想。</li><li>在科技发展方面，美国人更加讲究未来主义。在基础理论、天体物理、生物科学、化学等基本领域，未来主义的观念极其兴盛。人们常说，理科在美国大学中钱最多。这些钱都是从学校以外的基金会或什么机构搞来的。为什么这些机构愿意大笔大笔地投资，主导思想乃是着眼于未来。最近美国宣布搞一个世界上最大的对撞机，总长度为 80 公里，听起来是惊人的项目。但着眼于未来，美国人决定拨款建设。在电脑方面，美国人也着眼来来，各公司均投下大笔资金发展最新型号。环境保护，在这个社会中引起空前关注，大众对这个问题有前所未有的共识，成为主导政府政策的一个基本力量。没有未来主义的精神，这种共识是难以形成的。</li><li>在城市建设方面，未来主义的印记更深。无论是在只有几万人口的小城市爱荷华，还是在有一千几百万人口的大都市纽约，未来主义在城市建供的设计中具有举足轻重的地位。城市规划的方案，要想取胜并付诸实现，有一项必须留神的条件，这就是在未来几十年中这项设计将会变得怎么样？会变成城市进一步发展的障碍？还是城市进一步发展的桥梁？在许多城市中，高速公路、地铁、楼宇、住宅的设计和建设均有着对未来世界的考虑。例如纽约的国际贸易大厦，上面是高高屹立的雄伟建筑，下面的世界更是惊人，有巨大的地下层，有地铁、火车等通往纽约各地以及毗邻的州。设计师在设计时就考虑到未来城市发展的需要。在不少城市，很多住房均具有五十年以上甚至百年的历史，但至今仍然不显得破旧或狭小，一幢幢的小楼，经过装修，依然是十分可观的住房。这是不可多得的资源，如果当时都造五年或二十年要被淘汰或变得不能居住时房子，那么住房也不可能达到今天这样的水平。未来主义，在城市建设上，表现为百年大计。</li><li>在人才教育方面，未来主义也显而易见。美国人懂得，未来的世界是今天的儿童和年轻人的世界。他们能否应付这个世界的挑战和未来世界的挑战？所谓“儿童的天堂”，讲的就是儿童在这个社会受到全面的照顾，以便他们迎战未来。大学教育也是如此。取得今天这样的成就和地位与大学教育不可分割。教育的成功是维持和发展一种社会制度最强大的力量。无论这个社会制度是什么性质的，教育不成功，都难以维持。在应付未来世界方面，政府和大学均花了极大的气力。</li></ul><p>未来主义精神，体现在诸多方面。因此不能简单而论，把这个社会统统打成实用主义。不言而喻，实用主义占主导地位。问题是要弄明白，为什么这个社会滋生出如此强烈的未来主义？这两种精神又是如何协调的？美国传统的精神一直是实用主义。从第一批移民踏上这块领土，开始在这块新发现的土地上建立家园和与自然作斗争，就必须讲究实用主义。这里没有那么久的文化传统，没有那样多的哲学思想，也没有那样多的金钱和财富供人们从事想入非非的事。要生存，就得讲究实效。早期移民形成的这种精神，随着这块广大领土的开发，不断衍续下来，成为这个社会的主导精神。</p><p>另一方面，自二十世纪以后，美国逐渐卷入国际社会，而一跃成为世界上首屈一指的泱泱大国。二次大战后，美国成为头号强国。几十年的历史，使美国人产生一种强烈的心理：”我们是世界第一。”维持这种地位，成为这个民族的一种共识，要在今天这个竞争激烈的世界上维持“老大”的地位，自然而然要选择未来主义，不如此便会落伍。“世界第一”心理对未来主义的促逬，是潜移默化的，恐怕这里难以下个精确的定论。但如果一个国家处在世界第一的地位上，不想如何不被他人超过，如何在各个方面领先于他国，自然会被淘汰。</p><p>若从个人心理上深究之，美国人跟随未来主义也许和每个人觉得未来太没有保障有关。美国人在就业、社会生活、婚姻、教育等方面，很难说有哪项事物是终身保障的。在美国的制度下，个人难得有政府的终身保障，唯一的可能是社会保险，那也得有工作才能亭受，个人不能寄托于家庭、父母、朋友、私人企业甚至政府，个人只能寄望于未来有一个更好的或者不比现在更糟糕的社会环境，使个人有更好的或者不更糟糕的谋生余地，进而有过更好生活的更好的或者不更糟糕的条件。从每一个社会分子来说，未来的不确定感是个人信仰未来主义的重要动力。</p><p>在这里，实用主义和未来主义既有冲突又有综合。在综合的时刻，是两股思潮都认为有利有益的时刻。在冲突的时刻，便是两者意见相左的时刻。这个社会在很多问题上发生的冲突和争执，大凡与这两种精神的异同有关，当然这是一个更深层次的冲突。在不少情况下，人们信仰未来主义，往往来自实用主义的思考，在另一些情况下，人们信仰实用主义，又是来自未来主义的思考。</p><p>这块土地的发展，与这里的人们对未来世界的关注不可分开。关注未来世界的人可能出于诸种目的，如想称霸世界有之，想推进世界的发展有之，或者出于个人的动机有之，但是这种关注都将会成为一个社会发展中的一种观念和精神，它带来的推动力量是其他力量不能替代的。广而言之，任何民族只有关注未来世界，并找到自己在未来世界将有或者将争取到什么地位，才能真正找到发展之路，以及一个广阔博大的眼界。</p><h2 id="10-人总是人"><a href="#10-人总是人" class="headerlink" title="10.人总是人"></a>10.人总是人</h2><p>一般人认为，美国社会的人际关系比较简单，没有那么复杂，人们凭本事、知识、金钱在社会上生活，而不是凭关系、家庭等因素，这构成东方社会与西方社会最大的差別东方社会的文化，尤其是儒教文化圈内的文化重身份、重纲常、重礼仪、重血缘，西方文化重才能、重法律、重实利、重权威。一般而论，仅一般而论，这种划分是可以接受的。但绝不能由此就认为，美国和西方社会绝对如此。正象在东方社会中并非时时刻刻靠人际关系一样，西方社会并非时时刻刻不靠。</p><p>由于经济发达，物质丰富，有一些问题，在美国社会较为容易解决，不需要太复杂的操作过程。一个人去做最苦最累的活儿，修路、清洁工、搬运工，拿了钱之后可以买商店里的任何商品，可以去住任何高级旅馆，可以到任何饭店里去吃喝。大部分有钱人能办到的事，别人有了钱也可以办到。这就是马尔库塞所说的同化或一体化。马尔库塞对此持批评态度，他认为这种机制同化了阶级分野，工人阶级同化进资本主义制度，受其剥削和压迫反而无所意识。这是商品经济高度发达的结果。商品的充分涌流，协调了社会矛盾。其实在许多社会中，各种社会矛盾的诱因是商品匮乏。普通人并不思考那样多的高深莫测的问题，他们从自己的衣食住行出发思考问题。社会协调他们的重点，不在于精到地解释一种宏大的理论，而在于满足普通人的日常需要。</p><p>抽象地说，美国人的人际关系不那么复杂，但人与人之间的交往也不那么深。美国人的生活核心是保护私域。所以很少有人喜欢别人侵入得太多，或侵入别人太多。这与东方文化不同。所以美国人的朋友概念与东方文化不同。朋友可以是一个熟人，或者在学校认识，或者在教堂认识，或在运动场上认识，或在公司里认识。但这种交往不深，难得有莫逆之交。美国人初交不难，深交不易，中国人初交不易，深交不难。社会的流动量很大，五分之一的美国家庭每年要搬家，物质丰富为这种选择创造了条件。流动量大造成两种推动：一方面人们经常移动，需要有快速寻找朋友的机制，另一方面这种流动性又使真正牢不可破的人情难以建立。人与人之间的非亲属交往，来自少年和青年时代。有了家庭之后，很难形成深交。精力、财力、文化都不允许。而在少年和青年时代比较容易。在一个地方住了十几年，与一群人共同度过童年和少年时代。到了大学时代，情况就变了。大学的机制也使人们不易形成深交，大学生基本上是孤独的，没有班级的概念，选什么课就在什么班，下个学期各奔东西。居住条件良好将人隔离开来，大学如此，社会也如此。美国人长期独居的生活，使他们往往有一种内向和被动的心理，不知道是否应该与一个生人打交道。对待外国人尤其如此，他们很少主动与外国人打交道。虽然，“外国人”这个概念对于美国人来说是陌生的，他们常常分不出谁是“外国人”，谁是“本国人”。事实上也很难，只是外国人常在心里想自己是外国人，这里指的是身份明确的外国人。但如果外国人主动的话，美国人往往很热情。如此等等。有的人认为对社会发展有利，因为社会没有太复杂的人际关系，人人可以凭本事吃饭。有的人认为对社会发展不利，人与人之间没有什么深交，人情太薄，社会生活不和谐。</p><p>以上只是一般而论，其实细细观察美国社会，人际关系并非不重要，而是至关重要。人总是人，没有人际关系，社会何以持续？在许多方面，与东方文化下的人际关系十分相象。一位教授告诉我：在美国，没有人际关系人们可以生活的很好，但如果有人际关系人可以生活得更好。这恐怕是一个比较客观的评价。柏杨说“丑陋的中国人”，其实这并非一个民族特有的现象，只是在不同文化条件和经济发展的条件下程度不同罢了。</p><p>我可以举一些实例来谈谈美国人的心态。</p><p>在政治方面，人际关系的作用十分明显。1988 年总统竞选中的一大争论就是共和党副总统候选人奎尔，舆论认为奎尔并非杰出人物，也非靠自己的奋斗出头露面，而是靠他的家庭，他的家庭每年有二百万美元的收入。他读书成绩不佳，征兵时又有些议论，等等。家族的力量在美国依然是重要的。没有家族背景，一个人可能出头露面，有家族背景，一个人更可能出人头地。肯尼迪家族便是一例。布什当总统后，有权任命所有政务官，他的许多老朋友都得到高官厚禄，尽管舆论对有些人不以为然。关于政治中的这些现象，我将专门讨论，在此不赘。</p><p>有一位研究非洲问题的教授告诉我，要做好研究必须到东非各个国家和地区进行实地考察，要进行考察就不能在系里上课。他从系主任那里得到许可。其他教授们便十分妒忌，他们表面不说，但背后闲话很多，认为这位教授既不教学又出国，还能得到工资，实在太划算了。相比之下，他们太不划算。我问他如何能得到系主任的同意。他说系主任与他关系很好。他正在努力实现一个计划，让系主任到非洲一个国家去风光一下，顺便讲学。这位教授是一位很正派的人，但他懂得如何才能达到自己的目标。</p><p>我在东海岸一所大学访问时，有一位朋友告诉我，系里教授间的人际关系很复杂，教授之间勾心斗角，明枪暗箭。有时在课堂里就发生争执。有一位教授在课堂里批评一个学派没有理论，数据太空洞抽象，在场的另一个教授马上要他讲得具体一些。实际上是他们两人之间的矛盾。教授们常常把同一领域的教授视为竞争对象。当然也有关系和谐的。</p><p>在社会上打工和工作，人际关系更为重要，与老板的关系如何，与工头的关系如何，直接影响一个人的地位和前途。我想在高等教育机构中况且如此，何谈其他。</p><p>在大学中，拥有终身职的正教授掌握系里的大权，其他人没有什么权。正教授可以决定其他人员的晋升和留任，这样一种权力关系决定了系里教授的基本关系。其他教员与正教授搞好关系的愿望十分明显。我并不是说这种关系本身不好，而是想说明人际关系的存在。</p><p>另一件值得一提的事情是在一所大学里看到的情況，很能说明美国人并非不重视人际关系。一个日本企业界代表团来到一所大学讲演，代表一些日本的大公司和重要学术机构。日本人有钱，已是举世皆知的了。在招待会上，许多美国人对日本代表毕恭毕敬，找话头。有一位当地政府的女官员，拉住一位日本人的手有几分钟之久，满脸堆笑，直说日本人的领带漂亮。我看了都觉得不自在。其实她是想为本地拉拢一些日本的投资。美国人大都看不起日本人，但他们对日本人的态度和他们内心所思是不同的。</p><p>人际关系的实例，比比皆是。但它们的作用和机制与东方社会有所不同，也不象东方社会那样重要。美国的体制提供了一个条件：大不了走。在私有制下，人们离开一个单位到另一个单位谋事很正常。但在有些社会中没有这一机制，人际关系的决定因素就更大。社会体制、物质丰富、文化心态，决定美国的人际关系不同于东方社会。但如果说这里不重视人际关系，不需要人际关系，那就太理想主义了。</p><p>人总是人，有恩必报，有仇必报。人总是人，人有人的情感，人有人的需要。现代化在多大程度上能改变人的本性，需要好好研究。</p><h1 id="四、多层面的社会调节"><a href="#四、多层面的社会调节" class="headerlink" title="四、多层面的社会调节"></a>四、多层面的社会调节</h1><h2 id="1-看不见的手"><a href="#1-看不见的手" class="headerlink" title="1.看不见的手"></a>1.看不见的手</h2><p>西方经济和社会运转，奉行“看不见的手”的原则，即让经济杠杆、市场调节经济运动。自亚当·斯密提出自由主义的经济原则以来，虽有凯恩斯主义以及福利国家的兴起，但自由主义的原则依然是西方经济和社会运转的基本原则。“看不见的手”一度曾转化为“看得见的手”，即由政府对整个经济和社会运转过程进行直接的管制，目前西方各国政府对经济行为的管制已大大超过了以往。但西方社会依然以“看不见的手”的协调为主导。无论是“看不见的手”，还是“看得见的手”，均与政府的行为有关。采用哪一种方式，决定了政府功能和负担的大小。一般而论，“看不见的手”减轻政府负担，“看得见的手”加重政府负担。在现代社会中，政治与经济水乳交融，改变经济管制的方式，实际上就意味着改变政治和行政系统的结构与功能。</p><p>“看不见的手”，意味着政治和行政系统对经济和社会做间接管制，只在税收、金融、法律等方面进行管制。而各个企业的具体经济运营，则由各企业在市场经济的海洋中去施展本事。由此产生了广泛的竞争。</p><p>在一个经济领域中，一家企业要想取胜，要想赢大利，必须善于竞争，必须善于从别的同类企业中赢得市场和客户，否则就会被淘汰下去。它们没有政府机构可以依靠，从法律和确定程序上来说，政府的结构与经济的结构全然不同，难以切入。如果竞争不善，经营不善，就会倒闭，破产。这类情况，可能发生在一家企业内部，即企业内部经营出问题；也可能发生在一家企业的外部，即其他企业善于经营，善于管理，环境发生变化。任何企业要立于不败之地，都要独善其身，不断改进。最重要的竞争在于服务质量。无论是产品，服务，有形的还是无形的，最终都可以归结于服务质量。没有服务质量，便没有顾客，便没有市场，便没有利润，便要被淘汰。这是一种不可抗拒的力量，推动每个企业不断改善服务质量，争夺市场。</p><p>在这种经济模式下，政府并非无所作为。政府运用法律、金融、税收等手段管制经济行为，然而政府不直接参与经济过程。政府在三个阶段进行管制：企业开办时、企业运营时和企业倒闭时。管制不是管理，大概可以说，管制决定在这个社会上什么不可以做，什么不应该做，管理决定在这个社会上什么可以做，什么应该做。当然，这只是非常抽象的议论。政治和行政系统的职责不在于把着手教企业去做什么，而是控制它们不要出格，引导它们走向社会发展的总方向。这并不是说，这种协调机制完美无缺，既然是“看不见的手”起主导作用，那在很多方面政治和行政系统就插不上手，或者难以插手。有时，政治和行政系统也可借此逃避责任，袖手旁观。</p><p>为了说明”看不见的手“的作用，这里仅举旧金山中国城里的旅行社之间的竞争为例。旧金山中国城里究竟有多少旅行社，恐怕难以说清楚，大概有几十家。在旧金山的中国城里走走，满目是旅行社的招牌。打开当地的中文报纸，旅行社的各种广告比比皆是。这些旅行社大都是华裔开的，一般的服务包括组团旅游，买机票、买礼品和国外买单，中国取货服务等。由于旅行社的服务项目大致相同，它们之间就存在激烈的竞争，争夺市场，争夺顾客。</p><p>我们随手可以举出一些旅行社的名字，如泛伟旅运、利达旅游、惠亚旅行社、您的旅行社、顺风旅行社、国泰旅游、金山旅行社、丽山旅行顾问、飞飞旅游公司、捷航、太古运通公司、东风公司、七海旅游、飞行船旅行社、励驰旅行社、永安旅行社、恩华旅行社等等。这只是其中一小部分，而且只是中国城里的旅行社，基本上专为华侨和华人服务。加上中国城外的旅行社，竞争之激烈就可以想象了。</p><p>这样的旅行杜，均办理世界性的旅游项目。如去欧洲、亚洲、拉丁美洲，同时也办理国内旅游项目。由于存在竞争，各家在服务方面均要有新招和高招，招数包括：特廉机票，路线设计，代办酒店，租车等方面。从机票方面来说，价格也各不相同。如从旧金山国际机场飞往日本再飞往上海的机票，有的旅行社报价 480 美元，有的报价 460 美元，有的报价 440 美元。这种价格上的竞争，自然促使各旅行社尽量把价格定在合理的范围内，否则就要失去市场。要报低价，又牵涉到整个企业的经营管理，如果报低价，没有赢利，企业自然要垮台。所以，它们之间的竞争，不仅是价格的竞争，也是管理能力，人的素质和经营方式的竞争。这种竞争反映出在“看不见的手”的控制下企业竞争的一般特性。</p><p>从服务方面来说，由于存在竞争，各旅行社也得尽量提高服务质量。我在这里的一家旅行社订从旧金山返回上海的票。打电话问明价格之后，旅行社的职员便用电脑帮我订了票。隔了几天我去取票、一切都已安排妥当，问明是否需要改日期和航班，不需要改的话，就出票。当场取了票，那位女职员还告诉我国际机票 72 小时之前要确定，她说旧金山启程由旅行社代办，到日本后旅行社鞭长莫及，不要忘了。还取出办日本签证的表格给我，这是一种顺带的服务。我说我对办日本签证的情况不了解，她立即打电话给日本驻旧金山总领事馆签证处，问明情况。过了几天，旅行杜打电话来告诉我，从东京飞往上海的班机取消了，问我愿意改在哪一天走。对客户非常负责。</p><p>我们系的另外一名教授也在旧金山出境，他要去日本、香港和新加坡。买机票麻烦多一些，因为要将所有这些地方的机票连接起来，还牵涉到在一个地方的签证时间，等等。最后选定了一家旅行社，由他们出票。他们认真计算，给了最低价，并且帮助办理签证。办香港签证要去洛杉矶，自己去不方便，给予代办。各家旅行社在服务方面，顾客有任何要求他们都尽量考虑满足，并且往往主动为顾客着想。</p><p>为什么会有这样的服务质量？道理很浅显：服务质量高则兴，服务质量低则亡。在一个充满竞争的社会上，一个企业要生存下去，只能如此。</p><p>不过，“看不见的手”要发挥威力，也得具备一定的条件。资源丰富是一个重要条件。如果旅行社那样多，却没有那样多的航空公司，机票买不到，航空公司便可以有垄断价格，用不着要求旅行社帮它们推销。要是各家航空公司之间也存在竞争，那么旅行社便有了票源。整个社会的经济也是如此，由于整个经济为一竞争型的经济，各个环节都在竞争，“看不见的手”才能起作用。如果宏观环境不是竞争型的，几个企业便无法展开竞争，“看不见的手”太小，“看得见的手”太大。竞争型的经济是逐渐发展出来的，不可能一蹴而就。美国社会经过几百年的发展，才逐渐形成这套机制。</p><p>这套机制的形成，对政治与行政系统具有重要的意义。这就是它可以大大摆脱沉重的具体管理负担。社会的交通、运输、通讯、日常商品、房产、食物，绝大部分均由私营企业在竞争中加以管理。政府所起的作用，便是间接管理，在这种状况下，“看不见的手”减轻政府负担，“看得见的手”加重政府的负担。</p><p>“看不见的手”也有其短处，由于“看不见”，所以大家均不知手在何方？往往等到事态发展至一定阶段，人们才恍然大悟手在这里。这时可能经济和社会运转已出现较重要的毛病。西方社会的发展，尤其是二次世界大战后的发展，均可成为这一循环的有力的例证。</p><p>我们所要观察的，不在于经济行为，而在于在不同的经济模式下，政治和行政系统会受到怎样的制约。在“看不见的手”的模式下，政治的火车头没有挂上经济的一长串车厢，经济有经济的火车头。其利处是，两者的负荷均较轻，可能跑得快；其弊处是，既然是两个火车头，那么相互之间便难以控制并达成和谐。在“看得见的手”的模式下，政治的火车头挂上了经济的一长串车厢。其弊处是，负荷较重，行动不易快捷；其利处是，由于是同一火车头，可能易于向一个方向有规则地行驶。这里不包含政治。从政治的角度看，结论可能又不同。</p><p>考察任何社会的政治，不能脱离其经济模式。正象任何政治行为。都不能超出其经济模式一样。美国社会政治的结构和性质，离开其经济模式，也难以得到解释。</p><h2 id="2-钱管社会"><a href="#2-钱管社会" class="headerlink" title="2.钱管社会"></a>2.钱管社会</h2><p>在美国这样一个典型的资本主义社会中。“有钱能使鬼推磨”这句话完全适用，另外还可以加上一条：有钱能使神推磨。在美国社会，的确会有一种切肤的感觉：绿钞（因为美元是绿色的）打遍天下。商品经济的发达，使人人在金钱面前平等，有钱可以买任何可以买到的东西，没有划定的界限。金钱是资本主义社会发展的有形的动力，追逐金钱推动着经济和社会发展。美国人干许多事情，都抱着挣钱的第一目标，教授教书，多无忧国忧民之内心冲动，这是一种工作；政客们也难说都是理想主义者，为政党竞选服务也怀有钱的目的，如此等等。因为，在任何以货币为价值符号的社会中，没有钱就无以为生。在某种程度上，美国社会围绕着钱组织起来，</p><p>承认这个事实，就会发现一个奇妙的现象，我称之：“钱管社会”。钱成为社会管理中的一个基本媒介。人们管理钱，同时又用钱管理人。以钱为中心的一整套机制构成美国社会管理中的重要机制。人们为钱服务。由于钱具有如此重要的地位，人们绞尽脑汁发明各种机制、方法和技术来管理钱。结果以钱为媒介组成一个庞大的管理系统。资本恰恰利用这个系统，来达成取得剩余价值的目的。这套系统独立于政府之外，独立于政治系统之外，无须政治系统直接控制。它自己承担着庞大而复杂的管理过程。马克思言，资本主义制度下，商品经济表面上是物与物之间的关系，实际上是人与人之间的关系。这是至理名言，适用于任何以物物关系为表现形态的人人关系。人们管理钱，实际上是管理人。这套非政府的钱机制调节着人们的思路、情感、行为。</p><p>在资本主义社会中，钱的使用过程，对个人来说极为方便，尽管从管理过程来说并非如此。</p><p>银行是首要的管理的部门。各类银行多如牛毛。州立银行一般较为有实力。银行承担着各种社会管理功能。各雇人单位发工资，直接拨到每个雇员在银行的帐号上，并不把大捆的钱交给每个人手中，每个人再去银行取钱。银行直接代管了。</p><p>带着一大笔钱在身上并不安全，而且不方便。带着一皮包钱去买彩电或冰箱，显然不方便。支票在美国或在西方社会是普遍使用的东西。银行备有各种类型的支票，存了钱之后，可以选择。支票上印有持有人的姓名和地址。这一切过程在两个星期内可以解决，原则上说，在美国和世界上大部分地方，支票可以使用。持票人只要写上付给谁，多少钱，签名交给商店或旅馆即可。收到支票的人将支票通过银行转账，银行自动从写支票的人账上划走这一笔钱。每个月银行向存户书面报告一次，并寄来银行收到的存户签收的支票。存户自己不必在现金上操心。自然，如果丢了支票，那就成问题了，因为支票除了签名之外，谁都可以用。另外，也有人在银行中并无存款，已经用完，仍在用支票。为保险起见，有时收支票的一方要看身份证或记下电话号码。</p><p>从旅行来说，还可换旅行支票。旅行支票没有签名的话没有用。自然，丢了也是问题，要报失。银行的另外一种服务是取钱卡。一种塑料的卡，后面有磁性带。凭这个卡，可以在自动的机器上取到现金。每个持卡人都有一个密码，只要将密码输入机器，机器是电脑化的，它会自动辨识，然后给顾客所需要的现金数目。大部分这类机器是地方性的，但也有全国性的。这种机器也可以存款。只要报上密码，将所要存的存款放入机器旁边备有的信封，送入存钱口即可。</p><p>除了这些之外，信用卡（Credit Card）在西方社会非常普及。拿了信用卡，可以在大部分国家使用。中国的许多商店或旅馆也接受信用卡。信用卡需要申请。信用卡是一个塑料卡，卡上有持有人的编号、姓名。在任何地方使用此卡，有条件的持卡人将卡放在一种特殊的电脑化的设备上，屏幕上会显示出持卡人的卡是否可以接受，如此卡是否挂失，是否有信用等。然后，将卡和有关款项的账单放在一起，在一种特制设备上压一下，将卡的号码和姓名印在账单上，请顾客签名。这样，顾客不必付现金，每个月信用卡公司会将帐单寄给持卡人。持卡人在一定时间里要付帐给公司。这类卡很多，较出名的有 Visa，Master，American Express，Discover 等。卡也有不同等级，主要是一次可购买货物的总数，如 1,500 美元或更大的数目。信用卡的确是非常方便，但同时所有持有信用卡的人也受到发卡机构的调节。</p><p>持卡人付帐给信用卡公司，只要坐在家里写一张支票寄去就行，许多事情均是通过邮局和支票来完成的。付税给政府，可以寄支票去。订货，可以寄支票去。冲照片，可以连支票和胶卷一起寄去。借了谁的钱要还，可以寄支票去，当事人双方的银行直接打交道。</p><p>钱的管理，还体现在借款上。银行向企业和个人贷款。企业借款，作为投资的资本，这在社会主义国家也存在。自然，企业是私人企业，实际上是个人贷款。但这部分贷款归投资所用。也有纯粹个人贷款的，如买房子，买汽车等，可以向银行申请贷款。个人贷款需每月偿还一部分，并付利息。银行的利息并不仅仅来自企业，而且来自个人。这点与中国有所不同。由于贷款，个人就与银行联系起来。如果不还贷款，银行有权取走贷款人的财产做抵偿，由警察局做后盾。</p><p>在银行之外的借款、欠款关系中，也有有组织的管理体制。例如在医院里看了病，花去很多钱，没钱支付医疗费。医院便会把这项事务交给专门的讨债公司。讨债公司的职责就是讨债，精通法律，专攻此道。它会给欠债人制定计划，让负债人每月还钱，再不行，就得上法庭。</p><p>银行提供了种种便利，也有严格的控制的系统。任何人要获得这种便利，都得接受这个控制系统。如申请信用卡，要填写申请表。申请表上要写明姓名、出生年月、社会保险号码、住址、家庭电话、在本地居住的时间、自己的住房、还是借的住房，以前的家庭地址、居住年限、分开居住的最亲近的亲属和朋友、地址，母亲未婚时的名字、雇主或公司名称，工作性质、地位、年限、地址、电话、三年以内须写明前雇主或公司，年工资、其他收入、其他收入的来源，核实用名、电话，银行存款号码、银行名称、银行地址等等。发卡机构要一一核实这些情况，然后才发卡给申请者，由此可以看出人们怎样从管理钱出发、发展到管理人。这些数据将成为个人的档案，而且是非常详细的档案。申请借款等也得经过这个过程。</p><p>还有专门的公司负责管理个人的信誉问题。这类公司叫信用报告公司（Credit Reporting）。这种公司是私营的，由法律调节，实际上收集个人裆案，主要是经济方面，而非政治方面。这类公司很多，有全国性的，也有地方性的。每个人只要与银行或金融机构打过交道，都有名在案。银行和各种金融机构可以向这类公司询问顾客的情况。如果申请贷款，银行用自己的电脑终端就可以查到情况，如过去付帐、信用等情况。如果信用不好，银行就会拒绝贷款。这是一种非常强大的网络。银行与这种公司有合作关系，银行主动向他们报告客户的情况，而信用报告公司反过来减少银行使用资料的收费。这套机制有力地管理着想与金钱或不能不与金钱打交道的人，可谓天下之人，皆入囊中。</p><p>自然，如果信用好，可以享受到以上种种便利。这种机制管制着每一个人的行为，如果被排除在以上种种机制之外，一个人会遇到种种麻颊。方便是什么？且看 American Express 在金钱以外提供的服务：在世界 1,000 个城市设有 1,400 多个旅游办事处，可以帮助制订旅游计划，处理紧急事务等。</p><p>由此可以看到，资本是怎样有效并有力地控制着社会大众，从而控制着整个社会。这套机制中的大部分机构是私营的，但实际上他们管理着整个社会的很大部分事务。这种管理不是建立在强制和命令的基础上，反而是建立在每个人自愿的基础上。人们或者是自愿，或者是由社会环境的驱使，自动找上门来受管。美国人最不喜欢人管，但最喜欢钱。钱的逻辑，就是引导人们被管。这套机制关系到每个人的基本生存，因而管得有效。也许调动起一个社会钱管人的能力，是减轻政治系统管理压力的一个十分重要的方面。钱的惊人的活力，把个人与个人，机构与机构联结在一起。政府超脱于这套机制，用法律的手段间接控制它们。在这机制中的人，均为自己的利益而活动，维持着这套机制的平衡。如果仅仅是存款关系，恐怕不会发展出一套管理机制。关键的问题是，金钱在多大程度上发展成一套人们须依赖之的体制。美国人信奉自由，不依赖别的体制，但他们依赖这套体制。一个社会没有一套主体管理体制，使人人依赖它，便不可能有效地加以管理。</p><p>社会在不同的发展阶段有不同的主体体制，在经济充分发达的社会中，也许得从以政治体制为主体过渡到经济体制为主体。</p><h2 id="3-人的标准化"><a href="#3-人的标准化" class="headerlink" title="3.人的标准化"></a>3.人的标准化</h2><p>标准化为现代社会所必需。美国社会往这方面达到一定水准。可以发现，各类事项和各种工作，均有确定的标准。尤其是在人员选择，或者说对人的学识和技能的评价方面，有标准化的评价程序。</p><p>美国是一个流动性很高的社会，人没有固定的户口，也没有工作档案，受教育的程度和系统都可能不同。如何确定一个人是否达到一定的要求，或者能否胜任某项工作？很重要的一个程序，就是个人要通过标准化的考试。用人单位往往要依照这些考试的成绩来判断雇用还是不雇用一个人，学校也根据这些考试来确定录取或不录取学生。中国学生熟悉的 TOEFL 或 GRE 就属于此类考试。</p><p>这类考试往往不由政府具体负责，而由私人的专门公司负责。政府可以委托这些公司设计专门的考卷，或者规定要担任什么职位，必须通过何种考试，没有通过指定的考试，不能担任此职。如律师就须通过指定的考试。这类公司负责组织、设计、分析、考试。从社会管理的角度视之，它们承担了社会运行过程中很重要的职能。</p><p>ACT 便是这样一种类型的公司，全称叫 American College Testing Program。我访问了这家公司，与总经理里查德·费古森（Richard L. Ferguson）作了访谈。</p><p>ACT 是一个独立的、非赢利性的组织，向学生、家长、高中、大学提供各类服务，也向专业组织和政府机构提供服务。ACT 建立于 1959 年。六十年代名声大振，因为它负责组织和设计大学入学的考拭，使这类考试标准化。ACT 还发展了各类其他计划，包括教育、学生录取、职业教育和开业合格书等方面。其目的是为各类教育提高质量提供有关的信息。ACT 的总部设在爱荷华市，同时在华盛顿特区、加利福尼亚、丹佛、亚特兰大、奥斯汀、奥伯尼设有办公室。每个办公室负责几个州，这样便构成一张全国性的网络。</p><p>ACT 的领导机构有两个部分：一是 ACT Corporation，成员由各州选举的代表组成，每年开一次会，检讨政策；二是董事会，董事会 15 人，每季度开一次会，检讨 ACT 的行政。董事会任命总经理，总经理为 ACT 的主要执行官员。</p><p>ACT 的业务包括很多方面，我们可以看几项：</p><ul><li>ACT 评价计划。这是一份综合性的计划，为大学、高中和要进入大学的学生服务。学生参加 ACT 设计的考试，包括教育和自传性的问卷，四门考试（英语、数学、社会研究和自然科学），以及一门兴趣表（Interest Inventory）。ACT 分析了考卷之后，准备出有关的报告，供学生、高中和大学使用。可以用于选择职业、课程设计、录取学生等方面。每年大约有一百万初中生和高中生参加 ACT 的这项考试。考试结果有 2,900 所大学、学院、学术机构或州教育系统使用。也就是说大学等录取考试不是由政府组织的，而由一个私营的全国公司 ACT 组织，但各个机构均承认这项考试的权威性。</li><li>教育机会服务（Educational Opportunity Service），ACT 运用计算机分析参加考试的学生的有关情况、包括教育计划、兴趣、优点、教育目标等。</li><li>注册信息服务（Enrollment Information Service）。这项服务包括两个基本部分，一是市场分析服务，一是收益分析服务。这两项服务根据前述考试获得的数据做出。</li><li>行业考试计划，ACT 备有 40 多种标准化的考试，目的是让那些没有经过专业训练的人员获得专业证书，证明他们在实际工作或独立研究中达到了大专水平。这项考试包括艺术、科学、商业、教育和护理等领域。参与机构根据考试结果颁发证书，设计课程等。</li></ul><p>ACT 提供的服务还有很多种类，包括职业规划、计算机分析数据、财政分析等。另一项重要的活动就是向专业组织提供服务。在社会上，各类专业组织或职业组织均是非政府的。专业组织要在社会上存在，并使人们信任它们，就必须具有髙质量，具有高水平，否则这个组织就不会起多大作用。因此尽管没有人要求各类专业组织对自己的成员进行考试，它们自己要组织对自己成员的考试。专业组织往往委托专门的公司做这件事。ACT 向大约八十个这类组织提供此项服务，也包括工会和政府机构。这类考试主要是评价一个人的水平和资格，能否得到奖学金、证书或执照，或者录取在某项计划中接受进一步的专业训练，可以看一下哪些协会与 ACT 有关：</p><ul><li>美国眼科学院；</li><li>美国耳鼻喉科学院；</li><li>美国商学院联合会；</li><li>美国德语教师学会；</li><li>美国微生物学协会；</li><li>美国教育委员会；</li><li>美国牙医学会；</li><li>美国医学院学会；</li><li>急诊护理协会；</li><li>法学院录取委员会；</li><li>全国药理学协会；</li><li>美国国防部；等等。</li></ul><p>象 ACT 这样的公司，还有其他几家，都是大型的全国性的公司。这些公司之间也存在竞争，它们要生存下来，也要讲究信誉和质量。各公司花很大气力研究如何改善和改进考试和考卷，怎样更好地评价应考者，怎样确定合适的标准。同时，负责保密，不让考题和考卷泄露出去，因为这关系到公司的信誉。一朝弄虛作假，整个公司就可能垮台，因为要失去业务。失去业务的话，公司就无法生存，因为它们是私营公司。虽然是非赢利性的，但工资及行政费用均要从这些业务活动中获得。如 ACT 的全日和计时工作人员近 500 人。按美国的工资计算是一大批开支。政府不负责公司的费用，因为没有干系。</p><p>可以看到，这类公司的存在与社会对标准化的要求有关。如果社会不需要标准化，这类公司也无法存在。现代化社会同时是一个标准化的社会。在标准化方面，这类公司得益于两点，一是政府有明确规定，从事哪类活动或职业必须通过哪个公司的哪项考试；另一方面，学校、协会等非政府组织也有此种规定。任何人想从事某项职业或进入学校或某个机构，不通过必要的考试便不能成事。这种做法，一方面省去了政府的一大笔开支，政府无须设立一个专门的部门来进行这样的考试，而由私营部门通过收费来维持社会上的这套标准化程序。另一方面，标准化的过程得到了实现。政府有充分自由的权利，它可以规定某项职业须通过某个公司的某项考试，也可以规定通过另一家公司的某项考试，只要它觉得前一家公司不合质量和标准。其他组织也一样有这样的权利，大家都要维持自己的信誉和可信度，因而达成一种制衡。</p><p>自然，另一项重要的条件是：社会有普遍标准化的需要。如果社会没有形成这种氛围，这类私营公司也难以生存下去。只有在社会每个细胞组织都真正考虑自己的利益和生存问题时，这样的氛围才能形成。如果每个细胞均没有利益意识，有所依靠和依托，好坏不负责任，便不会有这种氛围。只有当录取每一个人都与自身利益密切相关时，人们才会追求标准化。</p><p>推动标准化的另一股动力来自人员的广泛流动。社会流动性大，每个人都需要在技能和知识上验明正身，每个机构也需要有可靠的证书证明每一个人的技能和知识。地方性的证书已不足以满足这一要求。太综合的证书，如大学毕业文凭也不足为专业行当能力之证。人员的广泛流动，要求每个要谋得某种职位的人都能有效地证明自己的学识和能力。人们要取得这种证明，便要达到社会公认的标准。这个相互的过程，推动着人的标准化。证书是各类人的产品说明书和合格证。人们在市场上购买商品，根据商品的用途、性能和尺寸选购。在人的资源发展达到某种程度时。人的标准化便会成为社会必不可少的环节。</p><h2 id="4-法规文化"><a href="#4-法规文化" class="headerlink" title="4.法规文化"></a>4.法规文化</h2><p>任何社会均需要一定的法规来调节人与人之间的关系。不论是什么类型的社会，制度不同的，文化不同的，法规的调节均必不可少。法规可以有各种层次，宪法是最高层次，法律又是一个层次，具体规定又是一个层次。法规调节，是人们在解决冲突和矛盾时可以采用的一种手段。自然，在不同的文化氛围中，法规的地位有所不同，起到的调节作用也有所不同，法规在不同社会中的表现形式，也有所不同，有的以成文的法律形式表述，有的以传统的禁忌表述，有的用宗教戒律表示。</p><p>美国社会是一个法规社会，各种法规多如牛毛，社会生活的每个领域都有一定的法规加以限定。为什么会形成这样一种“法规文化”，值得探讨，我们先来看一下社会的法规文化的具体方面：举几个例子来说明这些问题。</p><p>美国最大的法规就是宪法。在这个社会里，宪法是文化的核心部分，不仅仅是政治和法律的核心部分。我记得有一次一位教授来复旦大学讲课，有一位中国学生问了一个问题:“美国没有固定的意识形态，人们根据什么来统一思想？”这是一个非常典型的中国式问题，教授大惑不解。经过解释之后，他明白了这个学生想问什么问题。他思考了一阵后说，“宪法。”答案似乎是风马牛不相及，宪法是法律，并非意识形态。意识形态没有法律效力。但这个答案的确反映了美国人的习惯反应：宪法是文化，不仅仅是法律。宪法深刻体现了西方占主导地位的意识形态。并将其变为法律。宪法两百多年来深印人心，成为社会争端的最后仲裁。并非人人时时刻刻都想到宪法，但在争执发生时，唯一可以依靠的人人觉得可以相信的就是宪法。（参见第二章第 5 节“二百年的宪法”）。</p><p>宪法是太抽象的法规，日常调节人们行为的是成千上万的具体法规。这些法规，我个人觉得，在东方社会和东方文化中，恐怕大部分人觉得过分严厉。东方文化中长成的人，如果真正生活在美国社会中，有时会觉得并不那么舒坦、自由。</p><p>酒，有严格的法规控制。未成年的人不能喝酒，喝酒为违反法规。商店如要售酒，必须得到政府的营业执照，没有营业执照，商店或饭店均不得售酒。爱荷华市的超级市场星期天上午 12:00 以前不售酒，理由是这时人们应去教堂望弥撒。当然这不是政府的意图，而是宗教的影响和一种传统。</p><p>食品，也有严格的法规加以调节。如水果、蔬菜中含化学元素的最高标准，肉类的上市标准等。如果超过有关规定，食品便不能上市，如果违反规定，将会受到严厉的惩罚。罚大笔的款。</p><p>汽车，多得惊人，每家基本上都有一辆，不少家庭有两辆。如何管理汽车成为社会的一大问题。人们制定了严格的法规来调节“汽车行为”。交通规则十分严格。每个想取得驾驶执照的人必须通过专门的考试。高速行驶中，人们也必须遵守这些规则，否则车毁人亡不是不可能的。车行，是个头痛的问题，车不行，也是一个头痛的问题。停车（Parking）是个大问题。街道两旁，均有明确的标志牌，指示能否停车。在不能停车的地方停车，会收到罚款单（Ticket），如果不付款，法院就会通知你到庭，或者下次更新执照时遇到麻烦。高速公路，名叫高速，但对汽车的驾驶速度也有严格的规定，一般在 50-65 英里之间。高速公路上有警察巡逻或蹲点，发现超速的汽车便要罚款，几十美金是一般的数目。</p><p>坐车或开车，前排的人必须系安全带。如果不系安全带，也是违反法规。（对此，各州的法律并不完全相同，有的规定在高速公路上开车须系保险带，有的规定在市区街道开也得系）。</p><p>在税收方面，恐怕有最为详尽法规，可能是因为这关系到政府的财政收入。政府税收规定之细，一般人得细细研究许久。每个详细环节，均有规定。如果违反这些规定，可能受到非常严厉的惩罚。因此每个人在与政府税收打交道时，均得小心翼翼。如果不付或付不出财产税，政府有权取走这一部分财产，并出售抵税。任何人都得向政府报告收入。在这方面，美国人最不自由。（参见第四章第 5 节“税收制度”和第七章第 6 节“透明议事”）</p><p>学校教育，也有严格的规定，录取、考试、学费、学分、助教的工作、医疗保险等，应有尽有。这些规定调节着学校的活动。这些规定完全有可能让违反规定的学生离开学校。</p><p>工厂、政府机关、学校、军事机关等各个领域，均有各自的详尽的法规。从人的本性来说，人们并不愿意遵守法规，人们愿意自由自在、无拘无束地生活。但是法规是强制性的，人们应当或者必须遵守。在停车场有专门供残疾人用的地方，一般人不会去用。街道旁的停车处有时有自动收费计时的设备，大部分人会自动投硬币进去，并遵守时间。交通规则，人人也是遵守的。哪怕没有车，在指示可以穿越马路的灯没有亮之前，人们不会穿越马路。在写有请勿吸烟的地方，人们不会抽烟。公共汽车一般无人售票，自动往一架设备里投硬币，在终点站驾驶员有时不在车上，乘客一般均会把硬币扔进去。对待法律，更是如此。为什么会有这种现象？</p><p>著名学者 H·S·康马杰说，要美国人遵守某种规定就是对他的侮辱和挑战，也就是我讲的人的本性要求和遵守规定不相符合。但是他又说，美国人对待法律的态度奇特。初看上去，美国人不遵守法律，小的违法人人有份，不过美国人是崇尚法律的。康马杰的解释是：美国人认为美国民族的发展在于蔑视传统和权威，规章代表传统，纪律代表权威。但是政府和宪法是有效的，不能容忍攻击和违背，因为社会的发展证明了这一点。所以人们崇尚法律。而现代社会的大部分详尽规定，都是立法机关通过的。上述许多法规，都具有法律形式，所以在某种程度上协调了反规章意识和循法律意识。</p><p>美国社会可以说是一个“法规社会”，尽管这里违法、犯罪的现象颇为令人忧心忡忡。然而，社会的整个进程是由各种法规来调节的。法规之所以能起到如此的作用，一定有其原因。我自然无法说一定就是什么原因，但除康马杰的分析之外，还可以再思。</p><p>一个事实是美国是一个年轻的社会，历史上没有形成复杂的社会阶层结构，不象欧洲社会和东方社会。欧洲社会和东方社会历史悠久，社会的传统和非传统，权威和非权威已经人格化。有些集团代表了传统，有些代表权威。这些团体或阶层在社会上占有一定的地位，当社会矛盾和利益冲突发展时，他们承担着协调人际行为的功能。在一般历史悠久和文化悠久的社会中，起协调作用的东西是“人化”的，是社会上有文化、有权力、有财富或有传统的团体。在这种文化氛围下，法规就不能起主导作用。只要这种人际关系的结构或人化的协调机制不变化，法规协调就难以大有作用。与此不同，在美国作为一个新国家出现在历史舞台上时，并没有强大的“人化”的协调机制。而一个社会又必须有协调机制。所以共同设定的法规便更具有较牢固的地位。大家遵从法规协调，又无“人化协调”，每个人的利益都得到保障。共同设定的法规不是保护哪个人的利益，而是保护每个人的一般利益，这是美国成为“法规社会”的基础。毋庸置言，在这个基础上，法规发展起来，又有利益取向的差别，不可能一视同仁地保护一个社会的每个成员。这里只是强调历史发展造成的文化机制在法规社会形成过程中的作用。</p><p>另一个重要的原因是二次大战以后科技的突飞猛进。我认为这对法规社会也有促进。高科技的发展，尤其是高科技的成果进入普通人的家庭，使人们必得遵守必要的规则，因为没有规则、不仅不能享用高科技，而且可能出危险。如汽车越开越快，没有严格的规则就会生命危险；高速公路越来越发达，不守规则就可能无法行车；电视机、录像机、摄像机、洗衣机、电饭煲、微波炉、音响设备、吸尘器、除草机、打蛋机、切片机、开信封机、开罐头机、按摩器、电牙刷、刮胡器、电子游戏等等，均要求懂得比自然社会中简单工具复杂得多的规则。在科技领域，电脑、激光打字机、传真、复印机等现代设备，如果不服从规则，它们就拒绝工作。在公共场合，自动电话、卖报机、自动售票机、自动售货机、自动照相机、自动换钱机、自动售邮票机、自动存钱取钱机，都要求遵守规则。如此等等，名目繁多。如果不遵守规则，它们就拒绝工作。在社会运转方面，支票、信用卡、借款、股票等，也有详细的规则。美国人从小在这样的环境中成长起来，在一种遵守规则的“社会强制”之中。要进入这个社会，就得遵守规则。这不仅是一种生活方式，也成了一种文化。使人们养成遵守规则的习惯。有一个对比很有趣。美国人烧菜，严格按照菜谱，严格计量各种佐料，用各种计量工具，一分一厘都不想差。中国人烧菜，很少看菜谱，抓一把就是。美国社会科学技术的进步，发展出越来越多专门的用品，它们要求每个想使用它们的人必须遵守规则。</p><p>自然，遵守规则可能有益于社会发展，也可能不益于社会发展，要看在什么历史条件下。不过，如果处在一个存在争端或群体共处的社会中，人们总是需要协调矛盾的机制。共同设定的法规协调可能是不完善的，但是是最有可能让人遵从的。如果能把法规协调与科技的合理化原则结合起来，其效力将大大扩展。普通人并不会直接接受高深的科技逻辑，只有在它们深入到社会生活之中后，才会成为潜移默化的力量。</p><h2 id="5-税收制度"><a href="#5-税收制度" class="headerlink" title="5.税收制度"></a>5.税收制度</h2><p>美国的税收体制是一套异常复杂的体系，不容易弄明白。不少美国人也不甚明白。有一位政治学教授告诉我，他有一次看不懂政府的税收文件，打电话给有关部门说：“我是政治学的博士，但是我还是看不太懂你们的文件。”</p><p>税收是一大政治问题。总统选举的一个主要辩题就是提高还是降低税收。报章说，布什已经成功说服了许多选民，杜卡基斯的政策将会提高税收，所以民意测验中布什大为领先。税收问题关涉到政府如何花老百姓的钱，所以选民们最为关心。其实税收是美国建国的基础，因为独立战争的一个重要起因就是英国政府向当时的北美十三州课以重税，引起反抗。在现代国家中，税收决非经济问题，而是政治问题。</p><p>由于税收体制异常复杂，这里只能拎其要点。</p><p>人们怎样付税？付多少税？是社会管理中非常重要的一个课题。有的税由财政部统一管理，这是联邦税。地方税由各州管理。除这两项税外，每家人家如果有住房，还得付房产税。除上述三者之外，还有销售税，任何人在商店里买东西，大部分商品也得付税。这部分税在算帐时加在商品的价格上，大约百分之四到百分之八不等。这是付税的基本概念。</p><p>从联邦税来说，每年年底联邦政府税务部门会寄税收文件和表格来。每个人都必须详细填写，然后将表格以及应当付的税在 4 月 15 日之前寄回。联邦政府寄来的文件和表格相当复杂。公民的所有收入都如实汇报，如工资收入、股票分红、稿酬、其他收入等。</p><p>公民能否不报？一般来说会有麻烦，另一方面也是非法的。违反税收法，重的可以进监狱。有的人粗心大意，漏报收入，结果酿成严重后果。因为这时说不清楚究竟是粗心还是有心。公民得到的大部分收入，工资、稿费、股票分红等，政府都一清二楚。美国有相当发达的电脑系统。公民每人都有一个社会保险的号码，各个公司和单位在付钱时都会把这些信息输入到政府的电脑中去。因而政府只要一查电脑，就可以知道报表是否符实。当然逃税的人也大有人在，不少高官都有这方面的丑闻。</p><p>一般雇人单位在付工资时，已经直接扣除相当一部分的联邦税和州税。这笔钱不和公民见面，直接进联邦政府和州政府的账号。另外雇主也直接扣除社会保险的费用，存在公民的社会保险号码之下，供将来退休之用。所以公民拿到工资时，已经扣了相当的税。</p><p>公民在填写表格时，也有种种不同的规定，如结婚与否，有没有孩子，父母是否依赖收入等。不同的类别有不同的规定。每个人都得详细填写。哪些收入要报，哪些收入不报，也规定得分明，如残疾军人费、职工残废费用、儿童补助、礼物或其他继承财物、抚恤费、灾害赔偿费、有部分奖学金等不必申报，但得到的基金资助，教学、研究等得到的钱，工资收入，个人财产买卖得到的赢利，得到的奖学金，在美国以外得到的钱必须申报，不报为违法。在所有一年的收入中，扣除按法律规定的可以免税的部分，如退休方面的一些收入，65 岁以上人的部分收入，盲人、儿童等，都有详细规定。另外，还有复杂的条文涉及到投资、公务办公费用等的免税项目。除此之外，都得纳税。</p><p>由于政府事先就取走了公民的一笔钱，所以公民必须计算，政府取走的这部分大于还是小于应当讨的税。公民一般得精心计算可以免税的部分，除了上面提到的，还有部分医疗费用和牙医费用，州税和地方税（政府间有协议）、房产税、公民付的利息、付的贷款，65%的个人所得利息、赠款、军款（政治捐款、学会、俱乐部费用、献血等不能免税）。工作方面需要的费用有的也免税，如安全设施、小工具、必要的服装、保护服装、体检费用、专业组织的费用、订专业刊物等。将所有这些项目一一搞清楚和计算明白之后，最后得出的总数就是联邦政府要纳税的部分。在联邦政府寄来的手册上，可以查到多少收入应该纳多少税，然后对照事先扣除的部分，多退少补。</p><p>一般家庭纳多少税，我们可以看一下。扣除各项免税项目之后，剩下的收入数目得纳税，这里还有一个差别，就是单身、结婚合报、结婚分报和户主四类。一般美国人家庭的平均年收入，扣除各项免税部分之后，在 3 万美元和 5 万美元之间。我们可以查一下（1988 年的标准）：</p><table><thead><tr><th align="left"></th><th align="left">单身</th><th align="left">结婚合报</th><th align="left">结婚分报</th><th align="left">户主</th></tr></thead><tbody><tr><td align="left">30950-31000</td><td align="left">6695</td><td align="left">4913</td><td align="left">7386</td><td align="left">5583</td></tr><tr><td align="left">40000-40050</td><td align="left">9863</td><td align="left">7447</td><td align="left">10554</td><td align="left">8259</td></tr><tr><td align="left">49950-50000</td><td align="left">13345</td><td align="left">10581</td><td align="left">14210</td><td align="left">11741</td></tr></tbody></table><p>由上可见，联邦的税收相当高。由此可以明白为什么税收成为政治中的一大课题。</p><p>除联邦税外，还有州税，州税的过程与联邦税相似。州政府寄文件和表格给每个公民，公民如实申报，可以免税的包括部分医疗和牙医费用，所付的税收、付出的利息、捐款等，与联邦政府的大致相似，然后查表，可得：年收入在 29,950-30,000 美元的，需付州税 1,837。因为州税事先已经扣除，也是多退少补。</p><p>除联邦税和州税外，还得向地方政府付房产税。在爱荷华城，每座房子要交纳 1,000 美元左右，房产税由地方当局估价房屋价值后定，供市政府修筑公路，维持公有设施，如图书馆之类。</p><p>以上三项相加，应付税的收入在 3 万美元的结婚合报家庭，交 7,000 多美元的税收，占总收入的四分之一左右。</p><p>税收体制相当发达，运转得不错。税收法律相当严厉，偷税漏税逃税，视情节轻重，会受到不同程度的惩罚。美国人每年有一项重要的工作，这就是与税收打交道。人们常常要保留大量的文件和单据，以证明可以免税的部分。一年的有关税收的文件，一大堆。自然，税收也是“核心机密”，主要是它反映了每个家庭的真实收入。</p><p>税收是美国政治的核心问题之一，也是资本主义国家的政治核心问题。在社会主义国家，没有经常的、普遍的个人所得税制度。西方国家的所得税制度有没有什么社会或政治功能？这是一个值得分析的问题。</p><p>至少美国人有一个观念十分明确：政府所花的钱是他们交的税，所以他们一般来说希望政府把钱用在当处，也注意政府的政策和行为。如果没有纳税制度，人们就不会那样关心政府的政策和主张，因为与个人没有关系，尽管实际上是有关的。纳税制度是西方政制的一个基础。每个人给了政府一定的钱，就觉得有责任监督政府。政府官员经常要解释他们的政策，这只是为了说明他们没有乱花纳税人的钱，选民也较注意选举，因为选什么人关系到他们的切身利益。无论是总统，参议员，众议员，还是州长，州参议员，州众议员及地方官员，都与公民个人的利益直接有关。通过税收，官员同人民之间形成一种“契约”关系。税收体制培养一种责任感，尽管可能是被动的。在人们不纳税的社会里，政府也得花钱，只是渠道不同，但人民对政府的责任心要小得多。</p><p>税收制度还有一种功能，这就是将整个社会组织起来。税收部门，通过先进的计算机系统，运用社会保险号码，把个人、单位、政府均联系在一起，构成一张严密的管理网络。个人可能不受什么人的管制，但受税收部门的管制，一个象征就是，必须如实报告家庭的“核心机密”。所以有人说，税务官员“猛”于安全官员。</p><h2 id="6-科技治人"><a href="#6-科技治人" class="headerlink" title="6.科技治人"></a>6.科技治人</h2><p>美国是一个人人崇尚个人主义的国家，个人主义至高无上，没有任何力量有权干预个人主义。问大部分人，都会得到这样的印象。担心个人主义太盛的人也大有人在。来自其他文化氛围的人，与美国人相处久了，可以发现他们的个人主义（不是全部）是明显而且有时难以接受的。鉴于这种主张个人自由和私域神圣不可侵犯的状况，是什么力量把这两亿多人组织起来，使他们加入社会这个大机器的每个环节，使这个社会能正常运转呢？这里面有个悖论：社会尤其是大型社会的正常运转需要社会成员的良好协作和共同行动，而人们追求的价值又是个人至上和私域至上。</p><p>协调这种关系的有各种力量，政治制度的协调、法律的协调、利害关系的协调、金钱的协调，如此等等。在各种协调中，有一种力量不能忽视，这就是科学技术，</p><p>科学技术的发展在两个方向上产生作用：一方面，科学技术的高度发达要求更精细的分工，使每个人都有自己明确的任务，这从技术上保证了个人主义的价值观念。自动化、电子化，使每个人在自己特定的岗位上完成特定的工作，不需要依附别人，不需要服从人的命令。只依附机器，服从机器的命令。这也正是马尔库塞所分析的人的异化的一个方面。科学技术，尤其是高科技，要应用于具体生产过程，必得分解为数不胜数的环节，每个环节都需要有人专门负责。尽管是一个非常细小的环节，但没有经过训练的人很难取代他。越是高科技，越是如此。十七世纪时的工匠们一个人可以从头至尾制造一个产品，如今情形却已彻底改观。科学技术的这种发展，泛泛地说，提高了个人的地位，增长了个人的自我意识，强化了个人的责任感。使每个个人都找到在社会这个大机器中的确定的位置。而在科技不那么发达或用传统方式生产的社会中，个人在社会中的位置不很明确，角色可以互换，社会组织的混乱和不稳定的可能性较大，主要原因在于角色的可以互换性。这不仅有经济的含义，而且有政治的含义。在一个社会中，只要相当一大部分人对自己的角色不明确，这个社会就可能处在结构性的混乱之中。</p><p>另一方面，科技发展也要求严密的组织。一方面是将科技化为各个细小的环节以便能够操作，另一方面是这些环节最终要能够联结起来，能够成为一个整体。这是一个社会最强大的组织力量。它在政治力量和法律力量之外，但强大有力。科技用理性的逻辑说服人们服从一个严格的规则。这个过程制约个人主义至上的观念。可以想象，象航天飞机这样的工程，需要多少人为之服务，需要多少人处在它的严密的组织体系之中。可以想象，IBM 公司怎样把每个个人组织起来，为之服务。这种命令不是政治的命令，而是技术的命令，如加尔布雷斯（John Kenneth Galbraith）所说，是 imperative of Technology（工艺的命令），今天的人类社会有一个奇特的现象：要人们服从政治命令和法律命令，比要人们服从科技命令，要困难百倍。每个人在服药前都会认真研究注意事项，小心翼翼。但在废止种族歧视，服从一种意志方面，听从政治家的劝告的人要少得多。</p><p>在高科技发展的社会中，社会的组织程度一般均较高，而在高科技或科技不发达的地方，社会的组织程度往往要低一些，合理化的程度也要低一些。美国社会的组织，很大一部分功能由实现科技逻辑的大公司和企业承担着。在一些经济不那么发达的社会中，往往可以看到一些奇怪的现象，在某些实现高科技的领域和地方，组织化的程度要远远高于社会一般水平。</p><p>学者们对这个问题也有研究。著名经济学家加尔布雷斯在他的著作《新工业国》（The New Industrial State）中，谈了他的观点。他认为科技的广泛推行会导致六个结果：（1）科技运用将任何工作的开始与最后完成分开；（2）用于生产的资本将增加；（3）时间和财力将更加固定，用于完成特定的工作；（4）技术要求专门化的人力；（5）科技要求高度的组织化；（6）由于时间和财力的运用，由于需要大型组织，由于高科技下的市场条件，社会需要计划。</p><p>所以加布尔雷斯的观念是，科技的发展和运用必然导致社会更有组织。各个经济和科技系统，将由一些职业的经理决策，他们管理着整个系统。加尔布雷斯称之为“技术结构”（Technostructure）。科技发展的结局是：有一部分人自动承担起管理人的功能，他们是非政治的管理。但这种管理在很大程度上可以减轻政治系统的负担。政治系统的功能之一就是协调人的行为，如果一种机制可以将人的行为限制在合理化的幅度内，社会将便于治理。</p><p>当代的另一位作家约翰·奈斯比特（John Naisbitt）在《大趋势:改变我扪生活的十个方向》（Megatrends: The New Directions Transforming Our Lives）一书中描绘了同样的现象，但更加人性化，更加心理化，更加生理化。他用了 High Tech 和 High Touch（高科技，高感应）来描绘这个过程。他把科技治人的强大力量描给成 Forced Technology（强制的工艺），高科技的应用，把人越来越牢固地束缚在科技过程中，人异化了。于是产生了对这种治人力量的反抗：反抗电子转账技术，反对电子自动查询技术。奈斯比特将之归结为科技使人失去了人的接触和感应，所以人们要产生逆反心理。</p><p>实际上，还可以加上一层，就是科技发展的突飞猛进使其自身治人的手段高度完善，有可能突破一般的技术性管理，而走向每个人的内心世界，侵入人们的私域。在今日之美国，大概没有什么力量可以冲破个人主义的信念和私域的藩篱，科技却有这个力量。科技保证着物质报酬，这是另一项条件。人们向往高感应，是反抗治理的表现，正好说明科技治人的能量。</p><p>科技治人完全是出乎人的意料之外的结果，可谓有意栽花花不发，无心插柳柳成行。先前主张运用技术的人并没有明确意识到它们将成为管理人的一种手段，而今科技应用成为社会最强大的管理人的手段之一。在很大程度上，美国社会是由科技程序来管理的。人们服从科技甚于服从政治。科技发展把社会分解为相互联结的微小领域，每个人占据一个领域。要进入一个领域需要有特殊的技能，教育体制基本上也围绕这个目标活动。于是，教育又被纳入这个管理过程。教育不断衍生和发展科技治人的能量和科技治人的文化。</p><p>激进派批评这一现象为异化，从人的角度来说，可以成立。但没有一个社会可以不要科技，而科技的逻辑必然如此。重视科技、崇仰科技、应用科技，显而易见这不仅仅是一个生产的，或经济的或纯技术的问题。因此，在发展科技的同时，要思考的问题恐怕不是那样简单。任何事物都有好和坏，关键是在什么历史条件下做选择，选择了之后如何协调。</p><h2 id="7-猫狗不自由"><a href="#7-猫狗不自由" class="headerlink" title="7.猫狗不自由"></a>7.猫狗不自由</h2><p>前面有一段文字，专门讨论美国社会的法规问题（本章第四节，“法规文化”）。这的确为美国社会的一个特点。法规社会的产生有多种原因。我在“法规文化”一节中曾作了分析，认为平等的协调规则和科学技术的高度发展为法规得以通行的重要条件。</p><p>另一方面，从民族特性上来说，我并不认为美国民族是一个温和的与世无争的民族。从表面上，往往容易产生这样的印象。美国人大多不吵吵闹闹，很少见到大街上或汽车上吵架的。单位里也很少看到有什么激烈的争论。其实不然，这些现象均是在法规协调下的结果。今日各类法规已相当发达，各类利益均有明确的法规协调。之所以有这样多的法规，其主要原因是社会需要它们。社会之所以需要它们，是因为对有关事物有争执。有争执才会有法规，没有争执便不需要法规。</p><p>美国人本性上是喜欢争执的。在法规不明确的地方，往往有争执发生。这种性格产生于多种原因。可以说，美国的发展过程表明这种本性为何会存在，在一片广大无主的土地上开发，每个人都可以宣称自己成为某物的主人，没有争执或不争执便会一无所有。西部片描写了生动的争执故事。从现代发展来看，个人主义也易产生争执，法规不仅协调冲突，同时协调个人主义。在这种文化中，法规走向系统化很自然。</p><p>而集体主义的问题中，法规往往不明确。日本人往往很少上法庭，不象美国人那样动不动就要上法庭。</p><p>由此，人们便制定了各类法规来协调争执。各类活动大都有法规。造房用地，汽车停放，扫雪铲雪，子女抚养，老人赡养，均有法规。</p><p>为了说明法规的细密，我们来看一下一个关于管理家养动物的法规（此法规在一个市里施行）。</p><p>法规开宗明义地说：”法律保护人民，法律也保护家养动物。虽然人们认为家养动物是个人的权利，但有些动物引出麻烦，须得加以管制。法规是为了让公众更健康和更安全。公民应当阅读这些法规，并理解为什么您和您的养畜必须遵守这些法律。“</p><p>这里，动物似乎具有与人平等的权利。不少人在家里养畜，均视之为家里平等的成员。所以在制定法律时，必须尊重主人的这份感情，不可伤害。以下是这项法规的细部：</p><ul><li>狂犬病。所有养畜，包括猫在内，六个月以上的必须打免疫针，防范狂犬病，因为野生动物会将这种不治之症传给家畜。狂犬病可以传染给人，因此法律保护人和家畜免于此疾。养畜者必须保存免疫证书。</li><li>系畜。所有的养畜，不论多大，都必须系上牵带，除非在养畜者自己的房屋和地产内。如果养畜没有牵带在外面活动，便违反了法规。如果养畜走失，拥有者会被罚款，家畜会被 Impouned（没收）。</li><li>执照。所有养畜，六个月以上的，均须得到市政府的准许，申请执照必须执有狂犬病免疫证书。执照费用各有不同。执照每年都得申请，每年 3 月 1 日之后，没有申请的人将多付 15 美元。所有执照每年 12 月 31 日到期。</li><li>罚款。动物监督官员有权禁闭乱跑的家畜并罚款，禁闭费用为：狗，第一次犯规 10 美元，第二次 20 美元，第三次 30 美元，第四次 40 美元，以此类推；猫，第一次 5 美元，第二次 10 美元，第三次 15 美元，第四次 20 美元，以此类推。如果所有者在 24 小时内不来认领，每天狗加 8 美元，猫 5 美元。来认领时须有免疫证和执照。四天之后，所有者便丧失对家畜的一切权利，养畜将交给他人收养或安乐死。每个公民都有权认领迷路的养畜，如有人抱怨，拥有者就得去法庭，罚款和惩罚将由法官决定。如有情况，可随时打举报电话，揭露某个养畜的不法行为。</li><li>其他违法行为。包括将养畜遗弃在市内，让养畜吠叫影响他人，将养畜拴在公共场所的公共设施上，把养畜关在或栓在一个没有合适食物、水的地方，把养畜养在影响它们健康的地方，让养畜干扰他人等。</li></ul><p>这只是这项法规的要点。这项法规要详细得多。之所以订立这样一份法规来协调猫狗，也是因为有不同利益存在。美国人，有的对猫狗喜欢得要命，有的恨之入骨。所以，为了协调两者之间的矛盾，就须有法规。我亲眼看到一家人的狗跑到邻居的草地上去玩耍，结果这家主人出来大声喝叱。狗的主人赶快跑出来，将狗弄回家中。在这种情况下，没有法规协调就会发生冲突。</p><p>我们可以看到，法律很细，各个可能发生争执的环节都包括在内，如有争执，便可照章办事。如果没有详尽的法规，恐怕就要公说公有理，婆说婆有理，媳妇说媳妇有理，儿子说儿子有理了。</p><p>稍微展开一些论述，可以感到美国社会并不那么“自由”，并不象人们想象的那样可以为所欲为。连猫狗都不自由，养猫养狗的人，又为它们所束缚，照我看来，是选择束缚。尽管有些人爱狗如命，猫狗业也很兴旺发达，狗屋、狗车、狗衣、狗食，应有尽有。但猫狗受到很大限制。如果猫狗有意识的话，定会到华盛顿去示威游行，要求“狗权”和“猫权”。</p><p>一个社会的发展，往往是越有争执，越需要协调。不同文化氛围下，可以选择不同的协调机制。不论选择何种机制，有一条总是应当注意的，就是不断发现可能发生争执的地方，不断发展出协调机制。各类协调大致可以分为两类，一类为“人化协调”，一类为“法规协调”。不论哪种协调，重要的是使各类可能发生的争执有相应的协调机制，且使之程序化。在发生争执的每个地方，不仅解决具体的争执，而且发展出一般协调程序。这样社会才能日益趋向有序解决争执的发展道路。一个现代化的社会，也是一个摆脱了无序解決争执的社会。</p><h1 id="五、交织的政治力量"><a href="#五、交织的政治力量" class="headerlink" title="五、交织的政治力量"></a>五、交织的政治力量</h1><h2 id="1-驴象治国"><a href="#1-驴象治国" class="headerlink" title="1.驴象治国"></a>1.驴象治国</h2><p>驴是民主党的象征，象是共和党的象征。有人形象地形容美国的竞选是“驴象之争”。实际上，两党都是代表社会统治阶级的政党，控制着政治，因此也可以说“驴象治国”。在分析美国选举时，必须理解两党举足轻重的地位。要理解美国政治和美国如何管理，不理解两党政治是不可能做到的。美国的政治由两党一手操纵，但两党其实都不象一个政党，只是一群“聚合之众”。与大多数西方和东方国家政党相比，甚至可以说是“乌合之众”。为什么说美国政党颇象“乌合之众”，我们可以细看。</p><p>其一，两党都没有一套入党制度（有些登记的手续），其实他们没有严格意义上的党员，选民们可以自我认同哪个党。在选举中投了哪个党候选人的票，就成为哪个党的成员。也没有人承认他们为“党员”，他们也不需要别人承认，便会说：“我是共和党”或“我是民主党”。即使党的高级领导，大概从一开始也没有“入党”的概念。两党的党门大开，出入自由，像个庙会。</p><p>其二，两党都没有系统的理论，两党之间在许多问题上存在分歧。不过两党之中也是各派观点都有，有左派右派之分，也有中间派等。在两党的成员之中，什么观念都可以听到。由两党提名当选的参议员或众议员也可以自由决定做什么事，甚至可以反对本党的提案。</p><p>其三，两党都没有完整的纲领，如果想找一份民主党或共和党的党纲，那是绝对找不到的，政党一般只有两种文献，表明它们的立场和主张，一是在提名大会上形成的政纲，但它不能约束任何人。另外就是总统的有关演说。因此两党都不能明确告诉人们，它们到底想干什么。他们只是在选举时就内政外交提出一些改革主张，并非基本路线。</p><p>其四，两党都没有严密的组织，平时很少听说哪个党召开支部大会或党员大会，美国政党是选举党，即在选举时才会活跃，平日里谁是党员自己也不清楚。就好像赶集的人，到那时才知道自己应干什么。联邦体制，也使两党无法成为组织严密的政党，各州均有自己独立的权力，联邦与州的界限很明白，实际上每个州有每个州的民主党和共和党。地方党组织在选举时干些什么，全国组织并不知道。人们不论这些，论的是打着本党招牌的候选人能否当选。</p><p>由此可见，两党的概念与一般政党的概念大为不同。不过不能小看这种松松垮垮的组织，有时候他们的力量就在于这种松松垮垮。当然，两党并非没有组织，只是这些组织在选举以外的时间不大起作用。</p><p>美国政党组织有两类，一类是常设的，一类是临时的。最基层叫选区委员会（Precinct Committee），通常只有一个人管事。同级的还有镇委员会等。往上是县委员会，其委员会由选区委员组成（通常），县委会是较重要的一层。在县和州委员会之间，还有一个国会选区委员会，负责提出国会候选人。再往上就是州委员会。由于各州立法不同，州委员会的产生机制也大为不同，不是千篇一律。州委员会是党在该州的常设机构，负责宣传党，巩固党。委员会主席地位显赫，是政界要人。最后是全国委员会。全国委员会由各州的代表组成。全国委员会很松散，权力很小，不能做什么事。两党没有正式的中央委员、常委，没有“美常委”的概念。全国委员会主席负责领导竞选总部，宣传候选人，募捐等事务，权力不大，只是管家之类的角色。</p><p>除此之外，两党还会设立为选举服务的总部（Headquarter），从全国总部、州总部到县总部。</p><p>看上去两党似乎还有一个比较象样的从上至下，或从下至上的组织，但实际上组织之间的关联很少，因为没有理论、没有党纲，没有固定的党员，也不知该如何联系。全国委员会与州委会之间有一定的联系，再往下就没有什么联系。全国总部也无法控制地方总部，地方总部打着全国总部的旗号各行其是。因为各地方总部的主要目标是赢得选举，而没有其他利益可图，如分更大的房子，买一些便宜货，坐漂亮的小汽车。来工作的人来之前就明白来干什么，所以运转得可以。只要能赢得选举，有什么招式都可以用。全国委员会也懒得控制。</p><p>两党是最愿意别人打着自己的旗号。只要打我的旗号，讲好一定的条件，你干什么都可以。全国联号商店，如麦克唐纳、哈迪、肯塔基炸鸡，全国都有。除了卖一样的货色之外，总号也不知道他们在干什么。美国人在政治和经济方面贯彻相同的观念。两党就象一个全国联号，各分号各显神通，推销产品。</p><p>其实不止是两党，还有不少小党，如社会主义工人党，美国党，人民党，美国共产党等。但他们始终成不了可以与共和党和民主党相对抗的大党，其中一个重要原因，就是两党没有明确的界限，包罗了很多“异己分子”，他们没有必要因受到排挤而投靠他人或自占山头。</p><p>两个能主宰政治的大党，竟然是如此松散的组织，有时候会令人觉得不可思议。实际上两党的能量就在松散之中。</p><p>其一，对美国文化来说，人们很难接受一个组织严密的政党，也很难理解一份准备用二十年的党纲。美国人是实用主义的，要他们想出这个主意来都不那么容易。他们希望解决社会中遇到的具体问题。人们从小养成的个人主义，使他们难以那么深地卷入一个政治组织，以致可以不考虑自己的利益。人们选择政党是为了自己的利益。</p><p>其二，两党都是敞开大门，谁都可以进出，对基层党员谈不上纪律约束。美国政党说得丑是“大杂烩”，说得好叫兼容并蓄。其实这是两党得以长期存在的一项重要条件。两党没有什么机制将愿意拥护它们的人排除出去，而却具有吸收不同人的机制。因为没有明确的界限，谁愿意都可以进来，谁愿意都可以出去，反对他们就没有实际意义。一般老百姓只能起起哄，党的主要力量掌握在一小撮党魁手中，普通人无法问津。</p><p>其三，两党都是选举党，其主要目的是为了赢得选举，并没有固定的政治目标。什么能帮助他们赢得选举，他们就干什么。这种机制促使他们尽可能地迎合选民愿望，将自己与选民结合起来，两党谈的政策主张，实际上是归纳总结选民的问题，然后提出方案。这种应变能力，也是两党保持地位的重要条件。在这个过程中，党魁们把代表大财团和特定阶级利益的观念加入进去。当然，选举获胜后，他们可能全然不顾竞选时的诺言，另行其事。选民此时已难以加以控制。</p><h2 id="2-政党分肥"><a href="#2-政党分肥" class="headerlink" title="2.政党分肥"></a>2.政党分肥</h2><p>政党分肥制度，从理论上讲已经受到很大的限制。自十九世纪末实行文官制度以来，公共部门的官员与职员分为两类，一类由选举产生，另一类由常任文官制度产生，大部分官员来自后一体制。通过公开的有竞争的机制产生，（见第七章第 7 节“选择仕官”），与政党在选举中获胜或失利无关，不与政党共进退。然而，实际上在选举中获胜的政党仍然油水很足，分肥制度在政务官中仍然存在，而且数目不小。根据《纽约时报》的统计，各类由总统任命的官员，全日制或非全日制，实质性的或荣誉性的，加起来约有 8,000 人左右。这篇文章估计联邦官员在二百万左右（有的估计要远远高于这个数目），那么八千人实在是一个不起眼的数目，其实不然，这八千个职位均是要职，一曰地位重要，二曰油水不小。一个政党一旦获胜，便拿到了这块肥肉，在选举中立下功劳的人，论功行赏，封官加禄。布什当选为第四十一任总统后不久，里根就要求全体这类官员总辞职，以便当选总统组织新的班子。</p><p>为什么是这是一块肥肉，我们来看一下这块肉里包括什么：</p><ul><li>14 名内阁部长，年薪 99,800 美元；</li><li>他们的副手年薪 75,500~89,500 美元；</li><li>134 名驻外大使，年薪 75,500 美元；</li><li>各类管制委员会头头，年薪 82,500 美元；</li><li>白宫律师和医生，年薪 89,500 美元；</li></ul><p>以此类推，8,000 个职位实在是一块大肥缺。与大学教授的工资相比一下，便可有个概念，非常著名的教授尤其是理工医方面的教授，年薪最高可以拿到 20 万美元以上，文科教授工资一般较低，正教授在 4 万至 6 万美元，副教授低于 4 万，助教授就更低了，尽管有博士学位。自然，8,000 人中并非人人都有那样高的薪水。有些人还不屑于从政，因为与企业界相比，这些薪水可能少得可怜了。克莱斯勒汽车公司总经理艾柯卡 1987 年的年薪为七百万。有个教授评论说:“没有人值这么多钱。”公共部门的工资相对来说低于企业界，但这些职位具有另外的属性，即政治意义——统治的权利。</p><p>政党在总统选举获胜后，就要考虑如何瓜分这块肥肉。这是一个敏感而复杂的工程：一方面要使在选举中出了力的人都满意，另一方面又要能构成一个有效的班子。如果是同一政党连选连胜，这还牵涉到如何对待现有班子。我们来看看布什已经选择的两位重要人物：</p><ul><li>国务卿詹姆斯·贝克，58 岁，他是休斯顿的一位律师。布什四次竞选，他都是主席，立下汗马功劳。曾是里根办公室主任，任过财政部长。与布什关系密切，可以说是至爱亲朋。</li><li>办公室主任约翰·索努奴，49 岁，新罕布什尔的州长，麻省理工学院工程博士，他的功劳是新罕布什尔州初选时拯救了布什。布什差点被另一位共和党候选人多尔击败，索努奴作为州长，开动机器，救了布什一命。布什选择他为办公室主任，取代了现任办公室主任克莱格·富勒。克莱格·富勒自 1985 年起为布什的办公室主任，忠心耿耿，但索努奴实在功劳太大，布什不能不割爱。</li></ul><p>布什不断公布他的选择和任命。在选举前有钱的出钱，有力的出力，选举获胜后，便可弹冠相庆，有功的都要弄个官职。成者为王，败者为寇。选举中失败的政党候选人和众多的竞选助手，只好眼巴巴的瞅着这些肥缺了。</p><p>这个过程并非没有制衡，因为是肥缺，在美国这样的社会中，必然会形成一种机制。在总统可以任命的官职中，有 700 名需要得到参院的认可，如大使之类。白宫班子和顾问班子不需要得到参院的认可。这套机制控制总统的任命权，使他在任命一些官员时要考虑可行性。</p><p>理论上，美国的官员制度已大大削弱了政党分肥制度，但政党分肥制度实际上还存在。不仅总统选举中有这个机制，国会议员和参议员的选举中也有这个机制。如果当选为众议员或参议员，便可以组织班子，在选举中马前马后的人便可得到报答。这是正式官职。官职意味着权力，权力意味着决策。这些重要官职往往有权决定政府财政的走向，于是可能从一个政党的选举胜利中得到好处的人远远不止正式任命的人。另外，一朝荣任高官，便意味着未来有所保障。如果本党在下次选举中失利或自己被解职，或想离职，各大公司或机构便会争先恐后地出高薪雇用他们。许多原政府要员显臣，目前均在大公司任职。他们在白宫或华盛顿混过，是一种重要的资源。</p><p>问题是这套体制对社会的管理起到了什么作用？为什么这一部分政党分肥制能保存下来？</p><p>其一，在十九世纪末改变政党分肥制的主要原因，是政党分肥制导致营私舞弊，效率低下，贪污腐化，同时导致整个社会的治理系统不稳定。每个官员都是任命的，可能下一届就要走路，所以得抓紧时间紧捞一把。由于政府官员走马灯式的换，政府管理不能一以贯之，没有连贯性。但是高层的分肥制依然保存了下来。分肥制度可以保证当选的政党建立一个有效的班子。虽然这里面存在种种弊端。但从管理上看，由总统任命同党亲朋，分别把住政治系统的各个要冲，易于形成一套一体化程度高，指挥灵便的政治指挥系统。这个系统可以干各种事情，有好有坏，但从政治指挥来说，没有这样的体制便寸歩难行。试想总统无权组织班子，所有班子成员都要由他人来决定，整个政府如何运转？必定形成互相掣肘和矛盾。这个范围内的分肥制之所以被保存下来，是社会管理和政治统治之必须。任何人当选为总统，都想掌握这样的权力，所以也未加以改变。</p><p>其二，这项权利在一定范围内是没有制约的，总统可以尽情地利用，但同时又是有限制的，国会参众两院对政府官员有一定的监督权，包括总统本身在内。尼克松因“水门事件”不得不引咎辞职。多少政务官在执政过程中，也不得不辞职。最大的制约便是四年一次的总统选举，新总统当选之后，尤其是另党的候选人当选，所有的任命官员都得重新接受任命，如没有任命，则请便。一般来说另党候选人入主白宫，所有任命官员均得卷铺盖。一个班子如不能赢得人心，失去选举，那么就失去了职位。尽管有这样或那样的限制，一旦当选总统，还是可以与同党分享肥缺，并形成联邦政府内的“一党专政”。其实联邦政府也是“一党专政”的，只不过要受选举的考验，时间的限制和国会的制约。成者为王，败者为寇，在美国政治中是颠扑不破的真理。</p><p>其三，实行分肥制固然对获胜的政党有利，同时也向享受肥缺的人提出了挑战。一旦政党失利，他们就得失去官职，届时到何处去谋职？事务官不存在这样的问题，他们可以告老还乡，实行退休制度。政务官无此待遇，一旦风向转了，就得准备后路。高级政务官自然不会有太大的问题，但许多低一级的政务官都有这样的问题。应该说，美国的社会机制为实行分肥制度创造了某种条件，没有这些条件，分肥制也实现不了。做部长或某个部门头目的人突然没有了工作，到哪里去？美国社会是一个要人人去找工作的社会，没有人安排工作，这种机制，大部分由私人企业和部门组成，同时学校等部门也实行这一体制。只要有较强的竞争力，便可以找到工作。在华府任过高职的人，比一般人有强的竞争力，有些人原来就有自己的企业，有些人回到自己原来的工作单位。社会提供了吸收这些人的机制，使之不构成一个严重的社会问题。政务官在做官时，首先就有这种心理准备。准备几年后告别华府，早就开始找退路。政务官没有终身制，愿者上钩。要不然每个政府换班，换下来那么多要人，岂不构成一个重大的社会问题。</p><p>政党分肥有弊，问题是如何找到监督和控制的机制。同时并非任何社会都能实行这一体制，要看社会环境有没有相应的机制。政党分肥，很大程度上保障了行政班子的统一和效率，保证了统治阶级集团内部的步调一致，这是一个基本的机制。</p><h2 id="3-利益集团"><a href="#3-利益集团" class="headerlink" title="3.利益集团"></a>3.利益集团</h2><p>利益集团，又称压力集团，为美国政治和社会的一个重要现象。理解利益集团和压力集团，不仅是理解美国政治的重要一环。而且是理解美国社会运行过程的重要一环。</p><p>何谓压力集团？一般而论，就是想用共同力量来影响政治过程的团体。这个团体往往有自己的特殊利益，它们向政治过程施加影响，以保护自己的利益或得到更大的利益。只有少部分利益集团是理想主义的。促进利益集团活动的基本动力是自身利益。政治体系的决策在很大程度上影响着社会利益的格局，影响社会利益的分配。凡是想保护或扩大自己的利益的人们，都应首先影响政治决策。利益集团活动的基础就在这里。</p><p>利益集团也被认为是多元主义的基础。利益集团可以影响决策的过程，政治就是多元的。如果社会上没有任何力量可以影响政府决策过程，政治就是一元的。利益集团影响政治过程的手段有多种，其中 Lobby（游说）是基本手段。华盛顿活跃的乐辩士有不少都是利益集团的代表。</p><p>利益集团是资本主义社会的特征之一，也是一些发展中国家的社会特征。利益集团往往起着一些奇特的作用。把政治和经济联系起来。在资本主义制度下，政府并不直接管理经济。经济利益矛盾表面上由政府政策和法律加以协调。各类利益集团通过自己的活动影响政策和法律的制定，使它们最大程度地反映自身的利益。这个过程，其实把经济集团与政治集团联结起来，或者说是把一部分经济集团与政治集团联结起来。其他类型的集团也可如是行事。</p><p>利益集团为资本主义的必然产物。在财产私有的条件下，个人的利益十分明确，界限也明确，追逐更大利益的动力和机制都强而有力地存在，个别利益汇成集团利益以争取更大权力，是自然而然的。利益集团类别纷杂，经济的、语言的、文化的、宗教的、种族的、职业的等等，应有尽有。资本主义制度的一大特点是政府为被动政府（传统的特征，最小的政府为最好的政府），要运用政府手段来保护和扩大自己的利益，个人的力量显然不行，只有团体的力量才能奏效。社会存在着组成集团才能有所作为的传统和文化，这是其社会组织的一个特点。</p><p>据有的学者统计，美国成年人每十人中有六人隶属于某个组织。利益集团有政治性和非政治性之分，政治性的包括共和党和民主党的俱乐部，政治活动团体等。其他利益集团就五花八门了，如学校服务组织、青年组织、退伍军人组织、农民组织、种族组织、教会组织、博爱组织、职业组织、工会组织、体育组织等。它们均是独立的“群众性”组织，与政府没有领导与被领导的关系，因此它们就得想办法影响政治过程。</p><p>名列前茅的利益集团要属企业组织、劳工组织和农场主组织。企业组织腰缠万贯，可以雇佣专门人才为其游说，以影响政治过程，如全国企业家协会（National Association of manufacturers）和美国商会（U.S. Chamber of Commerce）。工会能量非凡，因为拥有会员众多，人多势众。不同的利益集团有不同的影响力。自然，小的利益集团与大的利益集团相比是小巫见大巫，不能相提并论。真正能起作用的，或常起作用的是大型利益集团，小的利益集团有活动自由，但往往成效不大。话说回来，一个社会的政治过程不可能让每个人都插一杠子，如此这般，社会的政治过程会失去统一性。这种制度自然进化的结果是：大型利益集团，经济的也罢，政治的也罢，拥有统治权力。</p><p>利益集团的这种不平等，可以从利益集团影响政治过程的手段来看。所有的利益集团均没有权力走到总统办公室或议员办公室里命令他们做什么。它们必须影响他们。要达到这类目的：</p><p>第一要有财源，以养活专门为利益集团工作的人，这就是乐辩士，他们需活动于联邦，州和地方各级政府。</p><p>第二要有成员，众人拾柴火焰高，只有十几个人七八条枪，显然不能成事；不过有一种观点认为，由于“公共产品”（Public Good）的性质以及“自由乘车”（Free Ride）的问题，大型团体反而不如小、中型团体那么组织有序，行动有效。</p><p>第三要有专长，这种制度下，没有人可以自说自话地采取对某个利益集团有利的政策和法律，必须经过立法和表决，这就要求利益集团运用合理的、充分的、科学的论据来说服人们。肮脏的交易自然有，但受政治过程的排斥，每个利益集团都会监督其他的利益集团如何活动，在这种情势下，利益集团必须拥有有关的专门、系统知识，并运用他们来达到目的。</p><p>第四要有门路，朝里有人好做官，认识与不认识，大有差别。从这些条件看，大规模利益集团自然要活络和有实力得多。所以，如果说美国政治是多元主义的，也并非多元到哪里去，这一点在研究美国政治时，务必注意。</p><p>大型利益集团或有权有势的利益集团，往往有实权在手，这是他们构成大型利益集团的条件。有人称这种利益集团为“半政府”（Quasi-Governments）。它们可以控制从事某种职业，这主要限于职业组织；它们可以制定标准和规则；它们可以分配公共基金，政府提供的很多种类基金，最后由私人团体来分配，尽管政府定有规则，但县官不如现管，负责这类事务的私人团体自然高人一等；他们拥有强大的实力，可以左右经济或经济的某一部门，这就使政府在活动时须三思而后行，如此等等。</p><p>利益集团的产生有各种原因。经济的私有化也是利益集团产生的基础，资本主义生产方式要求政府不干预经济过程，要取得合作和引导经济，或者说管制经济和其他社会活动，政府不能一厢情愿，必须看看各大利益集团的脸色。反之，利益集团在法律和政策的协调之下，不能为非作歹，也得看政府的脸色。这种相互作用的机制，为社会政治和管理过程的一大特点。</p><p>至于利益集团的互动，可以说它们把各种要求输进政治系统，起到了沟通的作用，起到了使政治系统与社会广泛联结的作用；也可以说利益集团代表一部分人的利益，而无权无势的大众都无法组成强大的利益集团。这两种现象均存在。从社会管理的角度看，前一种功能客观上存在，尽管不少利益集团主观上并无此图。但后一现象是社会管理中的问题之一，如果组织完备，资源充分的利益集团最能影响政治过程，那么平民百姓的利益由谁代表？美国的民主是否民主够了？这是可以打一个问号的。利益集团的存在，我已经分析过，是美国社会制度、政治制度和文化的必然产物。在这种三重结构中，不可能找出其他协调政治和社会的途径。问题是这种机制的内在缺点和优点在什么时候会失去平衡，以致产生危机。</p><p>在社会管理和政治过程中，有一些团体来收集、综合、归纳、输送社会的利益要求，是政治系统得以满足最大利益要求的重要条件。每个政治系统拥有的资源有限，往往只能满足一部分利益要求。最好的政策并不是满足所有社会利益要求的政策（这是不可能的），而是用同样的资源满足了最多利益要求的政策。要做到这一点，政治系统就必须通过各种渠道来尽量了解社会上存在的各种利益要求。</p><h2 id="4-乐辩士"><a href="#4-乐辩士" class="headerlink" title="4.乐辩士"></a>4.乐辩士</h2><p>乐辩士，是我对 Lobbist 一词的翻译，音译加意译。很多人将其译成走廊议员或说客。乐辩士是美国政治生活中非常重要的现象，理解美国政治，不能忽略了这个重要的领域。</p><p>什么叫 Lobby？什么人是乐辩士？根据卡伦·萨格斯特（Karen Sagstetter）的书《乐辩》说，乐辩士是专门说服人的人，他们在市议会，州议会和联邦各机构中活动。哪里有政府活动，他们就往哪里活动，他们试图影响政府的政策和立法，他们代表着特殊的私人或公共利益集团。他们到处游说，就是要政府或立法机关有所为或有所不为。</p><p>乐辩士的概念没有什么贬意，也没有什么不名誉，并非偷偷摸摸、见不得人。乐辩士们，均抛头露面，甚至有权有势。弗兰克•古明斯（Frank Cummings）写的书叫《国会山手册》（Capitol Hill Manual）。这本书中作者谆谆教导国会人：虽然很多历史故事含有“乐辩”是一个肮脏的字眼的意思，但这里没有什么罪恶。乐辩是必不可少的。古明斯提出的理由是，没有一位众议员或参议员可以成为任何问题的专家，连国会中的专家也不能对任何事情都了如指掌；立法者也无法知道一个特殊的集团对一些特殊的问题有何想法，因此从立法和治理社会的角度来说，乐辩士的功能实际上是信息传递和利益表达的功能。</p><p>当然，乐辩士都是心怀意图的，而且大部分乐辩士均不是为普遍利益乐辩，而是为某种特殊利益乐辩。如果乐辩成功，往往某个特殊的利益集团能从中渔利。我们可以举一个例子（假设的）。中国的纺织品成本低，每套西装卖五十美元，而美国的劳动力价格高，成本价格高，每套西装卖一百美元，那么消费者就会选择中国产的西装。这样美国的厂商就无法赢利。于是美国纺织业的乐辩士就会在国会游说，通过立法，或是加税，或是限制进口。如果国会通过立法，那么这部分利益集团便大获其利。</p><p>乐辩士有各种各样，形形色色。有些乐辩士为私人集团服务，这部分人不少。有些乐辩士为一些社会组织服务，如为工会，环境保护组织，公共福利组织等。有的乐辩士为外国政府效劳，这部分人也不少，不少外国政府都想从国会立法中获得利益或捞取油水，都用重金雇用乐辩士为自己服务，不少国家政府派了精兵强将在华府四处奔忙。如 1969-1970 年，南朝鲜为争取五千万美元的附加援助，派出大批人员在华府活动了七个月。有的乐辩士为美国总统服务，因为美国是权力分立的体制，总统也得想法取得国会的支持。总统的乐辩士大半由总统属下行政官员承担，有时也专门组建与国会打交道的班子。乐辩士名堂很多，但其基本功能是一样的，即影响立法机构的立法活动或行政机构的决策。</p><p>乐辩士各显神通，运用各种手段展开活动，他们要与议员会谈，要准备文件，或者共进午餐。乐辩士的活也不那么好做。要成为乐辩士，也得具备一定的条件。乐辩士的主要工作包括：（1）研究，对一项专门问题和专门法案进行详细的研究；（2）在听证会上作证；（3）与议员进行合作，起草发言稿，准备报告，起草法案，回信等。除了直接的乐辩之外，还有其他的战术，如基层乐辩，从影响选民、影响议员本选区的选民入手；跨越乐辩（Cross-Lobbying）即几个不同的利益集团或不同乐辩士共同协作，发表投票记录，通过选票记录或民意对议员施加压力，如此等等。</p><p>从另一个方面来说，议员们也需要乐辩士。他们在对一项法案发表意见时，需要知道有关的信息和材料。所以议员往往不是坐等乐辩士上门，而是主动去找他们。当然，对待乐辩士，各人的态度有不同，有的反对，有的赞成。有一条是确定无疑的，这就是每位乐辩士都有自己的目标。他们在为议员提供方便时，总怀有自己的意图。所以《国会山手册》说：“这里有危险”。</p><p>乐辩士活动的正常化体现在一定程度的制度化上。乐辩士的活动要接受一定的法律管制。1946 年，美国通过了主要的管制乐辩士的法律。每个想影响立法过程的人都须登记，如果有人付钱给他们的话。这样个人、协会、公司都属于这个范围。登记时，要写明活动范围和领域、姓名、公司地址、雇主的姓名，从事乐辩士的年限、工资、谁支付工资和日常开支，对哪些立法感兴趣，谁接受资金，有什么用途。从法律来说，自然不错。但其实漏洞极大，如许多人在影响立法过程，但他们可以声称自己不是乐辩士，对立法程序没有兴趣。华盛顿共有 20,000 名左右的乐辩士在忙忙碌碌。</p><p>乐辩士的活动往往卓有成效，举足轻重。例如，以色列的乐辩士就十分强大并卓有成效。犹太人在美国大概有六百万，他们受教育水平、社会地位和政治活动水平均高于平均数。他们一个主要乐辩组织 AIPAC，1985 年有成员 75 人，经费预算 570 万美元。自然，阿拉伯的乐辩组织也很有实力。《Washington Lobby》一书举了不少实例，来证明乐辩士活动的效果。不用说，平民百姓很少有自己的乐辩士。</p><p>美国社会的一大特点，就是把政治舞台变成了一个大的商品市场，政治成了一种象经济市场一样的交易市场。可以在里面推销自己的“产品”，或者购买别人的产品。政客们在里面讨价还价，你争我夺。</p><p>这个过程受法律管制，但法律首先承认这种政治模式，这样做有利有弊，利处在政治竞争中一般优质产品较容易卖出去，这就迫使要参与竞争的人拿出好货来。另一个方面，大的公司可以垄断市场，推销自己的产品或推销劣质产品，取得“垄断利润”。尽管政治舞台不易于被谁所垄断，但财大气粗的集团自然占有优势。这种政治精神是美国政治文化中十分重要的成分，实际上易受其高度发达的商品经济精神的熏陶。商品经济的要求就是在市场上找到最好的主顾，推销产品，取得最好的技术、最佳条件，获得最大利益。这点原则把乐辩士和议员、政府官员联系起来。他们总是处在卖方或者买方的位置上。</p><p>这里面反映出来的另一个文化因素，便是政治的世俗化。宗教有世俗化的问题，政治也有世俗化的问题。人们搞政治就象做其他任何事情一样，如做买卖，搞科研，赚钱等，很少有政治具有特殊地位的感觉。政治成为普通的日常事务，虽然政治大权由社会上层所掌握，但他们必得世俗化地来搞政治，否则行不通。</p><h2 id="5-激进组织"><a href="#5-激进组织" class="headerlink" title="5.激进组织"></a>5.激进组织</h2><p>路过市中心，有一位姑娘在热闹的地方摆了一个书摊。没有什么人光顾。我正好从旁边走过，看了一眼她贩卖的书，反倒被吸引住了。停下来稍微多看了几眼，书摊上摆的书有《共产党宣言》，还有卡斯特罗的言论集，托洛茨基的言论集。不难看出，她属于一个左派激进组织。据说在美国这样的小型组织或者说微型组织有几百个。他们活动很积极，但没有什么政治影响，大部分民众不关心它们。</p><p>那姑娘还在出售他们这个组织的报纸，叫《战斗者》（The Militant），报头下写着：为工人群众利益而发表的社会主义的新闻周刊。《战斗报》象上海《新民晚报》那样开本，16 版，卖一美元一份，比一般的报纸要贵一些。</p><p>浏览了一下这份《战斗报》，可以看到一点有趣的令人深思的消息。</p><p>最大的篇幅用于为一名叫马克·卡蒂斯（Mark Curtis）的人辩护。此人是该组织的积极分子，被控有性侵犯行为。事情来龙去脉为：1988 年 3 月 4 日，指认他的那位叫莫丽丝的姑娘，正在家里看电视，大约晚上 8 点以后，有人打电话找她父母，她说父母不在家。十分钟后有人敲门，她打开门后，这个男人就对她进行了性侵犯并打了她，《战斗报》刊登了那天晚上卡蒂斯的活动，以证明卡蒂斯没有时间做此事，报纸呼吁民众声援卡蒂斯。</p><p>另外的消息还有：批评撒切尔首相驱逐古巴驻英大使和古巴使馆的三等秘书。古巴驻英大使奥斯卡尔·菲尔南德兹·麦尔（Oscar Fern’andez Mell）是古巴共产党的创始人之一，曾当选为古巴共产党第一届中央委员会委员，曾与切•格瓦拉一起援助过扎伊尔的反帝斗争。那个卖报纸的姑娘曾说，世界上恐怕只有古巴是唯一剩下的社会主义国家了。关于缅甸政治动向的报道有一大篇。有一篇报道津巴布韦250人集会讨论切•格瓦拉和古巴革命。一篇文章写宾夕法尼亚矿工罢工的体会。</p><p>有篇文章值得一提，这样大概可以把握这个激进组织的基本想法，这篇文章题目叫《一个加勒比海、一个命运》，讲的是在纽约开的一次会议。会议讨论的主题是，反帝斗争的前景。会议是由加勒比海统一联盟组织的。这个组织由来自 23 个国家的 38 个政治组织组成。主要发言人是格林纳达前总理的新闻秘书。他的发言值得一读。他说：“我们要讨论的是用我们的联盟反对他们的联盟。我们的联盟，指的是工人、农民、渔民、年轻人、学生、受苦受难的人的联盟。他们的联盟指的是有权有势、有特权、有资本、有财富的人。”在今天的世界上，讲这样的话的人还是不少的。不少与会者谴责美国干涉古巴和尼加拉瓜，说那是侵略，是人类得到住房、教育、面包和其他基本生活品的主要障碍。</p><p>更有意思的是，报纸还登了这个党——社会主义工人党（Socialist Workers），参加1988年总统大选的告示。总统候选人叫沃伦（Warren），副总统候选人叫米盖尔斯（Mickells），还有一个竞选委员会。这样的候选人自然不会有太大声响，可能会完全淹没在布什和杜卡基斯吵吵闹闹的竞选活动中。</p><p>《战斗报》号召民众订阅，广告上说：《战斗报》告诉真相，报道美国发动的反对世界各族人民的战争的事实和真相，如果只靠主要的大众传播获得真相，我们就会对美国发动的反对萨尔瓦多、危地马拉和尼加拉瓜的人民的战争一无所知。</p><p>从以上报道可以看出，这是一个激进组织，美国和西方社会这样的激进组织数不胜数。但大多没有什么影响。这些组织谈论的一些问题有些是事实，他们的一些主张对社会进歩也不是无益的。这些自称社会主义的组织的地位，在美国尤其低。对于这些现象，恐怕不能就事论事，仅仅从这些组织的纲领和活动去看，实际上这反映了当今世界两大意识形态之间的关系。由于战后社会主义国家都遇到这样和那样的曲折，经济发展均远远落后于资本主义国家，所以总体的吸引力不够。而资本主义国家的经济发展，却产生了压倒一切的吸引力。一般而论，大众不从制度、结构、观念、精神、人的本质等角度判断社会优劣，而是从自己的日常生活出发，或者说从肠胃由发，而不是大脑出发。由于经济和社会发展的巨大差距，主张改革资本主义制度的组织和观念在西方社会不会有什么大的影响。所以，美国社会也让它们自生自灭。如果有一天东西方之间的经济水平倒转过来，恐怕就要对它们进行管制了。其实不用超越，只要拉平，意识形态之争可能就会东山再起。有个朋友说，此话不错，甚至只要再有几次严重的经济衰退，激进分子就会有市场。</p><h2 id="6-多元抑或英才"><a href="#6-多元抑或英才" class="headerlink" title="6.多元抑或英才"></a>6.多元抑或英才</h2><p>有不少人把美国视为一个多元主义的社会，把美国政治制度描绘成多元主义的。较早提出这个论点的是戴维·杜鲁门（David Truman），他在《政府过程》一书中描绘了多元主义政治的基本机制。其二是罗伯特•达尔（Robert Dahl），他在《谁统治》一书中描绘了当代美国政治过程的基本机制。</p><p>我译过达尔的《现代政治分析》，较了解他的想法。他的概念，严格地讲是多头主义（Polyachism），而非多元主义（Pluralism）。然而不论概念上有何种差别，他们的基本思路是一致的：在美国社会中，权力是分享的，有许多相互竞争的利益争取权力，其中没有一个单独的利益可以独揽大权，也没有哪一部分人完全被排除在权力之外。权力通过这样的机制在不同的社会团体中分享。可见，多元主义要以利益集团理论为基础。</p><p>多元主义的基本立论是不同的社会集团均可以影响权力的运转过程。问题是有没有这样的可能性，主张多元主义的学者认为，有。</p><p>一是美国是一个移民国家，社会充满各种种族、语言、宗教团体，不同行业之间的差异依然明显存在。也就是奈斯比特所说，美国是一个“melting pot society”（大熔炉社会）。</p><p>二是美国人有组成团体来追求自身利益的天性，这倒是事实。各种各样团体多如牛毛，因为政府是管得越少越好，所以想要有人管有些事，一是自己组织起来，二是组织起来影响政府。选举制也促进了这种机制，美国人在选举中得到的经验是，只要达到一定人数，就可构成一定的力量。</p><p>其三是政府的分权结构也为多元主义打下了基础，权力分立使任何政府部门都不能独掌大权，所以美国的权力由各种相互竞争的力量争夺着。社会各种利益集团通过竞争、谈判、妥协来分享权力，政府是调节人，政府也有自己的特殊利益。</p><p>另一派人反对多元主义政治的观念，认为美国社会是“英才民主”。大部分人谈不上享受政治权力。能够参与竞争的，是组织起来的大型团体，小团体就难说有什么作用了。大集团操纵权远远大于小集团。而且参与团体的人并不能包罗这一领域中的所有的人。集团带有一定的利益倾向。此外，最有权力的政府并非听从摆布，它能够有力地运用自己的权力，推行自己的政策，达成自己的意图。</p><p>英才派认为大众、选举的代表和利益集团均没有权力。权力在一小撮“权力英才”手中。主张这种观念的有格兰特•麦克科内尔（Grant McConnell），他写的著作叫《私人权力和美国民主》（1970），西奥多·罗威（Theodore Lowi）《自由主义的终结》（1969），赖特·米尔斯（Wright Mills）《权力英才》（1956），拉尔夫•米里班德（Ralph Miliband）《资本主义社会中的国家》（1969）等。米尔斯颇有权威，他说权力英才指挥着现代社会主要的等级结构和组织。他们管理国家机器，领导军事组织，占据社会结构的战略指挥位置。他认为美国社会的权力主要来自三个方面：大公司、军事组织和政治领袖。美国的经济掌握在几百家大公司手中，它们决定着社会经济走向。政治权力日益集中于联邦政府，总统的权力日益扩大。军队成为政府开支最大、机构最庞大的机构。这三个领域的领袖构成权力英才阶层，他们决定生死攸关的问题。公众只能望权兴叹，无所事事。</p><p>不仅如此，米尔斯还认为这三个领域的权力相互联结，相互配合。退休的将军应聘去一家国防工厂中做经理；落选的总统候选人到大公司当顾问；大公司的董事长或经理出任政府官员。托马斯·戴伊（Thomas R. Dye）有本书，叫《谁统治美国》，书里的观念是：美国由五千名大亨统治着。</p><p>托马斯·戴伊的另一部著作，也很有意思，叫 The Irony of Democracy: An Uncommon Introduction to Amarican Politics（《民主的讽刺：美国政治议论》）。他的主要观点就是断定美国社会是由英才统治的。他说美国从建国起就是英才统治，一直延续至今。英才统治的结果是，民众异化，英才掌权，社会抗议，这构成美国政治的困境。民主的含义是民治、民享、民有，而实际政治的运行却是英才统治的不可避免。所谓英才统治，就是权力由一小撮人执掌。</p><p>所以，社会的管理权，最后是掌握在一部分英才手中的，不论这个数目是五千还是五万，他们绝对是社会的少数。英才统治是资本主义制度下的社会的共同特征。因此这就给人类社会的发展提出一个问题：严格意义上的民主是否符合大规模人类社会的发展规律或称内在要求。美国人一方面在理论上维护制度的民主和宪法的民主，另一方面从心理上和文化上崇拜英才。很少有哪个民族象美国人这样崇拜英才。虽然看上去不少美国人对许多事情都满不在乎的样子，其实美国文化中英雄崇拜的心理很强烈。这也许和美国历史和民族的成长有关。这种心理和文化价值，是英才统治在美国通行的基础。美国人在观念上主张大众民主，在实际上接受英才统治（见第三章第四节“神圣化”）。</p><p>这既是美国社会制度奇特的一面，也是它难言的一面，不少学者均认识到英才统治的现象违背大众民主原则。但它是产生于大众民主，有人利用它，无法强制取消和限制，那样反倒破坏了民主原则。这个两难困境，在美国社会制度今后运转中会有所突破，但走向哪一个方向，目前尚不能预料。</p><h2 id="7-参与民主？"><a href="#7-参与民主？" class="headerlink" title="7.参与民主？"></a>7.参与民主？</h2><p>近些年来，一些学者纷纷谈论资本主义共和制的最新发展——参与民主制，誉之为“二十一世纪的民主”。阿尔温·托夫勒的《第三次浪潮》和约翰·奈斯比特的《大趋势》是这一理论的集大成者，他们断言，参与民主制正在引起“革命性变化”。明尼苏达大学赫伯特·汉弗莱公共事务研究所所长哈伦·克利夫兰撰文指出，“在信息社会里”，参与民主制“也许是民主的最新定义”。</p><p>美国的政权组织形式，是共和制的典型。美国民主共和制的建立是历史运动的产物，其形成的历史原因是当时十三个殖民地资本主义的迅速发展。十三个殖民地建立不久，自由资本主义经济就出现了，当时工业中最发达的为毛纺工业和冶金工业，冶金工业甚至可与英国本土竞争。英国统治阶级对殖民地经济的和政治的限制，引起了十三个殖民地与殖民地统治者之间的矛盾激化。十三个殖民地强烈要求建立自己的政权，以保护和促进殖民地资本主义经济的发展，这样就在政治上产生了建立民主共和制的历史要求。</p><p>资本主义经济在十三个殖民地的确立，意味着商品生产和商品交换取得了统治地位。而从商品生产和商品交换中必然会产生民主共和的要求，这是因为商品价值的实体是无差别的抽象劳动，有了这种质的等同性，商品与商品才能交换。商品按价值量等量交换，决定价值量的社会必要劳动时间是在社会正常生产条件、平均熟练程度、平均劳动强度等条件之下由社会自发计算的，这些条件本身就意味着平等，意味着商品生产者没有高低贵贱之分。民主共和制是“商品是天生的平等派”这项经济原则在政治上的制度化和法律化。</p><p>近二十年来，随着社会生产力、科学技术和社会矛盾的发展，民主共和制出现了一些新的现象：公民参与政治决策或立法的活动比比皆是，民主形式在深度和广度上急剧发展，一些学者认为工业时代的政治体制已陈腐窳败，现已进入“参与民主制”或“半直接民主制”阶段。托夫勒在《第三次浪潮》中宣称第三次浪潮对过时的第二次浪潮机构提出了革命性的挑战……这种挑战也不是只靠修改规章条例应付得了的。因为它打击的是第二次浪潮政治理论的最基本设想、即代议制观念。”奈斯比特断定美国已发生了“从代议民主制到共同参与民主制的转变”。美国学者关于“参与民主制”的论述形形色色，概括起来有下述三个方面：</p><p>第一，国家权力的实际执掌者即行政首脑，应由最广泛的民众直接选举产生。所谓直接选举，是相对于以往的间接选举而言。例如一些学者认为，总统的选举就是从选举人团制度向实际上的直接选举过渡，总统选举人形同虚设，甚至连政党都可有可无。</p><p>第二，全体公民和地方各州、各城镇广泛参与政治决策或立法活动，这一条比前一条更为重要。美国的开国原则十分强调个人的解放，包括言论自由和把政府对个人的影响压到最低限度。但由于通讯等设备的限制，这一原则的实施是打了大折扣的。现在有了先进通讯设备，公民可以自由参与政治决策或立法，甚至可以呆在家里揿揿按钮表达自己的意愿。俄亥俄州哥伦布市的”电子市政府”就是通过电视系统讨论政治问题的一个典型。奈斯比特运用数据证明，七十年代的美国是创制和复决的高潮期，由此推断目前美国法律的大部分由公民或各州直接制订。</p><p>第三，由于前两条的存在，其逻辑的结果就是政治上的“分权”趋势。由于公民可以自由参与政治决策和立法，可以自己解决自己的问题，因而谁出任总统无关紧要，公民和各州也不在乎谁当选议员，他们不再需要代表了。但目前，我们仍在选举代表，这主要有两个原因：（一）我们以前一直是这样做的；（二）这样做在政治上比较方便。我们并不想对无论什么事都投票，我们只想对那些真正影响我们生活的事情投票”。由此可见，“权力的集中化再也不起作用了”，中央集权的民主制变成了”分权”的民主制。</p><p>“参与民主制”确实扩大了形式上的民主，但也强化了事实上的集中。这是一个作用力和反作用力相互影响、错综复杂的运动过程。</p><p>随着科学技术特别是电子、信息、能源、计算机等技术的重大突破和广泛应用，生产得到了迅猛的发展，它导致了对生产过程管理的进一步民主化和对人管理的进一步集中化。在这种变化中，股份分散和中小企业增多起了十分重要的作用。</p><p>当代美国企业股份极为分散，一个大企业往往有几千几万个股份持有者。工人也掌握了一定的股票。尽管工人拥有的股份数相当少，但多少也成了企业所有者之一，于是这些股东们也要求有权参与企业决策。另外，由于垄断资本主义企业的垄断利润不能来源于本身，它就需要保留能为其提供垄断利润的中小企业。垄断企业越是发展，中小企业的数量也就越多。这些中小企业参与社会范围的经济管理使之有利于它们本身发展的活动也与日俱增。在这些条件下，商品生产的平等原则发展成以民主为核心的观念。这种观念要求社会政治制度在形式上能与之相适应。</p><p>这项要求首先表现在公共事务管理的民主化上。社会公共事务与社会生产密切相关。当代公共事务的内容和规模在不断扩大和变化，它对生产的发展有着十分重要的作用。它可以阻碍，也可以保护和促进生产的发展。正因如此，参与了经济管理的各界人士或者中小企业，也就必然要求在上层建筑范畴内参与公共事务的管理，使之有利于他们各自生产的发展。</p><p>但是，工人的股票对企业没有决定权，他们的这些资金恰恰是被大股份持有者控制着。由于股份极为分散，现在大资本甚至可以用百分之二、三的比例控制整个企业的百万小股份。这样大资本无形之中动用了社会资金，使集中达到更高的程度。同样，由于中小企业只是作为利润的吮吸对象而存在，因此，中小企业参与公共事务决策的各种努力，在促使其自身发展的同时，也在扩展着利润的源泉，也在促进资本主义生产的集中。这样就必然会造成形式上民主、实质上集权的状况。</p><p>这种状况的必然结果是，从形式上看，人们享有更多的民主权利，可以参与生产过程和公共事务的管理活动；但从实质分析，他们的所有民主活动，只能是“自觉”地按着资本进一步集中的要求而进行，他们的行动统一于一个意志之下。法兰克福学派的马尔库塞分析了美国社会的经济政治结构，得出了一个颇值得深思的观点：“私人的空间已经被技术世界的现实所侵犯和削减。大规模生产和大规模分配要求对个人的全部占有”。这个过程必然会波及政治过程，引起政治上的高度统一，这种统一是任何能工巧匠和乐队指挥都无法想象的。</p><p>奈斯比特把“参与民主制”的指导原则确定为：凡生活受到某项决策影响的人，就应该参与那些决策的制订过程，我们已经分析过，这种要求有其深刻的经济原因。然而，这种参与民主的活动是十分有限的。奈斯比特在分析美国政治时，首先把它限于“地方政治”。“新的民主的工具”——创制和复决也仅限于地方事务，而对国家的活动无所作用。再则，创制和复决牵涉到的只是一些具体的社会事务，如禁止从飞机上喷洒除草剂、开辟非吸烟区、回收啤酒瓶，路灯的颜色等问题，在一些实质性的问题上是没有效用的。七十年代末，美国曾因加利福尼亚州通过了减税的第十三号提案而掀起了一场减税运动，各州都提出自己的方案，但一年之后就不了了之。</p><p>实际上，政治权力却是日益集中的，现代化的技术手段也为这种集中提供了良好的物质条件。许多美国思想家看到了这一点，连托夫勒自己在分析第三次浪潮时，也敏感地意识到了这个方向，说第三次浪潮政府的第一个异端的原则是少数派权力，第二次浪潮时代的极其重要合法的原则，即多数派统治，已经日益过时了，现在不是多数派说了算，政治制度必须更多地反映这一事实。从美国政治制度看。在“参与民主制”的表象的背后，集权的过程正在急剧加速。几乎每六个工作的美国人中就有一个受雇于联邦政府或它的”附属机构”。自 1930 年以来，联邦政府人员扩大了百分之五百。1976 年，联邦及地方政府有 1500 万名以上的雇员，工资总额达 1670 亿美元，罗柏特·J·林格无可奈何地写道:“你发现世界正在一个人造怪物——政府——的手里挣扎着，它越来越庞大，越来越无法控制。这头无法驯服的巨兽，把它的触角慢慢地伸到我们生活的每个领域里，习以为常地践踏人权。”</p><p>哈佛大学著名教授丹尼尔·贝尔在 1976 年时说过：在西方政治制度中，轴心的问题是广泛参与的愿望和官僚政治这两者的关系。现在在“参与民主制”之下，这一矛盾得到了暂时的解决。国家职能通过发展它的一极，即扩大形式上的民主参与，来发展它的另一极，即加强统治。这是一种更为间接而有效的统治方式，它更符合商品生产的平等原则。普选制在现代美国加入了创制和复决等内容，使普选制这种形式部分地从间接形式转变到直接形式，原先由普选官吏管理的一些事务，现在由普选直接干预。科学技术的发展也使这种形式上的扩大成为可能，这些形式上的变化并没有改变美国政治制度的基本特性。</p><h1 id="六、不完全竞选"><a href="#六、不完全竞选" class="headerlink" title="六、不完全竞选"></a>六、不完全竞选</h1><h2 id="1-争夺白宫"><a href="#1-争夺白宫" class="headerlink" title="1.争夺白宫"></a>1.争夺白宫</h2><p>1988 年是大选年。四年一次的总统竞选空前热闹，是政治生活中最精彩也最生动的部分。在每次大选中，两党都要展开一场殊死搏斗，以争夺白宫、入主白宫。这次总统大选民主党推出了马萨诸塞州州长杜卡基斯，共和党推出现任副总统布什。两位候选人及他们的副总统候选人都忙于四处发表竞选演说，拉选票。</p><p>竞选有一个强大的机制，这就是选民的选票。如果得不到选民的选票，一切都无从谈起。只有得到了多数选民的选票，才能掌握大权，入主白宫。受这种机制的吸引，大选中，候选人首先必须对公众关心的问题发表见解。其实两党之间没有什么意识形态的分歧，有的只是在同一意识形态下对基本政策和具体政策的分歧。可以说，它们之间的分歧在于对一些共同认同的问题持什么态度。</p><p>我们可以比较一下杜卡基斯和布什在一些主要问题上的看法（根据美国报纸）：</p><p><strong>杜卡基斯</strong></p><ol><li>外交政策<ul><li>反对援助尼加拉瓜反政府武装力量</li><li>想加强对南非的经济制裁，寻求更全面的禁运</li><li>要求加强与以色列的战略关系，反对任何可能损害以色列安全的军火买卖，鼓励以色列和约旦直接谈判</li><li>主张对波斯湾进行国际武器禁运，国际海军保护海域自由权利</li></ul></li><li>预算<ul><li>同意增加所得税，但只作为最后的办法</li><li>反对减少资本赢利税</li><li>支持“单项否决“权</li><li>愿意削减赤字，但没有论述，说将维持现有军费</li></ul></li><li>健康保护<ul><li>支持普遍健康保护计划，要求雇主为工人提供保障费用</li><li>想增加艾滋病研究基金；支持对军事部门以及对来自艾滋病发病率高的国家的移民实行指令性检查</li></ul></li><li>环境<ul><li>要求建立国家标准，以减少酸雨的主要成分二氧化硫和二氧化氮的传播</li><li>反对在重要的环境保护地区和产鱼区采油</li><li>反对建立新的商业核反应站，先解决安全问题</li></ul></li><li>就业<ul><li>称全面就业为第一目标</li><li>想把最低工资提到每小时 4.25 美元</li></ul></li><li>军备控制<ul><li>反对星球大战计划</li><li>要求谈判达成全面禁止核试验</li><li>主张谈判结束试验和发展反卫星武器</li></ul></li><li>社会问题<ul><li>反对死刑</li><li>支持 25 亿法案，分给州政府基金以帮助穷人和中等收入的家庭</li><li>反对修改宪法以使流产合法化，支持联邦基金</li><li>支持拥有武器的权利</li></ul></li><li>毒品<ul><li>主张成立内阁级委员会领导全部禁毒计划</li><li>将将给予外国更多援助以帮助它们禁止毒品生产；将援助愿意阻止毒品进入美国的政府</li><li>答应更多支持地方禁毒和康复计划</li></ul></li><li>教育<ul><li>主张建立国家基金，以招募教师</li><li>将鼓励企业让雇员到教学单位工作三至五年</li><li>支持返聘有专长的退休人员</li><li>将建立教育投资计划，使大学生能偿还学费借款</li><li>将建立高校机会基金，如果家长提供子女教育的资金，政府将保障学费</li></ul></li></ol><p><strong>布什</strong></p><ol><li>外交政策<ul><li>同意向尼加拉瓜反政府武装力量提供军事和人道援助</li><li>反对进一步制裁南非</li><li>美国应成为中东的经纪人，促进谈判。但又强加条件，要求永不抛弃以色列</li></ul></li><li>预算<ul><li>答应在任何情况下都不增加所得税</li><li>想减少资本赢利税 15%~28%</li><li>同意“单项否决”权</li><li>要求灵活冻结，但拒绝说明将削减什么计划</li></ul></li><li>健康保护<ul><li>想消灭转变生命保险的活动，IRA 实行长期保障计划</li><li>想推进购买团体保险计划的创议</li><li>赞成地方控制艾滋病教育；赞成对囚徒、移民进行艾滋病检查</li></ul></li><li>环境<ul><li>想发展洗煤工艺以减少酸雨</li><li>支持建造核反应站</li></ul></li><li>就业<ul><li>要求在八年内创造三千万个就业机会；后认为这个要求太乐观</li><li>反对增加最低工资</li></ul></li><li>军备控制<ul><li>支持星球大战研究，支持空间实验</li><li>反对全面禁止核试验条约</li><li>支持试验和发展反卫星武器</li></ul></li><li>社会问题<ul><li>赞成死刑</li><li>反对联邦政府提供救济；赞成对每年收入低于二万美元的家庭的每一个子女建立新的一千万税务贷款</li><li>反对联邦枪支登记和发持枪证，赞成放松枪支控制法律</li></ul></li><li>毒品<ul><li>主张建立内阁级委员会领导反毒品行动</li><li>主张对毒品致死罪实行死刑</li><li>主张开拉美国家会议，谈如何结束经济对毒品的依赖</li><li>主张立法，没收屡犯者驾驶执照和联邦学生借款</li></ul></li><li>教育<ul><li>计划设立五亿美元的基金修整推进学生教育的中学</li><li>要求对学生作更多测验，对教师作更多的能力测验</li><li>将建立高校储蓄公债计划，如果利润用于高校，可以免税</li></ul></li></ol><p>从以上对比可以看出，两党候选人关心的、讨论的都是社会大众关心的问题。围绕这些问题谈，恰恰是为了争取选民。以上九个方面的问题都是学术界、新闻界、政界和公众日常讨论的问题。预算、健康、环境、就业、毒品、教育等均为令人头痛的问题。哪个党的总统候选人要当选，就必须想法解决这些问题。其实，每个候选人也不知道能否解决，为了当选，就必须提供方案。其实这些方案社会早就有之，而且有多种方案。两党的工作只是选择可能最受人支持或同情的方案，列为自己的方案。也可以说，“选择”不是一个很准确的字眼，从政党来讲，这是，把商品——候选人，投入市场；从选民来讲，这是在市扬上现有的商品中选购。</p><p>因此，选举形成一种很奇怪的逻辑：究竟是政党选择选民，还是选民选择政党，在许多情况下，大概是政党选择选民。结果是，政党并无统一的纲领，党员也可朝三暮四，选民也可今左明右。这就是选举的力量（见第五章第 1 节“驴象治国”）。</p><p>其实，政党在当选后能否实现它的纲领，愿不愿意实现其纲领，在竞选时是无法检查的。等到可以检查时，已经当选，又无法控制了。最多是等到下一轮再说，下一轮又可能发生上述现象。在竞选中需要“说得好听”。</p><p>对此现象，学者研究甚多，有两种观点比较流行：一是把选举胜利看作是对总统候选人的“授权”——“mandate”，即授权此人实现其竞选纲领；二是把选举看作是上届政府绩的“总结”，以便决定是否要换人。这里意在换人，而不在于新人上来后如何干。反正不论怎样，怎么做能争到白官，夺到总统宝座，就怎么做。这种逻辑，要求政治高度灵活，高度敏捷，成为社会要求的晴雨表，不然不可能入主白宫。</p><h2 id="2-总统之路"><a href="#2-总统之路" class="headerlink" title="2.总统之路"></a>2.总统之路</h2><p>1988 年 10 月下旬，总统的选举正在紧锣密鼓地进行。电视里民主党和共和党的正副总统候选人已经做了三次辩论，各种民意测验结果充斥电视屏幕。总统候选人在各州巡回演说，再过几个星期就要选举总统了。</p><p>美国总统可算是世界上权力最大的政府首脑和国家元首。他以美国强大的实力做后盾，往往可以产生扭转乾坤的念头。一听总统候选人的发言就可以感觉到，每个人都在声称他将如何使美国保持世界第一的地位。尼克松的新作风靡一时，题目叫《1999：不战而胜》，他有一番话足以说明在总统宝座上坐过的人的心态:“如果美国不在国际社会中起中心作用，和平与自由就不能存在。这是一个简单的事实，正象安德烈·马尔罗曾对我说的那样，‘美国是历史上第一个不刻意追求世界强国地位而成为世界强国的国家’。然而，如果我们不能领导自由世界，那就不会有可以被领导的自由世界。”此番宏论，没有特别好的自我感觉，怕是说不出来的。</p><p>总统是从哪里来的呢？看上去这是一个奇怪的问题。在美国这种政治制度下，总统是选民投票选出来的，任何人只要获得选民的选票，都可以走进白宫的椭圆形办公室。事实上，选民也货真价实地投票，在民主党和共和党的候选人中进行选择。没有得到多数选票的人成不了总统。</p><p>不过，如果从这里推论出人人都有可能成为总统这样的结论，那就大错特错了。抽象地说，每一个公民只要符合条件都有可能成为总统。具体地说，建国两百年来，只有四十几个人有这个运气。其他人可以有做总统的梦想，但也仅此而已。</p><p>总统的产生机制，等到全国正式投票这一天，早已走过了漫长的道路。这套机制虽然是非正式的，但却是政治生活中的核心部分。</p><p>事实上，小党的候选人往往名落孙山，没人知晓。吵吵闹闹一阵之后，恐怕只增加一点“知名度”，或有益于体魄健康，其他的可能不会有什么。唯有共和党和民主党的候选人才具有最后一搏的条件，因而要做总统首先要取得两党的提名。这就把一大批人排除在外了，在两个党内，能够有权提名的是少数人。</p><p>两党之中，一小部分人组成核心会议（Caucuses）。核心会议提名候选人竞选各种公职，如州长、州官职和总统职位，不过核心会议有不同层次，州级官职一般由州立法机关的骨干组成核心会议提名。全国一级的核心会议提名总统候选人。核心会议至关重要。1988 年选举的核心会议在爱荷华州举行。</p><p>核心会议之后，要进行初选（Primary）。初选实际上是党内选举，在党的大会上进行。大会代表由州和地方的党组织选派代表参加，代表性大于核心会议。核心会议确定一定数目的候选人，都是同一党的。党的大会再在这些候选人中选出最合适的人，作为该党参加正式选举的候选人。</p><p>看一下这个过程就可明白，一般人不可能得到提名。只有两党的意中人才有这份福气。不过，这里需要知道的是另一个问题，即选举过程中，对候选人的管理和组织实际上由两党承担了，而非由政府承担。两党把候选人限制到可能的数目，这是任何民主选举必须有的机制。这项工作是一种棘手工作，如果社会上没有组织来做，政府是无法做的。政府做这件事必然会违背民主原则。对于一个民主社会来说，应当考虑建立什么样的机制来实现这种功能。</p><p>两党的代表大会是政治生活中的大事。成百上千的活跃分子集聚一堂，电视台现场直播。党的代表大会做两件事:一是提出党纲（Party Platform）；二是选择总统提名人。其他选民只能在他们选择的基础上进行选择，或者不选择。参加代表大会的代表至关重要。他们产生的方式在各州不一样：有的州选举代表；有的州的代表有一定的自由裁量权；有的州的代表不受限制，可以自我决断；有的州选民选举产生一定代表，郡和州的党组织又任命一些代表。</p><p>如果想获得提名，首先得影响提名大会代表的产生。代表产生机制的多样性与政治制度的多样性相符，这是美国的一大特色。</p><p>代表也不是任何人都可以当的，代表一般是官员、国会议员、州长、市长、州立法机关成员，总而言之，是党政要人。平民百姓也只能望代表兴叹。代表的职责是，决定拿出什么货色来供选民选。两党的代表大会共确定两个人，每党一人。选民们将来实际上是在这两个人中择其一，当然在不同的地方，会有一些非党的候选人，然而他们无法登上全国之堂。</p><p>在两党选定候选人后，总统竞选战役开始。这个过程体现了美国式的民主，不过是两个人，最多是四个人的民主竞选。所以说是“不完全竞选”，正象经济学上有不完全竞争的概念一样。如果没有两党的前番不那么民主的活动，后面这一层民主恐怕也无法实施。试想一下，如果几百名候选人参与全国竞选，会有什么局面？两党候选人四处奔走，发表演说，争取民心。这一环非常重要，因为他们能不能当选，要看选民的投票。这一环的确货真价实。选民们没有过多的选择，但对这两个人来说，只消选择另一个就够受了。</p><p>选民在投票时并不直接选举总统，而是选举选举团（Electoral College）。每个州都有一定的选票，与该州在国会的代表数相等，如加州有 47 人，爱荷华州有 8 人。哪一个总統候选人在一州获得多数，该州的选票就都属于他。</p><p>而大州尤为重要，人口多的州也重要。因此 1988 年布什和杜卡基斯的第二场辩论便在加州洛衫矶举行，目的是对着那里的 47 张选票。加州加上纽约州有 83 张选票，而得 270 张选票就可以当选。各州的选民选举选举团成员，选举团成员由各州党大会、党委员会、或其他方式选举产生。这些选举人必须支持党的正式总统候选人。选民在选举那天不是选总统，而是选这些选举人。只有多数选举人代表的选民才有表达意志的机会，其他选民的意志统统由多数选举人“强行”代表了。</p><p>在 12 月第二个星期三后的第一个星期一，获胜的选举人在各州首府（State Capital）开会，交选举证书、登记。实际上已经是“走过场”，因为选举人产生之后，局势就明朗了，谁当选为下任总统已心照不宣。</p><p>普通人要成为总统候选人的另一个困难是竞选费用问题。竞选费用已经达到惊人的数宇。1972 年时，竞选费用正式公布的是 1000 万美元，非正式的就不去谈了。1988 年的费用是多少，其时尚未公布。金钱超过了一定的限额，对普通人来说是同样的：无法弄到。总统候选人的费用来源通常是捐款和赠送。当然送的人有自己的意图，接受的人也明白。洛克菲勒一人用于竞选的各项费用达 300 多万。普通人如何能享受这种民主？</p><p>我在这里的分析，意图不在于谈政治制度运转不灵，而在于指出：对管理一个大型社会来说，如果最后要形成一个政治领袖，民主究竟能展开到多大幅度。我们对美国民主的分析表明了这个难题。政治管理和社会管理要求有一个集中的过程。如果完全彻底的民主，美国恐怕连总统也选不出来。美国政党起的作用是在正式体制以外的集中作用。它们实际上是在不那么民主地集中意见。选民们的选择在这个集中过程之后，是“二道手”。为什么这样一个过程仍然表现为一个民主的外观呢？我想有两条：</p><p>其一，美国政党活动的方式和组织在政治体系之外。它们无法运用国家或政府机关来实现自己的计划。但它们在政治体系之外这一事实，使其活动不能正式计在政治体系的份内。这一部分比较集权的政治活动，在非正式过程中，在社会活动中完成。政党控制政治的手段在于促使总统候选人和各种候选人当选。当选之后，他们可以利用合法程序实现自己的意志。每个社会都需要两个方面的政治活动，一是比较集权以产生政治领导的过程，一是比较民主以领导政治的过程。美国政治体制应付的，是后一个活动。前一个活动由政党决定。</p><p>其二，美国政党内部也形成较为程式化的运作过程（民主、共和两党不完全一样）。各类代表大会和会议，虽然有党内核心人物加以控制，但有一定的余地。党的代表大会上，有同党的不同人选之争。这个过程不仅有效地掩饰了集权的最后表现——最后决断权，而且找到了解决党内矛盾的方法。对于美国政党，我还要另作分析。</p><p>美国的政治体制有一个妙处：你不能说它不民主，你也不能说它民主。所以我说美国的选举是“不完全竞选”。</p><h2 id="3-第三县民主党聚餐会"><a href="#3-第三县民主党聚餐会" class="headerlink" title="3.第三县民主党聚餐会"></a>3.第三县民主党聚餐会</h2><p>分折了政党在整个选举中的宏观活动，对政党在政治生活中的作用有了概念，其实政党的活动离不开其基层组织，没有下属各级组织积极有效的活动，一个政党便会成为空壳。</p><p>周末，休假两天，星期六和星期日无人上班，星期五已经流行说一句：“周末愉快”。这是一种生活方式在人际关系中的反映。大概原始人在见面和分手时，说的是:“打一只兔子。”</p><p>1988 年 9 月 16 日，在爱荷华大学活动中心，碰到几位大学生在为民主党候选人杜卡基斯和地方的候选人作选举宣传。食堂前摆一张小桌子，两位姑娘，一位小伙子。两位姑娘似乎很腼腆，根本不是干政治的人物。而小伙子很活跃，一听到我是政治学教授，想了解地方政治运作的情况，高兴极了。立即邀请我参加周末举行的第三县民主党聚餐会，或者叫 picnic（野餐会）。说是邀请，当然不是免费，而是“征费”，因为这类聚会的主要目的是为候选人搞钱。</p><p>下午 5 点左右，我们来到设在爱荷华市郊外的会场。会场设在一个较为冷静的地方，不是农场就是公园。会场的设置较简陋，有一间大房子，有点象我在干校劳动时的礼堂，只是铺了地板，外面有一个大木板棚子。有两个小伙子在棚子里卖饮料，因为这种会议本身的目的就是集资，不可能提供大量免费饮料。旁边有几位年轻的姑娘在卖印有竞选口号或候选人名字的 T 恤，这是一种宣传手段。还有一架“拍立得”照相机，民主党总统候选人杜卡基斯的像立在那里，与真人一模一样。可以上去站在旁边拍一张照，颇有逼真感。募捐的主要方法是靠交“伙食费”。“伙食费”价格较高，单个人是 8 美元，一家子是 24 美元，儿童是 6 美元。这反正是“姜太公钓鱼，愿者上钩”。来的人大都是民主党的积极分子，故对捐钱在所不惜。其实，这些积极分子也与民主党有依赖关系。其中包括国会议员、参议员、州议员、州参议员及各种地方显赫人物。他们当选这些职位，离不开民主党的支持，所以对民主党的活动自然十分热情，恐怕也不能不热情。这成为一种“人际关系”或称“关系网”。没有这个“关系网”，一个人就会失去很多资源。按理说在这样一个崇尚个人主义和私域的社会中，人们会对此满不在乎。其实不然，我发现人们很在乎。没有加入这些关系网的人，削尖脑袋想钻进去，人们怀着叵测的心理来到这里。</p><p>本地民主党的重要人物都到场了。这种聚会，对这些人物本身也很重要。这里面有一种奇怪的相互作用：一方面是这种聚会需要这些人来壮声势；另一方面这些人也必须在这种会上亮相，作为“义务”，也作为自己建立“公众形象”的一部分。</p><p>来的人，高位的有国会议员，叫 Nagel，他穿了一件苹果绿的 T 恤，到处与人打招呼，显得随和，潇洒。还有一位是爱荷华州长候选人，民主党推出的，高高的个子，戴着眼镜，颇有学者风度，叫 Christal，走来走去的。我过去与他交谈，他很随和，问我对戈尔巴乔夫改革的命运有何看法。我说，戈尔巴乔夫面临许多困难。他说，苏联的体制很牢固，不易改。作为地方人士，对国际问题如此关切，在美国实为不易。美国地方人士的国际观念较为薄弱，与美国这个大国的地位不相符合。</p><p>这样一谈，我对他有了兴趣。正好有人来送宣传品，我就拿了一份看起来。John Christal 是爱荷华州一个农场主的儿子，1949 年从爱荷华大学得到经济学学位。1949-1959 年经营农场，1959 年转向银行，1960——1984年任爱荷华州储蓄银行的董事长，1973年做过州银行主协会主席。宣传品上介绍他说，他的金融技巧使他得以拯救许多小农场主和农业银行免于崩溃。1987年，他还被提名为“爱荷华本年农场领袖”。自1956年起，他就积极投身于民主党的政治活动。宣传品上还说，他在二十五年中一直是最受尊敬的苏联问题顾问。他怎么会有最后这种能力，我没有搞清楚。从他的经历来看，完全是以经营为主，政治为辅的。</p><p>许多政治家都不是职业政治家，大多是在必要时出任政治职务。大到总统，象卡特是种花生的，里根曾是演员；小到市镇的公职人员，都一样。这恐怕也是政治的一个特点。</p><p>这种格式，使大多数公职人员有退路，不需作出特殊的安排。可能更为重要的是，这些人把他们长年累月的经营思维方式和社会技巧带进了政府，使政府特别善于处理经济问题和社会发展的问题。地方政府不是那么政治化的，反倒象个大公司处理各种社会事务。实际上，选民们也是根据得到的实际的好处来投票的，政治原则的作用不那么大。Christal 有很好的经济经验，这是从政的必要条件。</p><p>还遇到了州参议员 Jane，我 1987 年曾经就州参议院的地位和功能访问过她。她在分发扇子，上面印有她的名字，也是一种公共关系。这种场合，当然是重要而且是关键的，应该到场亮相。还见到了民主党在本县的一些头目。</p><p>Nagel 在本县的代表 Kerry Bowen 对我开玩笑，说如果去共和党的聚餐会，不要把这里的情况告诉他们，因为两党在竞选。</p><p>因此，我们可以发现，两党组织和纪律虽然那样松散，但共和党和民主党均有较好的从上至下的活动方式。尽管下层组织的活动与上层几乎没有“思想路线”的指导关系，完全是为了在本选区拉选票，而且可能只是为了本选区中的同党人士竞选州或地方政府的议员或官员，而不完全是为了全国性的总统候选人。但这种活动强化了众人对一个党的认同，无论是民主党也好，共和党也好。政党的地位更多地是树立在人们的心中，因此可以说政党的概念是政治的，也是文化的和心理的。两党的全国性系统之所以能显得卓有成效，很关键的一点就在于它们有十分庞大而活跃的基层系统。</p><p>维系这一整套系统的是利益结构。其实各党没有十分明确的全国性利益，各党在总统选举中提出的纲领，之所以得到各州拥护，倒的确是出自信念和价值选择，而并非因为体现了各州的具体利益。各州及各政党组织均有各自的利益和价值选择，有的甚至很不相同，它们打着两党的旗号维护和实现自己的利益，全国性的政党组织也乐得让它们这样做，这可以保证某种形式的向心力。州及地方各级党组织通过自己的活动，实现了当地权势人物的意图和利益。这个过程呈现出一种奇特的效果，虽然当地党组织多数只关注自己的利益，但它们实际上强化了党的全国性联盟。此乃政党体制的一大特征。</p><h2 id="4-电视辩论"><a href="#4-电视辩论" class="headerlink" title="4.电视辩论"></a>4.电视辩论</h2><p>1988 年的总统大选，与过去一样，紧锣密鼓，十分热闹。民主党总统候选人杜卡基斯，共和党候选人乔治•布什，两位对手到处作竞选演说和活动。每天都有新花样，打一枪换一个地方，以争取选民。他们的纲领性争论我已在前面描述过（见第六章第1节“争夺白宫”）。实际上这种活动重要的不是让选民懂得他们的政治纲领。美国有足够发达的大众传播媒介，任何人想了解它们的政治观点并非难事。这种活动的根本目的在于扩大影响，树立形象，联络感情，壮大产势。选民发展到今天，已不太注重从政治纲领考虑问题，不少人很看重总统候选人个人的性格、能力和形象。有一位大学教授对我说不喜欢布什，我说为什么，他答道：“布什的脸看上去不可靠，杜卡基斯要可靠得多。”这算是什么标准？</p><p>1988 年大选的一个高潮是 9 月 25 日晚上举行的布什和杜卡基斯的电视辩论，将通过电视向全国观众直播，时间为 90 分钟。不少人对这场辩论很关心。爱荷华大学政治学系的教授早就在谈论此事，也许是因为职业的缘故。当然也有不少人置之不理。事后，电视播了一些镜头，记者在大街上采访了几位行人，都说没有留神，没有看。政治学习教授们当天下午有一个野餐会。时间差不多的时候，大家都驱车回家，等候辩论。</p><p>我在一位教授家看电视转播。他夫人是搞激光的，也坐在那里静气以候。他的儿子是一位小学生，似乎也兴味盎然，并且一直看到了最后。7 点钟，辩论开始。会场上有两个对置的讲台，布什和杜卡基斯一人一个，在他们前方，坐着电视节目主持人四位，当然是资深的记者，负责提问。后面是一个很大的会场，大约有几百人坐在下面。在播音员桌子的前面，有红灯和绿灯，以指示发言人时间。播音员背对观众，与发言人命对面。他们坐着，两位显赫的人选却站着。</p><p>发言的程序大致如下，一位记者先提一个问题给其中一位候选人，然后候选人回答，回答完毕后，由另一位候选人评论，其实就是反驳。双方得到问题的数目大致相等。</p><p>辩论应当说是激烈的。布什曾在辩论中说:“我希望这是一个不那么友好的夜晩。”双方就税收、赤字、教育、毒品、流产、军备和国际关系展开了辩论。内容大致上是重申他们在各种场合就这些问题发表的见解，因为是现场交锋，总要显示一点机智和幽默。一上来，杜卡基斯就说：“如果他能做到，他就成了美国政治的 Joe Isuzu。”影射布什象电视广告商那样卖狗皮膏药，引得全场哄堂大笑。不久，布什也说了一句精彩的话；，说：“这个回答就象波士顿港那样清楚。”波士顿是麻萨诸塞州的州府，污染严重，杜卡基斯是那里的州长，布什意指杜卡基斯说不清楚。双方还有一些针锋相对的交锋。杜说：“我想保证决不与巴拿马的独裁者打交道。”这里指的是诺列加，布什说:“七届政府都与诺列加打交道，但里根——布什政府使他走向正义。”杜卡基斯说:“对大多数人说来，奎尔总统的概念令人惶惶不安。”奎尔是布什的副总统候选人。布什说:“他干得十分出色。”杜卡基斯说:“显然副总统是怀疑我的爱国主义。我爱这个国家，我信仰它，”布什说:“我并没有怀疑您的爱国主义，而是我们能让国家变得那么左吗？他离开了这一点，离开了美国的主流。”整个辩论持续了90分钟，会场上时有掌声和笑声。</p><p>由于紧张，两位候选人也犯了错误。布什有一次称自己为“总统”而非“副总统”。杜卡基斯也有一次讲错引起哄堂大笑。布什老练，讲到一半想不起一个防务系统的名字，就说：“只有冰人才永远不会犯错误。”过了一会儿，主持人算错了时间，时间未到就让布什停止发言，布什声辩后，主持人说:“对不起，我搞错了，您说过人人都会犯错误。”</p><p>在辩论中双方是动足了脑筋。布什称杜卡基斯为麻萨诸塞州州长，想给人造成一个印象，杜只是“地方官员”。而杜卡基斯则称布什为布什先生或乔治，避而不提副总统的头衔。</p><p>在辩论中这些方面都重于实质性的肉容，这在很大程度上决定候选人能否在心理上征服选民。除此以外，双方还特别注意形象。报纸评论说，两位候选人语言、音色、风格都很成功。两位都是久经沙场的政客，自然能说会道。在美国做政客的第一条件是要会说。服装也经过精心筹划。杜卡基斯的竞选顾问弗兰克·格里尔说，为了保证形象优雅，杜卡基斯带了好几件衬衫和好几条领带，以便上镜头。杜卡基斯穿的蓝灰色西装，白衬衫，红领带，布什也一样。美国人的观念是，政治家的形象不是个人问题，而是老百姓对他们有没有信心的问题，所以都十分注重形象。</p><p>辩论完毕之后，各界纷纷发表评论。有人说布什赢了，有人说杜卡基斯赢了。人们发表评论时感情色彩很浓，支持谁就说谁好。记者当场采访了各位候选人竞选班子的成员，都说自己好。我们看一下几家电视台主持人的评论。NBC：“难说谁输谁赢。”ABC:“两人都很出色，不过杜卡基斯略好，也许他赢了。”CBS：“没有新的东西。如果有赢家，杜卡基斯稍好一点。”CNN：“乔治•布什胜了。”另外，马上就有人做民意调查，看看谁得分多。我的印象是，两人差不多，但布什更老练，有国际政治的经验，有全国性政治的见识，杜卡基斯在这方面稍差一点，但杜卡基斯有有利的一面，因为公众对布什的期望值高，他只要能应付布什，并不需要占明显的上风，就可以交待了。</p><p>这种程序十分有意思，其公开性程度很高。此种辩论就是一例。最高一级行政首脑的选举可以公开辩论，使其成为一种真正的公众事务，尽管候选人有强大的党派背景，平民百姓无从问津。当然平民百姓可以加入该党，可以志愿为该党候选人做工作：助选、拉票，也可以捐款等等，但如果要获胜，就得搞公共关系。美国政治制度的特性促使各种政治团体和党派追求这种公开性，不然的话，无法当选。</p><p>在扩大公开性方面，社会有两种动力：一是来自要想取胜的党派，另一是来自公众。在不少社会中，提高公开性的要求往往来自后者。社会物质生活的丰裕，使大多数人不再理会抽象的政治原则或什么方案，而要对一个政治家有感性认识。体制又从另一方面促使人们这样去做。任何人想当这官职，必须获得选票、没有选票，便无从谈起。选票的力量推动他们去想方设法尽量公开。各位候选人到处游说，做姿态、上电视，目的也在于此。奎尔之所以令人不放心，部分原因在他太年轻，也可能太嫩。把公众事务交给这样的人，有些人心里总有点不踏实，不少人是这么想的。其实美国人对政治兴趣不大，兴趣大的是这个人怎么样，这叫做“政治的非政治化”。</p><p>这种辩论形式，也为公众更好地认识候选人提供了条件。很长一段时间，成年公民也有投票权，但选民从来不知道选的是谁，怎么样，有什么特点，有什么特长，有什么主张，选票是投了，但没有民主。民主的一项重要标准是：充分了解下的选择。当然，要做到这一点难乎其难，美国也没有百分之百地做到。</p><h2 id="5-议员之梦"><a href="#5-议员之梦" class="headerlink" title="5.议员之梦"></a>5.议员之梦</h2><p>众议院议员选举与总统选举同时举行。在选举日（1988 年是 11 月 8 日），选民们将同时选举众院议员和总统，因此，国会议员的选举在总统选举进行的同时也在加紧进行。我与共和党在爱荷华市所在县的总部取得联系，要求观察国会议员的竞选，总部的人员十分热情，让我跟随共和党候选人唐·莱德弗（Redfeln），观看他在爱荷华市的竞选活动。</p><p>国会的选举按选区进行。选区根据人口总数划分，每个选区的人口相等。每个选区选举一名众议员，因此每位众议员代表的人口数目相等。每个选区大约包括一个或几个县。大城市情况有所不同。爱荷华州是农业州，人口不多，所以选区地理幅度较大。两党都在各选区设有竞选总部。爱荷华市所在的选区为第三选区。区总部下又有县总部。所谓总部，实际上是两党租借一个场所，有一、两位工作人员。共和党在爱荷华市的总部在两层楼上，地方不小，有一块地方放了二十几张椅子，可以做演讲。有两、三位工作人员，一位姑娘是常任人员，其他是志愿来工作的。总部负责安排本党候选人在本县的活动。</p><p>莱德弗先生的一项活动是与本县企业家共进早餐。本县企业家为当地之精英，或称“乡绅”。他们有一个自己活动的俱乐部。每个周二早晨在一起吃早饭，一般是交流信息，谈谈生意，请人来做演讲。这是当地的权势集团。一个人想要在当地选举获胜，首先要争取这股力量。</p><p>早餐早晨 7 点开始，吃了几分钟后，由莱德弗发表演讲，涉及他对美国内政、外交的看法，基本上是他的“老生常谈”。他为共和党的候选人，所以很多观点与共和党总统候选人布什很相象。他讲完后，由出席早餐的人士提问，莱德弗一一回答。然后，企业家们做一个游戏、每人发一张小纸片，请各位模拟投票，结果是布什 18 票，杜卡基斯 2 票。自然，因为莱德弗是共和党人，如果来一位民主党人做演讲，可能情况就大不一样了。快到 8 点时，企业家们陆续离席，到 8 点时，只剩四人。早餐结束了。</p><p>企业家有企业家的组织，任何人想要在选举中获胜，不能不拉拢这个集团。</p><p>作为候选人，十分辛苦。一天里面东奔西走，做很多事。中午莱德弗从 250 英里远的地方开车到爱荷华市，以便参加下午的活动。</p><p>第一项活动是去爱荷华大学的教学医院。爱荷华大学的教学医院全美闻名，是一个设备精良，医术高明的医院。莱德弗自己开车去那里，我和一位美国教授坐在他的车上，没有任何人前呼后拥。到了医院后，被引到一个会场，共有 16-18 个人，其中 5 人是随他去的（包括我们），7 人是新闻界的，剩下的是医院里的人。人之少，出乎意料，不过，莱德弗似乎不在乎，照样发表生动的演说，讲他对美国国内国外政策的基本看法，然后提问、结束。留下二十分钟，他一一接待到场的记者，每人可以提几个问题。</p><p>所以人少并不要紧，重要的是通过报纸、电视和电台，让成千上万的人都知道他。在美国，最难的事是找到听众。教授们到大学里来做讲演，也不易找到听众。一位国会议员候选人，似乎没有多大吸引力。这是美国政治中很有趣的现象。任何人想从政，均有求于选民，而非选民有求于他们。</p><p>出了医院之后，同车去一个学生宿舍，准备在那里见见学生。到了那里之后，莱德弗的主要活动应该是站在学生食堂门口与学生握手，寒暄。他在门口站了一会儿，见了学生就说：“你好，我是康·莱德弗，国会议员候选人。”然后问一下学生是否去投票之类的话，纯属联络感情。这种工作极其难做，学生们似乎对此没有兴趣，一般只说一声“Hi”就过去了，很少有人愿意多说几句话，有的人极为冷淡。我在旁边看看，做一个国会议员候选人真不容易。也没有人前呼后拥，我们一共三人，他，他的助手和我。这就是美国的政治。他的竞争对手是内格尔（Nagel）。内格尔目前是本选区的国会议员，还在争取连任。内格尔也在校园中活动过多次，发表演说之类。莱德弗似乎对这项活动不甚感兴趣，做一会儿就赴下一站，他心情沮丧地对他的助手说:“走吧！我的感觉不良。”的确如此。</p><p>下一站也是一个学生宿舍楼，叫“五月花”。在中国闻名的国际笔会中心就在那座楼上。我们自己开车去，有一位女学生在那里接待，引到会议室中，有近二十位学生。莱德弗讲了四十分钟，全是他对内政外交的看法，不过侧重讲了教育问题。讲完之后，学生提问，涉及社会保险，教育等问题。问题完毕，结束，前后一小时，这里的人数也不多。在会场外是学生活动室，有不少人在玩电子游戏机，台球和乒乓球，也有人在看电视。他们都没被一个国会议员候选人的演讲所吸引，自己干自己的事。</p><p>一天的活动到此结束。莱德弗开车送我回学校。在车上，我们讨论了国会议员候选人的产生过程。国会议员候选人按选区产生。自己觉得有能力竞选的话，就可以参加，但须征得一定人数的人的赞同。首先要经过初选，经过初选之后才能成为候选人。初选在党内的各位有志选举的人士中进行。莱德弗赢得了初选，成为共和党候选人。共和党支持他的竞选，包括给他法律允许的经费，以及其他方面的支持。他说政党的支持是非常重要的，没有政党的支持，竞选难以取胜。其实在美国政治中，候选人在初选中有真正的竞争。不过各党的初选已经排除了其他人。初选之后，只有两大党的候选人具备被当选的可能性，实际上是他们两人之间的竞争。</p><p>两党制有效地使候选人变得“干干净净”，这种功能，政府没有办法承担。由于政党中有竞争，所以可以容异，不至于内部分裂，不同意见的人由投票淘汰，也不至于牢骚满腹，对谁怀恨在心。这种机制，作为社会管理体制的一部分，显得较为有利。</p><p>另外一点值得注意的是，象国会议员这样的“高级选举”，并不那样吸引人和激励人心，大部分人似乎无动于衷。这是民主的一项重要条件，虽然并不是理想条件。如果人人对政治怀着强烈的兴趣，民主是不会成熟地运转的。有人说，民主的最大敌人恐怕不是专制，而是民主本身。美国的政治很少能直接影响到选民的日常生活，除了税收之外，所以选民抱无所谓的态度不难理解。这种状况迫使每个候选人使出浑身解数来奔走、演说、号召，让选民认识自己。这种机制迫使两党拿出像样的候选人来，候选人在仪表、性格、口才、知识、为人、交际等方面，都要能拿得出手，上得了台面，否则无从感召选民。</p><p>拿莱德弗来说，本人是一位律师，有丰富的经验，仪表堂堂，口才极佳，富于幽默感，善于与人打交道。内格尔大概也具有同样的素质。选举制度加上政党制度，使候选人具有较高的素质。这两者，少了哪一方面，都可能产生令人啼笑皆非的结果。</p><p>莱德弗的竞选活动由他自己负责，并无多少人为他做事。他谈的均是老百姓关心的具体问题，这倒并非候选人愿意谈，而是选举机制的力量。自然，还有一种力量更为重要，这就是政党。平民百姓，没有政党背景，很难在选举中获胜。</p><h2 id="6-选举日"><a href="#6-选举日" class="headerlink" title="6.选举日"></a>6.选举日</h2><p>11 月 9 日为 1988 年大选年的选举日，进行了将近一年的激烈的竞选即将结束，选民将通过选票决定谁是总统，另外还涉及众议员、部分参议员和部分州的州长。包括一些县的官员的选举，均在同一天举行。这样可以不必为各种选举花费更多的时间。</p><p>在选举日之前，每个选民都要登记。在选举前一定时期内没有登记的，便不能投票。登记时可以注明登记为共和党或民主党的选民，也可以不注明。选举由县政府的专门机构管理，所有选民的名单都输入电脑，按选区（precinct）分好。输入的数据有姓名，社会保险号码，地址等。拉选民登记为本党选民的活动，早就开始了。学校中常有亲某个党派的学生设一个摊子，请各位登记。当然也可以去总部登记，或去选举机构登记。</p><p>每个党的总部也都有登记为本党选民的花名册。在选举日即将到来之前，便开始忙碌，清查名单。选区的党的工作者也要联络本党选民。过去是到各家去，现在一般采用打电话的方法。自愿为各党总部活动的人员也得开始活动，如散发宣传材料等。</p><p>选举日这天，各选区设有投票站。选民们自己开车去投票，我在一个投票站作了观察。选民来者不少，似乎有一种责任感。要自己开十几分钟的车，还要排队，然后投票，没有一定的观念支配是不可能的。这种观念构成政治制度运转和二百年不变的重要条件。如果人人都对投票没有兴趣，也就是对维持一种体制没有兴趣，这种体制如何能存在下去呢？自然，物质条件的发展在某种程度上也是公民参与的一项条件。家庭都有车，来去方便，尤其是在乡村。</p><p>但是与有些西欧国家相比，美国选举有些不便之处（如事先登记，不在公假日选举，居住时间限制）。选民的投票率低常被认为与此有关。</p><p>投票站里，选民要填写一份小的表格，写上姓名，住址和社会保险的号码。然后到另一个工作人员那里，他在电脑打出来的花名册上找到选民事先登记的记录。签到，表明选民已经来投票，然后到第三个人那里领取选票。</p><p>选票是一张长条纸，大概有 40 公分长，15 公分宽（各州的选票也不相同）。上面印着各位候选人的姓名，最先一栏，是民主党或共和党人的。如果选民对所有的候选人都想选民主党或共和党的，只要在民主党和共和党后面的空格里做记号就完了，表示这位选民投所有这个党的候选人的选票。如果要具体投每个人的选票，下面有各位候选人的姓名，包括一些小党的总统候选人、参议员、众议员、县官等。那可以一一区分，可以做花样选择，既投共和党的几个候选人，又投民主党的候选人，实际状况也是如此，因为最后的结果是共和党赢得了总统宝座，民主党赢得了众院的大多数木座。虽然是木座，加起来也不可忽视。</p><p>选民填完选票之后，用一个封皮遮着选票，然后送入选票箱子。这个选票箱有自动计数器，计算选票数目。待到投票结束，晩上 9 点，所有选票送往县政府负责选举的部门，进行计算。计算过程是电脑化的。从 9 点开始，电视台就不断向观众报告各州的统计结果。</p><p>在选举日，投票站的工作人员不少是志愿人员。选举站也有“站规”，如不许在选举站进行竞选，不许把选票给其他人看之类，这类规则贴在墙上，以示公告。</p><p>选举日，各党的总部有何公干？各党总部积极分子不能到投票站去宣传，但各党都派一位监督投票的人在每个投票站。他们都有一本花名册。每个选民进来登记时，工作人员就会告诉他们。他们便在自己的花名册上做记号。这有两种功能，一是监督防止有人投两次票，各党都得防止他党选民作弊；二是看看本党选民是否都前来投票。如果有人没有来，他们就会打电话去，以示关心，如果有什么困难，各党总部想办法提供方便，如看小孩之类的。这叫拉选票（Pull Poll）。</p><p>在防止作弊这件事上，美国人对他人怀有戒心，不那么大大咧咧。从基层党的初选开始就采取措施，如规定两党初选必须在同一时间举行，使一个人不可能参加两个党的初选。在选举日，也都会向各选举站派观察员。</p><p>9 点之后开始点票，由于美国本土有几个时区，所以东部各州最先点票，电视台马上就一点一点公布结果，各州的选票数不断变化，观众们随时可以看得一清二楚。这次总统选举，在差不多中部时间 11 点时，已经见分晓，布什当选。这时加利福尼亚等西部各州刚刚结束投票，刚刚点票，所以西部的人大发牢骚，认为这不公正。因为不等他们的意见表达出来，总统已经决定，他们投的票毫无用处。这也是美国选举制度的一大弊病，现有人建议立法规定全国投票站统一关闭的时间。</p><p>当然，这是在中、东部各州的选票倒向比较明显的条件下，如果中东部的投票结果难分胜负，西部的票就举足轻重了。尤其是加利福尼亚的选票，因为加州的选举人人数很多，砝码很大。</p><p>总统选举，讲起来恐怕有些问题。总统选举，实行的是选举人制度。各州按人数划分选举人的名额。大州多，小州少。选民数对总统选举没有直接的影响，他们直接影响选举人的投票方向，如共和党在某州得了多数，哪怕多一个人，这个州所有选举人票都属共和党，言下之意，投民主党的选票全部没有用。从最后数字讲，布什得了 4700 万张选票，占总数的 54%，杜卡基斯得了 4100 万张选票，占总数的 46%，差距不算太大。但看选举人的票数，差别悬殊。布什得了 426 票，占总数的 79%，杜卡基斯得了 112 票，占 21%。选举是多数统治，多一个人也是多数，其他均为少数。这个政治难题，至今难以解决。一千万人就一定得服从一千万零一个人吗？但是要选择民主制度，就得接受这个现实。这一次失败了，下一次争取多这一个人或者更多。</p><p>选举结果知道后，两位总统候选人均发表演说。杜卡基斯说：“我几分钟前打电话给布什副总统，祝贺他取得胜利。”布什说：“几分钟之前我接到了杜卡基斯州长的电话，是真诚的，这是美国政治的一大传统……对于那些没有投我的票的选民，我也希望成为你们的总统。”双方都感谢一番为选举做出贡献的各总部的人，感谢一番各自的家庭和各自的竞选伙伴。失利的候选人和支持者也承认对方为总统，并无二话，不能说不接受选举结果，另拉山头。</p><p>这套制度运转的有序程度，就表现在这里。虽然总统候选人产生的整个机制并非人人可以参与，而是掌握在各党手中，但其最后结果是货真价实的。失败的党不能说不接受现实，或另有他图。即便有人想，恐怕也没人会响应。</p><p>一般而论，制度运转成熟的特点，在于社会每个人都认为制度合乎程序运行的任何结果都不能用非程序的方法来解决，而只能靠这套程序本身。如果想改变结果，就得从头再走一遍程序。什么时候重新再来，由法律规定。人们相信一种程序，并不是为了约束自己，而是为了防范别人。一些人可以用来损害他人的程序，他人也可以用来损害这些人。制度趋向成熟，就在于这种心理和认识不断发生作用，同时社会提供了足够的各项条件保证制度的形成和存在。</p><h2 id="7-谁主沉浮？"><a href="#7-谁主沉浮？" class="headerlink" title="7.谁主沉浮？"></a>7.谁主沉浮？</h2><p>布什身经百战，当选为第四十一任总统。杜卡基斯也身经百战，但惨遭败北。布什为什么会胜利？杜卡基斯为什么失败？这不仅是两位总统候选人的问题，也是选举机制的反映。可以通过对布什当选总统和杜卡基斯的失利，分析美国政治过程的运作，颇有启发。</p><p>理查德•斯滕格尔在《时代》杂志选举特刊号（1988.11.21.）上撰文说，1988年的总统竞选有九个关键时刻，这九个关键时刻决定了布什的胜利和杜卡基斯的失败。我们以这篇文章为基础，来分析总统选举这样一个重要的政治过程。</p><ol><li>在初选阶段，布什在新罕布什尔州竞选，一开始他落后于共和党参议员多尔和罗伯特逊。布什立即紧急行动，召来里根最喜欢的演讲稿撰写人佩基·诺南，乘空军二号专机随布什返回新罕布什尔州。诺南连夜奋战，起草了一份演讲稿，显示了布什的新形象。同时大众传播顾问罗杰·艾尔斯主张批评多尔，而另两位广告顾问反对，认为不宜揭露自家人——共和党人的缺点。布什开始时同意。这时黑格站在多尔一边，离选举还有三天。民意测验显示布什不能在初选中取胜，只有发表攻击多尔的广告。布什仍在犹豫，州长索努奴认为可以发表，布什夫人也认为没有什么大问题。于是布什决定发表。他们买下了星期四的所有广告时间。多尔的班子星期三也在开会，决定不用反面广告。民意测验表明多尔领先，所以他们没有立即制作新的广告。当他们想用旧的竞选广告时，他们被告知所有的时间都满了，结果布什胜了。如果布什在州的初选中输了，哪有今日？</li><li>杜卡基斯在初选中情况看好，他还遇到了两位强而有力的竞争对手，一是阿尔格尔，一是杰西·杰克逊，杜卡基斯认为他需要得到纽约市长科什的支持。他打电话给科什。科什关心杜卡基斯对杰克逊的态度，杜卡基斯态度不明朗。科什反对杰克逊，所以对杜卡基斯的态度不太满意。反过来高尔态度谦恭，与科什趣味相投，科什选择了高尔。但科什对杰克逊态度太激烈，在表示支持高尔的仪式上，大骂杰克逊，反而使高尔失分，杜卡基斯得胜。</li><li>两党候选人确定之后，便是布什和杜卡基斯之间的较量。开始的民意测验表明，杜卡基斯领先 10 至 12 个百分点。这时助手建议布什攻击杜卡基斯的缺点。索努奴建议攻击杜卡基斯的下述弱点：富卢希计划，波士顿港口污染，监狱人满为患。但布什有点犹豫，他想等到共和党全国大会。但调查表明如果等到共和党大会，杜卡基斯可能会领先 20 个百分点。布什当机立断，采取进攻姿态。</li><li>在选择竞选伙伴——副总统候选人时，杜卡基斯的助手建议此人最好来自南方，以与肯尼迪的竞选相媲美。杜卡基斯有不少人选，但杜卡基斯选择了参议员本森，认为他是一位老练的政治家。</li><li>在民主党内部，也存在竞争。杜卡基斯须得到党内各方大员的支持。杰西·杰克逊就是一位。杰克逊想当副总统候选人，但杜卡基斯没有这方面的考虑。此后，杰克逊一直想与杜卡基斯私下谋之，但杜卡基斯一直佯装不知。杰克逊便从中作梗。杜卡基斯的竞选主席保罗·布隆塔斯打电话给杰克逊，杰克逊发牢骚说杜卡基斯从不征询他的意见。布隆塔斯说：问题是你从未明确支持杜卡基斯。杰克逊很惊奇，这是责怪他做得太少了。他的助手建议他去讨价还价，说得含含糊糊。杜卡基斯一下子愣住了，挂完电话后甚感沮丧。五天后，他们再次见面。杰克逊很兴奋，但为时已晚。</li><li>布什选择副总统候选人时，也有很多人选，如杰克·肯普、克•肯普、彼得·多梅尼奇、多尔等人。布什想运用这个选择来表明他是有独立想法的人。他与高级助手詹姆斯·贝克等人多次商谈，但没有决定。他最后选择了奎尔。这完全是布什个人的选择，他的助手们也不清楚如何对待这个奎尔，如何把他介绍给新闻界。他们根本没有准备有关的材料。助手们都觉得手足无措。</li><li>杜卡基斯的竞选组织缺少章法。原来的竞选得力干将萨索因故被他打发走，他们也很少交谈。在民主党大会期间，两人住在一个旅馆，但没有见面。后来杜卡基斯眼见不行，打电话给萨索，萨索谈了自己的想法：确定竞选主题，做电视宣传，加强竞选班子。但杜卡基斯又拿不定主意，直到 8 月份，他的百分点开始下降之后，才不得不重新起用萨索。萨索使出浑身解数，但拖的时间已太久了。</li><li>第二场电视辩论，为最关键的一场辩论。第一场电视辩论，杜卡基斯表现不俗，但第二场更为重要，它的助手们均劝他象《第一滴血》中的兰博那样去打，但他有所保留，最后杜卡基斯同意了助手们的选择，准备在下述问题上向布什发动进攻：奎尔、伊朗门、流产、爱国主义、毒品和波士顿港口。在辩论这天，杜卡基斯感觉不好，身体也不舒服，上午的三小时辩论训练取消；下午依然疲倦，睡觉，直到 5 点钟才起来，离辩论只有一个小时了！辩论前半小时，又有人打电话来，杜卡基斯讲了二十分钟。助手认为这个电话使杜卡基斯不能集中精力。辩论开始不到一分钟，提问人就提到一桩谋杀案，杜卡基斯从未准备过这个题目，只谈了准备的六个问题中的一个。辩论结束，局势明朗。</li><li>布什在第一次辩论完之后，感觉不良。第二天，布什要求每天给他送一份有关一个问题的备忘录，以备再战。他摩拳擦掌。第一场辩论时，他请了十多个教练，这场他想自己干，有一天，备忘录没有送来，他要求助手在一个小时内搞来。有一次在空军二号飞机上，他自己大声地自言自语，与想象中的杜卡基斯辩论。辩论之前，布什的辩论教练与他一起聊天，引他发笑，以减轻思想负担。布什一上场看到杜卡基斯十分紧张，便心中有数了。</li></ol><p>这是一个人的分折，可能不全面，可能是浮光掠影的。但向我们揭示了总统选举中几个关键的环节。人事关系至关重要，任何候选人，如果没有处好这些关系，不可能在选举中获胜。竞选战略也十分重要，没有有效的竞选战略，不可能获胜，每一步每一环都可能是千钧一发。候选人个人的性格和能力在选举中也有举足轻重的地位，不少选民不太考虑太复杂的政治问题，而只根据直观评价候选人。从这个过程看，选举在两党内部的初选和两党各自的候选人之间，是真枪真刀，必须全力以赴。</p><p>在总统选举中，谁主沉浮？是个复杂的问题。以上的材料表明，不同的人，在不同的时刻和不同的层次上，均有不同的作用。当然，只有在统治集团支持下爬到这一层的人，才会有这样的问题。平民百姓对总统选举无门而入，也无可奈何。两党的总统候选人取得提名之后，面临的是汪洋大海，谁能最终到达彼岸，是一场你死我活的争斗。谁在渡海的旅程中沉下去，谁能渡过大海，取决于各种因素。</p><h1 id="七、政治金字塔"><a href="#七、政治金字塔" class="headerlink" title="七、政治金字塔"></a>七、政治金字塔</h1><h2 id="1-国会山"><a href="#1-国会山" class="headerlink" title="1.国会山"></a>1.国会山</h2><p>国会一向被视为美国政治权力的中心，国会原则上拥有最高的权力。我不想过多分析国会的组织和权限，用政治学的术语来说，结构与功能。这些数据可以在任何一本教科书中找到。我想谈一些具体的、生动的东西。</p><p>1988 年 9 月的一天，差不多中午时刻，我们驱车来到国会大厦前面。这是座宏伟的白色大厦。一下车，就看到通往大厦门前的路上放了许多混凝土的三角桩，布置得弯弯扭扭，车辆是无法直接冲进去的。据说是为了防范中东的恐怖分子。有些恐怖主义分子扬言要炸国会大厦，警方不得不小心从事。国会大厦入口处，站了许多全副武装的警察。</p><p>进入大厦的门，又遇到一些安全警察，检查过程与机场的安全检查一样。国会是可以自由出入的地方，每个游客都可以进去参观。在不开会时，游客也可以坐到座位上尝一下议员的感觉。</p><p>进去之后，先找到国会问题的著名专家辛克莱尔。她原是加利福尼亚大学伯克莱分校政治学系的一名教授，现暂时在国会做研究，好象兼做众议院议长的助手。辛克莱尔教授简单介绍了一下国会的组织，然后参观国会。先看了所谓的”走廊”，就是”乐辩士”活动的地方，“乐辩士”称 Lobbists。他们专门负责游说，以通过某项法案，影响立法过程（见第五章第 4 节“乐辩士”）。</p><p>走廊上有许多椅子，提供了较好的“乐辩”条件，这或许是美国政治文化中最令人难以理解的部分。政治是十分严肃的涉及大众利益的事情，“乐辩士”总是为某种特殊利益而游说的，有点“见不得人”。但在美国，这种活动是公开的，合法的。而且政府在议会里开辟舒服的场地，提供服务。这里体现的是某种企业精神，或称为商业精神。企业做生意都有自己的利益，可以公开地讨价还价，这是合法的。带我们去的美国政治学会的国会研究计划负责人开玩笑说，中国应多派些人到这里来。</p><p>进入众议院会场，会场是传统的，从装潢到设计都没有达到现代的审美标准，也许是有意保持这种古朴的风格吧。浅咖啡色的椅子，显得粗糙。现代化的设备在技术上体现出来。议员投票是电子化的。每个议员都有一张卡，这张卡上有一短磁带，磁带上有这个议员的编码，投票表决时，议员先将这张卡插入设在每排座位后面的一个设备，然后按键。议员的选择马上就会显示在挂在前方的巨大的电子显示牌上。任何人都可以看到。</p><p>一般在议会辩论时，有电视直播。设有一个专门的电视频道来报道政治活动，如总统候选人的活动，参议院的辩论，众议院的投票等。所以选民们也可以知道自己选的人投了什么票。这是一种很好的监督方式。会场上设有几个话筒，要发言的议员走到前面发言。议员发言时，常常有许多人不在场内。参议院开会时更甚。参议员们对一个问题的讨论不感兴趣，就离开会场。在外面喝咖啡聊天，或回到办公室去。他们从电视里观看会场的情况发展，到要投票时才匆匆跑去投一票。如果这个时候到参议员办公室做客，他很可能谈到一半，突然说，“对不起，要去投票”，拔腿就跑。这可以说是美国政治中的一个奇怪现象。它是一个最高的立法机构，但并不要求每个人都正襟危坐。人们对这个问题的看法很实际：重要的是它能立法，而不在于它怎样立法。对每一个成员来说也一样：重要的是我有没有货真价实的一票，而不在于坐不坐在那里。不在场不用担心发生什么意外。如果不是这样，谁也不敢远走或者高飞。</p><p>参观完大厦，我们去会见一位众议员，他叫 P，来自北卡罗莱纳州。议员有自己的办公室。参院有自己的楼，众院也有，进入议员办公楼，也要享受一下上飞机的待遇，严加检查。每个议员都有一大间办公室，门口挂着这个议员来自的州的州徽。在一大间房子里，一般隔成两间，里间是议员办公，外面门口有一位秘书，另外还有几位助手。房间里堆满了各种文件。我们走到 P 门前，向女秘书做了通报。女秘书打电话进去，说让稍等片刻。女秘书热情的拿出一袋袋花生给我们吃。一问，原来这位议员的家乡盛产花生，在这里做广告。</p><p>不一会儿，P 走出来，寒暄，然后进里屋坐下。大家议论了一番。发现他为人随和，善于交谈，而且能顺来访者的话题。这恐怕是一位议员必须具备的素质。选举是真正的利刀，绝不会客气。对要想当选的人来说，十分重要的就是怎样争取选民，怎样使选民相信你。</p><p>每个众议员和参议员为了做好这种沟通，都有许多助手，众议员十名去右，参议员二十至三十名左右。他们不仅在华盛顿有办公室，在各州或自己的选区也有办公室。众议员按选区选出，因此在选区里都设有办公室，在县一级有代表，以便全面联络选民。议员们还定期印刷小报，寄给选民，报告自己干了些什么事情。P 给我们看了一份小报，上面写着他的“业绩”。小报的名称叫”戴维·P 的华盛顿报告”。上面写着：他着手促进通过一项立法来减轻房屋所有者的负担；他的消费和借款法案得到众院赞同；两所大学得到联邦资助以发展医学和空间研究；农业问题得到重视；国会服务项目帮助第四区公民。</p><p>美国人不怕自吹自擂。早就听说议员的邮件惊人。这部分是免费的，所以议员们可以大寄特寄，以联络感情。参观时就看到一位员工开着电瓶车，挨门挨户地送邮件。在一个议员的门口，堆了十九箱纸箱子，走过去一看，上面写着：Envelope（信封）。大概有几千只吧。他们之所以要这样做，并非愿意，没事找事，而是一种机制，要当选就必须做，必须代表选民。其实他们不仅要写信、发通报，还得在各种场合与选民见面，拉家常，交心。</p><p>另一点值得一提的是学者与国会的关系。国会成员一般都有助手或顾问，以便能对一些专门问题发表意见。助手一般都是年轻学生，如大学政治学系和法律系的学生。。这有利于这些学生了解政治过程。想起当年一位参议员来复旦大学访问，下来一车都是毛头小伙子，令人惊诧。其实，这正是政治生活中一个值得注意的现象。这种做法使政治充满年轻的朝气，同时也培养了年轻人，是一个重要的政治社会化过程。</p><p>政治学者很多都做过高级顾问，不少人会告诉你他曾做过哪一位总统或总统候选人的某个专门问题的顾问。政治学者也较容易进入政治系统进行观察和研究。我在去议员办公楼的路上问辛克莱尔教授这种现象是否普遍。她说很普遍，政治学会有专门的计划推进这种研究。学术界与政界的这种交往，反映了一种实用主义的精神。政治家也乐于寻找学者做顾问，如基辛格、布热津斯基等等。实际上，一方面可以使政策问题更科学，另一方面也强化了公众对一项政策的心理感受，因为是专家参与的。</p><p>美国的政治精神与其企业精神是一样的，取市场上最好的货物。政治在许多层面是专门化的，剩下的是解决矛盾的政治、解决问题的政治。谁能解决矛盾和困难，谁就受欢迎。当然，欢迎中有选择。同样的肉有各种烧法，不是每一种烧法都能得到欢迎的。</p><h2 id="2-五十国集团"><a href="#2-五十国集团" class="headerlink" title="2.五十国集团"></a>2.五十国集团</h2><p>美国是实行联邦制的国家，五十个州有相对独立的权力。州的存在在联邦政府之前，这种历史决定了州权的地位。其实美国人在建立国家时的一个基本思路就是，保持州权，限制联邦政府的权力。制定宪法的均是来自各州的代表，他们的倾向性很明显。</p><p>托马斯·戴伊（Thomas Dye）说联邦制的结构是:（1）全国政府的权力由宪法赋予；（2）州得到宪法保障；（3）宪法确定全国政府与州政府的权力；（4）宪法条文规定州组成联邦政府；（5）法院解释宪法条文。</p><p>州政府名义上并非地方政府，它们有较大的独立性，各州均有自己的宪法和法律。州的英文是 State，译成“国”更合原义，州只是一种约定俗成的译法，因为国内不能有国。从各方面看，政治格局很象一个“五十国集团”。尽管战后四十多年来，联邦政府的权力迅速扩大，但州的地位不易改变。所以，州政治在政治中极为重要。在很多事务上，联邦政府无权干涉，无能为力。州政治的领袖主宰着州级事务。</p><p>州府有相对独立性，可能是社会经济文化迅速发展的条件之一。联邦制将美国分成五十个“国中之国”，美国全称是“United States”，合众国，其实应译为“联合国”。一个社会的政府只能管理一定的幅度，超过一定的幅度就会鞭长莫及，就会造成行政上的供血不足。这并非一个政治体制有问题，而是政治生理学的问题。一个人的体力有极限，超过了极限就是再健壮的人也承受不了。政府也一样，历史和现实都给了我们许多这方面的实例。</p><p>对于大国来说，找到一种合适的体制，比什么都有益。联邦制在美国恰恰不知不觉地起了这种功能。联邦政府差不多是自成一体的，管理自己领域中的事务。美国不小，但州不大，这使各级政府活动都显得鞭长可及。当然，并非任何国家都具备实行联邦制的条件。</p><p>州政府各有不同。一种称作“弱州长”（Weak-Governor）体制。在这种体制下存在诸多相互独立的行政官员，州宪法对州政府体制有详尽的规定。委员会的机构控制各级机构。委员会的成员，州长无权任免。州长的行政权微弱。行政官员（文官）不属州长管辖。目前，不少州依然实行这种体制。</p><p>另一种正好相反，称作“强州长”（Strong-Governor）体制。这种体制产生于在政府行政中贯彻企业原则的改革。强州长对全州行政享有权力，减少委员会和机构的行政责任，建立州长的内阁班子，州长准备并监督预算。戴伊认为州长是州政治的中心人物，人们也认为州长须对本州发展的事务负责。州长在州里的权力相当于总统在全国的权力，州长是主要行政者，主要立法者，党的领袖等。州长负责协调州的机构，准备预算，监督州政府的主要纲领。州长的职位一般被认为是通往总统或副总统的台阶，如里根曾是加利福尼亚的州长，1988 年竞选总统的民主党候选人杜卡基斯是马萨诸塞州的州长。因此州长职位成为政治家们必争之职，两党在州级选举上往往展开激烈的交锋。</p><p>一个州的行政机构大体上分为财政、公共福利、高速公路、税收、农业、工业、保护、保险、银行、教育、预算、伤残服务这样一些部门。在“弱州长”体制下，这些机构有相对独立的地位，与州长并列的财政部长（Treasurer）、检察长（attorney General）、州务卿（Secretary of State）、审计官（Auditor）等官员也由选民直接选举产生，直接对选民负责，不受州长过多制约。这种体制保证各个专门部门的官员有独立的权限，更好地适应社会需要，同时他们也受选民的直接监督。在强州长体制下，这种官员不存在，或者隶属于州长。在今日的政治生活中，可以想象，不论是强州长还是弱州长，州长都可以运用各种方法来影响各个机构，扩大权能。</p><p>在行政机构的旁边，是立法机构。州立法机构的主要职责是制定法律。各州也都有众议院和参议院两套机构。名称各州也不统一，大多数称 General Assembly，有的称 General Court。参院的人数从 19 名到 67 名不等，众院人数从 39 名到 400 名不等。州立法机构的组织和立法程序与联邦立法机构总体相同，均有明确的法律规定。</p><p>州政治的重要性也显示在其它政治活动上。一是利益集团在州政治一层活动积极，乐辩士在州一级活动频繁。更为明确的标志是，政党在州一级的活动是政党活动的重点。两党从最基层的 Precinct 逐级上升，到州级是一个关键层次。</p><p>在州一级有州党委员会，还有州执行委员会。美国政党组织的一大特点就是非中央集权。全国性的政党机构实际上没有大权，州级党组织往往决定自己的事务。在有的州内，县和市的党组织也有自己的独立性。州党委会负责组织选举州长，联邦参议员和众议员。县和市委员会负责组织选举县市官职和州立法机关成员。全国委员会其实只是每四年起一次作用，召开全国代表大会，确定本党总统候选人。</p><p>各州的党组织各自为政，所以有人说两党都是五十个政党或更多政党的联盟，全国委员会只是各州党组织的会议，而非领导机构，也不能控制州党组织。各州都有详尽的法律管制政党的活动，政党的组织、提名、初选、政党的干部、人数、职责、会议等均由州法加以确定，而非由各党自己确定。各州之所以制定详尽的法律管制政党活动，与政党活动可能带来的消极现象有关，也与没有一种全国性的力量可以调节各州政党组织的现状有关，与各党活动的基地在州有关。</p><p>州政府的重要还在于州政府在很大程度上可以通过资助金影响县政府和市政府。反之，联邦政府也可以通过资助金影响州政府。不过，这种影响有一定的限度。州政府的预算主体与联邦政府没有太大关系。联邦政府和州政府之间有资助和收入分享（Revenue Sharing）两种主要资金补助方式。州政府可以征收的税有收入税、销售税、汽油税、烟酒税等，还有各种收费或公共企业的收入。税收制度异常复杂，普通美国人也丈二和尚摸不着头脑（见第四章第 5 节“税收制度”）。</p><p>联邦制度赋予州政府相当大的活动余地。这在当今各国政治制度中并不多见。州的权力之大，地位之独立，甚至令人担心会造成运转不灵。不过，总的来说，这套体制运转得不错。这里面有多层社会——历史——文化的原因。</p><p>从经济上来说，美国是一个高度统一的市场，一个完整的整体，汉堡包、ibm 公司、汽车加油站、肯德基、“灰狗”长途汽车等都是全国性的组织，但又是非政府的组织。租车公司便是很好的一例，顾客在旧金山租的车，开到纽约后可还给这家公司的分行，全国都有这样的服务。希尔顿等大系统的饭店，遍布全国。加之信息统一、运输统一，社会的一体化有坚韧的筋。经济的高度发展发挥了维护全国统一的重要功能。在这种情况下，政治系统反倒不必多做努力，南北战争那样的状况难以再生。</p><p>其次，美国政治历史告诉人们，州政府先于联邦政府，各州本就有较正常的运转机制，建立联邦政府只是为了维护各州的原有地位，使之不至被破坏和削弱。反之，如果先有中央政府，后有地方政府，情况就大为不同。在不同国家的政治发展中，有的是地方政府为中央政府的前提，有的是中央政府为地方政府的前提。这两种模式会导致不同的结果，恐怕毋庸多言。</p><p>美国社会制度长期运转形成了一种文化，这种文化接受目前的政治格局——“五十国集团”，也是维持它的主要力量。维护一种体制、实际上就是维护自身。联邦政府在某种意义上只是“五十国集团”派出人马进行协调和管理的一种机构。</p><h2 id="3-县政治"><a href="#3-县政治" class="headerlink" title="3.县政治"></a>3.县政治</h2><p>县是地方政府，州政府并非地方政府。县的地位举足轻重，它直接与民众打交道。州政府隔了县这一层，联邦政府又隔了州这一层。美国大约有三千多个县，包括一些州由于历史的原因不称县而用其他名称，如路易斯安那州的 Parishes，阿拉斯加州的 Boroughs。全国所有的土地均划分在这三千多个县的范围内，除了弗吉尼亚的 34 个市、密苏里州的圣路易市、巴尔的摩市、华盛顿特区、黄石国家公园和阿拉斯加州的 19 个选举区。由此可见县的管理功能的重要性。</p><p>每个县都有县政府。不过，有一个不同的情况，这就是各个县的政府结构和功能有较大差别，并不划一。这种状况在列国政治制度中并不多见。大多数的国家的同级政府具有相同的构造。联邦制下差别大一些。并非所有的县都有政府，大约 31 个县没有县政府，通过其他行政单位管辖。少数县由县市合一的政府管理，有些县直接由大都市管理。各州的县数也有不同，特拉华州只有三个县，得克萨斯州有 254 个县。县的大小也极不相同，加利福尼亚的圣贝纳迪诺（San Bernardino）县有两万多平方英里，差不多有两个荷兰那么大，相当于麻萨诸塞、康涅狄格、罗德岛和特拉华四个州的面积之和。相反，弗吉尼亚的阿灵顿（Arlington）县只有 24 平方英里。</p><p>从经济角度看，县一般以农业为主。以县内的城市为主要市场。有些县以工业经济为基础。各县的经济活动和组织差别很大，各有千秋。</p><p>县政值得注意。县政是政治的基础。县是政党组织的基础。县政治是政治中最有实质性内容之一。《美国县政府》一书的作者赫伯特·悉尼·迪贡布（Herbert Sidney Ducombe）说，县的政党主席往往是地方政治组织的关键人物。县的选举和县政府的职务是走向州政府和联邦政府的台阶，县也是收集资金的地方，选区划分常常以县为单位。政治组织都有县级组织。县官员往往负责确定县以下的选区，指定选区负责人等。</p><p>县以下的基本单位是 Precinct（小区）。小区在农村可能只有十几个选民，在城市可能有二千位选民。小区中就存在政党组织。各个小区不同，有的小区有选举产生的小区负责人（Committeeman），有的小区由委员会领导。这不是政府组织，而是民间组织。选举时，小区负责人的任务是组织本党活动分子，联络可能的选民，散发竞选文献，出席会议。两党争取选民的活动主要在这个层次展开。</p><p>在人口较多的县，小区和县之间还有一些中间的政治组织。县级政治组织一般由该组织的委员会或主席领导。这些政治组织对政府没有直接的权力，只有间接影响政府决策的可能性。政治组织必须自己解决活动经费、场地、人员等一切问题，不能取纳税人的一分钱。</p><p>县的政府组织千姿百态，这是美国政治的一大特色，有传统模式、准经理模式、选举模式、行政助理模式、县管理员模式等，迪贡布将其分为两大类：</p><ol><li>传统的多人执行模式，85%至 90%的县政府具有某种传统的选举产生的多人执政委员会，一般称为 Board of Commissioners。有时也称 County Court，Board of Supervisors 或其他。有的县的行政设有其他职能，有的县的行政官员还兼任镇的 Supervisor、法官或其他职务。县管理机构主要是行政机构，它可以任命某些职员，批准财务文件。他们一般有权通过县预算，并通过州法律允许的法规。县的不少其他官员也由选举产生，如司库等。这是这种体制的一大特点。</li><li>执行和行政体制。这种体制下有一人有较大的监督权，他对县行政有一定的发言权。在这种形态下，还有变异，如县经理体制，县委员会只是决策团体，同时雇用一名经理负责大部分行政职能。经理是专业人员，完全根据经验和学识选择，不看派别倾向。经理不管决策，决策者不管日常行政。经理有权任命大部分行政官员，并准备县预算，执行预算。准经理体制、行政官员体制、行政助理体制均为上述体制的变奏，均由县委员会任命一名专业人员负责行政，但被任命者没有充分的任命官员的权力和行政权力。另一种体制是选举行政官体制，主要行政官由选举产生，全县的选民都参加选举。县委员会没有什么行政权，相当于县议事机构。县政府机构各有不同，与美国殖民地的早期历史有关。</li></ol><p>县政府通常的事务包括：估价财产（供收地方税时用，地方税根据财产价值抽取）、征收财产税、记录财产文件、维修乡村公路、救济穷人、执行法律、管理选举和某些司法职能。这些职能由州法律规定。除此之外，县政府还履行一些县自己确定的职能，以满足本县居民需要，如防火、供水、停车场、机场、公共学校、图书馆、保健、福利、治安、交通等。</p><p>县政府的另一项权利在于它有征收财产税的权利，县政府征收了财产税之后分配给市、学校区或其他地方单位。县的财政收入主要有两个来源：财产税和州援助金及其他资金。各县收税情况不同，有的县主要依靠财产税，有的县主要依靠州税再分配，有的县还另外征税。</p><p>县在政治生活中举足轻重，它的活动和职能与选民最近。政治制度一大部分体现在县政上。县经济都发展到相当的水平，生活水平和生活设施与大都市没有多大差别，年轻人大部分可以接受高等教育，信贷和交通十分发达。一般农业地区的县也没有明显的落后和愚昧的感觉。这是县级政治得以运转的一项重要条件。</p><p>在很大程度上，县级政治是美国政治的基础。县级政治的过程决定了人们能够接受什么样的政治，不能接受什么样的政治。在县的层次上，更多具有管理的色彩。阶级利益较直接地体现在联邦政府和州政府。县级政府更多地考虑居民的实际利益，更间接地体现阶级利益，实际上也是选举制度使然。县的范围不大，人人都能看见县官们在干什么。如果他们觉得不满意，下一次就会不投他们的票。任何人想要争取到更多的选票，都必须干实事。这是政治世俗化的基础。</p><p>县政中通行的经理体制及其他各种体制，反映了县政世俗化的程度。很多人把县政视为技术问题，而非政治问题。当然县政中有政治，只是更需要以实事作垫子。</p><p>实际上，美国政治制度的程式化，更多地体现在它的三千多个县的有效运转上。任何社会要想有任何形式的成熟的政治体制，首先应使地方和基层政府有效运转。地方政府与选民和民众直接交往，不象联邦政府和州政府隔得那样遥远。民众们评价政治的功绩与败绩，往往从最靠近自己利益的地方着眼。地方政治运转的成功与否，其政治价值就在这里。社会经过二百多年的运转，加之选举制度的强制，县政治已经运转得相当顺当。言其顺当，只是说它们整个政治统治的稳定奠定了良好的基础。在现实生活中，美国人也较为看重县政治或更下一层的政治，对于联邦政治，他们会觉得索然无味，因为那太遥远。美国民族是讲实用主义的民族，政治上的实用主义，就是盯住眼前的政治不放。这种态度，反过来也促进了包括县政治在内的地方政治的发展。</p><h2 id="4-都市里的政治"><a href="#4-都市里的政治" class="headerlink" title="4.都市里的政治"></a>4.都市里的政治</h2><p>城市是美国社会和政治管理中的一个基本单位。美国的成功，在很大程度上是城市的成功。根据 1970 年的统计，大城市（Large city），人口超过 25 万，有 56 座，全部人口总和是 4000 多万。另外还有 200 多个“中心城市”（Central city）。此外，象爱荷华市这样的小城市更是多如牛毛，星罗棋布。</p><p>美国是城市化程度很高的社会，百分之九十五以上的人口不从事农业生产。这样，大部分人口便集中在城市，于是市政有没有搞好，成了一个非常关键的问题，中国的人口百分之八十在农村，农村有没有管理好，就是中国社会是否成功发展的关键所在。</p><p>任何社会管理和政治管理，都是对人的管理，因此，社会要发展，经济要腾飞，文化要弘扬，首先应当找到管理一个社会最大部分人口的合适方法，包括文化的、地理的、经济的、宗教的、政治的等。只有最大多数的人口管理得当，社会才能均衡发展。</p><p>市政府管什么？大概世界上大多数的城市政府都得管相同的事务，因为人的最终需要相同。这整个基础上，各国又因文化的不同而管理一些不同的事务。《市政府和市政问题》的作者德梅特里奥斯•卡莱里（Demetrios Caraley）把市政的功能分为三类：</p><ol><li>福利，包括防火、供水、维修街道和高速公路、公共保健等事务。</li><li>管制，市政负责管制食品卫生、企业漏税、房屋维修、城市建筑、日常服务、交通运输、空气污染、水源污染、种族歧视、城市发展等。</li><li>抽税，以支持前两项功能。市政府征税的类别一是财产税，二是销售税。</li></ol><p>市政另外还有些收入。在美国买东西，往往加上地方税。总之，谁买东西，就付了税。有些市政府还向有关部门征收“nuisance taxes”，麻烦税，或按国内通行的说法，译为“好处费”。如银行、香烟、剧场门票、汽油、股票买卖、旅馆、汽车、商业财产的租用等，市政府还可以征收“使用税“，即它所提供的便利和服务，如动物园、娱乐设施、博物馆、桥梁、隧道、公共汽车和地铁费用、公共房屋出租、医院服务。市政府在发放各种执照时也可以收取费用。最后是罚款。</p><p>市政府的预算巨大。各级政府官员思考问题的方法很简单：钱。政府解决任何问题的基本手段是：做预算。在中国，光做预算就显然不行，还得协调人际关系和疏通物资渠道。美国经济的高度发达，使美国人产生那种思路，也能实现那种思路。</p><p>市政府的组织在宪法中并没有规定。理论上说，市政府由州政府设立，完成州政府指定的功能。市政府的权限一般由市宪章（The City Charter）规定，市宪章如同组织法，各个城市不同。州政府影响市政府的方法有多种，一是州宪法赋予的权力；二是立法委托权；三是州资助，这部分资金占市政府开支的三分之一左右；四是行政监督；五是专项调查。</p><p>市政府的组织结构互不相同，由各地的宪法和法律确定。因此很少有两个政府组织一模一样的市政府。一般市均有某种形式的市长和市议会。市长单独选举产生，为市的主要行政官员，监督和执行法律。市长为市首脑，代表市参与各种活动。同时有一个市议会，可以制定地方法律，建立计划，征税等。市议会的主席一般由市议会选举，有的城市由选民直接选举产生，如芝加哥和亚特兰大。有的城市有两个立法机构，以相互制约，如纽约。市长的权限也不同，有“强市长”和“弱市长”之分。“强市长”权限较大，“弱市长”权限较小，受巿议会限制，主要体现在行政官员的任命、计划制定、立法等方面。</p><p>另一种形式称市议会——经理形式，这主要在一百万人口以下的城市中实行，50万人口以下的城市有一半实行这种体制。在这种体制下，市议会任命一位市经理作为主要行政官员，没有单独的行政市长选举。经理服务于市议会，不愿意干可以辞职。经理任命行政部门的首脑。市议会一般不能直接干涉各行政部门，须得先与经理交涉。市经理准备预算、市议会通过。在经理——议会体制下，也有市长，市长由选民选出或由市议会选定，他只是市的代表，不是主要行政官员，他的职责是荣誉性的，包括出席仪式、签署法律等。</p><p>第三种形式为委员会体制，在 50 万人口以下的几个城市中存在。在这种体制下，一切权力属于委员会，委员会成员有五名至七名。委员会共同组成市议会，行使立法权。单个的委员均为某个行政部门的负责人。有的城市是先分开选举，然后组成委员会。有的城市是先选举委员会，然后分工。这种形式下没有市长，只有一位委员享有市长的头衔，主持会议，并作为城市的代表出席各种仪式，但没有任何特权，与其他委员平起平坐。他有时由选民直接选出，有时由委员会选定。有的城市中，得票最多的委员同时为市长。</p><p>从选举制度来说，各个城市也迥然不同。如任职期限有二年至四年不等；有的市划分选区，有的市不划分；有的市的选举要注明候选人的党派，有的不要，在需要注明党派的城市，各党的候选人一般由各党的初选产生。凡是想参加竞选的，须得到本党选民一定数量的签名。其他形式的选举，也需要有人签名，达到一定数量，有的城市还要求想参加选举的交一定的保证金。</p><p>市政府与其他各类地方政府有着各种各样的关系。大多数大城市都在县的领土内，县有县的政府。另外还有特区、镇、卫星城等地方政府。这些政府与市政府没有直接的关系，但它们的活动可以影响市政。其中一项主要的关系是与县政府的关系。</p><p>县和市的概念不同于中国。中国的县一般仅指乡村，不包括大中城市。美国的县既是行政概念，也是地理概念。大中城市一般均在县的地理范围内，而不在行政范围内。县有自己单独的政府，大多数设在大城市内。县管理某些地方法院、登记结婚、监督选举，有的还参与福利计划，有的城市中县管医院和公共保健计划等。有的县设有分开的政府，体制也不同，有的市里有县的一些官员，但作为市政府功能的一部分，如纽约、费城、波士顿、新奥尔良等。有的地方就称“市县”，如旧金山，只有一个政府组织，以市为主。</p><p>大部分县组织早就形成了，而城市是随着经济发展后才逐渐形成的。在漫长的发展过程中，力量相互消长，有的市县合一，有的市县分离。市在县内，是美国行政区划的特色。市县分开，是中国行政区划的特色。市在县内，对促进乡村地区的发展有益。</p><p>城市也是政治的中心。大城市中的政党活动十分活跃。政党领袖一般是占有重要政府职位的人或在党内有领导职务的人。每个城市都由法律划分为小选区，每个小选区平均有 600-900 人，少的有 200，多的也有 2000 的。小选区的意义是在这个小选区内设一个投票站。每个小选区的某党拥护者通过初选产生一名委员（Committeeman），或几名。他们为政党的基层干部，是党的工作者（Party Workers），而非党的领袖（Party leader）。再往上，是选区会议（Ward 或 assembly）。一般在这个选举单位中产生一名市政议会议员或州议员。每个选区会议选举自己的领袖，他们是市内基层的政党领袖。领袖由本党成员直接初选，或由小区代表会议选举产生。选区领袖一般有权任命小区“队长”（Captain）。通常，小区的“队长”与小区的委员是合一的。所有的选区领袖组成党的市或县的中央或执行委员会，委员会再指定一名县或市的主席，他是市党部的领袖。</p><p>自然，与其他政治组织一样，这里存在许多变异。纽约市由五个县组成，每个县都有自己的党组织，但没有市委员会和市主席。市和县的党的干部名义上是州和全国党组织的一部分，实际上独立性很大，特别在市官员的选举上，十九世纪时，政党领袖对政治过程有举足轻重的影响，如今已大为改观，初选的作用限制了政党领袖的权力。不过，这恰恰是两党制度得以长期存在的前提。两党都允许观点不同，若不如此，组织分裂势在难免。城市为政治的战略要地，虽然政党今不如昔，但城市中的政党活动依然是政党政治的大头。</p><p>市政治理着百分之九十五以上的人口，城市未来的趋向如何，决定社会的发展。大中城市，正面临越来越严峻的挑战，犯罪率上升、生活指数上升、城市设施老化、税收高涨。我去过旧金山、华盛顿、纽约、费城、芝加哥、波士顿、亚特兰大、西雅图、圣地亚哥等大城市。纽约的犯罪率令人提心吊胆，芝加哥市中心有不少荒凉之地，如此等等。</p><p>当然，平心而论，与世界上不少国家相比，美国的城市管理是第一流的，现代化程度也是第一流的。美国市政有一项有利的条件，它只需要管制经济，而不需要管理经济，经济领域是私人管理的，市政只制定法规。地方政府的首要功能是管理城市发展，促进城市生活水平的提高，改善城市设施。与中国相比，市府的职责小得多。可以集中力量管市政建设。</p><p>社会的发展总是不断指出新的问题，不断向人类的管理能力提出挑战。面对这些挑战，人们可以有两种选择：一是限制问题；二是寻找对策。限制问题不能最终解决问题，只有寻找对策才能化解问题。</p><h2 id="5-草根政治"><a href="#5-草根政治" class="headerlink" title="5.草根政治"></a>5.草根政治</h2><p>政治学中的术语 Grass-roots Politics，可以译为基层政治，如果原本不动地译，即为草根政治。在县政府以下，政治怎样展开，是社会管理体制中的一个环节，县政府作为州政府的下一级，从县政府到民众，有的州还有一级更低的政府，这就是镇政府（Town Government）或乡政府（Township Government）。不过，在这一层建制上再一次反映了美国文化的特点，并非所有的州都设有镇政府或乡政府，而是在有这种传统的地方才设立，如东部、中东部和其他一些地方。镇政府较为典型的为新英格兰地区。托马斯•杰佛逊等思想家都曾高度评价镇政府，认为它是直接民主的一种理想形式。</p><p>镇政府起源于殖民地时期，由于严冬和印第安人的存在，早期殖民者在小的村庄以及环绕着它的土地上设立了这种建制。区域内往往设有一个教堂，包括农村和城镇。镇政府的政治较为简单，由所有合格选民的会议决策，选民选择镇官。每年举行一次会议，如需要还可以召开会议。全镇会议决策之后，由选举的镇官（三至九名）执政。</p><p>另外，选民还选举其他一些官员。镇官须执行全体会议制定的基本政策。不过，有的学者指出，随着政治生活的发展，前来开会的人数越来越少，愿意做镇官的人也越来越少。有的镇发展出代表会议，选民选举一百名或更多的人开会，代表他们。卢梭说过，公意不能代表，如果人们宁愿选举代表代表他们的意志，政治制度就变质了。镇政府的发展趋势是什么？现在不好说。不过，镇政府在不少地方，还起着举足轻重的作用（关于镇政府，见第二章第 6 节“政治基因”一节，那里记录了对一个镇政府的实地考察）。</p><p>除镇政府之外，在大西洋中部各州和中东部各州，农村还设有乡政府。乡政府通常管辖 36 平方英里的幅度。在不少州，乡政府仍相当活跃，如伊利诺伊、印第安那、堪萨斯、密歇根、明尼苏达、威斯康辛等。密苏里、华盛顿州还有少量的乡政府。爱荷华和俄克拉荷马州曾有过乡政府，如今已经不运转了。</p><p>乡政府负责照料公路、处理一些不大的法律案件，管理选举。乡政府也管估价财产价值、抽税。在一些州的大乡里可以拥有警察、消防、供水等机构。乡政府负责满足农村人口的需要。乡政府的管理与镇政府差不多，由选民每年的会议制定政策。但来开会的人很少，除非事关重大。乡政府目前正在衰落，因为乡村地区的人口越来越少，交通发达，信息网络、经济沟通使农村地区与城市紧紧联系在一起。这些功能为乡政府难以承担；另一方面，愿意做“乡官”的人越来越少。人往高处走，人们纷纷到乡外去谋求高职了。</p><p>不过，在一些城市化程度较高的地方，乡政府的作用略见长进。这是因为它们城市化了，人口密度高，矛盾和利益要求多，管理自然不可或缺。</p><p>再有一种形式，就是特区（Special districts）。这种政府形式所知人不多。特区是一个独立于其他政府机构的政府组织，它有自己的征税权和其他权力，有自己的政府组织。特区因不同的需要组织起来，如机场、计划、停车场，等等。特区与其他政府组织（如市政府和县政府）之间有边界，也可能与其他政府交错。城市有，乡村也有，百分之六十的特区集中在十个州，如加利福尼亚、伊利诺伊等。</p><p>设立特区的原因一般有：（1）方便或支持某种特殊的功能；（2）执行某些单项功能的机构在一个地区内至关重要。</p><p>特区的类型很多：（1）学校特区，为数最多，由一个委员会领导，向他们属下的人们提供一套教育制度；（2）卫生特区，以使污水处理更为有效；（3）电力特区；（4）供水特区，由供水系统供应水源；（5）其他类别，图书馆特区、消防特区、森林特区等。五、六十年代特区发展最快。特区的总数大约相当于全国城市的总数。</p><p>特区的设立由州法律决定。特区内的人们为特定目标组成一个政府。一般选举一个委员会，委员会有权征税，设立必要的组织，购买必要的设备，满足民众的需要。特区用来满足人们的特殊需要，并针对特殊地区的人征税。设立特区，是因为其他地方政府不能提供这种特殊的服务。特区的政治功能往往不强，只为提供某种专项服务而活动。</p><p>自然，对于特区，也有争论。有人认为它的设立使那些从事专门设备生产的厂商渔翁得利，因为特区均是为专门的目标而设立的。另外，特区虽然不是为政治目的而设立的，但它们也不能游离于政治之外。利益集团、政客照样在特区活动，影响特区管理。</p><p>无论如何，特区是一种较为灵活的管理形式，哪里有特殊需要，设立特区加以解决是一种行之有效的管理方法。在州政府和其他地方政府不能满足需要时，设立以特殊需要为目的的纯管理性的特区组织，是一种合理的选择。对地广人多，文化差别大，需要繁杂的社会，尤其适合。</p><p>在社会的管理体制和形式上，宜活不宜死。体制太死，往往限制社会生动活泼的发展。当然，事物不能走极端，如果太活，社会管理活动又会失去章法，没有一体化的结构。在两个极端之间找到合适的方位，是一个社会管理优化的先决条件。</p><p>最后，还存在村政府（Villages）。村的概念在这里相当于镇而非乡，有城市的含义而非农村的含义。从法律上说，村与市有相等地位。村的地位由州法律规定。有的村只是邮局或商店周围的一些人家，“鸡犬之声相闻”；有的比较大。这里的人们需要修路、路灯、供水等服务，组成市又太小，可以称为村。各州都有法律，人们可以通过一定的程序申请组建村。村政府一般较为简单，类似于弱市长体制。立法机构为一小的委员会，有三至九人组成。主席或其他头衔的人主持委员会。另选举一些其他官员，少而精。村政府可以与乡政府分开，向县政府派出自己的代表，也可以隶属于乡政府，各有不同。</p><p>美国政治在草根政治这一层，放得很开，主要职能在于为辖内的人们提供服务和便利，其他职能相对不那么明显。官员依靠人们交纳的税行政，他们由选举产生。草根政治的组织简朴，便于监督。在政治生活中，老百姓对于全国政治或者州政治，无话可言。但对草根政治却有实际发言权，因为这些活动就发生在他们身边，他们眼前，与他们的日常生活交织在一起。实际上，在这一层更多是社会性的和福利性的。草根福利，草根非政治，对老百姓来说，足矣。</p><h2 id="6-透明议事"><a href="#6-透明议事" class="headerlink" title="6.透明议事"></a>6.透明议事</h2><p>政治过程中有一个有趣的现象，许多决策过程是公开的。联邦的参议院和众议院开会和辩论过程是公开的，电视现场转播，闲人可入，坐在指定席位上旁听。所有议员投票的结果也是公开的，电子显示牌将自动显示每个人的投票立场，一目了然。州政府的开会和辩论情况与联邦议会一样。我在马里兰州的议会会场观察过，有旁听席和电子显示牌。地方政府一级，公开办公也是惯例。开门办公一般是在议事性机构里。县一级政府，由于设置有所不同，不敢说全美一样。我参加了一次爱荷华州约翰逊县的县委员会召开的开门议事会议。</p><p>会场设在县行政大楼内。县行政大楼是一幢四层高的楼，大小相当于一个电影院。与中国县政府的规模相比是小巫见大巫。县政府里两个最大的办事机构，一是选民登记处，二是驾驶执照申请处。会场大概有 50-60 平方米那么大，前排摆着固定的桌子，有五个固定的位置，给五个选举产生的委员坐。每个人前面有一块牌子，写着名字。右边坐着检察官和审计。涉及财政和法律问题时他们参与意见。左边坐着书记员，有一录音设备。在主席台对面，放一个小桌子和椅子，供有关人员发表意见。在这个桌子后面，有二十多张椅子，公众可以坐在这里观察他们的决策，聆听他们的讨论。一般的人也无此兴趣，主要是与当日会议决策有关的人士愿意出席会议。出席观察的人可以看，而且可以发言和发表评论，只要事先征得主席的同意。</p><p>这天的议事日程很多。9 点钟开始。地方报纸的记者也到场。非正式议程的讨论项目有好几项。一是重新装修县的一个机构的办公室。会议讨论得很细，如地毯、窗帘、空调，以及州政府给多少钱，县政府给多少钱。提出要求的这个机构发言人陈述理由，县委员们提出问题，很细致，很认真。连建筑师都被请到现场。最后决定由建筑师先出草案，然后由县委员会议再议。</p><p>其二是讨论修建公路的问题，开辟和连接两条公路，以便给这个地区提供更多的方便。每个项目的提出人都得陈述理由、回答问题、出示材料。他们带来了书面材料以及设计图纸。开会时还要围拢来讨论图纸，然后做出决定。</p><p>非正式议程是准备和讨论问题，不需投票。县的这种决策机钩，相当于立法机构，要以投票做最后决定，投票也是公开的。</p><p>10 点正式议程开始，主席用一个小木棰子敲了一下。第一项是审议出售财产的问题。共三件，两件很快通过。第三件争论激烈。大致情况如此：根据法律规定，每个拥有地产和房产的人都必须付财产税，如果不付税，政府有权没收财产、并出售。出售得来的钱抵财产税。这是一条非常厉害的法律，人们不能不交纳财产税。当日审议的问题就是在这个范围内。有一个人建造一所房子，造到一半大概没有资金造不下去了。但他得为这所房子付财产税，他也付不出。政府没收了他的这所房子，公开出售。他的一位老朋友准备出二千美元买下这所房子，然后还给他，以解决这个问题。另外一对青年夫妇住在这所未建成的房子的旁边，认为这所房子太不安全，小孩子到那里去玩，容易出危险，想买下这所房子并拆毁它。他们答应出一千美元。争论就在这几个人中间进行。</p><p>房产所有者发言解释他的情况，他的朋友为好友的立场辩护；青年妇女则为自己的立场辩护。各自还有一二个邻居为其讲话。经过较长时间的辩论，委员们表决。由审计员依次叫每个委员打的名字，同意的说“yes”，不同意的说“no”。表决结果由审计员记录在案。投票结果，青年夫妇胜。县委员会议宁要一千美元不要两千美元，可能是觉得房产所有者十一年不付财产税，不能让他拥有这份财产。如果选择两千元，结果是房产拥有人拥有房子，又不出十一年中欠下的房产税。</p><p>第二项审议“人类服务”机构的计划，他们要求扩大办公场所和建立一个少年基地。县人类服务机构的负责人陈述理由，提交草案和图纸。表决结果：通过。</p><p>第三项讨论给州经济发展部的一封信，涉及为县争取更大利益的问题，没有什么争论，迅速通过。</p><p>然后再议县审计的几个事项，发放售酒的执照。在美国，销售酒要有执照，没有执照售酒是违法行为。我在一家朝鲜饭店吃饭时，他们就没有啤酒，因为没有执照。对于发放的执照，没有异议。然后议论检察官提出的 1988 年学校选举的议案，他早有准备好的文件，通过。</p><p>其中还讨论一个人的申请。他计划将 11 英亩的农田改造成居住区，准备造新房。没有异议，通过。在美国，拥有土地的人并不能随心所欲地处置这些土地，须受政府有关法律的管制，有关土地的计划需得到政府的认可，否则不可破土动工。</p><p>然后迅速讨论了几项议程，均通过。</p><p>最后一项讨论时间较长的是关于冬天扫雪的问题。美国汽车甚多，冬天公路扫雪是一个大问题。要购买设备，制定预算，招募人员。如果花了很多的钱，没有下多大的雪，钱的效益就没有发挥出来。如果省钱，结果大雪纷飞，无法应付，选民们又要提意见，因而扫雪问题成为政府冬季的一项重要议程。</p><p>议程完毕后，几位县委员和检察官以及审计员相互交流意见。各自有什么问题可以提出来备案。</p><p>最后，主席问听众有什么意见。此时只剩下两名听众，其他二十几人在自己的事项讨论完毕后都相继离开了。有一个人说有意见。他问县委员在赞同“人类服务”机构的计划时（即建造一个新的办公楼），有没有考虑到去租或买一座现成的建筑，为什么一定要去建新的，这样开支大得多。此人是一位与此计划无关的人，只是关心这件事。有一位县委员负责调查过此事，作了回答。会议结束，主席拿木棰子敲了一下。</p><p>这整个过程，完全公开，任何人都可以旁听，发表意见。县委员均由选举产生。会议结束后，有一位县委员告诉我，在县委员会议上，任何事情都必须公开投票。没有公开投票，他们不能作出决定。</p><p>政治的运转，很大一部分在地方政治。地方政治的正常运转，是整个制度运转的基础。每个普通公民对政治系统的看法往往首先来自于离他最近的政治机构的运转。县政的议事过程，使人觉得透明度很高。自然，他们也有自己的办法来通过他们想通过或不想让听众知道的事项。表决必须是公开的，但他们可以讲非常专门的语言，以非常快的速度进行表决。人们称为“Railroad”（铁路），意即“开快车”，人们还没有反应过来，就已经通过了。</p><p>县议事会的主要职责实际上是讨论预算如何使用，很多事项牵涉到钱，没有太多纯政治性的事务，也没有直接管理经济的事务。地方政治有非政治化的倾向，多半是福利、修路、税收、房产等方面的问题。约翰逊县 1987 年的全部收入为二千一百万美元，其中财产税占二分之一左右，政府间转让税收为二百多万美元。县议事会主要是决定这些钱如何用。</p><p>当然，县级也有政党之争，政党的基础在县。不过，县本身的活动十分具体，一般均涉及县计民生。</p><p>对于地方政府来说，在任何社会中，应当贯彻两个目标：一是地方政府有效满足当地居民的直接需要；二是地方政府议事过程高度公开。地方政府乃中央政府之足，无足，中央政府寸步难行：地方政府又为中央政府之手，无手，中央政府难以成事。中央政府应当采取最有效的措施和政策，来促进地方政府达到这两个目标。有了行之有效的地方政府，中央政府便如虎添翼，如鱼得水。</p><h2 id="7-选择仕官"><a href="#7-选择仕官" class="headerlink" title="7.选择仕官"></a>7.选择仕官</h2><p>美国实行常任文官制度，事务官一律要经过公开的考试录取。据说，这套制度从中国古代的科举制度发展而来，由英国人最先采纳这一体制。但中国古代的八股考试和科举与现代文官制度大相径庭。</p><p>美国大约在十九世纪末开始推行文官制度。在这之前，实行政党分赃制，或曰政党分肥制，即哪一个政党的候选人当选总统之后，其同党便可鸡犬升天，有功者都弹冠相庆。这套制度有不少弊病，造成官场中的贪污腐化、结党营私，效率低下。有一则故事就说，那个时代，有一位想到华盛顿当官的人，没有如愿以偿，结果一枪打死了当时的总统。此事被认为是美国实行文官制度的一块重要里程碑。其实际问题不在一个人的不满，而在于一套制度能否适应社会发展的需要，文官制度的基本特点在于政务官和事务官分开。事务官不由选举产生，政务官由选举产生，与政党共进退。事务官由公开的考试选拔，有竞争、在政治上保持中立。其实，很多人并不是官，而是普通职员。任何人要进入公共部门工作，或是通过选举，或是通过考试，以此保证合格的人员进入公共部门，堵塞营私舞弊之路。同时也为了平衡各派政治力量。</p><p>这套制度具体如何运转呢？我在爱荷华市的市政府做了调查。爱荷华市是实行经理制的城市。市最高权力机关为市议会（City Council），有七名成员，其中一位为市长，实际上是名誉性的职位。市长叫约翰·麦克唐纳（John McDonald），就在学校对面的街上开眼镜店，常坐在里面为顾客修眼镜。他只在市议会开会或办公时才去市政府。</p><p>负责日常事务的是市经理。市经理下面有财政部门、房管部门、公共场所管理部门、消防部门、合作部门、计划部门、公共工程部门、交通部门、人事部门、警察局。另外，图书馆馆长、市 Clerk、市司法首长等不归市经理管。市经理雇有近 500 名常任职员，包括消防队、警察、图书馆职员在内。凡在公共部门工作的人都包括在内。另外，市政府还需要临时工作人员，每年大约在三、四百人左右，如冬天扫雪、夏天修整道路、修整草坪等。无论是官员还是职员、工人，凡在公共部门工作，都被列入文官名册。那么，这些人从哪里招募？怎么招募？</p><p>市政府人事部门的一位助理告诉我，所有的职位必须公开，向全社会任何人开放。对于妇女，少数民族和残疾人，政府不但不可以歧视，而且要采取比对待一般人更有效的措施，称为“肯定性行为”（Affirmative Action）。任何愿意承担这些公共职位的人都可以申请。</p><p>市政府如何使公众知道需要招募人员呢？市政府要通过各种手段，如在当地的报纸上发通告，通过专门的工作简报、登广告，在市政府办公楼布告栏里张贴广告，利用市的有线电视等。我在市政府人事部门的门口看到一些这样的通告，名称叫“爱荷华市市政府备忘录”。内容有:招募负责招呼学生穿越马路的人员，招募预备人员（顶替可能生病的职员）、招募计划人员、还有水利、滑雪、科学、学前艺术等方面的教员，图书馆助理和警察局长。招募通告和广告启事发送的范围，视该职位的高低而定；普通职位在市内发，重要一点的发至各州，更重要的，如市经理、警察局长，则将发至全国。</p><p>通告上要写明想招募人员来担任的官职的工作性质、工作职责、工作内容、工作时间、工作要求、工作报酬、开始工作时间、申请时间。我们来看一下两份具体通告：</p><ul><li>社区发展基金计划助理：协助管理社区发展基金计划，克服困难，准备基金申请、写报告、起草文件，负责调查研究，包括程序设计、数据收集、结果分析等。要求申请人员得到过政治学、社区研究、市区研究或与这些领域密切相关的硕士学位，在计划管理和发展、或城市住房和共同体发展部门工作三年以上。公共行政的硕士学位可以代替一年实际工作经验。要求具备出色的口才和书写能力，行政能力，能与公民有效沟通，懂得联邦、州和地方法律。申请者要具有爱荷华市的驾驶执照。</li><li>警察局长每年负责三百万美元的预算，管理 53 个人。爱荷华市有 5 万人，还有其他小城镇。候选人要求：具有在警务方面的各类能力，如预算、制定计划、长期规划、警务领导实践、尊重不同的看法和意见；懂得如何达到目标，预计问题；可以成为一位领导者，能协调全体成员；可以向市经理、市议会提出建议；有应付公众的能力；可以与受过高等教育的公众打交道；能与其他政府机构和谐相处；能与大学积极配合等，待遇：市政府提供 100%的医疗保险、牙医保险、生命保险，每月一天假期，每月一天病假，工龄工资 5 年后每年 200 美金，工资在 39,936 至 57,429 之间，配备一辆汽车，可能的选择程序：申请终止日期 1989 年 1 月 31 日，申请人要准备其他有关材料，最后的候选人由市政府出钱前来面试，查检有关材料，面试包括一组警务专家和其它有关方面人士的评价，还包括由爱荷华大学负责的一次考试。初选之后，还要对选中的人再作面试。</li></ul><p>广而告之之后，应试者会将材料寄来，人事部门将所有的申请集中在一起。待到规定时间，进行考试。考试有面试、笔试和实践考试等种类。面试主要是由一组人对应试者进行评价、当场提问题，面试者回答问题，然后进行选择。笔试较为复杂，要针对每一个职位设计考卷。这种考试如果笼而统之，结果会是无效。所以考试均针对专门的职位设计。考试包括知识、能力、应变等方面。不同的职位还有特殊要求，如警察局长，可能需要做神经和体力方面的检查，以保证精神状况正常和体力能够胜任这个职位。如果是一些具体工作的职位，如打字员、电脑操纵、铲雪车驾驶员之类，只要求应试者当场操作，以作评定。通过这样的过程选择最佳者。</p><p>我看了一份考消防队负责人的考卷，记得有下述这样一些问题：</p><ul><li>怎样理解政策发展？政策制定意味着什么？</li><li>能否制定长远规划？你怎样理解长远规划？</li><li>如果在你领导的部门出现财政赤字，你将怎么办？</li><li>你能否训练消防队员？如何训练？</li><li>你认为最困难的问题是什么？你将如何处理？</li><li>你怎样看待妇女和少数民族在工作中的作用？</li></ul><p>如此等等，大约有 30 个问题。每个应试人均得考试，当然是对担负一定责任的人而言的。然后评价这些考试结果，择优录用。</p><p>为了防范营私舞弊，所有的职位必须公开，不能由哪个人指定，市长和市经理也没有这种权利。市政府与工会有协议，即在向社会公开招收人员之前，须先向已被雇用的人公开招募，如果没有合适人选，再向社会公开招募。但这个过程也必须是公开的。任何部门领导，包括市经理、市长都无权直接任命。如果众多应试者觉得最后的选择不公平，可以采取两种方法有所动作，一是去法院，法院将审理这类案件；二是投诉联邦机构——公平机会委员会。同时工会也起一定作用。通过这样的机制保证选人过程公正。</p><p>由于公共部门依靠纳税人的钱而存在，所以他们得受纳税人的监督，同时纳税人也应有平等的地位来竞争公职。在对应试人进行选择时，规定不得检察婚姻状况、子女状况、宗教信仰、种族归类以及个人历史。只能检察与申请有关职位相关的东西。不得因上述原因而排斥任何人竞争公职。</p><p>自然，理论上说是这样，在实际运转过程中，总有不正之风。做官样文章的为数不少。任何制度和法规都会面临这类挑战，文官制度更是如此。</p><p>这里不必详细分析这套规定究竟在多大的百分比上实现了。从理论上说，这套体制有其利处：</p><ol><li>它保证了行政体制的相对稳定。文官成为技术工种，与政党竞争没有关系，政党换班不影响他们，他们可以一以贯之地管理社会各个环节；</li><li>它保证了政党竞争可以顺利进行。行政体制的运转，是冰山在水下的部分，政党竞争只是冰山露出水面的部分。如果政党竞争引起社会紊乱，便不能有效展开。文官制度这套机器，是美国政治体制的基石；</li><li>它保证了社会管理过程的技术化，现代社会的管理需要越来越精、越来越专门的技术人员，他们的能力不能低于工厂中的工程师和技术员，大量的问题都是工程技术问题，如果全体官员都卷入政治旋涡，便不可能组成稳定有效的技术干部队伍；</li><li>它保证了各个职位得到较有能力的人。不一定是最有能力的人，最有能力的人不一定愿意担任公职，因为报酬低于企业。但由于有竞争、考试和选择，选择的人员一般可以胜任。</li></ol><p>一个社会管理或治理的成功，在于这个社会怎样有效地使极大一部分人员技术化，专业化，使他们能长期稳定地研究和发展自己所管理的部门。同时，开放这些职位，让社会上有意者前来竞争，这样才能择优汰劣。开放的幅度越大，收罗的面就越大。象雷达一样，三百六十度扫描总比一百八十度扫描能发现更多的目标。要做到有关公职的充分开放，关键在于这些职位技术化的程度。这两者是相辅相成、密切相关的，美国政治的两重性在于，一方面是广泛收罗人才进入文官制度，另一方面又将他们置入政治势力的统治之下，这就有效保障了统治阶级的统治。</p><h2 id="8-国会人联络处"><a href="#8-国会人联络处" class="headerlink" title="8.国会人联络处"></a>8.国会人联络处</h2><p>美国的政治金字塔，自上至下，庞大而复杂。我们看到，这座金字塔，结构并不那么紧凑，但运转得平稳。而且各级之间并无特别大的冲突，整个体制得以维持。其实，在这座金字塔中，有条条线索把各个部分联结起来。我们可以看看国会如何与选民联结起来。</p><p>国会议员按选区产生，每个选区一名。爱荷华州第三选区现任的国会众议员（Congressman，直译为“国会人”）叫内格尔。国会议员的职责是联络选民，倾听本选区选民的意见，以各种方式帮助本选区解决各种实际困难，包括通过立法手段。</p><p>国会议员的主要职责并不在于全国性事务。当然，如果国会表决此类法案，他们也得有态度。他们的主要注意力在自己的选区。本选区的选民对他是否满意，是他能否当选或再次当选的前提。选举制度的功能在这方面是货真价实的。尽管人们只能在有限的人中进行选择，但无论是谁，要想进入国会大厦，必须有多数选票。这种机制迫使国会议员多多考虑本选区。</p><p>国会人在华盛顿特区有办公室，一般有 10 名以下的办公室职员帮助处理各项事务。每个职员有分工，有的管外交，全国性政治，有的管各种福利事项，有的管经济领域的事务，农业、工业之类。不过，华盛顿的办公室离本选区太远，无法联络本选区选民。所以国会人在本选区要设联络处（Liaison Office）。设几个联络处视选区大小而定。爱荷华州第三选区幅度较大，内格尔设了四个联络处。联络处的规模视所管的幅度大小而定。爱荷华市有一个联络处，主管约翰逊县。由于爱荷华大学地位重要，所以内格尔专在此县设一联络处。</p><p>何谓联络处？我去了爱荷华市的这个联络处。联络处设在一家银行的楼上，地处市中心。有两、三间办公室，地方很宽敞。联络处共有两名工作人员。整个第三选区的所有联络处的工作人员总共在十名左右。加上华盛顿的工作人员，一名国会人平均有二十名左右的工作人员。联络处以国会人的名义活动，他们发出的大部分信件都署国会人的名字，尽管他们可能是自己做的决定。</p><p>联络处主要干什么？实际上是一个帮选民解决问题的机抅。选民如有什么抱怨、困难、问题均可以找联络处。联络处虽然不是行政机构，但它们可以协调行政机构，以国会人的名义影响不同机构做出决定。联络处的主要活动包括社会保险方面的事务，退伍军人的待遇、丧失能力的儿童的抚养问题、移民问题、农业发展问题等。它们的任务就是帮助选民排忧解难。</p><p>一方面这是一种社会工作，另一方面也是国会人争取民心。接受访谈的工作人员告诉我，她怎样通过各种方法从联邦基金、州政府和其他基金中争取到钱来资助儿童，又怎样帮助想留下的外国人解决移民问题，说她正在处理一位波兰团结工会成员移民的事务。联络处利用国会人的声望，协调和游说，往往能解决不少问题。从功能上说，有点象中国的“上访处”。</p><p>国会人联络处，均由国会付工资，财政预算均在国会，因此，对行政机构有一定的独立性。领导联络处的是国会人。国会人每周往返于华盛顿和本选区之间，很多时间在本选区活动。如果一位国会人落选，他的联络处就会撤销，里面的工作人员需另谋新职。新当选的国会议员重新组建联络处，自然会起用在选举中出过大力的人。</p><p>在政治和社会生活中，国会人的联络处最一个十分重要的网络，它们将所有的选民联结在一块，国会人的功能并不仅仅是每年去华盛顿讨论一次国家大事，而是每天要处理各家小事。这套机制，从化解和缓和社会矛盾来说，有一定的功效。它们不是行政机构，在人们与行政机构打不通交道时，还可以找立法机构的联络处，联络处负责与行政机构打交道。自然，联络处的工作也是在法律范围内，不能逾越法律，除非国会人通过自己的努力制定了新的法律。</p><p>更为值得注意的是，国会人联络处的网络，实际上构成一个完整的信息系统。一个国家的立法机关如何立法？这是实际政治中至关重要的一个问题。立法机关只有得到充分的信息后才能制定出适应性较大的法律，同时能正确判断各项事务的轻重缓急，制定法律。如果没有一个完整的信息系统，每个国会人和国会如何能做出准确的判断？国会人联络处制度，加以现代化的通讯和交通手段，使这个信息网络有效地运转起束。此为政治和社会组织中的一个重要方面。</p><p>国会人依靠这套体制，同时也受它的制约。因为这套机制既在为国会人服务，也在检验国会人的活动。国会人是否胜任？是否尽了职责？是否有成绩？这套机制会告诉选民。有许多东西开始时是人们为了一个目标建立起来的，后来往往成为达到另一目标的工具。联络处既可收集民意，也受民意制约。</p><h1 id="八、软性治理"><a href="#八、软性治理" class="headerlink" title="八、软性治理"></a>八、软性治理</h1><h2 id="1-驾驶执照"><a href="#1-驾驶执照" class="headerlink" title="1.驾驶执照"></a>1.驾驶执照</h2><p>管理或治理一个社会，有两种基本的方法，一曰政治的治理，一曰技术化的治理，又可称之为软性治理。所谓软性治理，是指社会发展出一套有效的机制，通过经济的、文化的、习俗的、法律的手段来治理社会。政治的治理，带有较多的权力运用和强制色彩，会增加政治和行政系统的负担和责任。如果政治和行政系统能将一大部分责任卸去，又使该治理的事务得到治理，那么社会就有了较为成熟的管理体制。由政治治理引出的矛盾和冲突相应地也会减少。美国社会是一个私有制的资本主义社会，由于人们的设计和资本本身的力量，发展了一套软性治理方法，这构成这个社会稳定的一项条件。</p><p>在美国，公民没有特别颁发的身份证。美国人常用来证明自己身份的是驾驶执照。美国大部分成年人都有驾驶执照。如果没有驾驶执照，也可以去办驾驶执照的部门办一张与驾驶执照同样的证件，不能用来驾车，但可以用来证明身份。当需要证实自己的身份时（如开支票），就可以出示。所有的公私部门都约定俗成，认此物为准。</p><p>我也去申请一张“驾驶执照”，为了证明身份用。先打电话去问了一下，那边回答说可以，带护照去跑到那里一看，原来是州的运输部办事处。这类事情一般归州政府管。有不少人在那里申请。排了十分钟的队。轮到我，办事官员没有任何别的疑问，打开护照给她看，她抄下姓名，问了一下身髙、体重，看一下眸子的颜色，写下生日，便完了，大概二分钟。</p><p>然后到下一个办公桌核实一下，再转下一个办公桌，输入他们的电脑，收去五美金。这个办公人员大概用了一分钟。下一位拿出一张打印好的单子，上面有我的性别、眸子颜色、体重、体高、发照日期、生日、以及地址、编号，然后再给我签字。签完字后，在旁边一张椅子上坐下拍照，也只消一、二分钟。第三位办事员让我坐着等一会儿，说要冲洗照片。等了两分钟，他拿来了执照，照片以及前面提到的数据全部印在一张纸上，密封在塑料壳里。前后五至八分钟。这张执照可以当“身份证”用，在全美都可通行。前前后后没有人问我，为什么要办这张身份证？也没有人规定说外国人不能办。</p><p>我与爱荷华大学政治学系的一位教授讨论这个现象。他说这是传统。美国人不喜欢政府管他们，绝对不能接受政府给每个人一个号码。其实，每个申请工作的美国人，甚至外国人都有一个联邦政府税务局给的社会保险号码。在不同的政治文化下，各国的做法不同。如法国政府在每个婴儿出生时就会给他一个号码。</p><p>美国人需要证件，是因为自己在生活中需要，如银行、付帐或者驾驶车辆，什么地方发这种证件呢？最多的是运输部，因为没有车很难在美国长期生活。他说美国人绝对不能接受警察局发证件，这样会给警察局太大的权力。其实电脑系统十分发达，警察局可以很方便地使用运输部乃至其他各类机构储存的有关公民的个人数据。恐怕走到任何地方警察局都有办法根据你的执照通过电脑查明情况，我想起前年有一位留美学者回国后告诉我，有一次他离开他所在的州外出访问，主人安排访问一个县的警察局，警察局给他看了电脑系统。陪同的警察局长问他要了这张“执照”，将有关号码输入电脑，马上就在电脑屏幕上显示出了他的详细情况，包括年龄、国籍、出生年月、职业、有没有犯罪记录等，使他大为惊讶。</p><p>不论怎样，“身份证”由运输部发不由警察局发是个非常有趣的政治文化现象。这说明美国人对警察局这样的强制部门的戒心。县警察机构的首脑是选举产生的，不是任命的，这里面也表明一种制约其权力的愿望。</p><p>运输部门办理此类证件不问更多的问题，只需要申请者拿出合适的证件，证明在 18 岁以上。18 岁以下的申请，需要父母同意。办理这种“身份证”的部门，可以接受各种证件：其他州的执照，出生证明的复印件或原件、护照、移民文件、保险文件等。他们需要这些文件只是为了看看申请者的名字和出生年月，Showing your full name and birth date（指明你的完整姓名和出生年月）。</p><p>美国人时时都在保护自己的心理安全感。从前面的分析可以看出，这只是一种“心理感觉”，因为警察局完全可以通过电脑系统查询资料。但这种“心理感觉”的永恒念头，应当被视为政治生活中的一股持久的动力。真正的问题是怎样使老百姓感到放心，又使政府管理灵便。</p><p>从这种“身份证”或“驾驶执照”的办理手续上可以看出，这里重要的不是哪个部门颁发它们，而是每个人都有一张“身份证”，政府的电脑系统中有了公民情况的数据。只要需要，政府的任何部门依然可以使用这些数据。总之，虽然表面上无人控制，其实社会自然处在政府的严格控制之下。</p><p>政府在编织这个网络时，并不刻意强调这是警察局份内的事，而是强调为民众服务。发放“驾驶执照”即可做驾驶证件，又可作“身份证”，一举两得。同时在社会生活的方方面面，时时刻刻，“身份证”是不可缺少的，因此又是政府向民众提供的一种方便，这样人们就会自觉自愿地去领“身份证”，加入这个网络，因为它的确有用。</p><p>这套做法的另一个特征是，它把各种证件系统统一起来，一卡多用。有了一张“驾驶执照”这样的“身份证”，便不需要其他的什么证件，简化了手续。“身份”证明系统形式上是非政治化的，但它和政治化的“身份”证明系统有相等的功能。</p><h2 id="2-工厂的原则"><a href="#2-工厂的原则" class="headerlink" title="2.工厂的原则"></a>2.工厂的原则</h2><p>对美国工厂很陌生，因而很想去走走。我知道哈佛大学教授傅高义写过一本书——《日本名列第一》，比较了美国的企业管理和日本的企业管理，想从中找出日本战后令人瞠目结舌的经济奇迹的成因。我们在这家工厂原经理杰克·纽曼的陪同下前往工厂。</p><p>这家工厂是 The Procten and Gamble Company 在爱荷华市的分厂。这家公司现在是一个世界性的大公司，建于 1837 年，当时只是一个很小的生产蜡烛和肥皂的工厂，总部设在俄亥俄州。如今已不需要生产蜡烛，公司主要生产洗涤用品，如著名的 Tide 洗衣粉和洗衣剂，另外还有 Crest 牙膏。我在新加坡和香港时，也看到满街都是这种牙膏。除洗涤用品外，还生产一些食品、药品。</p><p>公司全力以赴推出新产品，近些年来又在生产风行的纸尿布。公司象大多数公司一样，为了追求最大的利润，不断创新，不断推出新产品，公司在全美国设有五十多个分厂及研究和发展机构，爱荷华市的分厂只是这五十几个分厂中的一家，另外，公司还在 45 个国家和地区有业务活动。</p><p>这种跨国的组织是美国经济的典型方式，也是美国人企业精神的一部分。美国企业只要有可能就愿意在国内外开设分号，并且十分留意来自这些活动的统计数据。各跨国公司之间，也常常为这些数字展开竞争。在企业方面，美国思维不仅仅注重挣钱，还注重名望。花钱买名望在美国人中很流行，这种心态支配着美国人的许多行为。</p><p>该公司在 1850 年至 1859 年，大约有 80 名雇员，销售额达到一百万美元，到 1930 年，销售上升到两百万美元。翻一番花了差不多 70 年的时间。1956 年，销售额上升到十亿美元，可见战后发展速度之惊人。到八十年代前夕，公司已拥有五万九千名雇员，销售额达一百亿美元。这种上升速度是惊人的。实际上，所有经济发展都有一种现象：最初的发展往往是缓慢的，但达到一定规模后，便会突飞猛进。国家和地区的发展是这样，工厂和商业的发展也是这样。从国家和地区来说，日本是最明显的例子，新兴工业地区大部分都有这种经历。</p><p>爱荷华市的这家厂雇有五百人。在自动化程度较高的工厂中，五百人算是不小的厂，生产牙膏、漱口水、洗头膏等产品。新任经理接待了我们。这位经理在工厂工作已有二十多年，拿到硕士学位后就来工厂工作，其间转战该公司的各家工厂，以增长经验和才干，然后被派到沙特阿拉伯的分厂做经理。经过这样一个过程之后，才被提拔为这家厂的经理。在这家工厂中，成为中层管理者需要一个先决条件，就是大学的硕士文凭，而且应该是化学方面的。然后在实践过程中反复锻炼，再从中挑选有发展前途的人出任领导职务，傅高义说日本管理是缓慢的提升，美国是快速的提升。在这位经理身上却相反。这保证了升为经理的人有管理经验和才干，同时懂行。对培养一位优秀的经理来说，文凭和实践缺一不可。</p><p>这家工厂的管理方式引起了我们的兴趣。在会客室的墙上，挂着一只镜框，镜框里的内容十分有趣，抄录如下：</p><p>我们中的每一个人都是公司的所有者。我们应当遵守下述原则：</p><ul><li>我们在任何时候都将安全操作。我们将提供安全的工作环境。</li><li>我们将诚实和正直地工作。</li><li>我们将把每个人当作个人来关心。我们将以值得尊敬和信任的方式行动。</li><li>我们将主导自己和工作，将自己追求杰出。</li><li>我们将共同为共同的目标和长期推进而工作。</li><li>我们将承认企业和个人的需要都很重要。我们将为两者而工作。</li><li>我们将理解我们的企业，不断支持它。</li><li>我们将聪明地利用人力。我们将发展和保持必要的专业知识和灵活性。</li><li>我们将提供有效的训练以推行工作。</li><li>我们将鼓励和支持个人的成长。我们将寻找激发个人成长的机会。</li><li>我们将公正报答。我们将承认个人对企业作的贡献。</li><li>我们将有效地沟通。人们将得到他们需要的信息。</li><li>决策将由对每一局势有最好信息的人作出。</li><li>我们将鼓励创新和知识，将从成功和失败中学习。</li><li>我们将成为社区中一个负责的公民团体。</li></ul><p align="right">爱荷华市分厂，1986.11</p><p>这是一个非常有意思的企业宣言。它制定于 1986 年的 11 月，看上去不太符合传统的企业精神，比较强调号召，强调与企业一家，类似于日本的企业精神。但同时它又十分强调传统精神：个人的地位。从历史眼光视之，它也反应了企业家与工人之间协调矛盾达到的一个程度。这样的条文在五十年前的西方恐怕是不能想象的。今天资本主义制度产生的最新变化值得重视。</p><p>另一方面，科学技术的发展，已经使生产过程性的规定显得无足轻重，如不迟到，不早退，完成多少产品数量，保证质量等，我们姑且把这些规定称为硬规定，即用以调节生产过程的规定。在生产不发达的社会中，这是必不可少的。马克思在写《资本论》时，可以列举许多实例，原因在此。</p><p>但在生产发达的社会中，自动化、电气化、电子化使这些规定显得多余，而软规定却显得重要了。软规定主要协调人们的精神和心理状态。自动化流水线的每个环节，是强迫每个工人服从的。我们在这家工厂看到多条流水线，速度之快令人目不暇接。工人的工作量很大。这叫做“非人化的强制”。从心理上说，“非人化的强制”比“人化的强制”容易接受。马尔库塞对当代资本主义的分析很值得探究，尤其是它讲的现代化大生产在人们心理上引起的变化。怎样协调人们的心理和精神状态成为一个至关重要的问题。这份“公约”里面有不少马斯洛的心理学，看上去是一目了然的。</p><p>由于自动化，管理变得简单，加之企业有辞去职工的权利，整个管理显得较为有效。看一下这家工厂辞退的人就可以看到现代化给管理带来的便利。退休的经理告诉我们，辞退的人有的是偷别人衣物箱中的东西，有的是在自助商店中不付钱。这些都是非生产性的原因。资本主义的发展用技术解决了劳资可能在技术上发生的冲突。这既是社会矛盾缓和的条件，又是企业发展的条件。美国企业不民主的过程已经技术化了和自动化了。用马尔库塞的话来讲就是合理化了。剩下的是协调人们的内心世界。不过人们的内心世界似乎难以协调，因为不合理的东西的合理化在不断地悄悄压抑人们的心灵，这个进程随着现代科学技术的发展，还会强化。这将是西方社会在很长时期内都会面临的难题。</p><h2 id="3-企业不民主"><a href="#3-企业不民主" class="headerlink" title="3.企业不民主"></a>3.企业不民主</h2><p>在一位朋友家做客，吃饺子。在美国这算一种高级“享受”。到了美国之后，处于“汉堡包”，“热狗”，“炸土豆”的重重包围之中，人们才会感到，吃饺子和榨菜之类属于一种高级享受。不少中国人来美国许多年，还是不习惯吃西餐。这大概也算中国人的一种“劣根性”吧。</p><p>席间谈到打工。朋友的太太在不少地方打过工。为了能够生存下去，不能不打工。她的第一句话是:“打工真的累死了，我都哭过好几次了，真的打不动。”我感兴趣的问题不在于累与不累，而在于在经济领域中怎样进行管理，怎样逼得人去工作，逼得人感到“累死了”。</p><p>她说管理得极严，在工厂、企业等部门，上司是绝对的权威。有的上司很凶，大家都怕。她现在在校园中打工，负责打扫教学楼。每天下午 5 点上班，深夜 1 点下班，因为要在学校中人少的时候打扫教室。她说监工管得非常严，并且交待每份工作应当做什么，做到什么程度。一切都有明确细致的规定。监工负责检查，如果不符合要求，就会开条子让工人重做。再不行，就打发走。</p><p>监工随时随地都会出现在工人面前。监工什么时候来，没有准，只要被他看到有人在休息，或在说话闲谈，就要被找去谈话，加以警告。再来一次，就要打发。在监工面前，绝对得服从。</p><p>在监工之上还有一层。监工之下也有一层，有一个包工的人把负责整个楼的打扫包下来，然后分给下面的人。对于分配的工作，下面的人一定要完成，如果觉得不公平，理论上说可以找上司谈话，谈得不行，可以再找上司之上司。但在这期间，分给你的工作必须完成，若不完成就可能被炒鱿鱼。因此，从整个经济活动组织来说，管得非常严。这一方面是其生产率高的原因，另一方面也是其社会生活自我组织的重要条件。</p><p>另一个值得注意的因素是现代化给管理带来的便利。这位朋友的夫人说，监工们都带着对讲机，随时与再上一层的管理者联系。监工一面巡视，一面可以接受上级的指示。另外，在有的建筑里，有摄像镜头，工人的一举一动都尽收眼底。其最强大的力量就是金钱，因为一旦涉及炒鱿鱼，找工作也十分困难。因为新的雇主要问为何原来的工作不做了，有可能打电话给申请工作人原来的雇主。在美国这个社会，如果找不到工作，生活将会十分困难。生活的压力，金钱的魔力，管理的权力，都促使做工的人全力以赴，小心翼翼。要做就得真出力，实打实。</p><p>社会生活圈中的这种严格的管理，是社会有机运转的一个组成部分。私人企业和公司管理着社会大部分经济运行机制。公共部门基本上也是用这种方法进行管理。最重要的力量就是金钱的方量。金钱的力量是不可抗拒的，但并不是所有的金钱都会形成这样的力量。金钱只有达到一定的数量，才会产生力量。只要工作，都可以得到较高的报酬，如：洗碗每小时 3-6 美元。洗十个小时，取中线，可以挣到 40 美元，按官价折算，差不多 160 元人民币（当然，工资的高与低，仅以收入的数额或从与他国工人的工资相比来看并不能完全说明问题，必须同支出的比例以及通货膨胀率相联系才能看得更清楚）。如果每小时只有 1 美元，可能大部分人就不会把怎样工作当一回事了。只要工作，大部分都有份较好的工资。这样他就不愿意丢掉工作，但要不丢掉工作，就得兢兢业业。这样社会就有了强大的协调力量，而不需要政府来协调。只有在劳资冲突或社会矛盾超出一定界限之后，政府才会加以干预。</p><p>通过金钱的力量来管理社会，很少讲思想教育。当然，我们可以说这保证了资本家对工人的盘剥。实际上，资本家及企业就是为了得到利润，这套管理方法也保证他们能达到目的。其实这种管理精神不仅体现在经济领域中，政府公共部门也是采用这种管理方法的。社会的其他机构也如法炮制。这种管理造成一个机制：在社会经济事务中的严格高效的管理。应该说，这构成其政治民主的一个基本条件，因为政治统治的具体领域很有限，大部分领域被私人企业的超政治活动包罗了，动荡和波折不至牵动整个社会。而在体制和权力相对集中的国家中，政治或政策变动牵一发而动全身。</p><p>美国的管理方法与中国传统不一样。美国人的管理是死板而严格的，中国传统讲究灵活而机动，这样才显得富有人情味。美国人认为前者是天经地义，中国人认为后者是天经地义的。有一位在美国公司里做二把手的台湾人告诉我，他向美国人讲清楚，他是中国人，愿意按照中国人的方法来管，如果诸位美兄不合作，他只好采取美国人的方法，何去何从，悉听尊便。这在某种意义上说明，中国人接受美国的管理方法是困难的，在心理上会感到不平衡，可能人际关系也无法协调。中国社会走什么样的路才能为政治发展创造一个较好的社会的组织机制，十分值得探讨。</p><h2 id="4-人类服务"><a href="#4-人类服务" class="headerlink" title="4.人类服务"></a>4.人类服务</h2><p>社会服务（social service），或称人类服务（Human service），是当代西方社会福利政策中的主导内容。我始终觉得，社会福利是西方社会不可忽视的稳定机制，它化解了各种过去难以化解的矛盾。马克思、恩格斯、列宁描绘和批判的资本主义社会的非人现象，如今已经由政府出面解决。自然，这样一个结局，是在社会矛盾激化后才形成的。但是，这个机制一旦形成，就会对整个社会制度的稳定和持续产生预想不到的作用。</p><p>我去参观了一个县的人类服务机构。走进该机构，看到一些人在等待接见。看上去是些穷人，有的是怀孕的妇女，有的是带着孩子的母亲。该机构的主任 F 接待了我们。</p><p>这类人类服务组织各州都有。我们来剖析一下爱荷华州的组织结构。在州一级有一个人类服务部，州下面有八个区，每个区又分若干县。这个县属塞达·拉比斯区。在州一级有一位专员（commissioner）负责人类服务部，专员隶属于州长，同时还存在一个人类服务委员会。州一级的机构有退伍军人之家、精神健康和社会服务三个部门，负责提出政策，组织计划和提供服务。同时还有一个社区服务处，由一位副专员负责，管难民、自愿者、区和县的办公室；组织计划处，也由一位副专员负责，管沟通、计划发展和计划协调；管理和预算处，管财务、法律事务、人事、训练、计划评估等事务。人类服务委员会制定政策，并建议人类服务部如何工作。社区服务部管理八个区的机构和 146 个地方办事机构。人类服务部的目标是什么呢？人类服务部自己的文献表明：向遇到个人、经济或社会问题的爱荷华人提供人类服务。该部的主要责任是帮助个人和家庭成为自食其力的个人和家庭，增进爱荷华人的福利。</p><p>这个目标的确定有其指导思想，我们可以来分析一下：一个良好的家庭是所有个人成长和幸福生活的基础，因此人类服务部着重促进家庭的团结和人的发展；提供服务的方式应保护私域（Privacy）、促进个人尊严，并使个人能够完全控制自己的生活。可以看出，这个目标深受美国精神的感染，当然其作用就是促进和维护美国精神的发展。</p><p>人类服务包括哪些方面呢？给没有生活自理能力的人提供服务，给精神病人提供服务，这是任何社会都会做的。值得注意的是，它更注重人为造成的社会问题，而着力化解这些矛盾。我们可以看几个方面。其服务一个主要方面就是发食品券，为那些没有工作、没有收入的人解决温饱问题。食品券可能因多种问题产生，如失业、早孕等。该机构还负责照料早孕的女青年，帮助“单身妈妈”（Single Mother），鼓励她们返回学校，完成学业。</p><p>再就是照料被虐待的儿童，尽管美国说起来是个文明程度很高的国家，但虐待儿童的事端不绝于耳。F 女士告诉我们，去年他们这里有一百起有实据的虐待儿童的事件，有两个变成终身残废。很多孩子的残废是被打出来的。再有就是照料被虐待的成年人，大部分是妇女，美国人打老婆遐迩闻名。该机构还提供医疗资助。尤其是其在社会问题方面的服务，起到缓冲器的作用，使本来可能冲击社会制度的力量，在这个环节上减弱了。其社会功能不说自明。</p><p>社会服务起到了法律调节和政治调节起不到的作用。法律调节和政治调节在理性范围内是行之有效的。而社会上濒临绝望的人往往会丧失理性，他们不会理会正常的调节手段。社会服务的作用就在于把人们保留在理性界限内，不使他们出格。</p><p>由于社会服务有这样奇妙的功能，政府的投资也很大。当然，反过来的牵制力量是，由于社会矛盾已经达到这样的程度，必须投资。我们先来着一下塞达·拉比斯区的财政报告：1987 财政年度，儿童帮助财政开支为 1.68 亿美元；食品券开支为 1.08 亿美元；医疗资助达 4.12 亿美元，这个区一共有 43 万人口，此间的比例不难算出。</p><p>还可以看得更细一些。让我们看看这个县的情况：人口约 16,000 人，与中国相比，几乎是荒凉之地了。1987 年财政年度，用于儿童资助的费用近 32 万美元；失业家长费用，6.3 万美元；食品券，27 万美元；医疗资助，14 万多美元；州附加补助，6 万美元；临时紧急食品资助，7.6 万美元；领养服务，20 万美元；购买服务，10 万美元；儿童补助，16 万美元；行政费用及工资等，14 万美元；行政开支，9500 美元。多项费用总计达 270 万美元。而州在这方面的全部费用达 8.39 亿美元。真是惊人的数字。这从一个角度反映了社会问题积重难返。</p><p>这笔财政费用 57%来自联邦政府，43%来自州政府。由于社会服务对社会稳定具有至关重要的作用，这笔钱不能不出。试想一下，停止全社会服务计划，会是什么景象。不过，这笔开支日益成为纳税人的一个沉重负担，围绕它的争论将越演越烈。</p><p>说起来，可以将这种服务追溯到十六世纪的英国。据说 1500 年左右，英国有这样的做法，保留一部分土地，照顾穷人。这个传说也随着“五月花号”船来到美国。F 这样解释道。也许不错。但更重要的是为什么会有穷人？因为“五月花号”来到时并非无穷富的明显差别。制度产生了穷人，也就产生了否定自己的力量。统治者必须想方设法转化这种力量。看一下美国二次大战后的历史，得出这样的答案不难。</p><p>很多人强烈主张削减这笔费用。不过动起真格来，谁也不敢贸然行动。人类服务计划已成为社会制度不可分离的部分，少了它就会失衡。真正严重的问题是：美国社会没有停止制造否定力量，反而越产越多，而人类服务对此又只能转化，不能消除。长此以往，这项功能总有一天会达到极限。但对美国来说，已没有其他的选择，这项选择是防范政局可能的动荡不得不做的。</p><p>对任何社会都一样，没有一个社会有能力解决所有人的各种问题。一个社会如要追求长期稳定，这应该建成能最大限度解决社会和个人难题的机制。对很多社会来说，危机的原因并不在制度，而在一些非常普通的事情：人们能否吃饱穿暖。</p><h2 id="5-可口可乐总部"><a href="#5-可口可乐总部" class="headerlink" title="5.可口可乐总部"></a>5.可口可乐总部</h2><p>可口可乐（Coca-Cola）可谓世界上数一数二的大公司。近年来，它在中国也获得了极大的市场，家喻户晓。在讨论“超前消费”时，可口可乐就被当作一个典型的例子。可能这里指的是易拉罐，而非里面的饮料。全世界的人都在接受可口可乐。想从这家举世闻名的公司来观察美国社会的组织。</p><p>可口可乐公司总部坐落在亚特兰大市。这样知名的公司，其实总部的办公室并不大。一幢旧的楼十五层高，还有一幢新造的建筑。在摩天大厦林立的城市中，可口可乐公司可算不起眼了。可是就是在这个地方，人们指挥着遍及世界的可口可乐。可口可乐公司总部 1987 年年度报告的扉页上写着：</p><p>可口可乐公司的精神就是向饥渴的世界出售饮料，每天有 5 亿多人畅饮可乐……</p><p>这里没有提到钱，其实可口可乐公司的精神就是通过销售饮料来盈利。我们来看一下 1987 年度该公司的财政情况：营业总额 76 亿多美元，大概超过不少小国家的国民总产值；营业收入总额为 13 亿多美元；净收入为 9 亿多美元。可口可乐公司从一开始的一间小作坊，发展到今天这样大规模的穿越五大洲的跨国公司，是许多大公司走过的共同道路。可口可乐如今已经遍及世界 155 个国家，该公司占世界各种“软饮料”（softdrink）销售额的 44%。该公司雇用的职员有 17,000 人。全球可口可乐系统的全日制雇员为 50 万人，非全日制雇员也有 50 万人。可口可乐公司指挥着这一百万人的大军在世界上活动。仔细想一想，有没有政治意义？或者更广大的意义？</p><p>我参观了可口可乐总部。公关女士陪同我们参观，她似乎与最早的可口可乐家族有什么关系。可口可乐办公楼里，挂着不少名贵的画，有现代派的，也有古典风格的。这是可口可乐公司的一项政策，收集艺术品，待到若干年之后，它们将更有价值。在办公室的大厅里，悬挂着 155 个国家和地区的国旗，表示可口可乐已经打进了这些地方的市场。在旁边有一块电子显示牌，自动显示纽约股票市场上可口可乐股票的价格。由于可口可乐销路大开，股票价格不断上升，势头不错。公司的职员一般也都购买自己公司的股票。</p><p>走廊里还陈列了不少三、四十年代可口可乐的广告，其中有许多是一位艳丽的姑娘各种姿态的形象，大概是当时知名的一位歌唱演员或舞蹈演员吧。石啸冲教授说，解放前上海就有这些广告。公司还将世界各地分厂赠送的礼物陈列在下面。我们看到了中国厦门可口可乐厂赠送的礼品。</p><p>导游带我们参观前董事长的办公室，据说平时是不让人参观的。在这间办公室里，其他各类礼品且不论，仅墙上挂的美国好几位总统的签名照片就足以说明可口可乐公司的地位。美国人十分注重这种荣誉。名人照片挂在墙上是一种荣耀。这一点恐怕是人的最大缺点，世界通病。</p><p>可口可乐公司发了大财后，除了扩大再生产外，还把相当一部分资金捐赠给教育和学术机构。这一点是我最感兴趣的。亚特兰大周围的一所大学——爱摩里大学就从可口可乐公司得到不少资金，这几年迅速成长了起来。我们在这所大学访问时，那里的校长曾告诉我们，由于可口可乐公司的赞助，学校这几年大有起色。的确，校园中矗立起一幢幢漂亮的新楼。学校财大气粗了，可以花重金聘请有名的教授，也可以通过颁发奖学金来吸引好的学生。大公司有这种传统，乐意向学术机构和基金会捐赠大笔的钱。当然政府税收政策上对此也有调节。我们可以看看布鲁金斯学会（见第十章第2节“布鲁金斯学会”）。</p><p>布鲁金斯学会 1987 年的财政中，政府拨款只占 8%，私人捐款达 39%；会费和书报收入，31%；赠款，27%。这样还不能得到数量概念，我们再来看美元数额：政府，45 万美元；私人捐款，600 万美元；会费和书报收入，485 万美元；赠款，410 万美元，总数达 1,540 万美元。这是一个思想库得到的收入。这样的机制，思想库怎么会不发达呢？如果所有的思想库都要由政府来负担，恐怕很快就会出问题。一是可能出不了思想，因为政府出钱的话，政府就可以影响它。另一个是在财政上政府不能负担这样多的思想库。如果思想库只剩下一个或少数的几个，没有真正的思想竞赛和较量，恐怕也不能造成思想奔涌的局面。</p><p>由此引出另一个值得重视的问题，也就是我在前面提到的特大公司的政治意义。可口可乐公司管理着近一百万人，管理着美国境内外数以百计的工厂，实际上治理着这些人。把美国每个跨国公司或私营企业管理的人数加起来，就会明白这在政治管理上的意义。因为如果这些公司和工厂都属于政府，需要政府来具体管理的话，政府将会增加许多负担。从管理原理上说，政府也没有这样大的能量。</p><p>在资本主义社会中，私人企业追求自己的目标，会用一切可以运用的手段来治理，政府的作用则在于调节私人企业。这样就完成了对人的管理的两重化：社会的自组织系统和政府的自组织系统。政府系统只从上面管制社会的自组织系统，但不陷入其中，因而政府的负担不重。社会的自组织系统有一整套规则、程序和运作，它们的运作是稳定的。政治的变化往往不影响这一整套机制的运作。它们在运作中追求自己目标的同时，推动了社会系统的运转。这是一种政治制度的基础，或者说是美国这种政治制度的基础。美国大公司的作用恰恰在这两方面。这种非经济的作用，大公司本身也没有意识到。如果它们有意识地做这些事，那恐怕会是另一种景象：政治不稳态。</p><p>可口可乐是从一座破陋的作坊里发展出来的，其他大型公司也一样。在这个过程达到一定水平时，政治体制和社会制度便趋于稳态。这便是政治和经济的关系。</p><h2 id="6-上帝在人间"><a href="#6-上帝在人间" class="headerlink" title="6.上帝在人间"></a>6.上帝在人间</h2><p>美国社会的宗教，或曰宗教生活，是社会生活的一个基本组成部分。宗教是许多人生活的不可分离的部分。理解美国，不能离开理解美国的宗教生活。进入任何社区，城市也罢，乡村也罢，映入眼帘的必然有大大小小、形形色色的教堂。在一个城市中，教堂之多，往往达到令人惊异的地步。</p><p>并不是所有的美国人都信宗教，甚至可以说并不是所有去教堂的人都信教。信教和去教堂的人，大有不同。但不论出于什么样的心理动机和社会动机，他们走进教堂里来了。圣诞节更是宗教生活和宗教情感的体现。圣诞节纪念耶稣基督降世，但这个节日早已世俗化，成为民间的一个节日。同时它也还是一个宗教节日，宗教组织在这个时期会组织各类活动。非宗教组织也一样。</p><p>我圣诞节前夕去听了一个市交响乐团举办的专场音乐会。这类音乐会每年举行一次，唱大致相同的歌曲，均是赞美诗，歌颂救世主。这次的音乐会上演出了亨德尔的《弥赛亚》（Messiah，救世主之意）。当唱到其中一首名叫（《哈利路亚》）的歌曲时，按乔治二世以来的惯例，全场起立。《哈利路亚》即赞美主：“这个世界的王国变成主和基督的王国，万王之王，万主之主将世世代代统治我们。”不少美国人在心理上依赖宗教或宗教组织，这造成宗教在美国社会势力强大的局面。</p><p>美国人信教，但差别很大。虔诚的教徒有之，他们仍为真正的信徒，怀着非常严肃的崇敬心情来敬仰上帝。他们每周日去教堂望弥撒或做礼拜，积极参加教会组织的各种活动。在家庭生活中，他们也延续传统的家庭宗教生活。我曾在一位相当有地位的金融界人士家中做客。他们在吃晩饭时还要做祷告，主客人拉着手，由其女儿用拉丁文念了一通祷告词。</p><p>有的人家也每周日去教堂，但并不信教，并不 Religious（虔诚）。他们习惯于去教堂，每次必去不可，不去便会感到若有所失。我与一位神学教授讨论过这个向题。他说，真正信教的不多，大部分去教堂的人并不信教。但他们可以在教堂里找到一种生活方式，形成一个生活圈子，见到朋友、熟人，可以聊天，可以有一种团体生活。另外有些人保持与教会的密切关系，是因为教会的慈善服务。教会进行大量的慈善活动，不少穷人和有难处的人受惠于教会，自然也与教会保持着较为密切的关系。总之，有众多的人走进教堂，但在情感、认识和目的上有所差别。</p><p>宗教之所以能产生这样强大的影响，很重要的一条，就在于宗教的世俗化。宗教活动没有那样多的神秘色彩，与中世纪的宗教活动和宗教组织已大为不同。不少大型的现代化教堂均十分摩登，完全没有旧时教堂尖顶塔搂的风格，而呈现出一种现代化的情调。不少现代化风格的教堂成为争论的对象。教堂里富丽堂皇，青松翠叶装饰。上帝和基督大概连想都不敢想。</p><p>宗教组织同时也利用现代化的传播工具传播宗教。几大电台星期天都播送祷告节目，传至千家万户。由著名的牧师主持仪式，所传播的也大多关及每个人日常生活之烦恼与需要。有时候讲一个人如何能成功，有时候讲一个人为何应与他人和睦相处，如此等等。所有题材，都与《圣经》中的语录联系起来。在汉城举行奥运会时，一位著名的牧师在汉城举行祷告，向美国直播，主题是：“在你要求之前，我就会满足你。”这是《圣经》中的话。牧师说，为什么奥运会期间汉城有这样好的天气，是因为上帝在人们请求之前就满足了人们的这个愿望。如此等等。现代化的大众传播媒介把宗教文化传播到四野八荒，这是十七、十八世纪的传教士所不能比拟的。由于大众传播媒介的强大力量，人们不知不觉地接受了宗教文化，耳濡目染。</p><p>宗教产生强大吸引力的另一原因是宗教组织组织了大量的慈善活动。宗教组织有自己的慈善事业，是非赢利性的，经费来自信徒的馈赠。宗教组织往往非常富有，因为不少信徒为了拯救自己的心灵或表明自己的虔诚，大把大把地向教会捐款。这些款项不需收税，由教会支配。教会组织各种慈善活动，救济穷人。如一个教会每周四供应免费午餐，任何人都可以去畅怀大吃。每逢过节，如感恩节，圣诞节，教会便会安排来自外国的学生到美国人家中做客。教会也往往组织旅游，费用很低，在外面住在教徒的家中。诸如此类的活动教会做得不少。在美国这样一个私有制的国家中，政府承担的责任有限，不少无依无靠的人均投入教会怀抱。教会与其他类型的组织，共同吸引着这层人，这是美国社会组织结构的一个重要方面。</p><p>美国的宗教也是五花八门，无奇不有，各式各样的宗教，名目繁多。美国人一般对一种宗教与另一种宗教究竟有什么差别并不关注。他们弄不清究竟有何本质不同，他们只是依从一种宗教，这就足够了。宗教组织多如牛毛，有时候几个人也可以宣称自己信仰一种与众不同的宗教。宗教自由在宪法上受到保护。任何人宣布自己有一种宗教，是其他往何人不能禁止的。哪怕有一天一个人说本人创立的宗教相信蜜蜂为世界的天使，别人也没有办法，只有不信他。由邪恶宗教引起的悲剧不是没有。如琼斯创立的人民圣殿教，最后强迫九百多名信徒在奎亚那集体自杀，一时震撼世界。</p><p>宗教组织和宗教活动并非只具有狭隘的意义，它们同时也有广泛的社会意义。宗教组织的庞大和活跃，宗教活动的繁多和广泛，本身就构成一个重要的社会机制。这套机制联系着成千上万的人，协调着成千上万的人，因而有着不可低估的社会功能。说它有社会功能是指它们在公共生活中起着一定的作用。罗宾·洛温（Robin W·Lovin）在《宗教和美国公众生活》一书中的分析是：（一）宗教可以起维护秩序的作用，宗教保证着权威的模式和民众必要的服从，使得有组织的人类生活可以继续。没有宗教的社会是处在混乱边缘的社会，宗教告诫人们服从上帝和世间的秩序；（二）宗教生活维持并保护着人们的自由。宗教生活对公共生活的最大贡献就是自由。美国的宗教与欧洲有不同的发展历程，它一来到这块大地上就信仰自由，而且是为了逃避宗教迫害而来到这里。宗教共同体竭力保护自己的自由，同时也保护了社会的自由，因为没有社会自由，宗教自由也不会存在。宗教自由给人们一种信念，促使人们在公共生活中也追求自由；（三）宗教生活促进了社会正义。因为宗教传播上帝的福音，宣传平等，这种精神促进了公共生活和政治文化的发展。他认为，此三点，为宗教与公共生活之间的三个基本关系。</p><p>细观宗教之功能，我们可以说，洛温的意见并不全面，宗教有社会功能是显而易见的。但宗教的问题也是显而易见的，不能讳言。问题是在不同的文化和社会条件下，这种功能有大有小。归纳这些社会功能，从社会政治管理的角度出发，可以说宗教有三项基本功能：</p><ul><li>能够构成一个强大的社会组织系统，它能独立地按照自己的原则管理归依它的人们；</li><li>能够构成一个道德价值系统，指导和协调人们的行为；</li><li>能够构成一个有力的辐射系统，可以将自己的活动和观念传及社会整体。</li></ul><p>当然，以上三项功能只有在一定的条件下才能发挥正向的社会功能，否则往往贻害社会。在不少社会中，宗教是社会动乱的主要原因。宗教要发挥正向的社会功能，需要两个前提：</p><p>其一是宗教的非政治化。宗教不能成为政治的工具或成为政治的主宰。中世纪的状况是后者，表现为一种愚昧的专制；现代有些国家实践前者，表现为一种专制的愚昧。</p><p>其二是宗教的非迷信化。宗教不能成为迷信，成为迷信就会发生火烧布鲁诺，将童男童女送于河神，求神寻丹的荒诞行为。迷信与宗教是两个不同的领域；宗教更多的在于个人的道德情操修养，追求自律和奉献，迷信往往要求个人奉献于一种观念，不要求理性的过程，只有更多的盲目性和对自我的畏惧。凡是在宗教与迷信没有真正分开的地方，宗教就不能发挥正向的社会功能。</p><p>一个社会有一套宗教组织来协调相当一部分人的活动，来为相当一部分人制定一套道德规范和价值规范，可能在总体上有利于共同体生活。不少大思想家均谈到一个理想社会中宗教的不可或缺性，如柏拉图、亚里士多德、卢梭等。一个没有宗教生活的社会，将会失去一个重要的自行的管理机制，政治体制的任务将更加沉重。在宗教存在的地方，政治系统的作用在于协调它们，不使其逾越共同的规范。</p><p>宗教在美国如此之发达，与美国社会高度发达的科学技术似有所格格不入。这是一个人类理性之谜。其实美国人对待宗教问题是十分理性的，正象他们对待科学技术一样。一种宗教在美国这样的环境中难以发展成一种迷信。而在其他一些国家中，没有高科技的发展，往往会导致迷信。科技的高度发展，制约了宗教非理性化的潜在可能性。社会表现为一个奇怪的过程，知识越进步，宗教越没有危险性，宗教便越活跃。</p><p>自然，任何事物都会成为人们利用的对象，宗教也不例外。最近美国电视报刊集中报道了一位电视布道牧师的丑闻。他与一位妇女私通，同时挪用数以万计的信徒捐款谋取私利，成为一大丑闻。这一事件告诉人们，宗教可以有益于社会，也可以有害于社会，任何有宗教的社会时时均面临着这一难题。</p><h1 id="九、制度的再生产"><a href="#九、制度的再生产" class="headerlink" title="九、制度的再生产"></a>九、制度的再生产</h1><h2 id="1-教育系统"><a href="#1-教育系统" class="headerlink" title="1.教育系统"></a>1.教育系统</h2><p>对任何社会来说，最困难的任务不是商品或产品的再生产，而是制度的再生产。所谓制度的再生产，是指一种特定的社会制度能否在下一代或子子孙孙中生存下去。制度存在最牢固的基础就是社会的认同。新生代是否认同，关系到一定的社会制度能否再生产的问题。制度再生产最重要的机制是社会的教育。社会教育将社会生产的价值观念传播开来，从而提供了制度生存的基本条件。在美国，制度再生产的机制是十分发达的。</p><p>美国社会的教育系统可谓发达，人们说美国是“儿童的天堂，青年的战场，老年的地狱”。“天堂”之说，其中包括儿童能够受到良好的教育。教育还起着另外的功能：美国是一个没有贵族传统的社会，那种传统的欧洲社会的等级观念不强，每个人都有可能进入社会的某个阶层。社会自然有阶层和集团分野，有上下高低之分。掌握高等知识，在一个高技术组织起来的社会中，是进入上等阶层的通行证。实际状况也是如此，清洁工、搬运工等脏活重活，往往由受教育程度不高的人承担。大公司的职员、技术人员或经理，一般需要受过良好的高等教育。在这样机制下，接受教育成为社会的一种信仰。</p><p>我之所以说是一种信仰，是因为它构成大部分人的心理沉淀。查理·艾德里安（Charles R·Adrian）说，家长总是希望自己的子女受到良好的教育，希望子女受到比他们更多的教育。虽然没有中国社会那么强烈的望子成龙的观念，但也不会有人望子成虫。子女上名牌大学是美国梦的三大内容之一。</p><p>但是，美国社会教育系统组织很特别，它不是一个全国统一的组织，而是各州各异的组织。各州均通过法律建立学校特区，学校特区有权管理公共学校。法律规定成立地方学校委员会，规定委员会成员产生的办法。委员会成员通常由选民选举产生。由此可见教育的重要地位。法律规定委员会可以征税、借贷、建设学校、招募人员，决定地方学校的政策。</p><p>各州的法律对教育委员会的规定有所不同，法律写明委员会可以征的税的种类和比率，借贷的最大数目，学制年限，教员的最低工资，教员质量，教学计划的主要内容。许多州选定教科书，建立教学大纲，教学方法，组织州级会考，规定最低的教师学生比例。有些州还规定在课堂上教共产主义和进化论为非法。州立法可以严格控制教育系统，而且往往有细致入微的规定。如爱荷华州规定中学生必须上美国历史和美国政府的课，实际上是传播美国信念。</p><p>州设有教育部，由一位州学校部长领导。教育部长是选任官。有的地方由教育委员会或州长任命，以协调州内各校达到州所定的标准。州教育部有权协调和监督州内各校的教学情况。它负责向学校提供技术和信息服务，设定和贯彻最低标准的课程计划，核定教员。另外，州还可以通过补助学校经费来影响学校决策。</p><p>尽管州级有较大权力，但在地方学校的主要活动由地方选举的委员会负责。地方学校区是一个行政特区，独立于一般的地方政府，因此它们有很大的自治权。地方学校委员会决定学校的大政方针，在州法律规定以内，权限很大。因此学校委员会的选举竞争激烈。这关系到子女们将在学校中接受何种教育，家长们自然十分关切。</p><p>教育领域，在任何社会都是争论最大和分歧最大的地方，保守和进步，传统和现代，有神论和无神论，均会在这个领域中反映出来。委员会成员持什么观念，将很大程度上决定下一代受什么样教育。</p><p>这也是美国社会的一大特点，各学校区有相当大的权力，人们自己选举代表，自己决定自己的子女受什么样的教育。联邦政府对地方教育没有什么实质性权力。这种现象可称之为“教育的非国家化”。世界上许多国家，教育均是国家化的，如日本、法国、苏联、中国等。以前有人说，法国的教育部长可以坐在办公室里看着手表告诉来访者，现在全国所有的小学哪一个年级的学生在上哪一篇课文，甚至教师讲到哪一部分。这里面含有讽刺的意味。美国的教育系统大为不同。每个地方的教育委员会都有权自行选择。我遇到过一位教育委员会的成员，他属于老派人，他说他不喜欢现在青年学生的样子，他希望每个人都得保持三十年代以前的样子：男士西装革履，女士穿裙佩花。</p><p>联邦政府在教育中有何作用？原则上讲没多大作用，除了在财政上给予资助外，其余的只能坐壁上观。不过，联邦政府资助的日益扩大，也引起一番争论。因为联邦政府的资助将会影响教育政策的制定，将会削弱州政府和地方教育委员会的权限。另外还有许多私立学校。有的学校是天主教学校，担心宗教选择受影响。此外，种族文化、财产、税收等因素都在起作用。</p><p>学校委员会政治性很强，当选的多数是地方名流，如企业家、有产者、经理等。教师往往对学校委员会的人不信任，他们认为教育政策应掌握在教师手中，教育中不应包含政治因素。实际上这种想法不切实际，没有政治的教育恐怕没有，没有教育的政治恐怕也没有。</p><p>各州还设有自己的大学，一般有两三所。大学归州政府管辖，由州政府拨款。校长由州长任命。州立大学不由联邦政府出预算。这种体制值得探讨。如果所有大学都由联邦政府出预算的话，联邦政府恐怕也是心有余而力不足的。</p><p>学校的设施是一流水准的。爱荷华市的一所小学的布置和装修就十分现代化，场地宽敞，设备齐全。当然，设备好，不等于教育质量高。美国的教育也存在着严重的问题。有的地方教育质量之差，令人难以置信（见第十一章第 2 节“无知的一代”）。种族问题也困扰着教育，白人父母不愿送子女去黑人多的学校，政府强制划区和采取轮流制度，造成不少社会问题。青少年吸毒率很高。教育中潜在的危机，如不解决，将成为一大问题。</p><p>总的说来，社会教育系统较为完善，教育经费大概仅次于军费。教育投资是社会进步和全面发展的最重要、最有价值和能得到最大回报的投资。现代化的社会不仅需要现代化的设备，而且需要能创造和掌握这种设备的人。人的现代化是现代化最重要的指标。人的现代化是一个系统的社会工程，必须从小做起。这个艰巨的、代代相继不能停止的工程由谁来做？由社会的教育系统来做。人的一大缺陷是上一代获得的文化知识和伦理道德不能遗传，下一代人必须重新获得。这是教育至关重要的生物学定论。</p><h2 id="2-MIT"><a href="#2-MIT" class="headerlink" title="2.MIT"></a>2.MIT</h2><p>MIT，即著名的麻省理工学院（The Massachusetts Institute of Technology）。这是旧时的译法，按照现在的译法，应译为，“麻州工艺学院”。麻省理工学院坐落在麻萨诸塞州的剑桥，在波士顿市旁边。美国政治学会主席路辛·派伊教授接待了我们。他是麻省理工学院政治学系的教授。听起来有点奇怪，理工学院里也有政治学系，正象海军学院有政治学系一样（见第九章第 5 节“美国海军学院”）。麻省理工学院的政治学系是非常强的，路辛·派伊是闻名的政治学者。顺便说一下，从很多场合可以发现，美国政治制度的发展与其政治学的发展是相辅相成的。</p><p>麻省理工学院是一所典型的美国式大学。该大学 1861 年成立，1865 年招生。二次世界大战中以及战后，学院得到迅速的发展，这段时期学院的研究结合战争的需要，发展较快。目前共有五个学院：农业与计划学院，人文与社会科学学院、工程学院、管理学院和科学学院。学院以理工科和自然科学为主，但也包罗所有的人文科学和社会科学学科。由于这些学科招生较少，其质量反而更高。麻省理工学院现在大约有一万名学生，其中 4,500 名为本科生，5,000 左右为研究生。学生中工程方面占 50%，科学占 20%。在这所学校里，竞争异常激烈，不是精英的学生进不了这所学校。</p><p>这所学校的预算是惊人的。接待我们的教授说，学校每年的预算在十亿美元左右，差不多相当于可口可乐公司一年的纯收入。参加接待的有一位教授是麻省理工学院国际问题研究中心的主任，他说了一番“穷话”：“我们中心每年的预算是很少的，很可怜，不能与学校的其他学院比，我们只有 200 万美元。”200 万美元还算少？这个概念与一个中国教授的概念相去甚远。当然与学院的总预算相比，中心的预算是少的。</p><p>美国的大学，尤其是名牌大学，的确富甲天下。也正因为如此，大学才发挥了传播现代化的重要功能。美国的现代化可以说是从它的几千所大学中孕育出来的。年轻一代首先在大学中领略现代化，学习现代化，最主要的是获得“现代化的意识”。一代人如果没有“现代化的意识“，那他们只能享受现代化，而不能创造现代化。大学有足够的经费，使大学成为现代化的实验室，每个进入大学的人，都象掉入了“现代化的染缸”。于是，从这里出去时，便已具备了不可磨灭的“现代化意识”。这就是高等教育的作用。</p><p>高等教育最重要的功能不在于培养出英才，而在于使每一代人（注意，一代人）都具备现代化意识。</p><p>这样庞大的开支如何支付呢？谁付钱呢？麻省理工学院是一所私立大学。大半经费来自于外部的赞助和捐赠。这就是我讲过的社会机制的作用。</p><p>之所以说麻省理工学院是一所典型的大学，是因为它反映了美国大学的特点。麻省理工学院的教授称自己的学院为“研究大学”（Research University）。何谓“研究大学”？他们解释说，欧洲的大学的传统注重传递知识，而美国的大学注重发现知识，这就是“研究大学”的基本涵义。麻省理工学院主要围绕着这个目标活动。整个学院以实验室为基轴组织起来，有一千多名教授，既教书又做研究，还有一千多人做辅助工作。</p><p>为了鼓励创新，他们认为教师与学生之间的关系是合伙人的关系，因此应当建立一种新的相互关系和新的工作方式，与学生共同发展。教育学生不应只重复过去的知识而应当迎接未来。这种精神，是美国精神这棵大树上的一颗果实。很难估计大学对美国的进步起到的作用有多大，因为太大了。大学在一代又一代的青年人中鼓励创新精神，并且尊重创新，实现创新。这是任何社会进步的主要动力。没有这种氛围，社会便难以进步。尤其是教育。</p><p>从事教育的人最容易产生的问题就是把教育视为教授自己已经知道而别人不知道的东西，这是很合理的逻辑。不过，人们还可以有更好的逻辑：鼓励发现教育者和被教育者都不知道的东西。可以说，这是人类进步的火车头。</p><p>麻省理工学院的教育应该说是成功的：波士顿地区有百分之七十的公司是这个学院的学生开创的，大多数是高技术公司。有四千多人在全球各国的大学中任教。世界各国的人们也慕名而来。在校园中散步时，可以看见绿色的草坪旁矗立着雄伟的建筑，从这些建筑中走出各种肤色的人。亚裔的学生异常之多。这就是知识的力量。麻省理工学院还制定了专门的非种族歧视政策：“麻萨诸塞理工学院接受任何种族、肤色、性别或民族的学生，他们享有学院学生普遍享有的权利、特权和计划。”这也是知识的力量。</p><p>麻省理工学院的影响不仅波及美国社会，而且波及整个世界。它不仅在传播知识，而且还在传播“美国精神”。没有高度发达的教育，一个民族不可能影响其他民族，不可能真正立于世界民族之林。教育不象工业、农业、商业，它不能给人们这些活动所能给予的东西，但它能提供任何其他力量无法提供的东西。</p><p>当然，美国的大学不是没有问题的，相反，大学问题成灾。但优秀学生仍然脱颖而出。有些教授对未来忧心忡忡。不过，在麻省理工学院这样的大学中，由于竞争激烈，次货上不了柜台。</p><h2 id="3-肯尼迪政府学院"><a href="#3-肯尼迪政府学院" class="headerlink" title="3.肯尼迪政府学院"></a>3.肯尼迪政府学院</h2><p>麻省理工学院前面有一条美丽的河——查尔斯河。傍晚，沿着这条河慢慢散歩，看着周围甜甜蜜蜜的情侣，望着空中飞翔的鸟儿，有一种心旷神怡的感觉。与麻省理工学院共享查尔斯河的另一所大学是哈佛大学，也是世界著名的学府。我们访问了哈佛大学的约翰·肯尼迪政府学院。</p><p>肯尼迪政府学院有一座漂亮的现代化建筑。我们在这里受到一位教授的接待。他介绍说，政府学院与大学的政治学系有所不同，它有自己独特的办学目标和计划。它的主要目标是训练人员去公共部门任职，所以称政府学院。</p><p>这个学院接受了肯尼迪家族的一笔赠款，所以起名为肯尼迪政府学院。从学院的这个目标来看，它与政治生活的关系就非常密切了。因为它的主要目标是培养在公共部门任职的人，其学生将直接影响政府和制度活动。</p><p>肯尼迪政府学院把政府部门和新闻界以及其他一切领域视为公共部门，但不包括象私人企业这样的部门。学院也非一般的行政学院，因为一般的行政学院注重行政学理论和基本知识教育。肯尼迪政府学院注重公共政策的教育，注重培养通才而非专才，其课程也不那么注重理论，而是比较强调联系实际。</p><p>我询问了他们的学科与政治学有什么差别。这位教授解释说，政治学研究追求对一些行为的准确描绘，而学院讲究分析实际情况。他说他们已在努力区分两个概念：一个是公共行政（Public Administration），另一个是公共管理（Public Management）。公共行政研究怎样使人和组织更好地服从，而公共管理研究怎样创新，他们在培养学员时注重两个目标：</p><ul><li>政策分析的能力，能够对公共领域中的问题做政策分析、计划评估、经济统计等；</li><li>政治知识，了解政治制度和国际政治方面的一些知识。</li></ul><p>他们的研究注重发现政治体制还有多少余地可以开发，这就需要学生有想法（Idea），有创造性、敏感性、想象力和综合能力。他的归纳是：目的具有政治性，预见具有科学性。</p><p>说大实话，这就是美国的干部学校。美国人有一个优点，把任何事情都当作是可以开发的领域。政治领域也是如此。把政治问题当成一种象粒子和天体活动一样的对象来研究，这种现象在美国最盛，恐怕连欧洲人都不能做到这么彻底。欧洲人的传统观念是把政治当艺术。美国人的观念是，政治可以是技术。象肯尼迪政府学院这样的学院有不少。其他许多大学的政治学系也在做这样的工作。由私立学校培养政府官员，恐怕也是世界上闻名的。这种对待政治的态度，把政治技术化，既带来了利处，也带来了弊处。但在公共政策人才的培养方面，也就是文官及政策设计人员的培养上，是有效果的。这就为社会制度的运行提供了牢固的基础。</p><p>美国是把行政技术化的国家。没有受过高等教育和专门培训，无法在政府中任职。另外，政治机制本身，也迫使政府解决日益错综复杂的社会问题，不然无法争得选票。因此对各种具体问题的研究越来越深入，越来越精密。这里面会产生两个重要的社会效果：</p><p>其一是为文官制度提供了素质较高的后备人员，这些人员经过严格的训练，掌握了专门的知识和必要的技能，能够为政治统治提供任何可能的服务，从而保障了政治统治的长治久安。</p><p>其二是使政府决策成为一门科学。因为政府官员有这样一个训练的背景，政府制定政策时自然就会依照这些标准，不依照这些标准，不仅不能为政府内部的各个部门所接受，同时也不能为社会所接受。政府的现有政策，每天都有成千上万的人在研究，其利弊昭然若揭。可能进入政府领域的人接受的是发现新政策领域的教育，这对促进政府决策又会起推动作用。</p><p>一个政府只要能制定出合理的政策，解决社会问题，就能生存下来。资本主义为何“垂而不死，腐而不朽”这个长期争论的问题，恐怕可以在这里找到某种解释。这就是政策有没有成为一种可以研究和开发的领域。</p><p>肯尼迪政府学院对自己的计划是充满信心的。人们可以从它的一项计划上看出来。它设有一项专门为发展中国家培养政府分析人才的计划。我们可以通过分析这项计划具体得知他们是怎样做的。这项计划叫爱德华·S·马松（Edward S • Mason）公共政策与管理计划。</p><p>他们认为：在现代社会中，每个国家都面临着前所未有的挑战，都必须管理疾速变迁的社会和经济。公共部门有着至关重要的作用。要适应这种变化，公共部门的官员就必须掌握政策分析、决策和政策执行的技能。这项计划就是专门培养发展中国家的高级官员的。计划每年从发展中国家招五十名左右。经过培养，使他们具有杰出的公共服务所具备的分析技能、管理才能和伦理精神。这三个指标都很重要。</p><p>参加者来自亚洲、非洲、拉丁美洲的国家，平均年龄 37 岁，都有 12 年的工作经验。课程包括英语、数学、微观经济学、经济学、计算机、企业与政府、犯罪、能源与环境、健康、住房与社会发展、人类资源、国际发展、国际安全、新闻、政治、公共政策、科技、运输、城市经济发展、农业、中央银行等课程。教学方法主要采取案例教育，政策领域分得很细。另外，还组织实地考察，邀请政界人物和学者来开讲座，并组织到国外去访问，如墨西哥、古巴、南朝鲜、埃及、摩洛哥、阿根廷等国家，开阔学生眼界。</p><p>可以看出，这个计划是相当不错的，不过，学费也高的吓人：每人 35,012 美元，不包括出国考察的经费。这个计划没有经费，所以经费由学生自己解决。不过，由于肯尼迪政府学院的声誉，它每年都能招到学生。学院也因此发了一笔小财。</p><p>美国的公共管理教育有不少问题。但是，由于其成功的方面也多，自然就有吸引力。这种吸引力有一大半不是来自公共部门的成功，而是来自经济的成功。人们有时总有些近视，认为经济成功可以代替一切。说是这样说，不过，公共部门的运作对其社会的作用不可忽视，同时，政策教育部门对公共部门运作的作用更不可忽视。</p><h2 id="4-“人才工厂”"><a href="#4-“人才工厂”" class="headerlink" title="4.“人才工厂”"></a>4.“人才工厂”</h2><p>位于纽约州的 Syracuse University（锡拉求斯大学）的 Maxwell（麦克斯韦尔）学院，是首屈一指的培养公共行政官员的教育机构。它培养的学生进入联邦和州政府以及其他各级政府，成为政府中的行政要员。据说美国驻外大使中有 20 多位出自这所学院，前不久与齐亚·哈克总统共同遭遇空难的前驻巴基斯坦大使也毕业于这所学院。在华盛顿，这个学院的校友更是成群结队。它的毕业生不仅遍及本土，而且遍及不少第三世界国家。</p><p>麦克斯韦尔（Maxwell）公民与公共事务学院建立于 1924 年，是美国第一所公共行政学院。主要目的在于教育和训练文官，至今已经有六十多年的历史。这个学院已经成为重要的人才工厂，不断向各政府机构输送人才。</p><p>学院是一个综合性的教育机构，包括人类学系、经济系、地理系、历史系、政治科学系、公共事务系和社会学系。学院在公共行政方面不招收本科生，主要是考虑到本科生缺乏一定的经验和阅历。因此，学院在这个计划上集中训练硕士生和在职生。博士生每年招六名左右，属于 Academic（学术性的），这些人一般不到政府部门做实际工作，而是到教育部门做工作。</p><p>MA（硕士学位）的学生主要是培养 Professional（职业性的）人才，进入政府部门。联邦政府和州政府经常派雇员到学院来深造。我在该学院与著名教授罗森布鲁姆交谈时，就有不少年纪较大的人来交作业。我开始对此疑惑不解，后来他解释说，这是联邦政府派来的学生，经过一年训练后，还要去政府部门工作。他开玩笑地说，对他们要客气一点，因力他们均来自于税收部门。</p><p>这类学院的功能在于向政策部门和其他机构提供高质量的人才，保证公共管理系统的高效运转。这些学院虽然是教育机构，但他们构成政治系统和行政系统的非正式部分，而且是不可缺少的部分。</p><p>我们可以看一下这个学院如何训练学生，力图给学生建立一种什么样的知识结构。学院给公共行政硕士生提供的主要课程如下：</p><ul><li>计算机与公共部门的计算机化，主要是引导学生懂得计算机的基本知识，以及如何在公共行政部门中运用计算机，帮助学生实际操作计算机。</li><li>公共行政导论，引导学生认识公共行政的基本问题，公共行政所面临的基本问题，以及政策的分析方法。</li><li>组织理论，传授有关公共部门组织的知识，尤其是公共组织如何运转和变革，包括公共组织与私人组织的差别，有关组织的各种观念，个人决策和团体决策，组织设计和组织环境关系。</li><li>公共行政与民主，考察公共政策和行政在宪法民主环境中的地位和作用，通过法律理论考察行政价值观念（如效率、经济）与宪法价值观念（如平等、自由和必要程序）之间的关系，行政如何协调此两者之间的关系。</li><li>全国计划和管理能力，讨论治理的主要困难和长期规划的设定和执行。计划部门、预测表、思想库、跨国银行和公司、政治家、行政精英的作用。全国计划的社会和政治后果以及前提条件。</li><li>统计学，提供统计学的基本知识，包括描述统计学、趋势分析、数据分析、抽样、评价和假设预测。</li><li>研究与发展政策，提供涉及决策和发展的机构和角色的知识，考察这两方面的方法，包括创新、发明、技术转让、预算和税收政策等。</li><li>健康政策，讨论卫生领域中的一些基本政策问题，包括民间资助、改革、艾滋病、联邦对健康防护工业的管制等。</li><li>发展经济学，研究第三世界发展的主要问题，包括对发展的措施和理论的回顾。同时分析人口、就业、农业发展、工业化、教育、食品等基本问题。也分析第三世界发展与国际环境有关的课题，如贸易流向、投资、援助和财务。</li><li>公共行政的管理经济学，运用微观经济学对公共政策问题进行分析，用经济学观念分析复杂的政策问题。</li><li>公共科技发展，研究公共部门在科技发展中的作用，分析特殊的科技发展政策以及政府与工业的关系。</li><li>能源原则、问题和选择，研究能源政策以及其他与能源政策有关的课题。</li><li>公共管理人员计算机应用，研究如何在大型公共部门中运用计算机处理资料，进行设计，建立组织系统和信息系统。</li><li>公共人事与集体协商，讨论文官制度改革，公共部门的增长和衰落，报酬、考绩、平等就业机会，有关公共人事的法律等。</li><li>公共财政，分析公共财政，从预算、财政准备、财政评估、适应性，到执行等。财政分析还包括预算的经济属性，政府间税收关系，会计、财政改革等课题。</li><li>政府与大众传播媒介，分析政府、报刊、电视和文化精英之间的权力关系和依赖关系，民主社会中信息和文化政策的冲突，以及政府对新闻、传播、艺术、娱乐和闲暇活动的政策。</li><li>国防政策，军事、经济和文化，分析国防问题的军事、经济、政治和文化特征。</li><li>公共政策分析的量性方法，讨论公共政策分析中的几种定量模式，如成本——效益分析，线性规划理论和决策理论等。</li><li>公共管理和政策制定，讨论政策制定的理论、实践和技术，包括组织设计、政府改革、组织沟通、信息管理、组织评估、领导艺术、规划管理等。</li><li>健康服务管理，讨论医疗管理，医疗组织等问题。</li><li>公共行政的边际经济学，应用微观经济学分析公共政策问题，如供应与需求、公司行为、市场平衡等问题。</li><li>发展行政，考察过去 25 年中管理发展计划的经验和教训，分析参与发展计划和行政的角色，发展计划的实施，评估技术等课题。</li><li>公共人事管理，分析公共人事系统的基本特征以及这个系统在其中运行的环境，公共人事的基本程序，公共人事管理者的角色和功能。</li><li>发展中国家地方政府的财政，讨论地方政府的功能、作用，对地方政府的需求，地方政府的财政来源，上级政府对地方政府的作用。</li><li>组织发展，分析组织和组织中人的行为模式，包括组织的结构和过程、组织发展和行为、个人、团体的行为动力、组织问题的发现、适当的组织干预、管理战略、增加组织效益的技术。</li></ul><p>以上是公共行政硕士课程的一部分。在硕士生阶段，授课形式大多采用讨论式。要求学生在参加讨论之前，先阅读大量的材料，促使学生尽量全面地掌握这个领域中的有关知识和现有的研究成果。我们可以举“全国计划与管理能力”一门课为例，这门课要求学生读的书包括：</p><ul><li>Lodge 和 Vogel 著：《意识形态和民族的竞争性》</li><li>《2000 年的全球报告及其批评》</li><li>Reich 著：《公共观念的力量》</li><li>Ascher 著：《预见》</li><li>Deyons 著：《实用计划》</li><li>Hayek 著：《通向奴役的道路》</li><li>Hirsh 著：《增长的社会局限》</li><li>Palmer 著：《里根年代的特征》</li><li>Pahrendorf 著：《现代民主的治理》</li><li>Page 著：《保讨与经济效率》</li><li>Baumal 著：《生产力的增长》</li><li>Grieco 著：《依赖与自主之间》</li><li>Wildavsky 著：《寻求安全》</li><li>Tussman 著：《政府与精神》</li><li>Auletta 著：《低层阶级》</li><li>Urban 著《与乔治·凯南对话》</li><li>Dahl 著：《控制核武器》</li></ul><p>一门课要学生读上述书，各门课加起来，学生在训练过程中要接受较为广泛和齐备的专业训练。严格的训练保证了学生的质量。这是麦克斯韦尔学院公共行政计划之所以成功的关键，也是他们训练的学生能够在政府部门大显身手的原因之一。</p><p>一个社会的管理水平如何，与其政府官员的水平如何密切相关。如果政府官员素质差、能力低，一个高效能的政府管理系统是不可能形成的，它不具备先决条件。反之，有了受过严格训练的官员队伍，高效率的公共管理就有了基础。公共管理与它的文官制度分不开。文官制度又与政府人才培养分不开，因为文官制度的目的并不是招收社会上最好的人，而是吸收社会上最有政府管理才能的人。单有文官考试，并不能保证政府的高效率，没有人生来就具备政府管理的才能。严格的教育训练是培养这类人才的必由之路。培养专门的政府人才，直接关系到政治与行政系统的质量，从而在相当大的程度上影响着社会政治经济的全面发展。所以我说，专门培养政府人才的教育机构是政府系统的非正式部分。</p><p>从对公共行政人员的训练来看，麦克斯韦尔的课程均较职业化，集中在公共行政操作的一面。公共行政讲究对社会事务的具体管理。在现代社会中，政府要承担五花八门的职责，从经济、文化、教育、交通、科技发展、外贸到生老病死、环境保护等，这要求公共行政人员拥有一个领域的专门知识和技能。过于理论化和学术性的训练无助于职业行政人员。职业行政人员需要可用、可行和可操作的知识和技能。公共行政教育不走这个方向，也难以真正对社会发展起作用。</p><h2 id="5-美国海军学院"><a href="#5-美国海军学院" class="headerlink" title="5.美国海军学院"></a>5.美国海军学院</h2><p>美国海军学院（U•S Navy Academy）坐落在离华盛顿不远的安娜波里斯市。从华盛顿驱车来到这里只需一个小时左右。安娜波里斯市也是马里兰州州政府和州议会所在地。州议会所在的建筑是州议会所使用的建筑中最古老的一座。当年华盛顿将军就往这里脱下军装，成为文职总统。那个房间至今仍保存原样，供人们参观。这个故事给人许多启示，不过，这里我只想谈谈由参观海军院而引出的想法。</p><p>访问计划的一个项目是与海军学院的政治学教授共进午餐，这使我们都感到吃惊，海军学院有一个专门的政治学系？果然不错。政治学系与一般大学的政治学系一样，有本科生和研究生，有完整的政治学系课程。我不知道西点军校和美国空军学院有没有政治学系。坐在旁边的教授告诉我，海军学院政治学系大约有四五百名学生，教授都是文职的，与其他大学的教授一样。我感到奇怪，海军学院政治学系的毕业生干什么？他答道：“到美国海军服役，当军官。另外，海军学院的训练不仅要考虑学生最近的将来的职业，还要考虑他们离开军队之后的需要。因而许多学生选政治学系的课程。”在不少国家中，军事学院有政治课，但没有政治学系，美国军事院校注重对学生进行政治学教育，是政治社会化很重要的部分。</p><p>在不少国家，政治不稳定的原因在军队。尤其是非洲、拉丁美洲的国家中，军人干政习以为常。美国军事院校传播美国政治的基本原则和基本精神，其社会功能不可低估。在美国，恐怕没有人接受军人干政，也没有军人能这样做。当然，说没有人这样想，那就太主观了。但问题是，想入非非的人无法付诸行动。在军人中传播一个社会的基本原则，是社会政治发展的一个战略措施。对民主政治发展来说也一样。在发展中国家，首先应在军人中传播民主观念。连美国这样一个发达国家也少不了这一环，何况其他？</p><p>美国海军学院号称世界上第一所海军学院，号称有世界上最大的学生宿舍。美国海军之父就葬在这所学院的教堂下面。海军学院临海，远处呈现出蔚蓝色的广阔图景。我问一位在政治学系教书的女教授:“美国青年愿不愿意到这里来？”她说：“很多人申请，每年有几万人申请，只能招一千多人，所以学生质量很高，连女孩子都愿意嫁给他们。”海军学院的学员须穿制服，我们看见学员们一身雪白的衣服，戴着白帽子，头发理得很短，胡须刮得溜光，显得十分精神。小伙子一个个都精神抖擞，大概是精心选择的结果。学院的院长是一位海军中将。学院的领导属军事系统，学院的教学属文职系统，分得十分清楚。这大概也可算是一个特色。</p><p>下午正逢美国海军学院的橄榄球队与另一个大学的队交战。主人邀请我们去，从命。</p><p>橄榄球是美国的国球，在美国谈话，不会谈橄榄球，大多数场合会话不投机。这当然有些夸大。进入体育场，只见人山人海，一片沸腾。对面看台上坐的是对方的观众和啦啦队，还有一支乐队。这面坐的是海军学院的学生，一片雪白。下面还有一千五百名新生。开始比赛之前，乐队演奏国歌，全场起立，有许多人高唱。然后出来两个人讲话。讲的内容是海军的光荣，说应当世世代代铭记为海军事业作出贡献的人，他举了六位在越南战场上丧生的海军军官的名宇。全场起立，礼炮响了六响。每响一次，看台下方就用布幅展现那六个人的名字，全场默哀。越南战争已经过去多年，他们还念念不忘。在重大场合，都要纪念他们。其目的在于鼓励荣誉感。</p><p>接下来，比赛正式开始，双方的啦啦队大吵大闹，海军学院的一年级学生在草坪上排成长队，夹道欢迎自己的队员，比赛场上，双方队员你争我夺，十分激烈。我看橄榄球很简单，没有什么细腻的战术，主要是靠力量和速度。能否抓住和撞倒对方是关键。因此双方的队员都是五大三粗，横冲直撞。但据精通此球的人士说，橄榄球的战术运用大有讲究。</p><p>看了比赛之后，有三点印象特别深刻：</p><p>其一是美国人注重荣誉。双方观众都极为看重是否得分。如果海军学院的队得了分，学院的学生们就会热烈鼓掌并喝彩。坐在下面的一年级学生就会跑到场子周围去做俯卧撑，估计有几百人，表示高兴得无法发泄。对方队赢了球，对方看台上会有一片喝彩色，乐队就会演奏一段曲子。双方的啦啦队也不断鼓动，渗透着一种浓烈的荣誉感。</p><p>其二是美国人讲究实力。橄榄球有战术，但严格地讲，没有非常精巧的战术，主要是靠力量。世界上大概没有一种运动的上场人数与队员数比例高于橄榄球。橄榄球是硬打硬冲，达到底线为胜。这体现了美国精神，用实力快速达到目的。美国人在军事、政治、经济等许多领域，都本着这种精神。</p><p>其三是美国人十分直率。得出这个印象是在球场休息的时候。休息时，对方大学的乐队上场演奏，开始海军学院的学生不以为然，还起哄了两次。后来对方乐队的指挥说，要专门为海军演奏一支曲子，以表示他们对海军的敬意。他们演奏了一支雄壮的曲子，大概是海军军歌之类的。海军学院这边的看台上全体起立，对方看台上的观众也全体起立，场面很感人。演奏完毕，双方热烈鼓掌、呼喊。刚才还是剑拔弩张，一下子变得融洽热忱。</p><p>海军学院是一所军事院校，但我们可以看到，它十分注重使政治精神能够得到传播。同时，它注重在各项活动中培养年轻一代的荣誉感，其实是使学生接受早已形成的“民族精神”的熏陶。他们没有把军事院校当成单纯的军事技术院校，只做军事技术训练，而首先把它的教育目的确定为培养合格的公民。从此可以看出，年轻一代不论进入哪类学校，普通大学也好，军事院校也好，都得接受美国精神的洗礼。这个教育目的是第一位的，其他目的都是次要的。由此观之，就不难理解美国如何再生产自己的制度。</p><h2 id="6-教育出口"><a href="#6-教育出口" class="headerlink" title="6.教育出口"></a>6.教育出口</h2><p>有时候，人们常常会提出一个问题：为什么当今世界有那么多人想移居美国，尤其是发展中国家的人？在美国各地行走，常常可以碰到异国他乡来的人，在一起讨论如何取得绿卡，如何移民。这门活动而成了一门行当，而且是一门赚钱的行当。报纸上常常有这样的广告：“本律师事务所专办绿卡，得不到绿卡，全部退款。”</p><p>在不少国家，美国文化，更精确地讲是美国的生活方式（因为不少人认为难以确定美国文化是什么），有着强大的影响。生活方式是一个综合的概念，他不仅指人们在衣食住行、生活习惯方面的定势，而且包括经济行为、管理方式和政治价值等等。人们靠什么来传播一个社会的主导生活方式？古往今来，可以列出多种方式，如军事征服，罗马帝国征服行省，法西斯征服邻国；再如政治关系，如宗主国于殖民地的关系；经济一体化，当今世界体系的形成，国际贸易和金融等关系的大规模交流；教育渗透，如希腊化时代和中世纪的神学化时代。等等。在这些方式中，军事征服是一种强制，政治关系是一种权力，它们都难以保证一种价值观念深入人心，它们可以强制推行一套观念，但不能使人们真正心悦诚服地接受他们，遵守它们。</p><p>在当今世界，起主导作用的是后两种力量。一种是经济力量。经济力量的发展向人展现了人的本性中最基本的追求，人们易于接受。美国战后经济的发展成为其生活方式传播的主要媒介。二是教育力量。教育是一种神奇的力量，它潜移默化地向人们传播一个社会的主导信念。在一个社会内部是这样，在一个社会与外部社会的关系上也是这样。</p><p>在大学校园中，外国留学生成群结队。外国留学生之多，在世界各国名列前茅。教育，成为美国生活方式传播到世界各地的宽大渠道。所以在回答开始的那个问题时，首先要思考美国是怎样影响其他社会，美国怎样向外国传播他们的观念。</p><p>在美国求学的不少学生，是得到各种机构的资助而来的。社会存在各种各样的机构，其目的就是鼓励和帮助其他国家的人来美国接受教育。在这方面的投资，也是很少有哪个国家可以与美国相比的。但这些机构在传播美国的生活方式，维持美国的国际地位上所起的作用，是第七舰队和航天飞机所起不到的。</p><p>我们来看一下美国最大的非赢利性的国际教育机构：国际教育协会（The Institute of Internationnal Education）。这个协会建于 1919 年，主要目的是帮助外国人来美国接受教育，其主要活动内容有：</p><ul><li>管理奖学金、资助金和补助，使人们能在自己的国家以外学习，进行研究和接受训练；</li><li>组织国际研究方面的项目，并发表研究报告、成果和指南等；</li><li>通过在纽约、亚特兰大、芝加哥、丹佛、旧金山、华盛顿、中国、香港、印度尼西亚、墨西哥和泰国等地的办公室提供有关国际研究的信息；</li><li>组织关于国际教育问题和发展的报告会和讨论会；</li><li>向世界各农业和健康中心提供资金和人员服务。</li></ul><p>这是它的主要活动方面。这个组织拥有雄厚的资金，1986 年财政开支为 1 亿多美元。1987 年它属下有 247 个计划，提供经费的有 145 个单位，其中有政府、双边机构、国际组织、基金会、大学和公司。它的各类计划涉及 152 个国家和地区。从训练人才的角度看，它向大约一万人提供便利。这个数目相当于一所中等大学的全部学生。这一万人中，有 5,000 名是在美国读学位的外国学生；2,700 名外国学生在接受非学位计划的训练，或参与职业训练计划，除 200 人外，绝大部分在美国；有 1,200 人来自各国的助教在各种国际中心工作；800 名各国的杰出人物做访问学者。它还资助学校的出版、研究、讨论会、报告会、专业建设等项目，有 562 所高等学校接受过它的资助。如此等等。</p><p>由以上数字可以感觉到，仅这样一个机构，就在国际性的教育输出中起这样大的作用，再加之其他的机构，美国的教育输出会构成一种何等巨大的能量。国际教育协会的相当大的一笔资金来自福布赖特（Fulbright）计划。福布赖特计划为政府设立的基金。甶此可见，促进教育输出不仅仅是一个教育组织的观念和计划，而且也是政府的观念和计划。从政治发展的长远战略思之，这是一种具备战略眼光的选择，无论从国内政治看还是从国际政治看。教育输出可能获得的好处，要远远超过经济领域中的一切既得利益。</p><p>国际教育协会的具体计划为数众多，其中主要的有福布赖特研究生奖学金，该计划专门向外国学生提供资助；拉丁美洲和加勒比海地区奖学金，主要向拉美国家提供资金；还有非洲学生奖学金，亚洲学生奖学金，欧洲学生奖学金等。与中国有关的有“美中国际关系研究委员会”（Committee on International Relations Studies with the People’s Republic of China），由福特基金会、洛克菲勒基金会、麦克阿瑟基金会等出资。1986 年该委员会资助了二十六名中国学生和七位访问学者。协会的活动范围包罗万象，如艺术、音乐、科技、建筑、企业管理、人权、农业、自然资源等。通过这门类杂多的活动，来自异国他乡的学生自然而然地接受美国主导的生活方式。同时也接受核心价值观念。教育输出，影响着相当大层面的人的思想方式、感情取向、心理定式、价值选择和行为准则。在这里受过高等教育的人中，不少人构成所在国的精英阶层，在该国的政治、经济、文化、教育、科技和艺术等领域或多或少起着有些关键的作用。教育输出的基本功能有两个，一是知识传播，二是感情投资。后者是任何国家都不可低估的政治资本。</p><p>从政治管理上来说，这种政治资本有两个方面的功能。在国内政治方面，任何政治和行政系统，压力越小，越容易施展身手。政治系统的压力可以来自内部，也可以来自外部。如果外部力量认可并且赞同一种政治系统的活动和选择，那么政治系统所遇到的压力就将大大减少。外部的肯定力量也将抵消内部的否定力量。如果一个政治系统遇到外部强大的反对或不理解，它的内部压力也将上升，政治系统就将遇到麻烦。</p><p>在国外政治方面，教育出口创造了一项其他力量无法提供的条件，这就是增进了国外对本国外交政策的理解，这是一国的外部政治活动成功的不可多得的氛围。外部政治活动的成功，往往不在于政策本身是否合理，而在于它是否被理解和被接受，在于它有没有遇到合适的国际舆论。不少国家外交政策的失败，不在于政策本身，而在于没有合适的文化氛围。</p><p>教育出口的作用就在这里：它为一个国家的政治扩大了理解的范围。接受了一个国家的生活方式和核心价值，就是形成了用它们进行评价和思考问题的标准。从长远政治发展来看，这方面的投资最有价值。</p><h2 id="7-科技之炉"><a href="#7-科技之炉" class="headerlink" title="7.科技之炉"></a>7.科技之炉</h2><p>芝加哥是美国的特大城市之一。我随朋友一起驱车去芝加哥，用了五个小时。从 80 号高速公路转 55 号高速公路直达芝加哥。55 号公路横穿芝加哥市区。在繁忙的高速公路上，跻身于高速急驶的车队之中，象在纽约一样，令人感到一种现代化特有的节奏，中国人普遍有这样一种感觉，第一次上高速公路，均有一种莫名其妙的紧张感。</p><p>中国人和许多发展中国家的人习惯于慢节奏的生活，突然置身于快节奏中，会有一种心理和文化上的不适应，甚至会有生理上的不适应。我称之为“现代化紧张反应”。但在美国要行动，不能不上高速公路，这种强制的交通速度使人很快消除了“现代化紧张反应”。试想一下，没有这种强制，会是什么样的结果呢？</p><p>一个民族，作为整体，在现代化过程中是否会有“现代化紧张反应”，有了又会有什么样的后果，怎样来消除一个民族的“现代化紧张反应”，这是发展中国家面临的一个问题。</p><p>我们先参观了海洋博物馆。里面象一个海洋世界，有千奇百怪的鱼类和海洋生物。人们在这里可以了解较为完整的海洋生物知识。然后去参观 Field Museum of National History，实际上是一个自然博物馆加历史博物馆，这样的组合在博物馆中尚不多见。一方面有成千上万的动植物标本，另一方面陈列着美国历史和一些外国历史的文物。这个馆陈列的印第安人的文物和历史是较为全面的。大厅里还矗立着几个巨大的图腾柱，大约是南美什么土著的崇拜物。甚至还陈列了中国清朝的一些东西，但为数不多。从自然和社会博物馆的角度讲，可能是世界第一流的。</p><p>令人最感兴趣的还不是以上两个地方，而是科学和工业博物馆（Museum of Science and Industry）。这是一座占地面积很大，陈列物品惊人，但免费参观的博物馆。一进大厅，就可以看到儿童和少年多于成年人，这是完全符合这个馆的建馆目标的。其目的就在于使青年一代在科技之炉中冶炼出科技精神和科技兴趣。</p><p>这个馆是芝加哥最吸引人的旅游点之一，每年大约有四百万人前来参观。这个馆共有七十五个展览厅，二千多个展览系列，它通过这些系统的展出向观众表明科学原则、技术进步和工业应用。这个馆与其他馆不同，它的设计有了项特殊原则，就是让观众参与。观众可以按电钮、推动杠杆等，从而参与展出，并获得难忘的经历，尤其是对少年儿童来说。有时候，一按电钮，就有人在电话里说话，有时候，一按电钮，就有电视节目；有时候可以操作机床；有时候可以走进巨大的心脏模型中去了解心脏的构造；有时候可以坐进汽车驾驶模拟器去驾驶汽车；有时候又可以走进地下了解地壳构造。如此等等。这个博物馆由居里尤斯·罗森沃德（Julius Rosenwald）创建，1933 年开馆。坐落在美丽的杰克逊湖畔。每天吸引了成千上万的人来到这里。</p><p>下面简单罗列一下有关的展览项目，以便把握这座“科技之炉”。这里的展览系列包括:各个时代的飞机、旧时的打字机、新闻、电话电报、农业机械、城市建设、电脑、石油、地层、视听、基础科学、工业、汽车、化学、电影、医疗、自行车、邮电、电能、食品、照相、货币、能源、图书馆、生物、人体科学、铁路、海洋、太阳能等。应有尽有。从古代科学和技术的初步发展，到现代科学技术的最新成就，航天飞机、电脑等，似乎无一遗漏。展览馆还展出了美军在第二次世界大战中缴获的德国潜水艇 U-505。进入这座展览馆，就象进入了科学的殿堂，令人眼花缭乱。这是座真正的“科学之炉”。孩子们由家长带着来到这里，如鱼得水，留连忘返。他们的兴趣被展览馆中各种光能和电能的应用充分调动起来。这些深刻的印象在他们幼小的心灵中将产生何种影响，不难想象。</p><p>社会很注重发展整个社会发展和进步所需要的科学和技术。社会发展和进步要想得以顺利实现，首要的就是使年轻一代茁壮成长起来。在这方面，整个社会都不惜花钱，从小学到高中，青少年的学习条件十分优越，故有人称美国是“儿童的天堂”。这套机制是社会持续发展和繁荣的不可忽视的因素，值得研究。在不少社会中，人们的注意力不在人生的早期阶段，而在中期和后期阶段。从个人的生活舒适来说，这是合适的。但对整个社会的进步来说，这是否太迟了呢？</p><p>美国虽然是个商品社会，是个金钱至上的社会，然而，在科学和技术教育方面，他们深深懂得怎样花钱才能获得最大的收益。科学和工业博物馆就是一个实例。不少博物馆都是收费的，但科学和工业博物馆是免费的，每天开放，而且博物馆前面巨大的停车场也是免费的。教育也具有这种特征，尽管大学教育所需要的学费是惊人的，但高中以下的教育是免费的。不少地方的人把博物馆也视为一个具有教育功能的机构。在一些非商品化的社会中，各种活动已在走向用金钱标准来计算，而在美国这样一个典型的金钱化的社会中，人们却努力保持一些具有基本教育功能的领域的非商品化，这不仅是一种选择，而且是商品经济下不得不为之的一种政策，要不然这些活动就会被商品经济排挤掉，这一点值得走向商品经济的社会注意。</p><p>傍晚时分，登上世界最高的建筑——西尔斯大厦（Sears Tower），遥望远处碧波万顷的湖水，俯瞰近处高低交错的楼宇，更能体会到科学技术创造奇迹的力量。社会的进步需要年轻一代的创新；年轻一代的创新需要他们对已有进步的充分了解，只有这样，他们才能在这个基础上更上一层楼。一个人如果对前人的创造一窍不通，如何能百尺竿头，更进一步呢？如果设计者和建造者从不知道楼为何物，如何能大胆设计呢？正因为有了次高，才有最高，这是一个简单的道理。</p><p>社会的一切现代化成就都应充分开放，使社会为宏大的科技之炉，冶炼现代化精神。在一个把现代化成就封闭起来的社会中，最终封闭的是人的精神。</p><p>现代化的传递过程，以及教育的功能，在两个层次上再生产一种制度。教育提供了对该制度的价值合理性的认同，科技的传播提供了物质基础。教育和科技虽不直接生产物质产品，但却可以创造未来。</p><h1 id="十、活跃的智慧"><a href="#十、活跃的智慧" class="headerlink" title="十、活跃的智慧"></a>十、活跃的智慧</h1><h2 id="1-思想工厂"><a href="#1-思想工厂" class="headerlink" title="1.思想工厂"></a>1.思想工厂</h2><p>思想工厂是我自己造的词组，实际上就是通常所说的“思想库”（Think Tanks）。在美国，形形色色的思想库之多，为一大特色。从某种意义上说，美国人乐意将思想本身视为一种产品，论质取货。纵观现代社会的发展，思想库在其中推波助澜，作用非凡。由此想到思想库对社会有无比的重要性，尤其是对社会的传承和革新而言。</p><p>在旧金山，去了斯坦福大学，著名的胡佛研究所就在斯坦福大学里，虽然它不是斯坦福大学的一个组成部分。斯坦福大学的建筑带有浓郁的西班牙风格，这和这块土地的历史有关。不过，胡佛研究所没有这种风味。胡佛研究所以其保守观念而闻名。不少教授戏称它为“反动”。里根当政思想的思想基础不少来自胡佛研究所。当然，胡佛研究所也不乏大家，如有名的政治学者李普塞就加盟他们。</p><p>胡佛研究所成立于 1919 年。二十年代的资料基础是苏联政府提供的资科，当时胡佛总统向苏联提供援助，苏联无钱支付，美国便要苏联以各种资料互换。不知这个故事的真假。如果是真，倒是很有远见的做法。二次世界大战胜利后，从日本弄来大批资料。后又从中国弄来大批资料。这方面的资料胡佛研究所收存得比较全。在这些资料的基础上，胡佛研究所逐渐发展起来。</p><p>加利福尼亚大学伯克莱分校，是最好的大学之一，与古老的哈佛大学不相上下。在伯克莱参观了政府研究所。所长波斯比（Polsby），也是有名的政治学者。他说他的想法是把政府研究所办成一个对全国政策有影响的机构。政府研究所过去主要研究加利福尼亚州政府的问题，今后要向全国发展。这意味着走向一个全国性的思想库。</p><p>看了这些思想库，深感它们对美国社会发展有不可低估的作用。想起布鲁金斯学会肯特•威佛（R.Kent Weaver）的一篇文章:“变化中的思想库世界。”这篇文章对思想库的发展有一概览，不妨细看。</p><ol><li>对于思想库的定义，众说纷纭，没有定论。一般来说思想库是非贏利性的、独立的机抅。也有人开玩笑，如有个叫彼得·凯利（Peter Kelley）的就说:“思想库是这样一种安排，自愿的公司、政府或古怪的巨富拿出几百万美元，支持那些花大部分时间争取把自己的名字变成铅印的人。”（我在翻译时用中国人的习惯，“铅印”在中国人眼里是正式出版，其实在美国正式、非正式都可以铅印）。一般来说，思想库还有两个特点：一是“没有学生的大学”：二是非赢利的政府研究承担者。在美国，思想库“爆炸”。1988 年，华盛顿 D.C.电话本上列了 124 个“研究所”，还有一些闻名遐迩的思想库不包括在内。</li><li>思想库的作用。思想库究竟起什么作用，也是一个可以争论的问题。广言之，思想库的作用有：（1）政策思想的来源。思想库的一项重要任务就是发现和传播短期内不会成为政策的思想，使決策者逐渐接受这些思想。（2）政策提议的源泉和评价者。思想库一般注重推进和评估特殊的政策提议，评价的方法就是发表专著或文章。所以各个思想库都非常注重发表著作。著作是没有学生的大学的主要成果。有些研究机构也为国会立法准备材料。（3）政府计划的评估者。对于政府正在实施的计划，思想库也常常加以评估，以视这些计划能否有效地运转，能否切实有效地达到目标。（4）人员的来源。思想库还可以向政府提供人员和专家，思想库中的成员往往成为政府某个部门的行政者，因为他长期研究这个问题，有比较全面的知识。</li><li>思想库的管理。思想库的管理包括很多方面。（1）形象，思想库传统上保持无党派的研究机构的形象，研究问题，提出结论，而不是为已经存在的结论作辩护。但是，这并不意味着思想库没有意识形态的色彩，布鲁金斯学会就常常被视作自由的民主党的思想库，美国研究所（AEI）常常被视为保守的共和党的思想库。不过也不尽然，这两个机构之间有许多“人才流动”。布鲁金斯学会的现任主席也力图将学会的形象造成中立的。不过有的思想库直言不讳，如美国遗产基金会的一位干部说:“我们是保守主义革命的思想突击队。”（2）成员管理。成员管理包括几个方面的问题:一是决定设立专门人员还是委托外面的学者加以研究，两者各有利弊。二是如何使研究人员学会研究政策问题，因为政策问题与学术课题的研究有所不同。受大学严格训练的人，可能较善于研究学术课题，而不善于研究政策课题，因而应加以推进。在人选方面也有问题，是选受过大学精深教育的人，还是选有丰富实践经验的人。自然也是各有利弊。（3）财政。思想库虽然是非赢利性的，但其财政问题尤为重要，没有财源，不会理财，思想库便不能继续。（4）设定日程。思想库的活动需要组织和安排，不是一盘散沙，因此如何设定日程便是管理中的一个重要问题。究竟选择什么样的政策领域，一个还是两个，或者是都有涉及，怎样建立各种课题之间的关系。等等。（5）成果管理，包括推进出版，扩大影响等方面。</li></ol><p>思想库有意无意地起到一种“社会医师”的作用。它们不断寻找和发现社会上存在的问题，提出解决问题的方案，这也是思想库要生存下去和获得资助不可缺少的条件。要获得资助，就得别出心裁或自出机杼。这种机制推动它们去寻找政策问题。很多政策问题便是在这样的机制下寻找出来的。</p><p>然而，不管出自什么动力，它们找到了政策问题，就可以使社会存在的问题得到研究。它们的研究成果如果变为政府政策，则会促进社会改进。也许大多数思想库本身就有维持现存政治制度的明确概念，但它们的所作所为恰恰有此效应。</p><p>思想库这类“社会医师”，诊断社会，发现病状，寻找原则，预计后果，开设药方。其社会功能不言自明。美国的思想库大多在本世纪二、三十年代发展起来，战后大成气候。这个时期也是美国资本主义社会内部矛盾缓和，经济高度发展的时期。这两者之间没有什么联系吗？恐怕不能简单肯定，也不能简单否定。</p><p>最后，我总觉得思想库的译法不好，虽然英文是这个意思。“库”总有些存放东西的意思，思想库不仅存放，而且生产，故用思想工厂。在思想工厂中，充满着活跃的智慧。</p><h2 id="2-布鲁金斯学会"><a href="#2-布鲁金斯学会" class="headerlink" title="2.布鲁金斯学会"></a>2.布鲁金斯学会</h2><p>布鲁金斯学会（The Brookings Institution）坐落在一幢古典风格的建筑中。早就知道布鲁金斯学会是美国最重要的思想库之一，与兰德公司、胡佛研究所等齐名。布鲁金斯学会成立于 1927 年，由几个研究所合并而成。一个是政府研究所，建立于 1916 年，是第一个全国性的研究公共政策问题的私人机构；二是 1922 年建立的经济学研究所；三是 1924 年建立的罗伯特•布鲁金斯经济与政府研究院，这是较早实验培养公职人员的机构。</p><p>新组成的机构以罗伯特•索默斯•布鲁金斯（1850-1932）的名字命名。他是圣路易的一位企业家。布鲁金斯学会是一个私人的、非赢利的组织，财政来源靠一些基金会、公司和个人，另外还有赠款、讨论会报名费、出版物销售费、计算机使用费等。基金会也接受政府的合同研究一些问题，但保留发表权。有一个董事会控制学会活动，保证学会的独立性。董事会主席是主要的行政者，负责提出和协调政策、提出计划，选择人员，负责与政府官员、国会成员、企业界领袖、基金会官员和其他学者进行讨论。</p><p>研究课题根据以下几点选择:重要性、时效性、信息来源、调查手段、人员与基金的可能性、计划与布鲁金斯目标的关系。布鲁金斯学会要求每一项研究都必须是学术性的，适于公开发表。布鲁金斯学会本身声称没有政策立场。</p><p>布鲁金斯学会的目的是什么呢？那就是印在他们 1987 年年度报告扉页上的罗伯特•布鲁金斯的名言：“如果我们能激发人们去思考这些法律、政府、经济和社会关系的问题，我们对人类做的贡献就将大于任何慈善行为。”布鲁金斯学会主要研究公共政策问题，大体上可分为三类:精确地完整地确定政策问题；使公众注意正在出现的问题；和研究进去政策的成败，温故知新。任何研究都要讲究事实确定，意见有价值，提出的政策是现实的。</p><p>我们在布鲁金斯学会与计划主任詹姆斯·D·卡罗尔（James D·Carroll）讨论科学研究与政策制定的关系。他说布鲁金斯学会不注重是否马上影响了决策，也不注重立竿见影的问题，这些应由政府中的专家来研究。布鲁金斯学会注重长期研究，注重对社会发展趋向的研究，尤其注重研究的教育效果，使整个社会对某项发展充分重视，都来分析，这是未来制定合理政策的基础。卡罗尔说，许多成果现在没有用，但有一天人们会想到要用它，这时候布鲁金斯学会已经提供了它们。</p><p>重视长期研究和社会总体研究是布鲁金斯学会成功的值得重视的条件。如果都一拥而上研究政府现在想做的事，恐怕一不利于科学研究，二不利于社会发展。</p><p>布鲁金斯学会的研究计划分为几个部分：</p><ol><li>经济研究，专门研究美国经济发展中的问题，如怎样提高生产率，如何储蓄增加并投入生产，美国怎样与其他国家在货币和税收方面进行合作，世界市场怎样向自由贸易开放，第三世界的发展如何得到保障，公共服务的质量如何得到提高（如卫生、教育等等），以保证美国处于世界前列；</li><li>外交政策研究，研究当今世界的变革，各国的国际化，各国的经济发展，科技、投资转移、跨国债务、国际竞争等，特别列出中国加入世界经济体系这一事实。布鲁金斯学会认为，这些发展要求美国提出新的目标和进行大幅度调整。在这方面，布鲁金斯学会享有名声，我们见了哈里·哈定，四十岁左右，为美国年轻一代中国问题专家，有一本新书叫《中国的第二次革命》，专讲中国的改革，为人们理解中国发生的变化提供了系统的知识背景。这方面的研究覆盖面较广，包括苏联、中国、日本、中东等地；</li><li>政府研究，专门研究政府体制与紧迫的社会问题的关系。美国宪法有两百年的历史，两百年中，政治制度大致未变，但社会在日新月异的发展。政府研究主要解决这个问题。主要包括政府效率、政府结构、政府功能、选举法律、总统提名程序、总统与国会关系等问题。</li></ol><p>另外，中心还有一个计算机中心，处理和收集数据。有一个公共政策教育中心，专门举行各种讨论会，邀请公共和私人部门的领袖来讨论问题。1987 财政年度，有三千高级人士参加了中心的活动，讨论各类问题，从美国航空计划、电子工业到国际恐怖主义。</p><p>最后这一点也是美国社会的一个特点。政府官员或私人部门的高级人士，都愿意参加公众活动，发表演说。这成为一种风尚，也许与政治制度的特性有关，政治制度往往逼得政府官员亮相，不亮相做不长，政府官员也乐于解释自己的政策，这是一种不可多得的沟通，建立了理解政策的基础。政策往往是不被理解的，因为每个人都有自己特殊的生活环境和问题。一项政策要想行之有效，必须被理解。在这方面，美国人实惠，象做生意一样，提供最详细的说明书。而不少社会的政治精神不是如此，而是回避解释。这在一定条件下也是一种政治艺术。</p><p>布鲁金斯学会的另一项活动就是组织出版学术著作和刊物。它出版一份刊物，叫《布鲁金斯评论》。另外，每年出版很多著作，1987 年财政年度，出版了二十九本书，六本论文集。布鲁金斯发表的学术著作品质颇高，有点阳春白雪。1987 年，有三本被《Choice》杂志评为“1986-1987 杰出学术著作”，还有其他的图书奖也常常落到这些著作头上。我们在那里会见了几位学者，都撰写了几本学术专著。在这里，写书是学者们的主要活动。</p><p>思想库的发展是美国社会在二十世纪令人瞩目的现象之一。可以说，西方国家中，思想库最发达的要算美国。美国人的基本精神是把思想变成一种对象，可以不断地改进、完善，以供人们选择。这是实用主义和商业精神甚嚣尘上的结果。在欧洲社会中，人们的文化观念说到底还是认为，思想有主观倾向，不是可任意选择的，也不可任意修正。思想库的发展，十九世纪法国的历史学家，以研究美国政治出名的托克维尔没有见识过。而认识今天的美国社会的政治，必须认识这一点。商业精神最讲究货比货。在思想库中也一样，各思想库也是相互竞争。由于美国政党的意识形态相同（当然这句话需要加以限定：首先，这是指民主、共和两大政党，不是指美国所有的政党，如美共等。其次，这仅是指民主、共和党在不搞社会主义或共产主义这一点上意识形态是相同的，除此之外，两大政党的信仰和价值观念差异颇大），大家面临的都是怎样应付危机和矛盾，所以乐于择优而取。这样一种机制，对促进政府行为的合理化自然有利。虽然思想库的结论有时激烈反对现行政策，但总体上都构成这个体制的稳定器。</p><h2 id="3-卡特中心"><a href="#3-卡特中心" class="headerlink" title="3.卡特中心"></a>3.卡特中心</h2><p>战后有一个传统，每届总统离任之后，都要建立一个以这位总统命名的中心，将这位总统任内的文件和资料存放在那里，并把有关的实物，如总统接受的礼品、有重要意义的物品陈列在里面。另外一项基本的内容，就是展示这位总统的政绩。总统中心或称总统图书馆，每座大约要几百万乃至上千万美元，由政府拨款，或加上私人捐赠。卡特总统为佐治亚州人，所以他的中心设在亚特兰大市。</p><p>卡特中心（The Carter Center），是一座规模较大的现代化建筑，花费二千五百万美元。据称除了政府拨款之外，卡特还从别处弄来不少钱。建筑的花园颇有东方色彩。整个建筑分为几个部分：</p><ol><li>卡特中心，中心是一个半赢利性的机构，目的是通过研究和社会性努力减少社会冲突、消除痛苦和加深人与人之间的理解，这是中心自己声称要做的。中心也声称它是世界上唯一的一位前总统每天参预的机构，中心里面有杰米·卡特的办公室。</li><li>爱摩里大学卡特中心，与卡特中心在一座建筑里，主要组织研究、讨论会和发表文章。这个中心在拉美和加勒比海、中东、苏美关系、非洲、健康、人权和冲突等方面进行研究，研究人员与爱摩里大学有非常密切的关系。爱摩里大学的研究生也到这里来做研究。中心多数成员都是爱摩里大学政治学系的教授。其中不乏著名的政治学教授，如卡尔•多伊奇（Karl W·Deutsch）。中心的苏联问题研究也全国闻名，爱摩里大学有全国数得上的卫星电视节目接收系统，每天24小时接收苏联的电视节目，进行分析。有一位教授叫艾伦•米基耶维奇（Ellen Mickiewicz），据说她的研究对美国的外交政策制定颇有影响；</li><li>全球 2000 家公司，目标是促进发展中国家的健康和农业；</li><li>拯救儿童组织，主要负责照料儿童方面的事务，由世界卫生组织、世界银行、联合国发展计划和洛克菲勒基金会资助；</li><li>杰米•卡特图书馆和博物馆，这个图书馆大概有二千七百万份文件，供人们研究卡特任期内的政治情況。博物馆的目的在于向公众开放，促进人们对总统制度的理解，这个部分由国家档案馆负责。</li></ol><p>重要的是最后那句话：博物馆的目的在于向公众开放，促进人们对总统制度的理解。这种机构是各类向公民传播美国精神、信念、价值观念和政策选择倾向的机构中的一个，其作用在于政治社会化，传播政治原则和政治文化。</p><p>我们可以看一下卡特中心如何做这件事。博物馆首先提供一部关于宪法和总统知识的电影，其中穿插卡特做总统时的镜头。电影从独立战争讲起，讲宪法的制定，描绘华盛顿总统的丰功伟绩，介绍政治传统，类似于教授美国政府的课程。任何前来参观的人都可以观看这部电影，免费。进入博物馆看，可以看见大厅分辟为几个部分，每一部分集中展出和介绍一个领域，如外交、环境、健康、财政等。每一个部分都有大幅的照片和说明，并且设有一至两架电视机。电视机上有几个按钮，按钮上注明，如人权、战争、环境等。如果来访者对什么问题有兴趣，只要按一下钮，卡特的形象就会出现在电视机屏幕上，向参观者解释这项政策的背景和指导原则。</p><p>最有意思的是，这里还有专门给儿童看的电视录像，是卡通片，题目叫：“如果你想成为美国总统。”画面活泼有趣，生动形象地介绍总统制度。这一点是令人惊奇的，美国人注意在公民成长的各个阶段传播美国的精神。这项工作是任何社会要追求制度稳定都必不可少的。</p><p>这种政治社会化的功能，在美国发展得比较完备，这是其社会稳定和政治制度稳定的潜在的因素。每个社会都应当寻找方法来传播其主导价值，没有一套健全和有效的机制，制度的稳定和政治理想的传承是不可能的。</p><p>总统图书馆或中心的基本功能不在于保存档案（当然保存档案对后代和历史有不可低估的作用），而在于传播价值和信念。来参观中心的人接踵而至。美国调动各种手段进行某种“政治教育”。可以想象美国人是深通此道的。美国人往往说他们信仰他们的制度，其实他们更信仰他们的信念。</p><p>我觉得美国人在政治上注重捍卫和传播信念，甚于维护具体的体制。宪法的持久在于它表明了美国的价值和信念。从体制上来说，这部宪法并不完美。在政治生活中，信念重于制度，因为制度是抽象的，要由人来体现。任何制度，如果其本身不能自动表现在体现它的人的精神中，就都是脆弱的。</p><p>所以，总统中心是政治，不是历史。举例便可说明，里根总统卸任前，已在选择在哪里建里根中心。据说看中了加利福尼亚的斯坦福大学。斯坦福大学态度不积极，因为大学是政治中立的学术性机构，而里根中心“带有政治倾向”。后来里根中心便没有设在斯坦福大学校园内。</p><p>卡特中心与其他总统图书馆或中心有一点差别，这就是它拥有一个与爱摩里大学政治学系合办的研究中心，实际上就构成了一个思想库。政界的很多高官显臣，在离开华府和官职之后，纷纷到各类思想库中谋职。他们从政的经验以及与官场的联系，又带动了思想库的研究成果和思想产品介入政治过程，从而推动社会的发展。卡特中心聚集了一小群学者，大部分为政治学者，可见办这中心的目的所在。卡特中心的研究计划，涉及国内政治和国外政治，其意图也是明确的，可谓雄心勃勃。</p><p>学者在这里做研究，有非常优厚的条件，全部开支由卡特中心提供。这类中心，有前政治家的胆识和关系，有来自私营企业的经费和资助，有学者们活跃的智慧，它所起到的作用为一般思想库所不能比拟。</p><h2 id="4-国防部长论坛"><a href="#4-国防部长论坛" class="headerlink" title="4.国防部长论坛"></a>4.国防部长论坛</h2><p>亚特兰大市位于南部。南北战争时，亚特兰大曾是南军和北军交战的战场。南部地区相对来说不如北部地区繁荣。南部人至今对南北战争似乎还耿耿于怀，话题总是离不开这场战争，北方人对此也清楚。我遇到的人听说我要去亚特兰大，告诉我说，那里的人一定会同你讨论南北战争。果不其然，不少人同我谈南北战争，说那场战争毀了亚特兰大，现在的亚特兰大完全是重新建设起来的。在亚特兰大市，我们参观了南方国际研究中心（The Southern Center for International Studies）。这个中心是南方少有的国际研究中心之一，组织了一些具有轰动性的活动，颇为有名。</p><p>中心坐落在一幢不大的房子里，这幢房子也是刚刚买下的，正在装修。中心主任 W 向我们介绍了情况：“这个中心有将近 20 年的历史，主要是举办外事政策的讨论会。中心组织了成百名专家和杰出人物与当地企业界、政界、学术界和大众见面。中心的前身是南方国际和公共事务委员会，建于 1967 年，1977 年改组，是一个非赢利性的、教育性的机构。”</p><p>何为教育性？我很感兴趣，向他问了这个问题。他解释道:“南方是一个非常重要的地区，但由于各种原因，南方地区对世界不那么开放。今天的科技迫使美国人成为相互依赖的全球共同体的成员。不了解今天的国际社会，是无法决策的。中心的任务是让成员和公众了解这个新的环境，让他们亲耳聆听有关国际经济、外交政策和他国文化的演说，听国际专家、世界领袖的意见：理解这个国际社会。中心本身没有政策倾向和政策立场。”话是这样讲，没有一个机构会没有价值选择，只是怎样表达有所不同罢了。</p><p>中心的主要活动包括教育性的研讨会，中国领导人邓小平、法国前总统瓦莱里·吉斯卡尔·德斯坦、前英国首相爱德华·希思、约旦国王侯赛因、沙特阿拉伯王子费萨尔和大部分国家的大使，都应邀来这里做过演讲，由此可见中心的厉害。</p><p>中心每年举行一次由前国务卿和国防部长参加的讨论会，由 CBS 电视系统向全国转播，由新闻总署的卫星向海外传播。中心还组织专门的小组，研究一个国家、地区或全球的问题；实施连续的国际商业教育计划；与世界知名人士共进晩餐。另外，还举办各类讨论会等。中心出版《全球评论》和《国际问题文献》两份刊物。</p><p>这个中心的活动是引人注目的，我们可以看一下它组织的几项活动：</p><ul><li>1987 年 12 月 18 日，第五届前国务卿年会，与会者有腊斯克、罗杰斯、基辛格、万斯、马斯基、黑格，主题是“美国外交政策的制定”</li><li>1988 年 1 月 19 日，中国驻美大使韩叙前来演说。</li><li>1988 年 5 月 6 日，亚太问题年会，题目是：华盛顿——北京——台湾：关系正常化后的十年。</li><li>1988 年 9 月 30 日，讨论会，题目叫“向下届政府建议”，有八位前国防部长到会：麦克纳马拉、克利福德、莱尔德、里查德森、施莱幸格、罗斯菲尔德、布朗、温柏格。</li></ul><p>从上述活动可以看出，这个中心的能量不可小看。这个中心有多少人呢？经常性的工作人员大概十名左右。资料室只有两个人，负责出版那本《文献》（主要是一些复印文章的汇编，但很有用）。</p><p>中心的活动经费从哪里来？这是个关键的问题。经费的来源有多种渠道，有的来自赠款，有的来自基金会，有的来自会费。中心的成员分成许多种类：国际组，25,000 美元或以上；企业主，10,000 美元；发起者，5,000 美元；支持，500 美元；资助，250 美元；普通，100 美元；特别，50 美元。特别组包括学生、教育机构成员、大众传播媒介的代表和退休人员。</p><p>自然，单靠这些经费是远远不够的。主要经费来自基金会和企业。W 说，经费来源不能单一，单一的话就有可能被给钱的人操纵。问题是有许多人愿意给钱。象南方国际研究中心这样名扬四海的机构，不少人愿意给钱。这是美国文化不可分割的一部分。前面我谈过布鲁金斯学会，它的主要经费都是来自基金会或什么地方的。</p><p>此外，重要的成功因素是：高级政府官员乐于做这种事情，离职的政府高级官员也愿意做这种事情。尤其是后面这些人，他们觉得自己有责任对内外政策发表意见。美国人也愿意听来自其他国家的政府官员或领袖发言。一个国家的政策制定不能没有自己的立场，但多听不同人的见解，可以知己知彼。在这个过程中，所有参与的人都会有所收获。政策的优劣有一条普通的标准，就是反对的人是多是少。多了解和掌握不同的见解，就可以制定出覆盖面较广的政策。</p><p>这些知名人物如何接待？要不要付报酬？大多数情况下不需要付报酬，因为他们愿意参与这些活动。有些人要付钱。关键的问题是安排他们的行程和日程。从他们走出家门的第一步到回到家里的最后一步，中心都得精心安排，不得有误。这些显赫人物万一有个闪失，事关重大。有时候要用私人飞机接送，那种巨大的，每边有三个门的高级轿车（Limousine）也是必不可少的。</p><p>我们看到，南方国际硏究中心只是一家私人的机构，但它却有足够的力量召集所有的前任国务卿到亚特兰大市来开会，做演讲，也能邀请所有前任的国防部长到亚特兰大来做演讲，就国内外政策进行分析和讨论，并让公众参与这些活动。于是智慧活跃了。智慧能更好地服务于这个社会和这个制度。由此可以看出，美国人有强烈的政治世俗化的观念，强烈的非神秘化的观念。曾经身居高官的人，并不回避这类活动，而是积极支持这类活动。说得难听一点，是他们不甘寂寞，正因为他们不甘寂寞，中心才能起到更大的作用。</p><p>象这样的中心，也非绝无仅有。除了它们本身办得成功之外，它们也起到不可低估的社会作用。中心的一个目标就是促进大众教育。实际上众多的这类中心通过他们的活动把美国的价值观念传播给了大众。这类机构是政治社会化的功不可没的机构。政府的一些基本政策通过这样的渠道传播给大众，得到更多的认同。</p><p>同时，中心也起到把各界的观念传播给决策者的作用。试想电视台向全国一转播，会产生何等的效果。政策问题往往不在于制定得好不好，制定得好固然是基本，但更重要的是能不能让公众信服政策制定的指导思想。只有做到了这一点，一项政策才能得到贯彻的根本条件。一些政策的无效，并不是政策本身的问题，而是观念和大众的认同问题。这类中心和机构所起的作用，尤其是在政治生活中起的作用，不可低估。它们不是政治的正式机构，但起着政府机构起不到的作用。</p><h2 id="5-地区事务中心"><a href="#5-地区事务中心" class="headerlink" title="5.地区事务中心"></a>5.地区事务中心</h2><p>美国社会的总体发展，很大一部分是由各地方和社区的发展组成的，一个社会的发展不可能凭空产生，社会的现代化和物质文明也不可能凭空产生，要以整个社会的各个基本组成部分的共同发展为前提。单讲宏观发展并不现实。一些第三世界国家在制定社会发展规划时，往往只注重宏观目标，而没有把这些目标建立在具体而细致的小目标上，小目标直接关系到社会每一位成员的切身利益。小目标的达成，不仅构成社会总目标的基础，而且构成社会均衡发展和持续进步的心理机制。</p><p>美国社会的一大特点，就是社会的发展相对均衡。每片小的社区之间有差别，但不悬殊，这是作为发达国家最重要的指标之一。自然，也有穷人，也有穷得难以置信的人，但社会总体水平可以说是发达水平。社区政治的发展是社区均衡发展的一项基本条件。社区发展取决于多种因素，如联邦政策、州政策、居民态度、社区结构等。但如何注重推动社区发展为一大端。</p><p>俄亥俄州位于中西部，我在这里的迈阿密大学访问了三天。大学的教授告诉我，这里地处中部，中部人比西海岸和东海岸的人要保守得多。新的观念往往从东海岸和西海岸萌发，然后慢慢向中间地带运动，越往中间地带运动，势头越弱；故中部地带受新观念的影响不大，较为保守，这是能解释社会文化差别的一个有趣的想法。自然社会绝非清一色的，各种观念，传统与现代、保守和激进，争论激烈。认识美国社会绝不能将其设想为“铁板一块”。美国有两条海岸线，实在是地理上的天赐，东海岸遥望欧洲，西海岸相隔亚洲。最强大的经济和文化力量均在两个海岸地区。中国的沿海地区也是最为发达的，如果有一条西海岸，恐怕中国不是今天的中国了。</p><p>俄亥俄州的迈阿密大学有一个机构令人感兴趣。这就是公共管理和地区事务中心。这个中心的重要目标是进行地方政府行政的研究，促进地方行政的发展。不知其他地方有无此类机构，这是大学研究与地方政治发展结合起来的实例。</p><p>这个中心由州政府支持，州政府负责主要财政。这表明州政府力图通过中心的研究、教育、分析来提高地方政府管理水平，向地方政府提供技术帮助。中心的主要功能是向地方政府提供管理技术资助，増强地方政府的能力，促进地方经济的发展，评价公共计划并进行政策研究，服务对象主要是县、市、村、镇政府。</p><p>这项计划很好地把高知识与具体发展联结在一起。地方政府缺乏专门人才，难以对很多问题做出估计，需要人帮助。大学有高知识高技术，但无人组织，不会自动转向地方政府。从全国政治来说，地方政府的活动并不引人注目，堂堂大学教授不会留意。但如果组织起来并加以推动，好事自成。</p><p>中心一般应地方政府的邀请前往作各项研究，有时中心成员也自行设定地方政府发展所需要的计划，主动上门服务。中心有两名固定人员，拥有电脑、激光打印机等现代化研究设备。中心与大学的政治学系有密切的关系。许多研究工作，由政治学系的教授承担，或由政治学系的学生协助。</p><p>可以看一下中心的研究工作，获得具体的概念：</p><ul><li>制定巴特勒县的经济数据手册；</li><li>进行公民调查，规定蒙罗市的停车场计划；</li><li>制定西卡罗顿市的植树规划；</li><li>制定凡尔费尔德的人员表格并进行工作调查；</li><li>制定汉密尔顿的经济全面发展计划；</li><li>对蒙罗市急救服务的成本与效益分析；</li><li>对卡里斯勒行政的公民态度调查；</li><li>编辑和发行镇董事参考手册；</li><li>研究联邦预算和税收政策对俄亥俄农村社区的影响；</li><li>召开公共服务研讨会，研讨地方政府面临的共同问题；</li><li>编辑有关各种经济和管理问题的手册。</li></ul><p>如此等等，一般来说，工作很细、很具体。中心的研究不涉及国家的大政方针，但可以看出，这些研究对地方政府的发展十分有用。</p><p>可以再对一份研究报告做具体分析。该中心最后完成的报告叫《普莱勃县经济发展报告》，这份报告的主要目的是提供普莱勃县的社会、经济、地理、文化和人口等方面的具体数据，以吸引企业家和资金，求得本县的经济发展。</p><p>报告第一部分简要介绍了县史，然后介绍县的地理位置，县内各镇的分布，高速公路的状况，包括高速公路通往各大城市的距离，如到亚特兰大 496 英里，波士顿 835 英里，芝加哥 250 英里，底特律 223 英里，等等，共列了几十个大城市，另外介绍飞机场的情况，包括附近的国际机场和县内的各个小机场。有很大篇幅用于介绍人口、政府、便利、住房、卫生、医疗、图书馆、教育情况，并详细介绍县内六所学校。这些都是吸引投资和劳力的重要数据。县内有八个镇，各个镇的人口、预算、便利、交通、经济指标均有详细数字。由于这份报告由大学研究中心编制，有一定的权威性，普莱勃县可以通过散发这份资料来达到既定目标。另一方面，这个报告又为县政府分析工作和制定发展目标提供了很好的条件，一举两得。</p><p>这个中心给人们的启示是：怎样有效地组织和引导社会的高知识和髙技术流向相对落后的地区，怎样有效地促进社会整体的均衡发展。州政府引导俄亥俄大学的手段是：利用经济杠杆。州政府出钱资助建立中心，中心是专业化、非赢利性机构，其任务就是促进地方政府的发展。</p><p>正如我在开始所说，小社区的小目标的达成，是大社会的大目标达成的基础。从宏观上来讲，可以拥有航天飞机，人造卫星，大型计算机等，但这不等于一个社会的均衡发展。现代化在很大程度上并不是前者，而是每一个普通人能生活得更好。这的确是一个观念问题，没有这种认识，社会发展的设计就会不同。</p><h2 id="6-知识水库"><a href="#6-知识水库" class="headerlink" title="6.知识水库"></a>6.知识水库</h2><p>一个社会的发展，与知识尤其是先进知识的传播有不可分离的关系。总结人类历史发展的过程，新知识、新智慧的出现往往并不意味着社会的进步，而只有新知识、新智慧的广泛传播才意味着社会进步。如果没有一个传播过程，新知识、新智慧不会成为推动社会进步的强大力量。</p><p>中国古代不乏一些在当时属于杰出的思想，但它们均没有成为推动这个社会进步的动力，令人无不叹息万分。中国古代的思想文化在世界上具有独特的地位，与西方文明有相当的历史地位，但它没能导致中国社会与西方社会的同步发展。关键的原因之一在于没有传播机制。西方社会的发展，尤其是二次大战后高科技的发展，均与知识和观念的传播密切相关。信息传播对西方社会演变和发展的作用不可低估。</p><p>大学图书馆系统，在今天的社会上起着主导的传播知识和观念的作用。我参观哈佛大学、MIT、斯坦福大学、加利福尼亚大学、伯克莱分校、密苏里大学克伦布斯分校、爱荷华大学、俄亥俄州迈阿密大学、耶鲁大学、普林斯顿大学、锡拉求斯大学、西雅图华盛顿大学、加利福尼亚大学圣地亚哥分校、爱摩里大学、密歇根大学等学校的图书馆，深感这些图书馆在一个社会中所起的作用非同小可。几千所大学的图书馆加起来，构成这个社会管理和运转体制中的一个重要组成部分，同时也是传播知识和智慧的无所不在的网络。</p><p>图书馆象一座知识的水库，储蓄着人类有史以来创造和发展的形形色色的知识和智慧。自然，单独一所大学的图书馆做不到这一点，但大学图书馆之间有着密切的合作关系，并通过现代科学技术实现这种合作。图书馆储存着知识的甘露，不使其流失。每一位感到知识饥渴的人都能够到这里畅饮这份甘露。</p><p>大学图书馆一般均尽其全力收集各种书籍、刊物、报章等资料。正式出版物自然包括在内。资料无论国内国外，各图书馆均尽力收藏。对于国外资料，一家图书馆不可能尽收囊中，但各家均有侧重。如有的注意收集印度的文献，有的注意收集苏联东欧的文献。耶鲁大学的东亚图书馆，收有大量中文资料，连非正式的出版物都一一收存。“文革”中红卫兵小报在不少大学图书馆中有较为完整的保存，为今天学者们研究这段历史提供了有利的资料基础。我曾问过一位图书馆的负责人，收集资料的原则是什么。他的回答是:“尽可能地收集，我们不知道今天它们有没有用，也许没有用，但对后人研究历史也许就是有用的。”图书馆的功能，不仅在于借书给读者，而且在于收集汇总知识，成为知识水库。任何人需要任何知识均可以在这里得到满足。</p><p>图书馆象一个水渠的网络。各大学图书馆之间有着密切的合作关系。图书馆之间可以互通有无。如果一个人在一个学校的图书馆中查不到一份资料或一本书，可以通过图书馆向其他学校去借。杂志上的文章，也可以要求图书馆到其他学校去复印。图书馆之间，也通过电脑系统联结起来，在一个大学的图书馆可以查阅许多家图书馆的藏书。</p><p>不少图书馆与国会图书馆有电脑网络联系，可以直接从国会图书馆调资料，如国会辩论记录等，并且可立即打印出来。这个渠道网络不仅连通各图书馆，而且连通每个人。这使知识能够最广泛地传播。在某种意义上，各类图书馆象一个系统，具有较大的“规模效益”。</p><p>图书馆象一个开放的知识水库，每个人均可以在里面畅游。一个社会的进步，在于每个人能否接受和掌握这个社会积累和创造的知识。要最大限度地达到这个目标，就要使每个人都能简便、最迅速地得到知识和观念，无论是历史的遗产还是现今的创造。各类图书馆（不仅是大学图书馆），都是开放的，任何人均可进入图书馆。图书馆里的各类书籍、资料、报刊、微缩胶卷、工具书均可使用。图书馆中的所有资料都是开放的，全部存书均开放，任何人都可以借阅。如果是当地居民或大学成员，便可方便地借阅各类收存物。珍本有专门的管理方法，但也可以接近。各图书馆均收存专门的政府文件部分，每位读者都可以借阅。</p><p>最大限度的开放性是图书馆发挥最大效益的先决条件。没有这个条件，水库就会成为死水一潭，不起社会功效。建造水库的目的不是存水，而是灌溉。知识水库也一样。</p><p>知识水库，不仅起着传播知识、灌溉大脑的作用，同时也起着知识的代际传播作用。图书馆积累了一代又一代人创造的知识，同时实现着这些知识的代际传播。大学图书馆的设备和管理均达到一定的水平。图书馆中的电脑索引，縮微设备，以及复印机等，为查阅各类资料提供了极大的方便。在管理思想上，突出为读者服务的重点，一切追求方便，使读者能够找到他所想寻找的全部资料。</p><p>图书馆系统在一个社会的管理中有何作用？这是一个耐人寻味的问题。任何社会的管理，在很大程度上是一种知识管理。政治管理也罢、行政管理也罢、经济管理也罢、技术管理也罢，最终均是对人的管理。人不是抽象的、机械的对象，而是能思维、有主见的对象。主导人的行为首先是人的思想，是人所接受的一整套既成文化和既成观念，以及人们在这个基础上所进行的创造。一切社会的进步和冲突其实都源自对知识的管理。</p><p>历史也告诉我们，政治系统面临的一大职责就是管理知识。知识决定政治发展的水平。在某种意义上，知识结构可以导致政治进步，也可以导致政治衰落。历史上政治的每次飞跃，或曰旧政治与新政治的新陈代谢，均与知识的发展与不发展有关。</p><p>一个社会采用何种方式来管理知识，在某种程度上可以解释这个社会的格局。传播知识或传播某种知识，不仅是教育的责任，而且是政治的重大责任，有时候还是政治的沉重负担。</p><p>美国社会采用分散化管理知识的方式。自然，任何知识管理都不可能是完全非政治化的。但社会的知识管理在更大程度上脱离了行政系统。行政系统形式上不承担这项沉重的责任，高度发达的图书馆系统又使这种管理方法得以实现，在知识传播系统自组织不发达的社会中，行政系统承担着无比沉重的传播知识的重担，这不仅是为了传播知识，而且也是为了给行政系统建立一个牢固的基础。传播知识系统的充分组织化，并达到较高的水准，对社会和政治管理的意义是显而易见的。</p><h2 id="7-市图书馆"><a href="#7-市图书馆" class="headerlink" title="7.市图书馆"></a>7.市图书馆</h2><p>爱荷华市是一个小市，人口大约 1.5 万人。这里主要是个大学城，大学生有 3.5 万人左右。两部分人口加起来，约有 6 万人，这样的小城镇星罗棋布，不少人宁愿选择到这样的小城市来居住，而不愿去纽约、芝加哥这样的大都市。小城市宁静，悠闲，民风纯朴。大城市的人自然瞧不起小城市的人，不过小城市的人并不都羡慕大都巿。</p><p>原因在哪里？发展中国家，人们都纷纷涌入大城市。五六万人这样的小城市在那里是绝对留不住人才的。可是爱荷华大学里有许多著名的数授，他们也热爱这里的生活气氛，不想他就。除了人们的心理偏好之外，另一个重要因素就是生活条件。小城市的社会活动环境与大城市没有什么根本差异。我们可以从这里的图书馆谈起。</p><p>爱荷华市的图书馆相当不错，备有一般大图书馆所拥有的全套设备。市图书馆有不少存书，虽然不能与大学图书馆和国会图书馆相提并论。图书馆拥有较好的视听系统，市民可以在这里面借唱片、录像带、甚至电影，可以“堂吃”，在图书馆里用图书馆的设备看，也可以“外卖”，带回家去看。</p><p>图书馆备有电脑，供市民使用，还有复印机等各项设备。市民图书馆的目标与大学图书馆不同，不是用来供学者做学问的，所以它备有大量的儿童读物，这是专门为市民家庭服务的。图书馆里可以看到成群的儿童。图书馆备有各类报刊，数量不多，但也可观。还备有各类工具书，可供查找如全国的大学地址，电话号码，查找高中的情况等。图书馆也有人专门负责剪报和整理材料，读者可以比较方便地找到有关一个问题的剪报。</p><p>图书馆还为读者提供另一种服务，这就是把招工广告都集中在一起，需要找工作的可以来此查阅。更绝的是，图书馆备有许多装帧画、油画、名画复制品，装在精制镜框里，这些也可以出借。只要有借书证，就可以借二三个月，在家里挂一挂，然后再到图书馆来换。这是一个别出心裁的点子。所以它不仅是图书馆，还是“图”“书”馆。</p><p>整个图书馆的管理是电脑化的。图书馆有一个中心电脑，负责接通图书馆里所有的终端。读者要查什么书，只要查电脑就可以了。为了方便读者，图书馆的电脑也经过精心设计。这些电脑终端没有键盘，只有屏幕。所有的电脑，指令都会显示在屏幕的下方，使用者只要用手指一下某一个指令，电脑就会按指令操作。好象是种感应式的系统。这种设计特别有利于儿童，因为儿童难以记住指令。提供一种“视触式”的指令系统，整个电脑系统就可以轻而易举地运转。在有些地方，电脑系统之所以无法运转，是因为大部分人不懂得怎样操纵电脑。这里做的事，不是人服从电脑，而是让电脑服从人。</p><p>这样一座方便的图书馆，对市民是免费的。任何人只要居住爱荷华市，就可以免费得到一张借书卡。如果不是本地市民，只要付一定的费用，也可享用。办一张借书卡十分方便，只要说住在哪里，并出示一定的证件便立等可取。</p><p>这座图书馆只是这座小市各种便利设施的一个方面。在大部分小城镇里，人们不会感到明显的落后，人们可以享受到现代化的所有成果。这是社会稳定的一个重要方面。不少发展中国家的一个令人头疼的社会难题，就是如何协调不同地区政治经济发展不平衡的问题。政治经济发展不平衡会引出种种矛盾。这些矛盾并不是人为的，而是社会发展到一定阶段不可避免的。问题是有没有把这些问题上升为政治管理和社会协调的前提，从而去推进全国政治经济发展的均衡化。</p><p>政治经济发展的不平衡，会造成地区之间的资源之争，人员流动形成的管理困难，人才过分集中于大都市而引出的全面发展的困难等等。其实第三世界国家中的有些改变，也意味着贫困地区的力量夺取全国最富有的地区。也许这可以列为政治地理学的一个课题。</p><p>爱荷华市这个小城，商店区有几大片。纽约或华盛顿商店里有的东西，这里应有尽有。没有人会想亲自到纽约或芝加哥买东西。也很少看到“二道贩子”或“倒爷”，要么是买卖毒品之类的货色。这里的住房、公用设施、第三产业都相当发达。在这里生活，不会感到不方便。所以除了年轻人有出去闯荡天下的念头外，一般市民情绪稳定。有的甚至太稳定了，一辈子没有出过爱荷华州，不知纽约或旧金山为何物。</p><p>需要探讨的是，为什么小城市能达到这样的水准？</p><p>其一是高度发展的商品经济。这里的大部分商店、第三产业等设施部是私人经营的，商品经济促使私人企业来到各个小城市。只要有顾客，商品经济就会前来。小城镇的商店不仅有美国的产品，而且有世界各国的产品，如日本电气、中国纺织品、台湾、香港的生活用品等。这就是商品经济的力量。发财的欲望促使商人们尽可能扩大销售网络。如果有什么力量可以限制人们发财，小城镇也不会发展起来。</p><p>其二是高度发达的交通系统。各个小城镇一般都接通全国的高速公路网络，可以通往全国任何地方。这样方便了私人企业向全国各地投资。公路是由国家或州政府建造的，为企业和个人生活提供了基本条件。由此可以看到公共投资在哪个方面最为重要。如果政府花很多钱在各地造商店，我想不会有今天。</p><p>其三是巨大的生产能量。没有高生产率作为后盾，商品不会充分涌流。自然，美国的另外还有项条件是由美元的世界地位带来的：各国产品纷纷涌入美国市场。高科技的发展也为市场繁荣创造了条件：输出高科技，输入大量精巧的生活用品。</p><p>其四是有力的管理体制。美国社会发展到今天也是一个渐进的进程，是经过这么多年积累之后才形成的。小城镇的管理体制一般也建立在大众选举的基础上。每届政府要想连任或博得名誉，都得办几件实事。城巿及社会发展就这样慢慢积累起来。大众选举可以相对保证管理人员的能力，能力差的会在选举中被淘汰。</p><p>美国社会现代化的基础不在纽约之类的大城市，而在千百个小城镇，大城市只是山巅而已。</p><h1 id="十一、危机的潜流"><a href="#十一、危机的潜流" class="headerlink" title="十一、危机的潜流"></a>十一、危机的潜流</h1><h2 id="1-家庭观念"><a href="#1-家庭观念" class="headerlink" title="1.家庭观念"></a>1.家庭观念</h2><p>对美国人的家庭观念或家庭组织，受过东方文化熏陶的人大多不敢苟同，也不欣赏。美国人的家庭观念与几十年前已大不相同。当然，美国的家庭成千上万，也各不相同。我们分析的只是典型的、代表主流的美国家庭观念。</p><p>组成家庭，很重要的是有一男一女结合。对大部分美国男男女女来说，这种结合并不能妨碍他们每个人的私域（privacy）。许多夫妇都相敬如宾，互不干涉对方的私域。他们之间这种关系模式，在中国和日本是不能接受的。男女双方在很多问题上都是商量性的，听上去就象是两个不怎么认识的人在谈一件事情。当然，也存在融洽的家庭。</p><p>美国人的夫妻生活发展到这一步，是社会长期以来追求个人主义的结果。美国人自小就受到这种训练，视这种价值比任何价值都重要。另一方面，由于长期受这种教育，已变得不那么善于与人打交道，已不会与人共同生活。我个人认为，这是美国社会将来的一个难题。结婚并不能打破在每个人心里筑起的这座堡垒，特别是年轻夫妻。年老的夫妻似乎更需要相互依赖，不那么注意维持内心的屏障。</p><p>这道屏障是如何形成的？这要从美国人自幼的环境谈起，谈起来我觉得不少的年轻夫妇太个人主义，太自私，不太注意对儿童的扶养和教育，不象东方人那样望子成龙，也不象传统的西方人那样倾注心血。很小的孩子，甚至连一岁还不到，一般就被送入单独的房间，美国人的观念是，这使孩子学会拥有私域，学会拥有自己的领域，另一方面也可保护家长的私域。这是让儿童学会独立的起步。美国人高度评价独立和个人主义。家长们向孩子们灌输这种观念，同时也是保护自己。他们不希望由于孩子的降生而使自己失去这些。他们内心的这些兴许是无意识的动机推动他们鼓励孩子去“追求第一”和“自立”。从社会效果说，也许有积极的意义。孩子们很早就受到教育，应当自己做决定，应当对自己的行为负责。这使家长可以较早地摆脱孩子的纠缠。</p><p>儿童很早就开始挣钱，家长也会给他们一些钱。不少很小的孩子在银行有户头。9 岁至 10 岁的儿童可以为邻居送报纸，13 岁至 18 岁的孩子可以为邻居看孩子。美国社会是一个金钱社会，家长们深知要使孩子获得独立，必须强迫他们学会与金钱打交道。</p><p>到了 18 岁至 21 岁，家长们便鼓励孩子离开家庭，过独立生活。一般来说，孩子们到了这个岁数，都外出自谋生计。孩于外出之后，与家庭的关系，从中国人的观念来看，十分淡漠。常常可以听到这样的故事，子女打电话给父母，说某日几点钟来，几点钟走，届时便走。年轻人进入社会就象进入战场，要想有一个较好的生活，不能不使出浑身解数。这种压力也迫使他们无力顾及父母。我知道有些人很爱他们的父母，但他们没有时间经常去看他们。我也知道许多人对老人很淡漠。不少老人住在养老院或什么地方，子女等于没有作用。不论出于哪种情况，子女要赡养老人极为困难。老人的现状教给年轻人的是什么呢？会在年轻人身上留下什么烙印呢？</p><p>父母一般也不管子女的婚事，那均由子女自己决定。子女只是把女朋友或男朋友带回家里与父母见见面。美国人在这方面较为随便，豪门望族可能严厉一些。父母也都是这样过来的人。青年一般在中学就有男朋友或女朋友，性的观念较为开放，父母们对十五、十六岁的孩子的异性朋友，并无反对意见。我认识的一位老师就把自己的儿子和儿子的女朋友带到课堂里来，介绍给大家。她的儿子才十五岁。我问她对这种关系有何想法。她说她觉得很好，儿子的女朋友比他大两岁，有自己的汽车，不让她儿子喝酒、抽烟。接受这种事实在美国人看来是家常便饭，因为父母也是这么过来的。女朋友、男朋友的概念决不意味着结婚，当然，也有可能结婚。</p><p>对子女的态度是由各种原因产生的，其实我觉得许多人很爱他们的孩子。然而，一般家庭必须让孩子早早独立，供养不起，所以他们无法去爱。反过来，子女也爱父母，但父母的晩年不能依赖子女，子女是无法负担的，因而子女也无法去爱。这层关系对社会有深远的影响。父母的晩年得依靠社会保险或福利制度，而不能依靠子女。老人必须建立起自己的生活。中国文化中包含浓烈的养儿防老的因素，孝道也为中国文化基本概念之一。美国人不是不想有这种观念，而是无法有。有位朋友说，除了文化的因素，物质的条件也是很重要的。养儿防老是农业文明的产物，在工业文明的冲击下势必减弱。</p><p>老人的现在就是青年人的未来。老人的这种状况影响着年轻父母对子女的养育态度。从他们开始有孩子起，他们内心中就十分明白，这个孩子将来是不能依靠的，扶养他是一种单方面的义务，大部分情况下不能指望什么报答。这会对父母产生什么样的作用呢？父母要真正承担养育子女的责任，是一个不小的挑战，即战胜他们自身从小形成的个人主义（不是贬意的，而是指一种文化现象），这种文化现象代代相传，要选择新的开端极不容易，这是未来的一个问题。</p><p>亚里士多德在二千多年前就说过，家庭是社会的细胞。战后这些年的发展、家庭这个细胞在美国已经分解。表面上看，家庭仍然是社会的细胞，但实际上，真正的社会细胞在美国是个人。家庭组织和家庭观念正在加速这个分解过程。过分传统的家庭对个人的束缚太紧，不利于个人发展。但过分松散的家庭是否就有利于社会的进步呢？家庭本来可以协调不少人际矛盾和人际关系。在家庭分化之后，这些矛盾就得交给社会了。</p><p>政府承担着沉重的由于家庭分化而产生的负担，从儿童教育到老人问题。这成为经济和社会发展的一大包袱。但在家庭组织日益分化的今天，这个包袱可能会越来越大。政府能提供的只是物质条件，情感上的问题谁来调节？家庭的分化使社会失去了不少人情，这对一个和谐社会也是不利的。</p><p>不少人对家庭的演变也忧心忡忡。新保守主义思潮便是代表之一。新保守主义强调家庭的作用，不少人希望家庭能传递宗教、道德、伦理等基本规范。不过在美国社会这种机制下，要做到这一点，谈何容易。</p><p>社会究竟以个人为细胞好还是以家庭为细胞好，家庭应该如何组成，在不同的文化背景下有不同的观念。美国社会至今依然是以家庭为社会基层的单位。但在精神上，家庭正在被架空，而社会还没有形成完整的以个人为细胞的调节机制。最后要问两个问题：</p><ul><li>人性究竟适应于过有家庭情感的生活还是没有家庭情感的生活？</li><li>个人主义是情感选择的还是不得不接受的？</li></ul><p>社会经济的发展是否必然导致传统家庭的分解，美国社会走过的道路似乎是这样。现代化与传统社会结构之间是两难困境。我在新加坡时就深感这个问题的困难。新加坡是华人社会，也是新兴工业国家。经济发达之后遇到的首要问题就是家庭分解的危险。新加坡力图通过儒家文化来缓和现代化的冲击波。家庭观念和家庭组织的演变，也很好地反映出了马尔库塞所描绘的“单面的人”。马尔库塞对美国提出的问题是：爱欲文明能否取代技术文明？我的问题是：除了性爱之外，人类社会还应保持怎样的情感？</p><h2 id="2-无知的一代？"><a href="#2-无知的一代？" class="headerlink" title="2.无知的一代？"></a>2.无知的一代？</h2><p>青年一代的教育危机，已经成为一个令人忧心忡忡的社会问题。大学教育具有相当水准。主要的原因还有，年轻人可以进入大学的面很广，人才是在大学中淘汰出来的，而不是在大学之前。但中学教育令人担忧，中学（高中）教育水平之差，令人吃惊。当然不是全美国都如此，有地区性的差别，在大城市和黑人居住的地区，情况尤其严重。10 月 4 日晩上电视播发了一项特别节目（Burning Questions，热门问题），题目是：孩子为什么不及格？看了之后，令人大为震惊。在美国这样一个屈指可数的发达国家中，教育水平如此之差，一般人难以想象。</p><p>电视节目分为三段：高中生、教师和家长。高中生的基本知识面很窄，电视中报道了一些测验的结果。在有关本国的知识方面，知道美军参加第二次世界大战的起因是珍珠港事件的有 81%，知道政府分为立法、司法和行政三个部分并相互制衡的只有 64%，知道门罗主义的只有 42%。对于最高法院判定黑人和白人隔离违反宪法之事，知道的人只有 20%。在世界知识方面，高中生的问题更多。大部分人不知道国际上的政治领袖，但对杰克逊、玛多娜这样红极一时的歌星却十分熟悉，知道奥威尔的《1984 年》一书的只有 25%。美国人认为这是一个很严重的问题，当然这里面有意识形态的因素。在数学方面，也是惊人，知道 10 的 87%是多少的人，只有 60%。在地理方面也同样创造“纪录”，据闻有 50％的人找不出华盛顿市在哪里。我认识一位台湾来的留学生。他说有一次一位美国学生问他从哪里来，他说是台湾，没想到对方提了一个令人目瞪口呆的问题：“台湾在欧洲的什么地方？”另一位巴拿马来的留学生也曾告诉我：美国大学生对巴拿马的概念，就是一条运河，两旁有许多房子，根本不知道巴拿马是一个国家。</p><p>此类问题，在美国讨论已久，对美国人不能书写，不能计算，美国人自己也忧心忡忡。曾有一个人告诉我，他认识的一位朋友开一家店，买可口可乐六瓶可以打折扣，如一瓶 50 分，六瓶就只要两美元。一位美国人来买，他向他介绍买六瓶合算，只要两美元，那人就是怎么也算不过来，说宁可一瓶一瓶买。这当然是极端的例子。但这种问题已经影响到社会经济的发展。10 月 3 日的《芝加哥论坛报》报道说，IBM 公司设有一个成人识字（Literacy）中心，正在实施一项计划，教育成年人识字。IBM 公司每周三天开设课程，学生从 20 岁到退休年龄不等。这是这个地区的大公司首次实施这样的计划。IBM 实施这个计划的目的是很值得注意的。他们认为，到九十年代，在这个地区就难以找到他们需要的工人了。IBM 成人识字中心经理 Dave Cox 说：“我们认为成人文盲是个主要的经济问题。如果我们要扩充经济，参与竞争，我们就必须得到经过训练和能够加以训练的劳动力。”</p><p>根据 1980 年的统计，伊利诺州的官员估计，该州大约有 200 万人可以被认为是实际上的文盲。估计芝加哥市的这项数字是 75 万人。在全美国，问题之大，不难想象。如果说教育系统不能培养出合格的人才，美国的未来发展就会成为一个十分棘手的问题，日本战后经济成功的一个重要原因，就是其教育制度的严格性。今日的日本，教育体制依然相当有效，这恐怕是美国面临的最大的挑战。</p><p>除了知识教育之外，严重的问题还存在于伦理道德和价值观念方面。青年人在这方面的情况也令人担忧。关键的因素是青年一代失去了信仰和伦理观念。保守派对此十分反感。这档电视节目的总结是：孩子们缺乏价值观、纪律和目标。</p><p>原因何在？</p><p>教师们的答复是：教师的工资太低，待遇太差，高中留不住人，大家都见异思迁。家长的答复是：工作太忙、没有时间照管孩子，挣钱都来不及。问题是，是不是联邦增加拨款就可以解决这个问题呢？可以部分解决，但不能全然解决。美国人的思维容易想到拨款上去。</p><p>我在一个中等水平的家庭里看这档电视节目，主人有一位女儿是高中生，另外还有一位女儿的同学。看完电视节目后，我们讨论了这个问题。女孩子说，“美国的确存在这种现象，但在我的学校中问题没有这样严重，同学们的成绩要好得多。学生缺少地理知识，也许与生活太优越有关，他们不需要到别的国度去就可以得到舒适的生活条件。对价值、纪律和目标，不同的人有不同的选择。”她的同学说:“这种问题在大城市和贫困地区特别明显，很多人不会写不会念，他们认为读书不能马上赚钱，而贩毒或做什么事却可以马上赚钱。接受更多的教育没有立即的好处，这是一个重要的原因。”这位高中生是一位想过这个问题的人。</p><p>在商品经济中，钱的力量是难以抗拒的。如果没有一种力量加以引导，人们都会唯利是图。最后会引出严重的社会问题。许多发展中国家也都处在这样的困境之中。发展经济，需要首先调动货币机制，引导人们的精力。等到经济发展了，需要高科技高技术了，才发现难找这样的人才，因为货币力量会趋使人们寻找简单劳动挣钱，而非复杂劳动。这是值得发展中国家引以为戒的。</p><p>“货币能解决的问题，智慧一定能解决。但智慧不能解决的问题，货币一定不能解决。”</p><p>这家主人的评论更突出地表述了这个问题的严重性。当然，这是一种绝对化了的说法。智慧和货币结合方能解决问题。发展中国家的问题，主要不在于智慧或货币绝对数量的多少，而在于两者如何结合。他说:“青年没有价值、纪律和目标，主要是因为他们的家长也没有。”这句话点明了有知识阶层的忧患所在。这一代是过去的一代造就的，而下一代又将由这一代来造就，结局是可以想象的。</p><p>如果基本知识的传递都成问题，那社会的基本价值信念如何传递？如何社会化？这不仅是对美国社会经济的最大挑战，也是对美国政治的最大挑战。新保守主义的兴起表明这种忧虑已达到相当的程度。</p><h2 id="3-游离少年"><a href="#3-游离少年" class="headerlink" title="3.游离少年"></a>3.游离少年</h2><p>家庭观念的变化，以及家庭组织的松散，在社会产生了什么影响，是促进社会发展，还是相反？这个问题值得研究。个人主义发展的结果，使人担心谁会认真承担家庭的责任。年轻夫妇常常遇到的问题就是怎样解決家庭责任。在中小城市和乡村里的家庭中，我觉得家庭观念还较浓厚。受过高等教育的人对家庭责任也较明确。尽管美国的社会机制使人明确知道子女的不可依赖性，但有责任感的家长依然尽自己的义务，把孩子抚养到成年。</p><p>然而，个人主义和私域观念是那样根深蒂固，以至家庭关系中也笼罩着这种氛围。我觉得这种家庭精神——个人主义和私域——使家庭关系较难以调整，家庭中紧张态势（Tension）较大。父母很难管理较大的孩子，尽管父母可能是正确的。父母因为要维持自己的私域，有时难以考虑周全子女的愿望。夫妇之间由于同样的原因也会产生一些问题。</p><p>美国的离婚率很高，很多原因不是社会和其他问题，而是个人的精神问题。获得奥斯卡金像奖的电影《克莱默夫妇》，深刻地反映了这种精神状况带来的问题。值得注意的不是乔安娜出走的说不清楚的理由，而是丈夫对孩子的态度。家庭中的这种内在精神带来了不少问题：离婚率高，单身家长多，游离少年多等。我们来看一下游离少年的问题。</p><p>游离少年的概念是新加坡人的概念，类似于中国的“逃夜”和北京土话“涮夜”之类。家庭问题首先影响到青少年一代，由于家庭矛盾导致青少年出走，成为社会的一大问题。我之所以觉得这个问题重要，是在于青年乃一个社会的未来。失去了一代青年，就失去了未来。社会的未来如何？答案也在于青年一代的成长。美国人也深谙此道，参院青少年犯罪调查委员会主席伯奇·百恩（Birch Bayh）在 1976 年就说过：“我们的青年是民族最宝贵的资源。”社会固然能培养出大批精英。但对一个社会来说，需要精英，也需要大众。如果大众是“垮掉的一代”,社会何以进步？</p><p>从家庭的组合，走到游离少年，只是想从游离少年的现象追溯家庭的功能。手头有阿诺德·P·鲁宾（Arnold P·Rubin》写的著作，《少年违法：美国的游离少年》。这本书出版于 1976 年。虽然出版于 12 年前，但仍然有价值。</p><p>游离少年在美国较为严重。1975 年的估计是每年 100 万，这还是一个保守的数字。与美国 2 亿多人口相比，这不是一个小的数宇。1973 年，警察当局抓住的游离少年达 26.5 万。游离少年指的是未成年的儿童和少年未经父母同意离家出走。最小的有 10 岁左右的儿童。我们可以看一下鲁宾描写的一些少年离家出走的原因和结果。</p><ul><li>泰丽，“我出走的主要原因是家里紧张空气太浓。”泰丽 17 岁，她说她不想回去，家里太紧张。也不想去学校，学校里学不到有用的东西。</li><li>兰迪，17 岁，来自弗罗里达，“父亲把我放上公共汽车，对我说，不要让我再见到你。”他说他出走的原因是，“我父母想摆脱负担……他们认为我的脑子有问题。”他和他的妹妹是收养的。</li><li>卡西，圣地亚哥，13 岁开始游离，她说她不能同她的继父在一起，他是酒鬼。他的父亲打她，“有一天我回家晚了一个小时，与一个朋友一起走回家，他就想打我的朋友，我母亲阻止了他。他用皮带打我，问我为什么晚回家，并拿刀来，母亲阻止了他。”</li><li>里克，12 岁，里克的父母不住在一起，他有七年没有见到母亲。他和父亲与祖父母生活在一起，这三个人都是酒鬼。他父亲喝了酒就揍他。</li><li>白基，来自非常舒适的家庭，“我的母亲健康非常糟糕，家里很乱，她希望别人注意她，有时揍我来达到这个目的。”跑了两次以后回到家里，她父亲告诉她不能住在家里，她离家出走，住在街上一个月许。</li><li>伯克斯特，15 岁，在纽约被杀害，警察局说是被她的“顾客”杀害的。她曾因卖淫被警察局抓住。但她使警察局相信她已有 19 岁，是第一次干，警察放了她。第二天夜里被杀害。</li><li>白克莱，出走之后卖淫被抓，后来被害。原因是她父亲十年前离家出走，不告而别，家庭陷于贫困，不能不依靠政府资助。她想摆脱这种境况。</li></ul><p>我仅随便在鲁宾提到的各种例子里举了几项。可以看到，大多数情况下，是由家庭紧张气氛引起的，无论是何种原因造成的紧张气氛。当然也有些儿童因家长不给买高保真音响设备之类的原因而出走的。可是，更深的原因在于不少家庭无法达到真正的内在和谐。人人都想有个人主义和私域，如何会有真正的和谐。个人主义和私域是美国社会重要的价值观，但它们是否在任何限度内都是有利无弊的？再好的东西，如果让其无限度地泛滥，必然走向反面。在美国，工作部门一般很少关注个人的私域。家庭是否也应如此？或者需要某种调和呢？</p><p>游离少年至少反映了家庭缺少吸引力。这个社会问题也意味着社会发展的两个问题：</p><p>其一，家庭的社会功能有弱化趋势。家庭是教育青年一代的重要场所，也是协调社会一部分矛盾的场所。由于家庭关系的演变，大量的青少年问题就交给了社会。单为游离少年之事，政府每年要花上千万的美元。相应地，政府也建立了游离少年的收留所等组织和设施。这实际上增加了社会的压力，增加了政府的开支，也增加了人与人之间的紧张关系。</p><p>其二，青少年从小在这种环境下成长起来，能否具备一个社会健康发展所需要的心理结构。青少年应该走什么样的道路，虽然不可强迫，但也不能放任自流。这样大数目的青少年生活在这样的氛围中，对一个社会的预后不良。实际上，大量的游离少年参与犯罪或成为犯罪的对象，失去了教育机会。日本社会的快速发展，与日本有完整的青少年教养机制有密切的关系。可能用西方文化的观点看，日本的做法不能接受，但日本的成功告诉人们，相背的道路可能意味着失败。每个社会都应找到良好的机制来达到这个目标。美国的今后几代还能撑住美国的架子吗？许多美国人也怀疑。</p><p>一个社会的发展，固然要依靠政治体制、企业、金融、科技、文化，但也要依靠基本组织——家庭。问题是怎样协调不断发展的社会精神与家庭之间的关系。</p><p>这决定社会政治协调的幅度。</p><h2 id="4-无毒不美国"><a href="#4-无毒不美国" class="headerlink" title="4.无毒不美国"></a>4.无毒不美国</h2><p>美国的概念，在今天这个世界上，必须与毒品联系在一起，故称之为“无毒不美国”。毒品已构成美国社会一个难以克服的顽症。里根行政当局最近发动了强大的攻势来反对吸毒贩毒，会有多大效果现在还难说。犯罪集团围绕毒品买卖组织起来，使出浑身解数，与政府的肃毒组织周旋。毒品通过各种渠道进入美国。在一些城市中，要得到一包毒品很容易，大街小巷上有人兜售。不少人吸毒上瘾，结果陷入毒品中不能自拔。有的人吸毒上瘾，不能不为犯罪集团所左右，年轻姑娘由此而不得不卖身换毒品。</p><p>毒品正在侵蚀美国，其力量，恐怕超过了历史上各种冲击过美国的力量。毒品的泛滥，也构成对社会体制的强大的挑战。能否抑制并压缩毒品的泛滥，是对社会体制乃至道德精神的一场考验。</p><p>毒品泛滥首先影响到青少年的身心健康。青少年吸毒现象异常严重。我看过一部电影，讲一个中学校长如何去治理一个脏乱差的学校，主要对手是一名黑人中学生。他有一群学生拥护，在学校的厕所里公开贩毒。他们设计毒打这名校长，并且拆毁校长的摩托车。最后几个人拿了枪来杀这名校长。几乎就要被打死的时候，校长意外得救，这名学生被警察抓去，警车开走的时候，他两眼死死盯着校长，一副不甘罢休的样子，令人不寒而栗。这里面自然有艺术加工，但恐怕与一些情况严重的实际过程相差无几。毒品组织的触角早已伸到社会各个角落，尤其是青少年集中的场所。在小城镇中可能好一些，在大城市中情况更甚。</p><p>我们来看一下一份杂志《Ladies’ Home Journal》1987 年 5 月号上的一篇文章。题目叫“孩子与毒品”。作者一开始就引用了里根总统给这份杂志写的信：“毒品威胁着每一个美国家庭和我们自己的生活方式……毒品使年轻人失去他们需要的教育，使每一千名美国人中十人不能工作。毒品与犯罪紧密联系，摧毁财产，提高保险比率，劳累警察局和各类执法人员，给我们造成了巨大的损失……我们的经济损失可以用数以亿计的美元来测量，但如何测量一个生活被毁坏的国家的损失？”这番话，表明了美国遇到的严峻挑战。</p><p>青少年吸毒的状况如何？这份杂志对几名青年做了调查。其中有一个人的答复如下：</p><p>蒂姆•奥西基：“我在离开小学进入初中时开始吸毒。我发现这所学校中毒品很多，也许是因为我认识了一些大孩子和来自市中心的孩子。我认识的一些人吸毒，开始我不感兴趣。后来我开始吸Marijuana，不久这种东西不起作用了。后来遇到来自很有钱的家庭的孩子。他们向我介绍昂贵的毒品，如可卡因。我用了，从此可卡因成为我生活中不可分离的一部分。”</p><p>青少年在社会、学校或什么地方染上吸毒的习惯之后，便不能自拔，陷入泥淖之中。毒品的花色品种很多。有些是医用的药品，但过量了也会成瘾，对身体有害无益。毒品的名称有：Heroin，morphine，Codeine，methadone，Cocaine，marbiturates，Amphetamines，LSD，DMT，mescaline，Psilocybin，Alcohol 等。</p><p>青少年吸毒犯罪，由吸毒走上犯罪的不计其数。围绕着这个主题，人们制作了大量的电影、电视，写下了难以计数的小说故事。有一部电影写的是几名中学生搞到了一小箱毒品，想出手。与另一帮人联络上后，约好在某处碰头，但发现对方带着凶器，想谋财害命，连忙拔出枪来，才没有遇险。这时另两名学生发现他们有一小箱毒品，便想抢劫。这天他们拿着枪去抢劫，正好遇上另一帮人也来抢，三方交战，死了两人。两名学生中一人被打死了，另一人在逃窜中将有毒品的那群学生的头头的弟弟撞死了，自己进了少年改造所。后者因弟弟死了，极想报仇，便故意去强奸前者的女朋友，结果也进了少年改造所。两人在少年改造所里明争暗斗。最后，一天夜里，后者打昏了看守，冲进前者的房间，展开一场殊死搏斗，结果是两败俱伤，打得鲜血淋漓。他们都是未成年的青少年。</p><p>自然，吸毒者不限于青少年，成年人中吸毒者也是大把大把地可抓。问题是这些人都是从青少年时代就染上了毒瘾。吸毒会产生严重的后果，主要是在身心方面，完全有可能使一个人萎靡不振，有气无力，情绪低落，最后摧毁一个人正常的精神状态，有时甚或导致死亡。</p><p>对于吸毒，也有不同的看法。如托马斯·斯萨斯（Thomas S·Szasz）就写了一篇文章，认为：大部分人均反对滥用毒品，认为要采取强制性的政策，因为毒品太危险。但是他认为每个人都可以损害和杀死自己，这是人的自由的一个基本方面。自我摧毁可以被看成是一种罪恶，也可以通过非正式的手段来惩罚，但不能视之为一种罪行或精神疾病，运用警察力量来控制它。因此不让一名成年人拥有毒品是荒谬的。武器、利刃都更为危险，但无人禁止。这是一种权利。所以不能剥夺成年人拥有和使用毒品的权利，尽管大部分人不会使用它们。这是一种典型的反面观念。</p><p>这种观念现在不是主流。主流是主张政府采取有效行动来禁止贩毒和吸毒。话说回来，不能说这种论点没有道理。因为枪枝弹药的确要比毒品危险，在美国却可以公开出售。一枪可以打死一个人；一包毒品，只要对方不受用，便打不死人。美国人认为拥有枪是公民权利，那么毒品为什么不能拥有？这个难题，美国人还没有解开。</p><p>实际上，这也是对人的权利幅度的挑战。在社会生活中，能给予每个人的自由幅度有多大？这是实际问题。说一个人可以享有全权是不现实的。洛克、卢梭等人讨论的问题，他们未能从实际上解决，今天的人仍未能从实际上解决。恐怕我们还需要对人类做一番再认识。</p><p>为什么说吸毒是对美国的一大挑战？问题就在这里。美国人相信每个人有自己决定自己命运的权利，这是个人的自由权，不能剥夺的。这种权利逐步发展，在二次大战之后，从政治领域的选举权利、种族平等权利和男女平等的权利，发展到后来的性自由的权利，追求自己生活方式的权利（如嬉皮士等）等。这一切都被美国人接受了。如今来了个吸毒的权利，美国人却不能接受。因为接受它，意味着民族或民族中相当一部分人的衰败。美国体制中有没有坚固的哲学基础来支持这项反毒行动，现在还不能说。相反的哲学基础却有之。美国人现在大部分赞同禁毒反毒。这是一种事实和情感的选择，是一种公众舆论。未来会是如何？性自由不也曾被认为是不道德的吗？</p><p>吸毒问题提出的挑战主要不在哲学领域，很少有人对这类抽象而深奥的问题感兴趣，如果没有形成一定的条件的话。吸毒问题提出的挑战还包括：促使人们吸毒的原因是什么？许多吸毒者的答案是，感到无聊、空虚、恍惚、沮丧，所以借吸毒来刺激一下。据一位精神病医生分析，美国人三分之一有这样或那样的精神问题。那么，造成这种现象的原因又是什么？这样我们就得走入一个广大的视野。人们生活在一定的社会环境中，这个环境包括家庭、学校、企业、文化、教育、政治、法律等各个方面。这个环境在产生吸毒者呢还是在消除他们？吸毒者越来越多，与日俱增。反毒肃毒只是消极手段，因为只是针对结果而言的。但要改变产生结果的原因，又谈何容易？</p><p>我们深知，吸毒对一个民族会产生什么样的危害性。十九世纪中叶之后，鸦片大量输入中国，其产生的危害可以说至今还存在，作为历史，将产生长远的影响。反对吸毒的美国人，大部分担心自己的孩子，少部分人担心整个社会的发展，个别人想的更远。更远是最难接受的。</p><h2 id="5-黑社会"><a href="#5-黑社会" class="headerlink" title="5.黑社会"></a>5.黑社会</h2><p>黑社会组织或犯罪集团在美国社会中有强大的势力，严密的组织。看过影片《教父》的人对黑手党组织和各集团之间的残酷较量有所了解。看过《家族的荣誉》的人对黑手党的活动和手段有所了解。其他各类文学形式也常常以此为主题。黑社会组织是一个令人头痛的问题。虽然我们看到的大部分是文学作品，有艺术加工的渲染。其实现实生活中，黑社会的存在的确成为这个社会的一大难题，构成对这个富裕社会的极大威胁，也构成对这个社会制度的最大挑战。</p><p>11 月 25 日的《纽约时报》上刊登了一篇文章，介绍两个贩毒集团情况，读后令人不寒而栗。这两个集团的名称一个叫 Bloods，一个叫 Crips，基地在加利福尼亚州。他们利用发达的高速公路系统，在全国建立起井井有条的暴力和贩毒组织。这个组织从西海岸的加利福尼亚州发展到东海岸的巴尔的摩和华盛顿，从大城市扩展到小城市。这个网络的主要功能是出售可卡因。这两个组织发展到差不多每一个州，八百处据点。贩毒组织精心经营，成为一种具有良好管理的组织。</p><p>贩毒组织不仅扩大力量，而且装备精良。缉毒部门往往由于武器没有贩毒组织精良而被打得落荒而逃。这些组织装备有轻重武器，遇到麻烦，便大打出手。</p><p>这些组织一旦来到一座新的城市，往往不是悄悄地来，而是大造声势，开着昂贵豪华的小汽车，穿着珠光宝气的衣服。</p><p>这些人往往不带身份证，也不在街头兜售。他们雄心勃勃，来到一个地方，主要是建立销售网络，订合同，俨然象是在做正儿八经的买卖。</p><p>最近在密苏里州抓住两名罪犯，带了 1,100 磅可卡因，价值连城。</p><p>这两个组织到底有多少人，说不清楚。在洛杉矶县，人数大约在 700 名左右，大多数是黑人。洛杉矶市大约有 27000 名骨干分子。在全国各地，阵容强大。丹佛市大约有 700 人。俄克拉荷马市大约 60 人，加上已经抓住的 30 多人。堪萨斯市也有不少。凡是有他们活动的地方都有大批人马。</p><p>他们组织严密，而且肆无忌惮。在大街小巷各处出售毒品，并且恫吓人们不许报告警察局。在奥马哈（Omaha），有一块居住区被称为“越南”，因为这里经常发生枪战，血雨腥风。</p><p>最近出版的另一本书，书名叫《Mafia Enforcer：A true Story of Life and Death in the Mob》。作者是托马斯·莱纳和塞西尔·科比。前者系著名的记者，专写犯罪活动内幕，在美国很有名气，得过各种奖，是研究有组织犯罪的专家。后者是一位悔过的犯罪集团要员。犯罪集团悬赏十万美元巨额，要拿他的脑袋。他由警察局严加保护，化名隐姓。这本书由塞西尔·科比口述，托马斯·莱纳记录并写作，暴露了黑社会的内幕，惊心动魄。</p><p>我们仅来看下他们在书的最前面勾勒的犯罪集团的组织图表。一类是家族式的犯罪集团，如黑手党。最高层是委员会，下面是老板，老板下面是小老板，小老板下面是头头（Caporegima）。头头下面是士兵（Soldiers），士兵的职责是强制执行纪律，手段是威胁、进攻和暗杀，同时执行领导层的命令。犯罪集团同时与各类人员和组织结成庞大的网。黑手党一般从事两种活动：一类为合法活动，如银行、酒吧、俱乐部、食品生产、工会、保险、房产、饭店、娱乐等，应有尽有；另一类为非法活动，如酒精、攻击、爆炸、贿赂、出口、绑架、暗杀、卖淫、偷盗等。</p><p>另一类组织是非家族型的，称为 Motorcycle Gang。这类组织有全国性领导层：主席、副主席、司库等。下面有 Sergeant at Arms，War Lord, Road Captain，他们负责管束集团成员，管制非成员，手段也是殴打、暗杀等。他们与社会三教九流有广泛的联系。从事的活动也有两类：合法活动包括汽车买卖、酒吧、娱乐、俱乐部、食品、摩托车买卖、房产、饭店、货运、建筑、古董等。非法活动与黑手党相同。</p><p>这类组织组织严密，能量惊人，主宰着很大一部分美国社会。白宫治理着美国社会，黑社会组织也治理着很大一部分美国社会，但这一部分是黑暗的。我们可以来看一下这本书中描写的一个场景（第五章，卖身姑娘）：</p><p>“他们常常打死一些女人以保护他们自己，因为他们认为她们可能会变成告密者，这是许多姑娘消失的一个原因。消失者或者受酷刑，或者被谋杀。她们被肢解，钉在十字架上或被扔进荒地，让野兽吃光尸体，不留痕迹。姑娘们也因其他原因而消失。有时她们在低级的酒吧里做妓女或伴舞，在 16 岁或 18 岁时就变得太老和无用了。有的因为想摆脱拥有她们的俱乐部，有的没有上交规定上交的钱，有的仅仅是因为没有挣到足够的钱……”</p><p>看了这样的章节，不禁要问，这是美国吗？不错，这是美国。这是硬币的另一面。政府承认这些犯罪集团威胁着社会。1985 年，联邦调查局的统计表明，最大的四个犯罪集团有 3,800 名成员，这还不包括八百个小的集团。今天，犯罪组织和黑手党的势力已大有发展，成为社会最令人头痛的问题之一。</p><p>犯罪组织的存在构成对制度的一大挑战。有组织的犯罪的出现，本身就表明一种体制上的漏洞。自然，不能说哪一种体制可以完全避免犯罪。但犯罪集团发展到全国性的大规模组织，实在是值得思考的问题。体制有这方面的漏洞。需要说明的是：我这里讲的洞，仅指可以透过某种东西的空间，并没有特定的设定。从这方面讲：</p><p>其一，美国人的观念是有罪必究，无罪不管，法律放在那里，只有当触犯法律后，才加以追究。也许这是政制的一项重要原则，任何人的行为不能在一开始就治罪和禁止，要以观后效。可是，象有组织犯罪这样的活动，等到它们人多势众时，已无法控制和治罪。美国的状况就是一个实例。</p><p>其二，美国人的观念是任何人都可以自行组织起来，这是一种权利。这也是政制的一项基本原则。美国的政党活动使是这种原则运作的结果。但是，如果允许结社，那么任何人都可以结社。社会只能惩罚犯罪的个人，而无力对付这些组织。这些组织往往具有合法和不合法的两面性，使想取缔它们的人碍于一些理由而难以达到目标。</p><p>这两个问题，是美国政制的潜在问题。犯罪组织把它们放到了明处。任何社会在设计体制时，均会遇到这类问题，想禁止的由于想允许的决定而不能禁止，不想给予的由于想给予的决定而只能给予。如果说美国政制过去、现在或将来有什么问题，问题就在这里。美国政制在给予和允许方面是一个十分成功的政制，但在禁止和防范方面不是一个值得赞扬的政制。美国人想制止很多东西，但往往适得其反，越想禁止的东西，结果却越多。</p><h2 id="6-乞丐王国"><a href="#6-乞丐王国" class="headerlink" title="6.乞丐王国"></a>6.乞丐王国</h2><p>维克多·雨果的不朽之作《巴黎圣母院》，向人们描绘了曾几何时法国巴黎乞丐们的苦难和生活，卡西摩多和艾斯美拉达的形象令人难以忘怀。根据雨果《巴黎圣母院》改编的电影，为人们展现了卡西摩多栩栩如生的形象。这个形象那样生动，使人们把他视为下层人的典型形象。令人奇怪的是，如今走在堪称二十世纪第一巨富大国的美国的土地上，总感到有不少人与这个形象相象。他们肮脏、污秽、衣冠不整、目光呆滞、行动迟缓，脸上带着一种看一眼便不能忘怀的可怜表情。这样的人为数不少，构成二十世纪八十年代美国的乞丐王国，也构成美国的一大社会问题。</p><p>对于这些人，报章的正式叫法为 Homeless，即无家可归的人。由于无家可归的人越来越多，朝野对这个问题越来越重视，这一段的报纸和政府发言人常常谈论这个问题。走在大大小小的城市里，都可以看到大批无家可归的人。他们或是坐在大街旁，呆呆的，或是向人要钱，或是蜷曲在哪个角落或门洞里睡觉，或是背着一大堆破破烂烂的东西在慢慢行走……这里可以举我亲眼所见的几个事例来谈这个问题：</p><ul><li>1988 年 8 月份，华盛顿。一位英国政治学者邀请我去一家黎巴嫩饭店吃饭。我们说好两人从下榻的华盛顿希尔顿旅馆走到那家饭店去，顺便看看华盛顿的夜景。我们傍晚 7 点从希尔顿出发，走到市中心最热闹的一条街上。有一位黑人拦住我们，问我们有没有零钱。这是我第一次碰到 Homeless。这天晚上，在吃饭的来回路上，遇到的 Homeless 和向我们要钱的人不下十名。这个概率很大的。</li><li>1988 年 12 月，纽约。纽约的这类人物大概较为集中。那天晚上朋友开车一起去纽约，准备投宿在一位朋友家中。由于对纽约的街道不熟，车开进了哈莱姆区。这是纽约犯罪最高的一个区。当时已是夜半。只看到每一个街口都有成群的人，有的在大声喧哗，有的在喝酒，一种令人恐慌的气氛包围着我们。第二天向朋友一打听，知道昨夜闯入了哈莱姆区，不禁一身冷汗。</li><li>1988 年 12 月，纽约。到一位朋友家里去，走到他住的那幢门口，看见台阶上坐着一个人，正在吃东西。衣冠不整，旁边有一大堆破烂的行李。不由得提高警惕，迟疑要不要进去。结果那人先抬起头来，原来是一位老妇人。她说：“不要伤害我，我是无家可归的人，我只是坐在这里吃东西，不会做别的事。”听了她的话，心中泛起一种巨大的怜悯。</li><li>1988 年 1 月，伯克莱。我在加利福尼亚大学的伯克莱分校的东亚研究所做访问学者，每天中午去吃饭，要走过一条商业街。这条街上要钱的真多。就在商业街一侧的一个门洞里，连续几天我们都看到地上铺着旧报纸和纸板，以及一些乱七八糟的碎纸，每天晚上有人在这里就宿，盖着破絮。尽管我们没有见到那个人，但可以想象他是什么样的形象。</li></ul><p>这样的见闻很多，恐怕任何一位在美国的人都会有这样的遭遇。冬天来临，西海岸各城市中无家可归的人特别集中。在旧金山市的市政厅门前，有成群结队的无家可归的人。在西雅图市的大街小巷，无家可归的人聚集在车站和公共场所。纽约的火车站厕所里，一大群无家可归的人在里面要钱，吓得一般人不敢上茅房；Greyhound 车站里也不逊色。1989 年 1 月 20 日，是布什宣誓就任第四十一任总统的日子，在他发表慷慨激昂的演说时，电视里穿插了一个画面：一名无家可归的人盖着一堆乱七八糟的东西在地上睡觉。可见，这个问题已经多么严重。</p><p>1989 年 1 月 16 日的《纽约时报》在头版上有一篇文章，讨论 Homeless 带来的社会问题。说的是一座小村，叫艾姆斯福特，成为韦斯特切斯特县无家可归的人的“首都”。这个村子共有 3,300 名常住居民，但无家可归的人却达 378 人。他们住在那里的四家汽车旅馆中。纽约州法律规定：任何人如果需要紧急住处，便应提供给他。所以县的福利部门安排这些事情。在这 378 人中，只有 9 人来自这座村庄，大部分人来自其他地方，如波士顿、路易斯安那、奥来根等地。韦斯特切斯特县 1988 年花了 5400 万美元来安置他们，今年计划花 6400 万美元。无家可归的人集中在这里，引起了当地人的惶惶不安，生活质量下降了，犯罪率上升了，殴斗增加，他们担心往日的平静会被打破。不少人准备前往他地。从这里我们可以看出，无家可归的人会带来什么样的社会问题和冲突。艾姆斯福特只是一个很小的社区，但遇到了这样多的无家可归的人带来的麻烦。整个美国加起来，又该如何呢？</p><p>为什么有无家可归的人？这是一个不能简单答复的问题。有的人认为，那是他们自己愿意，很多无家可归的人看上去年轻力壮，他们宁愿行乞，也不愿去找工作。不少人对这样的人并不表同情。也有人认为，不久前将一些没有侵害行为的精神病人放出来，是无家可归的人队伍壮大的主要原因。他们精神上有毛病，不可能去从事工作，而他们的家庭或亲属也不愿意照顾他们，所以不少人沦为无家可归的人。</p><p>说真的，在美国，在大街上见到不正常的人，不要感到奇怪，因为太多。也有的人从越战来分析，认为无家可归的人有许多是越战老兵，他们在越战中吸毒以支撑自己的意志，结果不能自拔，毁坏了身心健康，无法象正常人那样工作，也就只能走上这条路。如此等等。</p><p>这种现象，颇令人费解。它对美国的制度和美国精神是一个挑战。一方面是商品的极大丰富，另一方面是为数众多的赤贫的人。就财富本身而言，美国不象一些发展中国家。那些国家资源本身匮乏，在怎么分配也无法满足所有人的基本需要。而社会的财富，如果用另一种方式分配足以使所有无家可归的人都过上体面的生活，问题是，这种分配方式在这个制度下难以形成，不符合这个制度的性质。</p><p>或许有人会说，无家可归的现象与制度无关。那么，美国文化和美国精神也没有提供解决这个问题的条件。政府和民间的不少机构的确在着力解决这个问题，但是谈何容易。无家可归的人本身，无论出于什么原因，可能是自身的原因，也可能是社会的原因，但这种现象的存在，对这个社会就是一个挑战。美国并不会因有这些问题而被认为是一个贫穷落后的国家，人们照样认为美国是一个头号发达国家。然而，美国因有这些现象，从而被人们更好地认识。</p><p>任何社会都不可能十全十美，任何政治和行政管理也都不可能面面俱到。一个好的政治和行政系统，不在于它一开始就设计得天衣无缝，而在于它能针对不断冒出来的问题，来发展和壮大自身。自然，关键在于它要有这种能力，且这种能力要符合它们制度运转的内在逻辑。</p><h2 id="7-黑色挑战"><a href="#7-黑色挑战" class="headerlink" title="7.黑色挑战"></a>7.黑色挑战</h2><p>“黑色挑战”，或称“黑色风暴”，我指的是黑人问题。黑人引起的社会和政治问题，成为一个令人头痛的问题，也构成对社会的严重挑战。有的人把黑人问题比喻成最大的社会难题，说这个问题最终将成为致命问题。在美国，可以深深感觉到，这个说法有一定的道理。</p><p>马丁·路德·金中心坐落在亚特兰大市。我去参观了这个中心。与卡特中心比较起来，马丁·路德·金中心就显得小而破旧，部分原因是其建立的年代比较早。马丁·路德·金是著名的黑人民权领袖。直到六十年代，黑人问题和种族歧视还十分严重。那时存在着只有白人可去的学校，只有白人可乘的汽车，只有白人可住的旅馆，只有白人可住的地区，黑人没有地位，没有资金。那个年代，为了打破这种种族隔离，曾发生过大规模的动乱和暴力行动，联邦政府不得不出动军队保护黑人学生去白人学校上学。尽管法院裁决种族隔离违宪，实际生活中种族歧视依然长存不散。从那时至今，已有二十多年，虽然黑人的生活状况有所改善，但黑人的问题却越来越严重。</p><p>爱摩里大学的一位中国留学生告诉我：“在南方，尽管自南北战争之后，黑人得到了解放，但黑人地位依然很低。”南北战争的起因就是取消还是保存奴隶制度。我们知道的《汤姆叔叔的小屋》描绘了黑人在当时的地位。林肯总统的功绩之一就是完成了这项目标：解放黑奴。一百多年过去后，黑人不是奴隶了，但黑人却依然没有白人所享有的社会地位。</p><p>他说，在亚特兰大市附近有一个县，种族歧视的情况尤为严重。至今这个县还反对黑人居住。据说那里没有黑人。凡是有黑人住进去，都会被排挤出来。反种族歧视组织多次支持有胆量的黑人住进去，都被打出来。去年一个反种族歧视组织为抗议这种态度，在该县组织了一次游行，结果被那个县的人打得落花流水。后来报刊报道了这件事，引起全国人的愤怒，各地的人都声援这个组织，前来参加游行，弄得警察局十分紧张。该县的人见反对他们的人人多势众，众怒难犯，没有敢动手。但反对种族歧视的人也只能是游行一下，没有取得什么长久的结果。至今，该县依然歧视黑人。</p><p>今日，在大多数地方已经没有明确规定的歧视黑人的政策，甚至有相反的规定：政府机构等一定要雇佣黑人。有的白人觉得这是颠倒歧视，因为有时候白人比黑人更有能力胜任一个职位，但由于规定要雇佣黑人，白人便处于不公平的竞争位置上。</p><p>然而，这只是表面现象，在很多白人心中，讨厌黑人的心理十分强烈。例如，在一些白人的住宅区，黑人要是住进去，许多白人都会搬走。有黑人居住，房价会下跌，因为白人不愿来住。这种事实造成黑人和白人基本上分区居住。每个大城市都有黑人区，一般都是比较落后和脏乱差的地区。有的黑人得了百万美元，还是不能跻身白人的上层社会。美国人的表面文章做得很漂亮，表面上看没有什么种族歧视，实际上根深蒂固。</p><p>黑人的社会地位比较低，文化水平也较差，经济状况更糟糕。人们在大街上会遇到许多可怜巴巴要钱的人，大部分是黑人，华盛顿这样的人多得惊人，和繁华都市太不协调；在大街广场上会看到许多卖艺的人，大多是黑人；还可以看到招工处和救济处排队的人，大多是黑人；流浪街头无家可归的人，大多是黑人；穿得破破烂烂、衣冠不整的人，大多也是黑人。当然白人也有这样潦倒的人，但人数较少。观光者看到这种状况，自然会提心吊胆。</p><p>黑人居住区最能典型地反映黑人的困境。我在旧金山、纽约、纽黑文、费城、华盛顿、亚特兰大都去过黑人居住区，给人的印象极为糟糕。一般来说，都比白人居住的地区脏乱差，一眼就可以看出是贫穷地段。不少户门前，都坐着一些懒洋洋的黑人。年轻人三五成群地站在街上，令人心里打鼓。纽约的黑人居住区尤其糟糕，里面的犯罪率极高。有一位朋友告诉我，有一次一位美国人带他去纽约黑人区参观，车开到一半，一辆警车紧追不舍。他们以为违反了交通规则。停下来后，警察问他们知不知道前面是什么地方，他们说知道。警察说多加小心。他们俩只敢快速开过黑人区，不敢下来。他说如果车子抛了锚，就不知道要发生什么事了。</p><p>黑人的生活状况极差，在走投无路后，大多走上犯罪道路。整个社会的犯罪状况可列世界前茅，黑人尤烈。听到不少关于黑人抢劫中国人的故事。有一位朋友说，有一次他陪一位同事去饭店，在楼梯上遇到两个黑人拿着刀要钱。一位中国留学生告诉我，纽约的四十二街的犯罪猖獗，中国驻纽约领事馆正好往这条街上。罪犯专门抢中国人的钱。纽约警察局不得不在领馆前安排了骑警，一般的警察已经不敷为用（不过我没有看到中国驻纽约总领事馆门前有骑警）。这可是在光天化日之下。</p><p>黑人中杰出人物层出不穷，他们也成为社会崇拜的偶像：如田径运动员、歌星、篮球运动员、垒球运动员、拳击运动员、橄榄球运动员。不过黑人的总体地位没有变化。</p><p>黑人的问题已构成一种循环，这个环难以解开。黑人的整体文化较低，经济水平差，在生育方面不加控制，福利制度规定儿童可以领得政府救济。黑人的生育率高于白人。黑人儿童得不到良好的生活环境，也得不到良好的教育。因为上一代人就没有受到良好的教育，不接受一些基本的价值观，儿童自然也得不到教育和熏陶。从小在黑人区的环境中长大，潜移默化，心理不平衡。一代一代的黑人成长起来，又没有很好的技能和教育，因而不能从事技术要求较高的职位。不少儿童没有父母或只有一个家长，往往只有母亲。很多儿童的母亲是 Child mother，称“儿童母亲”，即十四五岁就怀孕，并有了孩子。这样的孩子如何能得到良好的教育。这种状况，在黑人社会中并不少见。他们长成之后，只能从事较低层的工作，得不到较高的经济报酬。少数人经过奋斗摆脱了这种困境，但又难以为白人社会所接受。这样代代相传，使黑人问题的雪球越滚越大。</p><p>黑色挑战正在威胁着社会和制度。到目前为止，制度对这个问题是软弱无力，或者说无能为力的。由于制度无所作为，反黑人主义的思潮正在兴起，新保守主义者所谓的“颠倒歧视”便具有这种意思。种族隔离已经成为历史，不过黑色挑战越来越大。三 K 党甚嚣尘上的时代已成为过去，可是不能说它一去不返了。如果社会不能找出改善黑人状况的根本方法，最后的结局很可能是更猛烈的反黑人行动。这是人类的弱点，在无法解决一个问题时，最便利的选择就是强烈反对它。</p><p>差不多每个社会都有类似的问题，有一部分人被视为“劣等人”。但产生这种问题可能有不同的原因，有的出自文化差别，有的出自历史源流，有的出自风俗习惯，有的出自制度。对美国来说，主要的原因在于制度，所以说，黑人问题是对这个社会制度的挑战。</p><h2 id="8-土著的情况"><a href="#8-土著的情况" class="headerlink" title="8.土著的情况"></a>8.土著的情况</h2><p>美国是殖民地的一个重要原因就是在欧洲人漂洋过海来到新大陆时，这块土地上已经有人居住，并且拥有这里的土地。这就是印第安人。最早的土著可以追溯到一万年以前。1925 年，一名叫乔治·麦克琼金（George McJunkin）的黑人牛仔在新墨西哥地区发现了一堆半烧焦的野兽骨头。据科学家后来分析，这些野兽是一万年前被猎人打死的。在这之前，人们一般认为土著的历史只有几千年。那么这些人是谁？从哪里来？</p><p>从 1925 年之后，科学家经过考证，认为土著在美洲大陆生活了至少两万年。但关于他们如何到达美洲大陆的问题，说法不一。一种方法是，在冰川时代，白令海峡没有海水，人们可以通过陆地跨越海峡。最早的土著可能来自亚洲。从印第安人的长相来看，与蒙古族十分相象。这种说法有一定道理。不过，有些科学家并不以为然。尤其是印第安人学者，他们认为这样的理论否认了印第安人对美洲土地的原始所有权，因为他们也是从他域移民而来的。至于印第安人究竟从哪里来的，恐怕是个难解之谜。</p><p>欧洲人来到美洲之后，就产生了两种文化的冲突。欧洲人对印第安人的文化不屑一顾，斥之为低等文化。《美洲：人民与价值》一书对照了这两种文化的差异。印第安人的文化包括一般文化的因素：（1）提供衣食住行的方式；（2）宗教活动；（3）艺术创造；（4）团体组织；（5）传播文化的手段。在印第安文化中，这些成分具有。印第安人有自己的多种特殊文化现象。但是印第安人不具备文明（Civilization），这是欧洲人才具备的。文明包括:（1）先进的技术，如金属的利用；（2）高度发达的生活组织，如城市；（3）知识成果，如年历，文字等；（4）分工。后面这些，印第安人没有。</p><p>从欧洲文化的观念出发，蔑视印第安人的心理是自然而然的。直到二十世纪六十年代之后，人们方开始学会尊重不同文化。自然，尊重不同文化不等于看得起它。今天的美国人对诸多种文化都是持这种态度。他们表面上文质彬彬，尊重一套不同文化，但实际上轻视它——大概可以说，包括对日本文化。</p><p>其实美洲的印第安人有惊人的文化成果，如玛雅文化、阿兹德克文化、印加文化等。不过这些文化没有发展成现代文明，原因何在，恐怕也是不解之谜。</p><p>把美洲土著称为印第安人是欧洲人的偏见。1492 年，哥伦布抵达美洲，误以为加勒比海岛屿是“印度”，于是就把这些地方的人称为“印度人”。后来发现是个大错，硬将错就错，称之为印第安人。如果是误把英国当成印度，一定会改过来。</p><p>欧洲人来到美洲大陆之后，便同印第安人发生冲突。据说欧洲人把各种疾病带到美洲大陆。欧洲人为对付各种疾病，发展出成套的医药，而印第安人没有。当时各村的死亡率在百分之八十至九十左右。利米里奇（Limirich）说，1831 年，法国著名的学者阿莱克西·托克维尔写道：“上天没有使他们变得文明，他们注定要死去。”今天美国白人已不象过去那样持这种露骨的观念，但另一种观念是存在的：上天没有使他们变得富有，他们注定要受穷。是的，很强烈的观念。</p><p>最初一段时间，欧洲人与印第安人之间还存在良好的关系。但那是最初来做生意的欧洲人，而非移民。正象最初与中国人做生意的欧洲人一样。最初欧洲人向一部分印第安人提供马匹和枪枝，支持他们向内地扩张。印第安人的社会组织和权力关系重组。最初，印第安人也友好地欢迎欧洲人。当时欧洲人需要印第安人，以取得食物之类的东西。印第安人并不需要欧洲人。</p><p>但是，印第安人后来不得不依赖欧洲人，重要的原因之一就是贸易。贸易渐渐使自给自足的部落变得依赖外界。依赖欧洲人制造的产品，如酒之类。印第安人为了得到欧洲货，不能不为之效力。他们为债务所束缚。托马斯·杰弗逊说:“我们抓住一头狼的耳朵，既不能控制它，又不能放它走而没有危险。”这是 1820 年讲的话，这头狼指的就是印第安人。时值今日，这种感觉恐怕不存了。</p><p>后来一长段时间里，欧洲移民开始大举剥夺印第安人的土地，驱赶和杀戮印第安人。白人与印第安人的长期血战开始了。今日美国的电影和文献中有大量描绘这些场景的作品。直到最后，建立起保留地，把印第安人圈在一定的范围内。就象人们对待一些动物的态度一样——建立自然保护区。</p><p>白人对印第安人的态度历来较为奇怪，也不同于他们对待黑人。内战之后，宪法修正案肯定了黑人的权利。黑人获得解放之前，黑人在众院计算人数时只算五分之三。修正案肯定了黑人享有同等权利，但没有包括印第安人。很长时间内，印第安人不能出庭作证，不能拥有财产，不能投票，不能离开保留地。白人对印第安人和黑人的态度有所不同。对待黑人，白人长期拒绝他们享有文明的成果，学校、教堂、商店、饭店和公共场所不对黑人开放。而对印第安人的孩子却不同。法律要求他们接受白人的制度，印第安人的孩子被强制送去学校。保留地里有教堂。白人希望印第安人接受白人的制度和生活方式，很有些驯化野生动物的意思。白人对待印第安人和黑人的这种差别，在于印第安人是土生土长的，是土地的所有者；而黑人是外来的。虽然在社会地位上两者相差无几，但印第安人是真正的美洲人，欧洲人的难题是，怎样使真正的美洲人“认同他们的国家”。</p><p>时至今日，印第安人的问题依然是社会的一个问题。现在美国大约有 50 万印第安人。他们的境况大都不能与平均水平相比。由于失望和悲观，酗酒严重。印第安人青年的自杀率高于平均数 10 倍，50%的人没有工作，80%的人要依靠政府救济。印第安人至今仍不能说认同了盎格鲁-撒克逊文化或主流文化。他们有自己的文化和自己的语言。印第安人的教育程度一般不高，很难到保留地以外去找工作，竞争。有少数印第安人来到城市，但他们会返回居住地，从心理上来说他们认同自己的文化。</p><p>印第安人没有黑人那样多，所以他们对社会的实际挑战并不那么大。不过，他们对美国文明是一种挑战，即为什么欧洲移民在这么长的时间里没能同化印第安人。我觉得这里不是技术问题，而是心理问题。如同不少地方充分显示了美国的文化，其反美情绪却更强烈。</p><h2 id="9-精神危机"><a href="#9-精神危机" class="headerlink" title="9.精神危机"></a>9.精神危机</h2><p>美国社会有没有精神危机？有些人不会思考这些问题。经济的高度发达，使人们不再去探讨这个表象后面的事态发展。处于美国社会之外的人，自然很难去探索繁华景象背后的东西，呈现在眼前的令人眼花缭乱的种种景象已够难对付的了。一俊遮百丑，在一个社会经济高度发达时，尤其会产生这种状况。然而生活在吾土吾民中的人们，往往就更愿意思考这个问题。愿意思考这个问题的，又往往是到了一定年纪或有一定思想的人。社会物质高度发达的景象之后，存在着什么样的精神状态？不少被称为保守主义者的思想家认为，存在着精神危机。</p><p>最近一本颇受争议的书是 The Closing of The American Mind: How Higher Education Has Failed Democracy and Impoverished The Souls of Today’s Students（《美国精神的结束：美国高等教育如何搞垮民主制，如何使今天的学生灵魂空虚》）。作者阿兰·布鲁姆（Allan Bloom）是芝加哥大学约翰·M·奥林民主的理论与实践调查中心成员，社会思想委员会的教授，曾译过柏拉图的《理想国》和卢梭的《爱弥儿》。此书发表之后，引起激烈争论，强烈的反响。不少人认为这是保守主义的旗帜，黑人运动和女权主义者反应尤为强烈，因为布鲁姆主张的观念在很多方面与黑人人权运动和女权主义运动相悖。但也有许多人大声叫好，据说里根就认为这是一本好书，我问过几位大学里的教授，他们也认为是一本好书。</p><p>布鲁姆的主要论点是什么？布鲁姆的主要思路是，如今的大学教育已不能使教育对象掌握奠基西方社会的传统价值观念。大学在现代的发展越来越走向一种文化相对主义和精神开放。文化相对主义要求精神开放。但这种文化相对主义暗含的逻辑是世界上没有绝对的价值，任何事物都是可以接受的，或不能接受的。这种观念成为一种德行（virtue）。布鲁姆认为每一个教育系统都有一个道德目标，教育系统力图达到这个目标，并在课程中体现这个目标。</p><p>五十年代，美国的教育在追求这一目标。文化相对主义成功地摧毁了西方中心主义的思想，但同时也削弱了西方文化的地位。在这种精神的主导下，大学教育的结果是年轻人对以往没有概念，对将来没有看法。负责进行高等教育的大学不提供西方哲学和文学的光辉历史的知识。学生们无法通过这些知识来理解自然的秩序和人在自然中的位置。大学没有提供严肃的学习过程所需要的自我意识。</p><p>结果是什么呢？</p><p>青年一代对西方历史上的经典著作知之甚少。布鲁姆说有一次上课时他问学生有什么书给他们留下了最深的印象，竟然没有一个人能说出一本名著来。有一个人说是《圣经》，但大学里是不教此书的。学生们有时去看一些电影，如《甘地》、《托马斯·莫尔》，但这些电影，在布鲁姆看来，是经过人为的艺术加工的。学生们读《克莱默夫妇》，以了解离婚和性生活，但很少有人把《安娜·卡列尼娜》、《红与黑》视为自己生活中不可缺少的东西。女权主义者是经典著作的敌人（这里可以了解为什么女权主义者反对布鲁姆）。</p><p>布鲁姆认为，六十年代和七十年代的反精英主义和种族主义的斗争对学生与书的关系影响很小。那些积极分子很少攻击古典著作。但是所有的文学都是有性别差异的，以往的作家，苏格拉底、柏拉图、莎士比亚、卢梭、托尔斯泰、斯汤达，怎么会有今天女权主义的想法。在多种力量的作用下，古典名著已成为昨日黄花。</p><p>西方音乐中的精品，青年一代对之越来越淡漠，哪怕去听这些音乐，也缺少必要的灵感和激情。虽然二十世纪可以说是音乐的世纪，青年一代无比迷恋音乐，但他们迷恋的是摇滚乐、现代音乐，古典音乐在年轻一代中已经死去。贝多芬，肖邦、勃拉姆斯、莫扎特、瓦格纳等，已日益受到冷落。西方教育历来注重音乐在教育中的地位，认为音乐可以陶冶性情，苏格拉底和柏拉图就有所议论。如今教育丧失了音乐的一面，这将意味着什么？</p><p>青年一代也丧失了作为一个完整的人在社会上生活所需要的基本品质。他们在现代社会的加工下，具有新的品质，这些品质与新的社会格局相适应，同时也意味着某种危机。青年一代变成了自我中心型（Self-Centeredness），学生们不能说不好，但也不能说高尚和崇高。个人主义的过热发展，必然导致家庭的衰落和个人中心主义的成长。学生们依然感兴趣的著作是加缪的《局外人》，这里面意味着什么，毋需多言。</p><p>性革命和女权主义给人类创造性地提出了无穷无尽的挑战。性解放是对清教传统的反叛，但性解放的直接后果是把幸福理解为肉体放松，承认肉欲并不是危险的东西。这两股运动严重冲击了西方传统的价值观念。同时，青年一代也变成分离型的（Separateners），每个人都是相互分离的。布鲁姆称之为社会性的孤独者（Social solitaries）。这种分离型的最显而易见的象征就是离婚。离婚率高表明越来越多的美国人不愿意生活在一起。爱，对学生来说已经十分陌生。他们自小就有性生活，而且发展性关系十分容易，爱的情感已经十分淡漠，人与人之间的关系中已经缺少了这种可贵的情感。</p><p>布鲁姆列举了大量事实来说明他所谓美国精神的终结。他本人是主张弘扬西方的文化传统和文明的。他赞美柏拉图、苏格拉底、洛克、卢梭、康德、莎士比亚、培根等人的文化和精神创造，主张运用这些遗产来传延西方文明和文化精神。他讨论了自然状态与社会状态、自我、创造性、文化、价值这样一些基本观念。立论和论据大部分来自西方历史上的经典作家。布鲁姆对法国文化有特殊的感情，也许是他译了《爱弥儿》一书的缘故。书中时时可以看出他对法国文化的赞同和熟悉。</p><p>布鲁姆将这种发展的总趋势称为虚无主义（Nihilism）。虚无主义成为美国方式，这对文化发展和美国精神是致命的冲击，由于这种态势的发展，美国的价值体系正在衰落，整个民主体制也在受到巨大的冲击。布鲁姆赞同托克维尔的观念，托克维尔曾认为大学在美国民主政治中具有重要的地位。托克维尔认为，民主的最大危险在于奴役公共舆论，民主的要求是每个人能自我决定自己的态度。民主使人摆脱传统政治强制、宗教等教条。人是自由的，但人要能自我判断。而西方传统的价值体系的衰落，最终将冲击民主制度，社会没有任何价值体系可以作为引导个人决策的价值体系，大学教育也不提供这种体系。思想与社会发展之间有非常密切的关系，思想终结了，在这种思想指引下的社会制度和行为方式也会终结。</p><p>布鲁姆的观点自然属于保守主义的观点，在一些主张进步的人看来，不足为取，因为社会总要进步，旧的东西总要被淘汰。值得注意的是他提出来的问题。美国精神面临着严重的挑战是一个事实，青年一代对西方传统价值观念的无知也是事实。这种精神领域中的变革又将在多大程度上影响社会的发展和管理呢？任何社会制度的存在和运转，绝不是仅靠法律条文的规定就能生效的，首先是要人们信仰这些基本价值，并由这些基本价值来指导行为方式。如果价值系统崩溃了，社会制度何以为续？</p><p>在许多社会中，问题往往不是出在体制上，而是出在价值体系的衰落上。一个社会没有核心的价值体系，便会遇到最大的政治协调和管理难题。这里人们往往遇到一个两难的困境：一方面社会进步要求有新的价值系统，冲破旧的价值系统的束缚；另一方面社会和谐和制度稳定要求保持社会价值系统的核心部分，否则一个社会的价值系统就会终结，整个社会陷于混乱和道德危机是不可避免的。</p><p>由此引出另一个两难困境：如果任社会自然发展，传统的价值观念便很难保存下来，社会发展的趋势总是要不断淘汰过去的东西，新的一代必然对往昔毫无概念，没有教育便没有延续。如果是民主的，由人们来选择，新的一代一代的人们很难说对以往有何感情，选择的结果往往是不言自明的。那么，谁来完成这项社会功能呢？</p><p>每一个思考社会安定和发展的人，恐怕首先要思考这个问题。</p><h2 id="10-太阳帝国"><a href="#10-太阳帝国" class="headerlink" title="10.太阳帝国"></a>10.太阳帝国</h2><p>最近有一部电影叫《太阳帝国》，描写第二次世界大战期间在上海的日本侵略军和一群西方人之间的关系。西方人在二战期间被关进集中营，由一队日本兵看守着，受尽折磨，忍饥挨饿，人的尊严受到侮辱。在日本经济高奏凯歌地打入美国国土和世界市场的时候，美国导演拍摄了这样一部电影。很难揣度导演的意图。但影片至少告诫人们，日本人与西方人有不同的价值观念，日本人具有凶猛，残忍的一面，日本人不承认人的基本价值和信仰。这里是否意味着日本人与西方人在另一个战场——经济领域——上取胜的原因，需要人们自己思量。</p><p>日本的经济成功被誉为奇迹。日本人自己也对此也是趾高气扬。二次大战，日本战败，国土被占领。然而，从人类历史的发展来看，日本在相当短的时间内一跃而起，成为世界上首屈一指的经济大国。自然目前不能谈政治大国和军事大国。有些日本人向往这一点，目前尚不能谈，未来却并非没有可能。总结人类社会发展的经验，强国的力量：一在军事力量，二在经济力量，三在政治艺术。日本人不乏后两者，只是前者受宪法约束，不过宪法仅为一纸条文，也是人制定的。一代人相信的东西，下一代并不肯定会相信。只要风水一转，情形就会大不相同。</p><p>太阳帝国正在逼迫美国就范。日本经济的实力令美国人刮目相看，二次大战即将结束前，著名文化人类学者本尼迪克特写过一本轰动一时的书，叫《菊花与刀》。书中对日本文化有精到的分析与见解，但不乏优等民族看待低等民族的味道。好象动物学家描绘大猩猩或金丝猴的生活习性，详尽、准确，但绝无羡慕之感。几十年后，另一位美国人写了一本书叫《日本名列第一》。作者系哈佛大学教授傅高义。这本书里就绝无动物学家的体验了，而且是充满了赞扬和羡慕之感。这一转变，颇具戏剧性。</p><p>1988 年 11 月 28 日，一位不透露姓名的日本人在伦敦拍卖行购买一幅毕加索 1905 年的画，付款三千八百多万美元，创二十世纪艺术作品价格纪录，此价为一幅画的世界第三最高价格。由此可见日本人的实力。日本对美国的经济入侵，远远超过了珍珠港事件那一顿饭的狂轰滥炸。在美国的大街上，举目皆是日本汽车，Toyota，Honda，Nissan 等。在电器商店里，更是日本化，各类日本电器产品琳琅满目，应有尽有。日本人在美国大举购买房产。旧金山日本人满地走，檀香山据闻已成为日本人天下。日本人购买房屋付现金。由于日本人的到来，房价大涨，没钱的美国人只能望房兴叹。亚特兰大市 IBM 的高楼，收归日本所有。我在圣路易市的一个全美最好的花园中参观，结果看了一大半的日本花园。最近世界最高建筑芝加哥的 Sears Tower 在出售，有人担心会落到日本人手里。有一位朋友告诉我，有的日本人买房子从来不先问价，在城市里转悠，看到中意的房子就指一下，让人搞来。日本对美国的投资大大增加。许多日本产品是在美国本土生产的。太阳帝国的影子正笼罩着美国。</p><p>我们来看一下一些严肃的数字。日本人口（1985）1.2 亿，美国为 2.89 亿。日本国土为 37.7 万多平方公里，美国为 937.2 万多平方公里，日本只有美国的零头。1987 年的 GNP（国民生产总值），日本为 23,850 亿，美国为 44,880 亿。贸易总值，日本为 3,790 亿，美国为 6,770 亿。从国土和人口的比率看，GNP 和贸易总值相差不大。日本的贸易（1987）对美国出口占总额的 36.5%，进口只占 21%，而美国（1986）对日本出口只占总额的 11.9%，进口占 22.4%。投资额也很高，日本目前在美国许多州设有工厂。从人均国民总产值来看，日本已超过美国，1985 年美国的数字为 16,709 美元，日本为 17,244 美元。从 1981 年至 1985 年，美国的国民生产总值增长率为 2.4%，日本为 4.1%。美日两国之间的贸易差额越来越大。二次大战时，美国人由于战火而知道日本。今天，美国人由于享乐而知道日本。日本经济的侵入，表现在它占领了大部分美国家庭。</p><p>太阳帝国的力量象核聚变那样增长。1985 年时，1 美元兑换 240 日元，如今只能兑换 130 日元。苏珊·芝拉（Susan Chira）在《纽约时报》（1988.11.28）上著文说：</p><ul><li>日本公司可以轻而易举地战胜竞争对手，购买美国的财产或公司；</li><li>日本投资者借了巨款给美国，大部分购买了 Treasury securities，他们可以动摇市场；</li><li>日本成为当地的经济统治者，其他国家和地区的货币不象日元升值那样快。日本在台湾、南朝鲜有大量投资，日本能左右这些地区；</li><li>日本成为比美国更大的世界巨富，它捐钱给发展中国家，拥有了新的权力，能影响国际经济政策的制定。</li></ul><p>日本人现在可以左右美国经济，许多美国人对此忧心忡忡。美国向日本大举借债，把控制权奉送给日本。1988 年前七个月，日本花了 90 亿美元购买外国公司，其中好几家为美国公司。美国的市场、公司纷纷沦陷，为日本人所占领。</p><p>太阳帝国对美国的挑战是严峻的。目前虽不能说日本取代美国，而且在近期内也不能作如是说，不过日本的咄咄逼人的长剑已直接指向美国。日本实际上是在美国的卵翼下成长起来的。美军占领，朝鲜战争和越南战争，日本都得到好处。日本现行体制的轮廓也是美国人的产品。然而，今天，战败国日本比战胜国美国还要财大气粗。日本人也不愿隐瞒这种感觉，乐于翻身道情。在不少地方等于做给美国人看，美国人有时只能干瞪眼。在自由经济的原则下，无法将日本人拒之门外。况且美国经济确有难言之苦，不能不仰人鼻息。从心理和情感上说，美国人并不喜欢日本人。</p><p>问题是为什么会有这样一个结局？除了管理体制等各方面的原因之外，两种文化的差别是一个重要原因。一定的制度必然会发生不以人的意志为转移的作用，但一定的文化更会发生不以人的意志为转移的作用。美日两国经济竞争的结局，便是两种文化的不同基因的产物。在很大程度上，这更是文化的制约，而非体制的制约。有人说，美国同日本比，东方文化就占了上风。</p><p>哪些因素在发生作用？这里难以一一枚举，只能略举大端。</p><ul><li>日本文化推崇集体主义，美国文化推崇个人主义。现代化大生产讲的是分工配合，日本文化中的集体主义基因更适于协作生产。美国的个人主义，往往排斥大规模或忘我的合作，美国人首先讲要个人的地位。美国人往往思考个人的成功，而日本人往往被引导思考集体的成功。日本大公司的统一精神在美国难以发现。日本人可以终身奉献给一个公司，做一个细小环节的工作。美国人恐怕难以做到这一点。对于一个社会的发展来说，集体主义有利有弊，但集体主义凝聚的力量大于个人主义，这是显而易见的。</li><li>日本文化注重个人奉献，美国文化注重个人享乐。美国的文化是享乐主义的。工作是为了享乐，美国人从来不跟自己过不去，有钱必花。有大批存款的美国人是稀有动物。不少人往往不知明天从哪里弄钱。美国人借钱买房子，买汽车，上大学等等。先花了再说。日本文化中个人的位置不高，也不强调个人享乐，而是主张个人奉献，日本男人工作，许多人要工作到半夜，都是自觉自愿的，没有加班费之说。有人告诉我，如果日本男人在公司工作晚上不干到半夜，人们就会认为他没有戏唱，不受重视。美国人的生活水平在世界上可能是数一数二的，在住房、交通、教育、饮食、环境等方面均超过日本，虽然人均收入没有日本高。享乐主义文化导致人们将大笔钱用于福利，而非投资。日本人是典型的“经济动物”，投资欲很强，而在个人享受方面却不象美国人那样注重，日本人讲究享乐，近年来开始有所时兴，但从根本上说不符合日本文化的精神。</li><li>日本文化是管制型的文化，美国文化是放手型的文化。日本文化造成的氛围是，每个人都接受严格的管理，于是整个经济和社会机制组织得较为严密，整个机器的运转较为统一。这套机制用在经济发展方面，必然会释放出巨大的能量。美国人不可能接受日本式的管理，美国人比较散漫，比较随便，机器的运转也较为民主。日本人受上峰强制去打天下，非打不可，不打不行。美国人往往出于自己的动机去打天下，上峰的指示也可以民主地否定，上峰对此也可以接受。在日本没有这样的故事，或者这样的故事不多。</li></ul><p>如此等等。这里提出的问题，不仅是两种文化的差别，而且是要求人们再评价两种体制。美国的体制，总体来说建筑在个人主义、享乐主义和民主主义的基础上，但它正明显地输给一个集体主义、忘我主义和权威主义的体制。也许美国人宁可在经济上输给别人，也不愿放弃自己的体制。这套体制保证信仰的实现，同时也保证了社会的一定繁荣。今天的世界格局，似乎表明这套体制难以保证美国的最发达地位。人们往往面临这样的选择：维持价值体系，还是追求更有效的体制——但违背传统的价值体系。有的时候问题在于，一定的文化能否允许一个社会选择全然不同的体制，往往不行。另一方面，美国人又不可能接受日本文化。美国人对日本文化往往不那么感兴趣，不少人认为日本人处于不发达的文化氛围中。在这一点上，不少美国人看不起日本人。这种心理屏障将保证美国的发展不快于日本，同时也保证美国人难以最后接受太阳帝国。</p><p>美国今天遇到了来自日本的挑战，很大一部分原因在于美国的体制、文化和价值反对美国本身。二次大战后，美国获得了得天独厚的天时、地利、人和的条件，社会经济以惊人的速度发展起来。然而，相隔三、四十年后，美国的地位就受到了严峻和有力的挑战。可以说，日本只是第一个向美国挑战的民族。在下个世纪里，必然会有更多的民族也向美国提出挑战。那时，美国人才会真正反省自己的政治、经济和文化。</p><p>当然，仅就日本和美国而言，日本在资源、领土上不可能超越美国。问题是美国社会上存在的种种相斥因素和力量如果继续这样运动下去，不仅会使其优势发挥不出来，而且会构成不可阻挡的危机的潜流。</p>]]></content>
    
    
      
      
    <summary type="html">&lt;h1 id=&quot;美国反对美国（America-against-America）&quot;&gt;&lt;a href=&quot;#美国反对美国（America-against-America）&quot; class=&quot;headerlink&quot; title=&quot;美国反对美国（America against America</summary>
      
    
    
    
    <category term="键政天地" scheme="https://blog.xuzhou-jiang.su/categories/%E9%94%AE%E6%94%BF%E5%A4%A9%E5%9C%B0/"/>
    
    <category term="非原创" scheme="https://blog.xuzhou-jiang.su/categories/%E9%94%AE%E6%94%BF%E5%A4%A9%E5%9C%B0/%E9%9D%9E%E5%8E%9F%E5%88%9B/"/>
    
    
    <category term="言论自由只在这里" scheme="https://blog.xuzhou-jiang.su/tags/%E8%A8%80%E8%AE%BA%E8%87%AA%E7%94%B1%E5%8F%AA%E5%9C%A8%E8%BF%99%E9%87%8C/"/>
    
    <category term="删前留名" scheme="https://blog.xuzhou-jiang.su/tags/%E5%88%A0%E5%89%8D%E7%95%99%E5%90%8D/"/>
    
    <category term="美国反对美国" scheme="https://blog.xuzhou-jiang.su/tags/%E7%BE%8E%E5%9B%BD%E5%8F%8D%E5%AF%B9%E7%BE%8E%E5%9B%BD/"/>
    
    <category term="高达" scheme="https://blog.xuzhou-jiang.su/tags/%E9%AB%98%E8%BE%BE/"/>
    
    <category term="斩杀线" scheme="https://blog.xuzhou-jiang.su/tags/%E6%96%A9%E6%9D%80%E7%BA%BF/"/>
    
    <category term="西雅图" scheme="https://blog.xuzhou-jiang.su/tags/%E8%A5%BF%E9%9B%85%E5%9B%BE/"/>
    
    <category term="迪斯科米" scheme="https://blog.xuzhou-jiang.su/tags/%E8%BF%AA%E6%96%AF%E7%A7%91%E7%B1%B3/"/>
    
    <category term="非原创" scheme="https://blog.xuzhou-jiang.su/tags/%E9%9D%9E%E5%8E%9F%E5%88%9B/"/>
    
    <category term="键政" scheme="https://blog.xuzhou-jiang.su/tags/%E9%94%AE%E6%94%BF/"/>
    
  </entry>
  
  <entry>
    <title>长毛象引用功能</title>
    <link href="https://blog.xuzhou-jiang.su/2025/11/23/mastodon-quote/"/>
    <id>https://blog.xuzhou-jiang.su/2025/11/23/mastodon-quote/</id>
    <published>2025-11-23T08:49:33.000Z</published>
    <updated>2025-11-23T15:05:22.000Z</updated>
    
    <content type="html"><![CDATA[<p>长毛象的引用功能，在小森林和各种魔改都已经实现，虽然只有本站才能看见引用效果。<br>非官方客户端，例如IceCube也可以引用嘟文，本质上还是复制转发对象的链接罢了。<br>其实，我觉得这也可以了，毕竟本来长毛象官方就不让带评论转发，“以防对用户进行网暴”。</p><span id="more"></span><h1 id="需求背景"><a href="#需求背景" class="headerlink" title="需求背景"></a>需求背景</h1><p>但是，这还是令人有些不爽，能一个键解决的事，为什么还要多复制粘贴一下呢？而且这个纯手工引用的效果，让人一眼看不出我在评<del>挂</del>什么东西。恰好我的引用需求又很多，因为我关注的都是搬运推友的机器人🥺。<br>引用这个功能，我还是要加的。毕竟我想“网暴”谁，我直接天天截图，用爬虫拉他的推文就是了。你想用引用功能来限制别人裱人，就跟用宪法里国家主席的十年任期来限制总书记不能连任终身一样🤭所以我认为引用就必须毫无限制地加上！</p><p>然后我就参考了<a href="https://hello.2heng.xin/">小森林</a>的代码，<a href="https://github.com/mashirozx/mastodon/tree/5569238d5ed0011b50157dcedd124e7f2eed0100">这在他们首页有公布</a>。我研究了一下代码以后发现，要实现引用功能，需要给数据库加一列，这个魔改就很超过了。当时长毛象稳定版还在v4.4.x，已经可以显示外站引用了，但是我们却不能引用别人。<br>宁与友邦，不与家奴了属于是<br><img src="beat-foreigners.png" alt="打不了洋人，还打不了你么"><br>我给长毛象的GitHub仓库提了issue，要求加一个引用功能，他们回复“在做了”，预计在v4.5.0问世。其实我看见有<code>feature-flag</code>了，只是不知道怎么去除。而且我只是魔改，没打算硬分叉，所以先让官方飞一会儿，下次升级直接跳到<code>main</code>分支。</p><h2 id="主站上线新功能"><a href="#主站上线新功能" class="headerlink" title="主站上线新功能"></a>主站上线新功能</h2><p>后来，<a href="https://mastodon.social/">官方主站</a>解禁了引用功能，我用我的小号偷偷地看了一下，发现这不是坑爹么？所有升级前的嘟文，外站（旧版本长毛象和其他Fedi软件）所有的嘟文均“无权引用”！只有本站升级后，用户发帖，且选择你可以引用，你才能使用引用功能。</p><h2 id="长毛象客户端的新功能"><a href="#长毛象客户端的新功能" class="headerlink" title="长毛象客户端的新功能"></a>长毛象客户端的新功能</h2><p>不仅限制网页端，本来IceCube可以引用的，升级实例以后，该账号也会显示“无权引用”。这不是沪C是什么啊？😅</p><blockquote><p>沪C的梗也算全国闻名了，上海市外环线内，外地牌照可以进，但是上海的沪C不能进<br><img src="huC1.webp"><br><img src="huC2.webp"></p></blockquote><p>长毛象这样也不算坏事，毕竟只需要轻微魔改一下就可以引用了嘛。以后的刷嘟体验肯定会显著提升的。</p><h1 id="魔改过程"><a href="#魔改过程" class="headerlink" title="魔改过程"></a>魔改过程</h1><p>要实行起来比较复杂，毕竟从<code>stable-4.4</code>变基或合并到主分支可不是开玩笑的。</p><h2 id="试验田的魔改"><a href="#试验田的魔改" class="headerlink" title="试验田的魔改"></a>试验田的魔改</h2><p>之前因为<a href="/2025/08/31/%E5%85%B3%E4%BA%8E%E6%9C%80%E8%BF%91%E5%81%9C%E6%9B%B4%E7%9A%84%E8%AF%B4%E6%98%8E/">某些事</a>，用我闲置的长毛象服务器，升级到了<code>main</code>分支。直接在那个服务器上测试代码修改后的效果，而不会导致我的实例崩坏。<br>我注释掉了一些代码，发现确实能够有效解除引用的限制，也粗浅地摸清了代码的原理。<br>缺点就是我之前的解除字数上限、媒体限制、置顶限制、个人资料限制、markdown魔改统统失效了。不过样式还是可以重新安装，元素宽度什么的还是要重新修改了。</p><h2 id="合并入主分支"><a href="#合并入主分支" class="headerlink" title="合并入主分支"></a>合并入主分支</h2><p><a href="/2025/08/17/%E9%95%BF%E6%AF%9B%E8%B1%A1%E5%A4%A7%E7%89%88%E6%9C%AC%E6%9B%B4%E6%96%B0%E8%B8%A9%E5%9D%91%E5%BF%83%E5%BE%97/">这个操作上次已经有经验</a>，还是把我的<code>custom4.4</code>分支合并到我在<code>main</code>上面新建的魔改分支上。<br>在此之前，我试过变基，但是处理冲突处理了2个小时也没看到头。所以，还是得使用合并，再全部取消暂存，然后把文件和部分文件改动，一个一个地并到新的里面去，这样还省一点时间。<br>并完提交一次，再一个个地补充没并进去的魔改。测试我是把git克隆到另一个目录里去，新开一个Vagrant测试环境进行测试的。所有功能都没问题了，再丢弃剩下的所有文件和改动。</p><h1 id="长毛象v4-5-x的引用功能代码和分析"><a href="#长毛象v4-5-x的引用功能代码和分析" class="headerlink" title="长毛象v4.5.x的引用功能代码和分析"></a>长毛象v4.5.x的引用功能代码和分析</h1><p>关于引用功能的全部代码魔改，都已推送到我的GitHub仓库<a href="https://github.com/dongzhimin-xz/mastodon/tree/retoot-with-reply">https://github.com/dongzhimin-xz/mastodon/tree/retoot-with-reply</a> ，趁我还没删掉赶紧fork或克隆到本地吧</p><h2 id="解决网页端引用按钮被禁情况"><a href="#解决网页端引用按钮被禁情况" class="headerlink" title="解决网页端引用按钮被禁情况"></a>解决网页端引用按钮被禁情况</h2><p>找到前端的转发按钮组件<code>/app/javascript/mastodon/components/status/boost_button_utils.ts</code>，删去如下代码：</p><figure class="highlight diff"><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></pre></td><td class="code"><pre><span class="line"><span class="comment">diff --git a/app/javascript/mastodon/components/status/boost_button_utils.ts b/app/javascript/mastodon/components/status/boost_button_utils.ts</span></span><br><span class="line"><span class="comment">index 5fc77ed30..ee2b1faf9 100644</span></span><br><span class="line"><span class="comment">--- a/app/javascript/mastodon/components/status/boost_button_utils.ts</span></span><br><span class="line"><span class="comment">+++ b/app/javascript/mastodon/components/status/boost_button_utils.ts</span></span><br><span class="line"><span class="meta">@@ -145,23 +145,5 @@</span> export function quoteItemState(&#123;</span><br><span class="line">     iconComponent: FormatQuote,</span><br><span class="line">   &#125;;</span><br><span class="line"></span><br><span class="line"><span class="deletion">-  if (!isPublic &amp;&amp; !isMine) &#123;</span></span><br><span class="line"><span class="deletion">-    iconText.disabled = true;</span></span><br><span class="line"><span class="deletion">-    iconText.iconComponent = FormatQuoteOff;</span></span><br><span class="line"><span class="deletion">-    iconText.meta = messages.quote_private;</span></span><br><span class="line"><span class="deletion">-  &#125; else if (isQuoteAutomaticallyAccepted) &#123;</span></span><br><span class="line"><span class="deletion">-    iconText.title = messages.quote;</span></span><br><span class="line"><span class="deletion">-  &#125; else if (isQuoteManuallyAccepted) &#123;</span></span><br><span class="line"><span class="deletion">-    iconText.title = messages.request_quote;</span></span><br><span class="line"><span class="deletion">-    iconText.meta = messages.quote_manual_review;</span></span><br><span class="line"><span class="deletion">-    // We don&#x27;t show the disabled state when logged out</span></span><br><span class="line"><span class="deletion">-  &#125; else if (isLoggedIn) &#123;</span></span><br><span class="line"><span class="deletion">-    iconText.disabled = true;</span></span><br><span class="line"><span class="deletion">-    iconText.iconComponent = FormatQuoteOff;</span></span><br><span class="line"><span class="deletion">-    iconText.meta = isQuoteFollowersOnly</span></span><br><span class="line"><span class="deletion">-      ? messages.quote_followers_only</span></span><br><span class="line"><span class="deletion">-      : messages.quote_cannot;</span></span><br><span class="line"><span class="deletion">-  &#125;</span></span><br><span class="line"><span class="deletion">-</span></span><br><span class="line">   return iconText;</span><br><span class="line"> &#125;</span><br></pre></td></tr></table></figure><p>刚才所删的代码，意思是如果符合以下条件：</p><ul><li>不是公开嘟文，且不是你发送的</li><li>该嘟文没被标为允许你引用（包括所有早两个月的旧版长毛象，还有外站misskey、pleroma、mitra等软件，外站的各种bot，均不允许你引用，虽然原作者并没表示拒绝你转发他&#x2F;她）</li></ul><p>你的引用按钮为灰色禁用状态，且显示“你无权引用”。只要删掉，你就可以引用嘟文，并开始编写你转评了</p><h2 id="解决无法发送转评的情况"><a href="#解决无法发送转评的情况" class="headerlink" title="解决无法发送转评的情况"></a>解决无法发送转评的情况</h2><p>刚才的代码改完后，你写完转评点击发送，依旧会给你提示不能引用。这说明长毛象官方的代码，把你给五花大绑🥵。接下来继续我们的逃脱表演。<br>按F12观察发现，这次发送失败，根本没有请求发送给服务端。这说明是因为前端禁止你发送转评。<br>继续修改前端代码，原理<a href="/2025/05/02/mastodon-scheduled-statuses/#Redux%E7%9A%84%E9%80%BB%E8%BE%91%E6%B5%85%E6%9E%90">我之前有提到过</a></p><figure class="highlight diff"><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"><span class="comment">diff --git a/app/javascript/mastodon/actions/compose_typed.ts b/app/javascript/mastodon/actions/compose_typed.ts</span></span><br><span class="line"><span class="comment">index 6b38b25c2..081cd6116 100644</span></span><br><span class="line"><span class="comment">--- a/app/javascript/mastodon/actions/compose_typed.ts</span></span><br><span class="line"><span class="comment">+++ b/app/javascript/mastodon/actions/compose_typed.ts</span></span><br><span class="line"><span class="meta">@@ -170,24 +170,10 @@</span> export const quoteComposeByStatus = createAppThunk(</span><br><span class="line">       dispatch(showAlert(&#123; message: messages.quoteErrorEdit &#125;));</span><br><span class="line">     &#125; else if (composeState.get(&#x27;privacy&#x27;) <span class="comment">=== &#x27;direct&#x27;) &#123;</span></span><br><span class="line">       dispatch(showAlert(&#123; message: messages.quoteErrorPrivateMention &#125;));</span><br><span class="line"><span class="deletion">-    &#125; else if (composeState.get(&#x27;poll&#x27;)) &#123;</span></span><br><span class="line"><span class="deletion">-      dispatch(showAlert(&#123; message: messages.quoteErrorPoll &#125;));</span></span><br><span class="line">     &#125; else if (</span><br><span class="line"><span class="deletion">-      composeState.get(&#x27;is_uploading&#x27;) ||</span></span><br><span class="line"><span class="deletion">-      (mediaAttachments &amp;&amp;</span></span><br><span class="line"><span class="deletion">-        typeof mediaAttachments !== &#x27;string&#x27; &amp;&amp;</span></span><br><span class="line"><span class="deletion">-        typeof mediaAttachments !== &#x27;number&#x27; &amp;&amp;</span></span><br><span class="line"><span class="deletion">-        typeof mediaAttachments !== &#x27;boolean&#x27; &amp;&amp;</span></span><br><span class="line"><span class="deletion">-        mediaAttachments.size !== 0)</span></span><br><span class="line"><span class="addition">+      composeState.get(&#x27;is_uploading&#x27;)</span></span><br><span class="line">     ) &#123;</span><br><span class="line">       dispatch(showAlert(&#123; message: messages.quoteErrorUpload &#125;));</span><br><span class="line"><span class="deletion">-    &#125; else if (composeState.get(&#x27;quoted_status_id&#x27;)) &#123;</span></span><br><span class="line"><span class="deletion">-      dispatch(showAlert(&#123; message: messages.quoteErrorQuote &#125;));</span></span><br><span class="line"><span class="deletion">-    &#125; else if (</span></span><br><span class="line"><span class="deletion">-      status.getIn([&#x27;quote_approval&#x27;, &#x27;current_user&#x27;]) !== &#x27;automatic&#x27; &amp;&amp;</span></span><br><span class="line"><span class="deletion">-      status.getIn([&#x27;quote_approval&#x27;, &#x27;current_user&#x27;]) !== &#x27;manual&#x27;</span></span><br><span class="line"><span class="deletion">-    ) &#123;</span></span><br><span class="line"><span class="deletion">-      dispatch(showAlert(&#123; message: messages.quoteErrorUnauthorized &#125;));</span></span><br><span class="line">     &#125; else if (</span><br><span class="line">       status.get(&#x27;visibility&#x27;) <span class="comment">=== &#x27;unlisted&#x27; &amp;&amp;</span></span><br><span class="line">       !wasQuietPostHintModalDismissed</span><br></pre></td></tr></table></figure><p>以上被删除的代码会让你在如下情况，禁止你发送带引用嘟文：</p><ol><li>对方禁止引用时</li><li>你的嘟文有投票时</li><li>你的嘟文附加了媒体时</li></ol><p>其中<font color=49b1f5>2</font>和<font color=49b1f5>3</font>是因为长毛象官方的“极简”设计理念而禁止的。</p><h2 id="解决发送转评时，遭到后端拒绝的情况"><a href="#解决发送转评时，遭到后端拒绝的情况" class="headerlink" title="解决发送转评时，遭到后端拒绝的情况"></a>解决发送转评时，遭到后端拒绝的情况</h2><p>做完以上步骤后，你会发现还是无法转评。这次现象稍微有点变化，调试浏览器发现，前端确实发送了请求，但是后端还是禁止了你的引用。<br>它根本不接受你的嘟文！<br>原理<a href="/2025/05/02/mastodon-scheduled-statuses/#%E5%98%9F%E6%96%87%E5%8F%91%E9%80%81%E7%9A%84%E5%9F%BA%E6%9C%AC%E5%8E%9F%E7%90%86">我之前也有提到过</a>，你的请求会被<code>mastodon-web.service</code>所运行的<code>puma</code>给接收，经过router，送到controller。<br>因此，找到判断审核你嘟文是否合法，并且给你返回404的那个代码，将它删掉：</p><figure class="highlight diff"><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></pre></td><td class="code"><pre><span class="line"><span class="comment">diff --git a/app/controllers/api/v1/statuses_controller.rb b/app/controllers/api/v1/statuses_controller.rb</span></span><br><span class="line"><span class="comment">index fd7757f2e..aa8f4a7ee 100644</span></span><br><span class="line"><span class="comment">--- a/app/controllers/api/v1/statuses_controller.rb</span></span><br><span class="line"><span class="comment">+++ b/app/controllers/api/v1/statuses_controller.rb</span></span><br><span class="line"><span class="meta">@@ -159,7 +159,6 @@</span> class Api::V1::StatusesController &lt; Api::BaseController</span><br><span class="line"></span><br><span class="line">   def set_quoted_status</span><br><span class="line">     @quoted_status = Status.find(status_params[:quoted_status_id])&amp;.proper if status_params[:quoted_status_id].present?</span><br><span class="line"><span class="deletion">-    authorize(@quoted_status, :quote?) if @quoted_status.present?</span></span><br><span class="line">   rescue ActiveRecord::RecordNotFound, Mastodon::NotPermittedError</span><br><span class="line">     # TODO: distinguish between non-existing and non-quotable posts</span><br><span class="line">     render json: &#123; error: I18n.t(&#x27;statuses.errors.quoted_status_not_found&#x27;) &#125;, status: 404</span><br></pre></td></tr></table></figure><p>这样，你的转评嘟文就可以发送了</p><h2 id="解决转评发送后，显示“嘟文待发布”的情况"><a href="#解决转评发送后，显示“嘟文待发布”的情况" class="headerlink" title="解决转评发送后，显示“嘟文待发布”的情况"></a>解决转评发送后，显示“嘟文待发布”的情况</h2><p>前端和后端的困境解开后，官方的代码依旧在围堵。后端代码还是会随时验证引用是否拥有原作者许可。我能做的，依旧只有不让它验证</p><figure class="highlight diff"><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></pre></td><td class="code"><pre><span class="line"><span class="comment">diff --git a/app/services/post_status_service.rb b/app/services/post_status_service.rb</span></span><br><span class="line"><span class="comment">index 3e4a71522..ffe6fc3af 100644</span></span><br><span class="line"><span class="comment">--- a/app/services/post_status_service.rb</span></span><br><span class="line"><span class="comment">+++ b/app/services/post_status_service.rb</span></span><br><span class="line"><span class="meta">@@ -109,7 +109,7 @@</span> class PostStatusService &lt; BaseService</span><br><span class="line">     status.quote = Quote.create(quoted_status: @quoted_status, status: status)</span><br><span class="line">     status.quote.ensure_quoted_access</span><br><span class="line"></span><br><span class="line"><span class="deletion">-    status.quote.accept! if @quoted_status.local? &amp;&amp; StatusPolicy.new(@status.account, @quoted_status).quote?</span></span><br><span class="line"><span class="addition">+    status.quote.accept!</span></span><br><span class="line">   end</span><br><span class="line"></span><br><span class="line">   def safeguard_mentions!(status)</span><br></pre></td></tr></table></figure><h2 id="外站折中方案"><a href="#外站折中方案" class="headerlink" title="外站折中方案"></a>外站折中方案</h2><p>刚才说了，我只能让我实例的后端不验证嘟文是否经过许可，而长毛象官方不仅让长毛象的实例代码分布式验证转发许可，甚至还推动整个Fediverse社区引入这个标准来限制引用功能的使用。<br>本站引用的嘟文，如果被misskey、pleroma站点看到了，它们才不会管我的引用是否经过原作者的同意，我还是享有人权的。它们会以它们代码的方式来显示我的引用。<br>即使外站不显示我引用了啥，我还是可以让外站的Fedi友看到我引用了什么东西。运气不好，人家还可以点进原文链接进行品鉴；运气好的话，人家实例直接显示帖文预览。</p><figure class="highlight diff"><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></pre></td><td class="code"><pre><span class="line"><span class="comment">diff --git a/app/lib/text_formatter.rb b/app/lib/text_formatter.rb</span></span><br><span class="line"><span class="comment">index 963cc0d1c..9e79fae17 100644</span></span><br><span class="line"><span class="comment">--- a/app/lib/text_formatter.rb</span></span><br><span class="line"><span class="comment">+++ b/app/lib/text_formatter.rb</span></span><br><span class="line"><span class="meta">@@ -181,7 +181,7 @@</span> class TextFormatter</span><br><span class="line">     return html if url.blank? || html.include?(url)</span><br><span class="line"></span><br><span class="line">     &lt;&lt;~HTML.squish</span><br><span class="line"><span class="deletion">-      &lt;p class=&quot;quote-inline&quot;&gt;RE: #&#123;TextFormatter.shortened_link(url)&#125;&lt;/p&gt;#&#123;html&#125;</span></span><br><span class="line"><span class="addition">+      &lt;p&gt;RE: #&#123;TextFormatter.shortened_link(url)&#125;&lt;/p&gt;#&#123;html&#125;</span></span><br><span class="line">     HTML</span><br><span class="line">   end</span><br><span class="line"> end</span><br></pre></td></tr></table></figure><p>我发出去的转评，它其实是自带原文链接的。只是在长毛象的外站实例，它会隐藏属性有<code>class=&quot;quote-inline&quot;</code>的元素。那我只要把自己的国籍丢掉，回国就不怕遭受暴政，还能享受外宾礼遇了🤭。</p><h2 id="解决上一节无法生效的bug"><a href="#解决上一节无法生效的bug" class="headerlink" title="解决上一节无法生效的bug"></a>解决上一节无法生效的bug</h2><p>将上述代码改动并入我的魔改分支后，会发现不显示我引用的原文链接了。这是因为我原先抄glitch代码时，写死了类型，也没魔改数据库，因此全部走的是<code>/app/lib/advanced_text_formatter.rb</code>（我的<a href="/2025/02/01/%E9%95%BF%E6%AF%9B%E8%B1%A1%E5%8F%91%E9%80%81markdown%E5%98%9F%E6%96%87/">魔改日记</a>也没有说明这个原理），所以官方代码改的肯定还不够，参考glitch最新版的魔改，进行代码修改：</p><figure class="highlight diff"><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></pre></td><td class="code"><pre><span class="line"><span class="comment">diff --git a/app/lib/advanced_text_formatter.rb b/app/lib/advanced_text_formatter.rb</span></span><br><span class="line"><span class="comment">index 703b44437..fc67024fb 100644</span></span><br><span class="line"><span class="comment">--- a/app/lib/advanced_text_formatter.rb</span></span><br><span class="line"><span class="comment">+++ b/app/lib/advanced_text_formatter.rb</span></span><br><span class="line"><span class="meta">@@ -69,6 +69,8 @@</span> class AdvancedTextFormatter &lt; TextFormatter</span><br><span class="line">       end</span><br><span class="line">     end</span><br><span class="line"></span><br><span class="line"><span class="addition">+    html = add_quote_fallback(html) if options[:quoted_status].present?</span></span><br><span class="line"><span class="addition">+</span></span><br><span class="line">     html.html_safe # rubocop:disable Rails/OutputSafety</span><br><span class="line">   end</span><br></pre></td></tr></table></figure><h2 id="解决部分外站实例导致的“嘟文已删除”问题"><a href="#解决部分外站实例导致的“嘟文已删除”问题" class="headerlink" title="解决部分外站实例导致的“嘟文已删除”问题"></a>解决部分外站实例导致的“嘟文已删除”问题</h2><p>这个问题主要出现在长毛象v4.4.x的旧版本，和新版本4.5。更旧版本的外站长毛象则不存在这个问题。<br>原因是上述实例发出请求禁止你引用。我也不废话了，不费尽心思过滤外站的拒绝引用请求，直接注释掉响应请求的吊销代码就行了。</p><figure class="highlight diff"><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></pre></td><td class="code"><pre><span class="line"><span class="comment">diff --git a/app/models/quote.rb b/app/models/quote.rb</span></span><br><span class="line"><span class="comment">index e81d42708..22f18a693 100644</span></span><br><span class="line"><span class="comment">--- a/app/models/quote.rb</span></span><br><span class="line"><span class="comment">+++ b/app/models/quote.rb</span></span><br><span class="line"><span class="meta">@@ -51,7 +51,7 @@</span> class Quote &lt; ApplicationRecord</span><br><span class="line"></span><br><span class="line">   def reject!</span><br><span class="line">     if accepted?</span><br><span class="line"><span class="deletion">-      update!(state: :revoked)</span></span><br><span class="line"><span class="addition">+#      update!(state: :revoked)</span></span><br><span class="line">     elsif !revoked?</span><br><span class="line">       update!(state: :rejected)</span><br><span class="line">     end</span><br></pre></td></tr></table></figure><p>这样，外站被引用的长毛象用户，点击了删除本站某用户的引用，也不会影响到本站了。其他长毛象实例，包括v4.4.x还是受影响的，除非他们也废了象的武功。</p><h2 id="解决长毛象（手机）客户端无法引用大部分嘟文的问题"><a href="#解决长毛象（手机）客户端无法引用大部分嘟文的问题" class="headerlink" title="解决长毛象（手机）客户端无法引用大部分嘟文的问题"></a>解决长毛象（手机）客户端无法引用大部分嘟文的问题</h2><p>刚才的一系列操作，可以让本站用户在<strong>网页端</strong>尽情转评别人的嘟文了，但是手机客户端仍然受限制，可能使用了其他前端也会有前端上的限制。<br>还有个很神奇的现象，当我登录旧版长毛象（v4.3.x）实例上的账号时，我的IceCube可以引用，但是新版实例的账号就无法引用别人的嘟文了。真的是v4.5的用户连畜生都不如😅<br><img src="beat-foreigners.png" alt="v4.5用户与狗不得入内"></p><blockquote><p>毛象（前朝公民除外）与狗不得入内</p></blockquote><p>本节的魔改，不能让用户在别人的前端、官方客户端、第三方客户端直接引用v4.5用户禁止引用的嘟文。<br>原理很简单：把后端推到客户端的外站非长毛象嘟文，全都改成“自动批准转发”就行了</p><figure class="highlight diff"><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></pre></td><td class="code"><pre><span class="line"><span class="comment">diff --git a/app/models/concerns/status/interaction_policy_concern.rb b/app/models/concerns/status/interaction_policy_concern.rb</span></span><br><span class="line"><span class="comment">index da132a450..7f369701b 100644</span></span><br><span class="line"><span class="comment">--- a/app/models/concerns/status/interaction_policy_concern.rb</span></span><br><span class="line"><span class="comment">+++ b/app/models/concerns/status/interaction_policy_concern.rb</span></span><br><span class="line"><span class="meta">@@ -65,7 +65,7 @@</span> module Status::InteractionPolicyConcern</span><br><span class="line"></span><br><span class="line">     return :unknown if (automatic_policy | manual_policy).anybits?(QUOTE_APPROVAL_POLICY_FLAGS[:unsupported_policy])</span><br><span class="line"></span><br><span class="line"><span class="deletion">-    :denied</span></span><br><span class="line"><span class="addition">+    :automatic</span></span><br><span class="line">   end</span><br><span class="line"></span><br><span class="line">   def downgrade_quote_policy</span><br></pre></td></tr></table></figure><h1 id="后记"><a href="#后记" class="headerlink" title="后记"></a>后记</h1><p>我觉得我这一篇博客对于毛象的魔改也没太大贡献，但是最值得肯定的一点就在于给毛象用户找回一点尊严。</p><p>这就让人联想到，最近<a href="http://archive.today/mN2m0">武统台湾</a>的<a href="https://web.archive.org/web/20251123144454/https://mastodon.antisocial.science/@lmet/115588219978259180">呼声很高</a>，有网友就给出了非常中肯的<a href="https://annihilation.social/objects/dfb0bbfd-3e03-4666-85be-38529737600e">回复</a></p><blockquote><p>正所谓赢了有台湾岛，输了有新中国，这是真正的双赢——这下不得不支持了。</p></blockquote><p>中国人就像小黄人找老大一样，到处拜青天大老爷。在幻想中，拜包青天。在缺粮食的时候，拜大贤良师，给自己喂粥。现在中国人缺的是尊严，没有尊严（例如把你打得一辈子下不了床，你虽然没有失去生命，但是这叫失去尊严，跟死了没两样）也跟活活饿死一样没有区别。平时加班到深夜，回家路上看到一堆我国“尊贵的客人”在地铁上拉屎撒尿没人管，你拿出水喝一口，警察马上就来对你罚款，回头再叫那几位贵宾给点面子，直接放走。第二天上班，早高峰，你好不容易找到座位，坐上去睡一会儿，警察上来一巴掌把你打醒，叫你给边上的外国人让座，“要发扬待客之道”。你说你站不起来，晶哥就连拖带拽地拉你去局子里坐坐。老外说：“别打了，多难看啊，我前两天刚入籍了台湾，不是客人了😀”晶哥说：“台湾？台湾也事外宾！”于是把你逮捕了。这时，你是否也想要一个能给你施舍点尊严的青天大老爷或者亭长呢？🙂</p><p>话说回来，把这段代码抄去，你这个站长也是得到了自己的赛博《太平要术》（东汉末年的启示录）😈</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;长毛象的引用功能，在小森林和各种魔改都已经实现，虽然只有本站才能看见引用效果。&lt;br&gt;非官方客户端，例如IceCube也可以引用嘟文，本质上还是复制转发对象的链接罢了。&lt;br&gt;其实，我觉得这也可以了，毕竟本来长毛象官方就不让带评论转发，“以防对用户进行网暴”。&lt;/p&gt;</summary>
    
    
    
    <category term="建站技术" scheme="https://blog.xuzhou-jiang.su/categories/%E5%BB%BA%E7%AB%99%E6%8A%80%E6%9C%AF/"/>
    
    <category term="长毛象中度魔改" scheme="https://blog.xuzhou-jiang.su/categories/%E5%BB%BA%E7%AB%99%E6%8A%80%E6%9C%AF/%E9%95%BF%E6%AF%9B%E8%B1%A1%E4%B8%AD%E5%BA%A6%E9%AD%94%E6%94%B9/"/>
    
    
    <category term="什么都阻挡不了我的键政" scheme="https://blog.xuzhou-jiang.su/tags/%E4%BB%80%E4%B9%88%E9%83%BD%E9%98%BB%E6%8C%A1%E4%B8%8D%E4%BA%86%E6%88%91%E7%9A%84%E9%94%AE%E6%94%BF/"/>
    
    <category term="长毛象引用功能" scheme="https://blog.xuzhou-jiang.su/tags/%E9%95%BF%E6%AF%9B%E8%B1%A1%E5%BC%95%E7%94%A8%E5%8A%9F%E8%83%BD/"/>
    
    <category term="长毛象v4.5.0以上版本" scheme="https://blog.xuzhou-jiang.su/tags/%E9%95%BF%E6%AF%9B%E8%B1%A1v4-5-0%E4%BB%A5%E4%B8%8A%E7%89%88%E6%9C%AC/"/>
    
  </entry>
  
  <entry>
    <title>长毛象markdown代码块高亮</title>
    <link href="https://blog.xuzhou-jiang.su/2025/09/01/mastodon-markdown-codeblock-highlight/"/>
    <id>https://blog.xuzhou-jiang.su/2025/09/01/mastodon-markdown-codeblock-highlight/</id>
    <published>2025-09-01T15:04:24.000Z</published>
    <updated>2025-09-01T17:53:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>我之前写过一篇<a href="/2025/02/01/%E9%95%BF%E6%AF%9B%E8%B1%A1%E5%8F%91%E9%80%81markdown%E5%98%9F%E6%96%87/">长毛象发送markdown嘟文</a>，但是那一篇好像因为太累了，只贴了代码，没详写思路和在网上搜索教程的过程。<br>当初搜索markdown魔改时，中文圈最好的教程就只有这个象友<a href="https://blog.tantalum.life/posts/notes-on-modifying-mastodon-in-docker/">https://blog.tantalum.life/posts/notes-on-modifying-mastodon-in-docker/</a> <del><em>其实我这才是大型魔改</em></del>。他原话是这么说的😅</p><blockquote><p>一直很想让长毛象支持 Markdown 语法，但我本人却因为菜得看不懂真代码而多次碰壁。这次使用了小森林站长的 docker 镜像，主题和特色请看这里。</p></blockquote><p>也就是说，全网最好的长毛象markdown魔改教程，给出的方案是用docker部署小森林分支的代码。<br>后来在本菜鸟的不懈努力下，终于把代码改了。最初能浏览外站markdown，现在总算可以发markdown给别人了。</p><p>美中不足的是，我们官方分支的代码块高亮，还差点意思，我也想要<a href="https://hello.2heng.xin/">小森林</a>的代码块样式🥺</p><h1 id="理论学习"><a href="#理论学习" class="headerlink" title="理论学习"></a>理论学习</h1><p>因为我v4.4和他v3.5改终究不是一路人，死抄代码肯定是没用的，必须得理解。</p><h2 id="markdown是什么"><a href="#markdown是什么" class="headerlink" title="markdown是什么"></a>markdown是什么</h2><p><a href="https://hello.2heng.xin/@mashiro/104670343090096501">小森林站长已经介绍了</a></p><blockquote><p>Markdown 介绍<br>Markdown 是一种轻量级标记语言，创始人为约翰·格鲁伯（John Gruber）。它允许人们“使用易读易写的纯文本格式编写文档，然后转换成有效的 XHTML（或者 HTML）文档”。这种语言吸收了很多在电子邮件中已有的纯文本标记的特性。<br>它的优点：<br>它基于纯文本，方便修改和共享；<br>几乎可以在所有的文本编辑器中编写；<br>有众多编程语言的实现，以及应用的相关扩展；<br>在 GitHub 等网站中有很好的应用；<br>很容易转换为 HTML 文档或其他格式；<br>适合用来编写文档、记录笔记、撰写文章。<br>Markdown 的中文使用说明见：Markdown 入门参考</p></blockquote><p>当然，那段<code>Markdown 入门参考</code>链接已经失效了。</p><h2 id="实现原理"><a href="#实现原理" class="headerlink" title="实现原理"></a>实现原理</h2><p>我们能从中学到什么有用的东西呢？<br>我这hexo博客就是用markdown语言写的。具体语法这里不赘述了，我只教原理，原理会了，语法自然也能掌握了。<br>要进行<a href="https://blog.tantalum.life/posts/notes-on-modifying-mastodon-in-docker/">大型魔改</a>，就必须理解我在<a href="/2025/02/01/%E9%95%BF%E6%AF%9B%E8%B1%A1%E5%8F%91%E9%80%81markdown%E5%98%9F%E6%96%87/">长毛象发送markdown嘟文</a>中粘贴的代码是什么意思。<br>代码块高亮实现的大致过程：<br>用markdown写的代码块→用html语言表示的代码块→加上css或者style属性，浏览器渲染成五颜六色的样式<br>这个箭头<code>→</code>表示的就是渲染（render）过程。你在代码或英文网页中看到的render就是指将代码变成图画，或者说图像的过程。</p><h3 id="从markdown到html"><a href="#从markdown到html" class="headerlink" title="从markdown到html"></a>从markdown到html</h3><p>小森林站长说了，他用的是<code>Kramdown</code>。代码我更是先看了，正如他所说。<br>而长毛象官方分支v4.3~v4.4，也能显示外站的markdown，但官方用的是<code>redcarpet</code>。<br>这次我实现代码高亮，没有改用<code>Kramdown</code>，还是在原有基础上进行修改，使用<code>redcarpet</code>实现。<br>我搜索了如何用redcarpet实现markdown的渲染效果。<a href="https://github.com/vmg/redcarpet">redcarpet的官方文档</a>说了，首先生成renderer，渲染器可以选择禁用样式、图片、链接。再以刚才的renderer为参数，new一个markdown对象。这个markdown对象的返回值，就是相应的html。</p><p>这时，我就试着改了一下<code>:no_styles</code>属性，发现没法改变代码块样式。<br>检查写<a href="/2025/02/01/%E9%95%BF%E6%AF%9B%E8%B1%A1%E5%8F%91%E9%80%81markdown%E5%98%9F%E6%96%87/">这篇文章</a>那会儿抄来的代码，发现原作者（他也是glitch的作者之一，兼长毛象官方分支的管理员）自定义了代码块的渲染</p><figure class="highlight ruby"><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></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> <span class="title class_">HTMLRenderer</span> &lt; <span class="title class_ inherited__">Redcarpet::Render::HTML</span></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">initialize</span>(<span class="params">options, &amp;block</span>)</span><br><span class="line">      <span class="variable language_">super</span>(options)</span><br><span class="line">      <span class="variable">@format_link</span> = block</span><br><span class="line">    <span class="keyword">end</span></span><br><span class="line"></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">block_code</span>(<span class="params">code, _language</span>)</span><br><span class="line">      <span class="string">&lt;&lt;~HTML</span></span><br><span class="line"><span class="string">        &lt;pre&gt;&lt;code&gt;<span class="subst">#&#123;<span class="variable constant_">ERB</span><span class="symbol">:</span><span class="symbol">:Util</span>.h(code).gsub(<span class="string">&quot;\n&quot;</span>, <span class="string">&#x27;&lt;br/&gt;&#x27;</span>)&#125;</span>&lt;/code&gt;&lt;/pre&gt;</span></span><br><span class="line"><span class="string">      HTML</span></span><br><span class="line">    <span class="keyword">end</span></span><br><span class="line"></span><br><span class="line">    <span class="keyword">def</span> <span class="title function_">autolink</span>(<span class="params">link, link_type</span>)</span><br><span class="line">      <span class="keyword">return</span> link <span class="keyword">if</span> link_type == <span class="symbol">:email</span></span><br><span class="line">      <span class="variable">@format_link</span>.call(link)</span><br><span class="line">    <span class="keyword">end</span></span><br><span class="line"><span class="keyword">end</span></span><br></pre></td></tr></table></figure><p>其中<code>def block_code(code, _language)</code>这一块，就是渲染代码块的实现。它直接返回html形式的代码块。代码的意思就是，把所有换行符<code>\n</code>都换成html的换行符<code>&lt;br/&gt;</code>。<br>我把这一块给删掉，用redcarpet原生代码块渲染器测试，发现依旧没有样式的迹象。</p><h4 id="小段代码的分析"><a href="#小段代码的分析" class="headerlink" title="小段代码的分析"></a>小段代码的分析</h4><p>就按照往期魔改的思路，一段代码要完成的任务很简单，数据输入，数据输出。<strong>输入后和输出前，中间这部分就是我们要研究的，</strong> 输入前和输出后则是只要且必须保证数据类型和格式没有错误就行了。<br>我在公司时，虽然破电脑不能装vagrant，也不适合开发、上传、下载全部的长毛象代码。但是，下载个ruby还是很容易的。再用<code>gem install</code>装个redcarpet，也就等一个钟头而已🤭。<br>装完调试一个hello world。然后就开始渲染markdown的代码块。<br>这段代码，输入的是我用markdown语言写的代码块，输出的是html语言。我只要把html语言复制粘贴到文本文档里，再用浏览器打开就能确认效果。</p><p>我发现，这个参数不管怎么改，它输出代码块的样式和类都不会改一点。说明问题不在这里。</p><p>在网上搜索了才发现，redcarpet要实现代码高亮，必须安装插件。插件有coderay和rouge。这个rouge就是小森林用的。</p><h5 id="coderay"><a href="#coderay" class="headerlink" title="coderay"></a>coderay</h5><p>首先我引入了coderay。输出的html显示，它把样式全都个别地写在元素里。在长毛象一运行，样式会被全部消除！</p><h5 id="rouge"><a href="#rouge" class="headerlink" title="rouge"></a>rouge</h5><p>接着我引入了rouge。其实redcarpet也能用rouge。根据网上教程，使用rouge也必须引入css，或者说sass文件。不引入的话，它是没有高亮效果的。样式文件，我直接下载了小森林的，颜色确实很鲜艳。</p><h1 id="代码实现"><a href="#代码实现" class="headerlink" title="代码实现"></a>代码实现</h1><p>前面我学习了coderay和rouge的使用方法。还有Ruby on Rails的代码引入是如何进行的。</p><h2 id="Ruby-on-Rails"><a href="#Ruby-on-Rails" class="headerlink" title="Ruby on Rails"></a>Ruby on Rails</h2><p>在Ruby中，每次你要使用其他文件的类和模块时，你都必须在开头<code>require</code>相应的文件。然而，长毛象的文件里，却似乎从来都没有这些。这就跟代码的走向有关了。</p><p>平时你运行一个文件，代码从<code>main</code>开始，到<code>main</code>函数的<code>return</code>结束。普通Ruby也许还好，但我们也没时间从零开始学习<code>Hello World</code>。这个Ruby on Rails就复杂得多了。<br>众所周知，长毛象有3个进程，web、sidekiq和streaming。我可以告诉你，streaming进程不是ruby，而是node.js。那就剩下俩，web和sidekiq。web负责接收外站和用户得请求，sidekiq负责进行计算。<br>复杂的就不说了，简化下来，你这个长毛象服务器有两个起点。<br>猴子也懂得解释：</p><ol><li>站长在ssh敲下<code>systemctl start mastodon-*</code>，或者开机自启时的起点。你就当作长毛象早上来公司上班<br>它上班时，就必须读取<code>config</code>下的所有文件。在测试环境时，<code>config</code>文件夹及其引用的所有文件，仅在启动时读取，其他文件在触发时从硬盘读取。在生产环境中，仅在进程重启时读取所有文件<br>引入代码就在<code>config/application.rb</code></li><li>用户和外站数据包进入服务器。此时长毛象已经打卡上班，要么在做领导和客户交代的任务，要么没有任务在那睡觉。这时来办事的用户和外站进来，一脚把我们的客服小祥踢醒<br><img src="huai.jpg"><br>这时，长毛象通过<code>config/routes.rb</code>查找要执行的指令，用<code>serializer</code>将传入的json解析。<br>在这个过程中，就会用到解析markdown的模块。</li></ol><p>如果你要用<code>require</code>引入代码：</p><ul><li>如果是第三方代码，就比如要引入<code>rouge</code>，就在<code>Gemfile</code>加入一行</li></ul><figure class="highlight ruby"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">gem <span class="string">&#x27;rouge&#x27;</span></span><br></pre></td></tr></table></figure><p>这里不需要再在<code>config/application.rb</code>里面<code>require</code>了，因为它里面的<code>Bundler.require(*Rails.groups)</code>已经引入了所有依赖包了，只要你在开始测试或重启长毛象生产环境前，使用<code>bundle install</code>正确安装依赖即可。</p><ul><li>如果你是引用你自己编写的库，或者其他需要引入的代码，那么就需要在<code>config/application.rb</code>进行引入了。<br>第三方库使用<code>require</code><br>你自己写在项目里的文件，则使用<code>require_relative</code>跟上相对路径</li></ul><p>但也有例外，极少数情况下，要在对象或模块内进行<code>require</code>。</p><h2 id="Coderay的使用"><a href="#Coderay的使用" class="headerlink" title="Coderay的使用"></a>Coderay的使用</h2><p>Coderay直接在<code>def block_code(code, _language)</code>函数内使用即可。</p><figure class="highlight ruby"><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"><span class="keyword">def</span> <span class="title function_">block_code</span>(<span class="params">code, _language</span>)    </span><br><span class="line">    <span class="title class_">CodeRay</span>.scan(code, _language).div(<span class="symbol">:tab_width=&gt;</span><span class="number">2</span>)</span><br><span class="line"><span class="keyword">end</span></span><br></pre></td></tr></table></figure><blockquote><p>最好把函数内别的代码删掉。不删掉也可以，把要返回的值放在最后就行。因为Ruby语言中，函数其实不需要使用<code>return</code>（长毛象代码内有使用过），函数的返回值就是最后一个语句的返回值。</p></blockquote><p>这里直接使用了CodeRay的方法。</p><h2 id="rouge的使用"><a href="#rouge的使用" class="headerlink" title="rouge的使用"></a>rouge的使用</h2><p>使用rouge，首先你需要在<code>config/application.rb</code>中单独引入模块</p><figure class="highlight ruby"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">require</span> <span class="string">&#x27;rouge/plugins/redcarpet&#x27;</span></span><br></pre></td></tr></table></figure><p>再把<code>def block_code(code, _language)</code>函数删掉，直接在renderer中<code>include</code>模块</p><figure class="highlight ruby"><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></pre></td><td class="code"><pre><span class="line"><span class="keyword">class</span> <span class="title class_">HTMLRenderer</span> &lt; <span class="title class_ inherited__">Redcarpet::Render::HTML</span></span><br><span class="line">  <span class="keyword">def</span> <span class="title function_">initialize</span>(<span class="params">options, &amp;block</span>)</span><br><span class="line">    <span class="variable language_">super</span>(options)</span><br><span class="line">    <span class="variable">@format_link</span> = block</span><br><span class="line">  <span class="keyword">end</span></span><br><span class="line"></span><br><span class="line">  <span class="keyword">include</span> <span class="title class_">Rouge::Plugins::Redcarpet</span></span><br><span class="line"></span><br><span class="line">  <span class="keyword">def</span> <span class="title function_">autolink</span>(<span class="params">link, link_type</span>)</span><br><span class="line">    <span class="keyword">return</span> link <span class="keyword">if</span> link_type == <span class="symbol">:email</span></span><br><span class="line">    <span class="variable">@format_link</span>.call(link)</span><br><span class="line">  <span class="keyword">end</span></span><br><span class="line"><span class="keyword">end</span></span><br></pre></td></tr></table></figure><p><code>include</code>的意思就是把这个<code>module</code>下的代码整个应用在这个类里面。</p><h2 id="防注入Sanitize"><a href="#防注入Sanitize" class="headerlink" title="防注入Sanitize"></a>防注入<code>Sanitize</code></h2><p><code>Sanitize</code>这个类的意思就是<code>消毒</code>的意思。顾名思义，防止用户和外站给你注入恶意代码。<br>注入的形式多种多样，<del>跟某些举报狗和DDOS狗比起来高端多了</del>请求你删库算一种，用markdown和其他富文本更容易实现的就是让其他用户的电脑执行javascript。不仅可以用<code>&lt;script&gt;</code>标签，用<code>style</code>属性也可以执行javascript。<br>修改其实也简单，参考<a href="https://github.com/dongzhimin-xz/mastodon/commit/c3fe3eea80fb5ceeea6682b0b131ca99cf729180">这个提交</a>进行修改即可。</p><h3 id="Sanitize踩坑情况"><a href="#Sanitize踩坑情况" class="headerlink" title="Sanitize踩坑情况"></a>Sanitize踩坑情况</h3><ol><li>长毛象的<code>lib/sanitize_ext/sanitize_config.rb</code>需要重启foreman才能生效。<del>折腾了一通宵也真是累了，这也没发现</del></li><li>如果sass样式不起作用，把以下语句注释掉看看（仅限测试环境！）</li></ol><figure class="highlight ruby"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="title class_">Sanitize</span>.node!(<span class="variable">@tree</span>, <span class="title class_">Sanitize</span><span class="symbol">:</span><span class="symbol">:Config</span><span class="symbol">:</span><span class="symbol">:MASTODON_OUTGOING</span>).to_html</span><br></pre></td></tr></table></figure><p>如果样式起作用，那就是<code>Sanitize</code>的问题。如果还有搞不明白的谜之bug，请先查看第1条！</p><h2 id="引入层叠样式表（CSS）"><a href="#引入层叠样式表（CSS）" class="headerlink" title="引入层叠样式表（CSS）"></a>引入层叠样式表（CSS）</h2><p><code>.scss</code>是种很特殊的文件，看上去是css，其实是Ruby的一部分。<br>因为小森林的代码已经过时了，所以它一拷进来就会引发BUG，因此我对小森林的样式代码<a href="https://github.com/dongzhimin-xz/mastodon/commit/40b96b97d40ebfab99e1960980e0a4fd210c7d77#diff-925a16ba6a90720daa4c37fbd5bb33f2801dbe8d0bf0650ac234a471621c523c">做了些修改</a>，但结果还是保证原汁原味的。</p><h3 id="小森林scss的坑"><a href="#小森林scss的坑" class="headerlink" title="小森林scss的坑"></a>小森林scss的坑</h3><p>因为小森林的主题本来颜色就深，所以看不出来。而我站、glitch分支和官方分支都是粉色的，使用<a href="https://github.com/dongzhimin-xz/mastodon/commit/40b96b97d40ebfab99e1960980e0a4fd210c7d77#diff-925a16ba6a90720daa4c37fbd5bb33f2801dbe8d0bf0650ac234a471621c523c">这个提交</a>代码块就会显得很奇怪。<br>用F12看了整整两天，发现是这个代码出了问题<br><img src="base.scss.png"><br>改完以后就舒服了</p><h1 id="大坑：换行问题"><a href="#大坑：换行问题" class="headerlink" title="大坑：换行问题"></a>大坑：换行问题</h1><p>把以下这段代码改掉以后，就会发现我的代码失去换行能力了</p><figure class="highlight ruby"><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"><span class="keyword">def</span> <span class="title function_">block_code</span>(<span class="params">code, _language</span>)</span><br><span class="line">  <span class="string">&lt;&lt;~HTML</span></span><br><span class="line"><span class="string">    &lt;pre&gt;&lt;code&gt;<span class="subst">#&#123;<span class="variable constant_">ERB</span><span class="symbol">:</span><span class="symbol">:Util</span>.h(code).gsub(<span class="string">&quot;\n&quot;</span>, <span class="string">&#x27;&lt;br/&gt;&#x27;</span>)&#125;</span>&lt;/code&gt;&lt;/pre&gt;</span></span><br><span class="line"><span class="string">  HTML</span></span><br><span class="line"><span class="keyword">end</span></span><br></pre></td></tr></table></figure><p>我当时解决的办法就是把这段注释掉了</p><figure class="highlight ruby"><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></pre></td><td class="code"><pre><span class="line">  <span class="keyword">def</span> <span class="title function_">format_markdown</span>(<span class="params">html</span>)</span><br><span class="line">    html = markdown_formatter.render(html)</span><br><span class="line"><span class="comment">#   html.delete(&quot;\r&quot;).delete(&quot;\n&quot;)</span></span><br><span class="line">  <span class="keyword">end</span></span><br></pre></td></tr></table></figure><p>刚开始在生产环境看上去挺正常，但两天后就觉得越发不对劲了。我普通地换个行，它就给我分个段。</p><p>那么，这一段代码需要修改</p><figure class="highlight ruby"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">include</span> <span class="title class_">Rouge::Plugins::Redcarpet</span></span><br></pre></td></tr></table></figure><p>可这是个模块，鄙人才疏学浅，不知道该怎么自定义它。于是只能采用这种笨办法了，把<a href="https://github.com/rouge-ruby/rouge/blob/master/lib/rouge/plugins/redcarpet.rb">rouge源代码</a>给拷过来，再给它返回值加上<code>.gsub!</code>方法</p><figure class="highlight diff"><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><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">diff --git a/app/lib/advanced_text_formatter.rb b/app/lib/advanced_text_formatter.rb</span></span><br><span class="line"><span class="comment">index ec378a71e..703b44437 100644</span></span><br><span class="line"><span class="comment">--- a/app/lib/advanced_text_formatter.rb</span></span><br><span class="line"><span class="comment">+++ b/app/lib/advanced_text_formatter.rb</span></span><br><span class="line"><span class="meta">@@ -6,7 +6,32 @@</span> class AdvancedTextFormatter &lt; TextFormatter</span><br><span class="line">       super(options)</span><br><span class="line">       @format_link = block</span><br><span class="line">     end</span><br><span class="line"><span class="deletion">-    include Rouge::Plugins::Redcarpet</span></span><br><span class="line"><span class="addition">+    include Rouge</span></span><br><span class="line"><span class="addition">+</span></span><br><span class="line"><span class="addition">+    def block_code(code, language)</span></span><br><span class="line"><span class="addition">+      lexer =</span></span><br><span class="line"><span class="addition">+        begin</span></span><br><span class="line"><span class="addition">+          Lexer.find_fancy(language, code)</span></span><br><span class="line"><span class="addition">+        rescue Guesser::Ambiguous =&gt; e</span></span><br><span class="line"><span class="addition">+          e.alternatives.first</span></span><br><span class="line"><span class="addition">+        end</span></span><br><span class="line"><span class="addition">+      lexer ||= Lexers::PlainText</span></span><br><span class="line"><span class="addition">+</span></span><br><span class="line"><span class="addition">+      # XXX HACK: Redcarpet strips hard tabs out of code blocks,</span></span><br><span class="line"><span class="addition">+      # so we assume you&#x27;re not using leading spaces that aren&#x27;t tabs,</span></span><br><span class="line"><span class="addition">+      # and just replace them here.</span></span><br><span class="line"><span class="addition">+      if lexer.tag == &#x27;make&#x27;</span></span><br><span class="line"><span class="addition">+        code.gsub! %r/^    /, &quot;\t&quot;</span></span><br><span class="line"><span class="addition">+      end</span></span><br><span class="line"><span class="addition">+</span></span><br><span class="line"><span class="addition">+      formatter = rouge_formatter(lexer)</span></span><br><span class="line"><span class="addition">+      formatter.format(lexer.lex(code)).gsub!(&quot;\n&quot;, &#x27;&lt;br/&gt;&#x27;)</span></span><br><span class="line">:...skipping...</span><br><span class="line"><span class="comment">diff --git a/app/lib/advanced_text_formatter.rb b/app/lib/advanced_text_formatter.rb</span></span><br><span class="line"><span class="comment">index ec378a71e..703b44437 100644</span></span><br><span class="line"><span class="comment">--- a/app/lib/advanced_text_formatter.rb</span></span><br><span class="line"><span class="comment">+++ b/app/lib/advanced_text_formatter.rb</span></span><br><span class="line"><span class="meta">@@ -6,7 +6,32 @@</span> class AdvancedTextFormatter &lt; TextFormatter</span><br><span class="line">       super(options)</span><br><span class="line">       @format_link = block</span><br><span class="line">     end</span><br><span class="line"><span class="deletion">-    include Rouge::Plugins::Redcarpet</span></span><br><span class="line"><span class="addition">+    include Rouge</span></span><br><span class="line"><span class="addition">+</span></span><br><span class="line"><span class="addition">+    def block_code(code, language)</span></span><br><span class="line"><span class="addition">+      lexer =</span></span><br><span class="line"><span class="addition">+        begin</span></span><br><span class="line"><span class="addition">+          Lexer.find_fancy(language, code)</span></span><br><span class="line"><span class="addition">+        rescue Guesser::Ambiguous =&gt; e</span></span><br><span class="line"><span class="addition">+          e.alternatives.first</span></span><br><span class="line"><span class="addition">+        end</span></span><br><span class="line"><span class="addition">+      lexer ||= Lexers::PlainText</span></span><br><span class="line"><span class="addition">+</span></span><br><span class="line"><span class="addition">+      # XXX HACK: Redcarpet strips hard tabs out of code blocks,</span></span><br><span class="line"><span class="addition">+      # so we assume you&#x27;re not using leading spaces that aren&#x27;t tabs,</span></span><br><span class="line"><span class="addition">+      # and just replace them here.</span></span><br><span class="line"><span class="addition">+      if lexer.tag == &#x27;make&#x27;</span></span><br><span class="line"><span class="addition">+        code.gsub! %r/^    /, &quot;\t&quot;</span></span><br><span class="line"><span class="addition">+      end</span></span><br><span class="line"><span class="addition">+</span></span><br><span class="line"><span class="addition">+      formatter = rouge_formatter(lexer)</span></span><br><span class="line"><span class="addition">+      formatter.format(lexer.lex(code)).gsub!(&quot;\n&quot;, &#x27;&lt;br/&gt;&#x27;)</span></span><br><span class="line"><span class="addition">+    end</span></span><br><span class="line"><span class="addition">+</span></span><br><span class="line"><span class="addition">+    # override this method for custom formatting behavior</span></span><br><span class="line"><span class="addition">+    def rouge_formatter(lexer)</span></span><br><span class="line"><span class="addition">+      Formatters::HTMLLegacy.new(:css_class =&gt; &quot;highlight #&#123;lexer.tag&#125;&quot;)</span></span><br><span class="line"><span class="addition">+    end</span></span><br><span class="line"></span><br><span class="line">     def autolink(link, link_type)</span><br><span class="line">       return link if link_type == :email</span><br><span class="line"><span class="meta">@@ -94,7 +119,7 @@</span> class AdvancedTextFormatter &lt; TextFormatter</span><br><span class="line"></span><br><span class="line">   def format_markdown(html)</span><br><span class="line">     html = markdown_formatter.render(html)</span><br><span class="line"><span class="deletion">-#    html.delete(&quot;\r&quot;).delete(&quot;\n&quot;)</span></span><br><span class="line"><span class="addition">+    html.delete(&quot;\r&quot;).delete(&quot;\n&quot;)</span></span><br><span class="line">   end</span><br><span class="line"></span><br><span class="line">   def markdown_formatter</span><br></pre></td></tr></table></figure><p>之后效果就好多了。</p><p>最后我想说的是</p><blockquote><p>大型魔改不易，请善待我的实例🥺</p></blockquote>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;我之前写过一篇&lt;a href=&quot;/2025/02/01/%E9%95%BF%E6%AF%9B%E8%B1%A1%E5%8F%91%E9%80%81markdown%E5%98%9F%E6%96%87/&quot;&gt;长毛象发送markdown嘟文&lt;/a&gt;，但是那一篇好像因为太累了，只贴</summary>
      
    
    
    
    <category term="建站技术" scheme="https://blog.xuzhou-jiang.su/categories/%E5%BB%BA%E7%AB%99%E6%8A%80%E6%9C%AF/"/>
    
    <category term="长毛象开发" scheme="https://blog.xuzhou-jiang.su/categories/%E5%BB%BA%E7%AB%99%E6%8A%80%E6%9C%AF/%E9%95%BF%E6%AF%9B%E8%B1%A1%E5%BC%80%E5%8F%91/"/>
    
    
    <category term="言论自由只在这里" scheme="https://blog.xuzhou-jiang.su/tags/%E8%A8%80%E8%AE%BA%E8%87%AA%E7%94%B1%E5%8F%AA%E5%9C%A8%E8%BF%99%E9%87%8C/"/>
    
    <category term="踩坑心得" scheme="https://blog.xuzhou-jiang.su/tags/%E8%B8%A9%E5%9D%91%E5%BF%83%E5%BE%97/"/>
    
    <category term="锻🐘大赛冠军" scheme="https://blog.xuzhou-jiang.su/tags/%E9%94%BB%F0%9F%90%98%E5%A4%A7%E8%B5%9B%E5%86%A0%E5%86%9B/"/>
    
    <category term="长毛象考古" scheme="https://blog.xuzhou-jiang.su/tags/%E9%95%BF%E6%AF%9B%E8%B1%A1%E8%80%83%E5%8F%A4/"/>
    
    <category term="超长代码预警！！！" scheme="https://blog.xuzhou-jiang.su/tags/%E8%B6%85%E9%95%BF%E4%BB%A3%E7%A0%81%E9%A2%84%E8%AD%A6%EF%BC%81%EF%BC%81%EF%BC%81/"/>
    
  </entry>
  
  <entry>
    <title>长毛象泄露存储桶地址的BUG及其修复</title>
    <link href="https://blog.xuzhou-jiang.su/2025/09/01/bucket-vul/"/>
    <id>https://blog.xuzhou-jiang.su/2025/09/01/bucket-vul/</id>
    <published>2025-09-01T13:27:41.000Z</published>
    <updated>2025-09-01T15:00:12.000Z</updated>
    
    <content type="html"><![CDATA[<p>这个问题发现得挺早了，本来以为官方会修，升到4.4就好了。结果还是需要自己动手。<br>其实说大不大，说小也不小。别人用的r2，可能也没那么容易被DDOS个几千块的。但我这个b2的政策可谓是越改越坏，直接让人看见我的存储桶名称。</p><span id="more"></span><h1 id="发现经过"><a href="#发现经过" class="headerlink" title="发现经过"></a>发现经过</h1><p>之前有个小朋友来注册我实例，后来要走了，她发嘟文说备份不了账号。我就试了一下。我这大号肯定不行，11个G呢😅。用小号测试，结果发现也卡在那边。我用<code>systemctl status mastodon-sidekiq</code>查看日志（好在规模小），再分析了一下代码，发现<code>.env.production</code>需要加个环境变量，就能下载存档了。可这个存档一下载，好家伙，直接显示我存储桶的名字，而且去掉后面的参数也可以下载。</p><h1 id="BUG复现"><a href="#BUG复现" class="headerlink" title="BUG复现"></a>BUG复现</h1><p>随便找个我注册过的站点，查看是否使用存储桶。本地存储没有问题，小森林的v3.5改也没问题。如果是v4.x使用了s3存储，生成存档<br><img src="archive.png"><br>手机下载存档直接新标签页打开；电脑直接单击下载存档，找到下载任务，右键复制下载地址，再粘贴出来，就会得到这个url<br><a href="https://g2p1.tx12.idrivee2-3.com/media/backups/dumps/000/000/044/original/archive-20250901134144-489b8264d31db513d71906da83a57cc7.zip?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=6hoK4q54tJB9R3oeLs4Z/20250901/us-east-1/s3/aws4_request&X-Amz-Date=20250901T134148Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=535d9427a6f30462311df071b446b1ea2d4eff971ab2fd6a3b993c6c33d69ac2">https://g2p1.tx12.idrivee2-3.com/media/backups/dumps/000/000/044/original/archive-20250901134144-489b8264d31db513d71906da83a57cc7.zip?X-Amz-Algorithm=AWS4-HMAC-SHA256&amp;X-Amz-Credential=6hoK4q54tJB9R3oeLs4Z%2F20250901%2Fus-east-1%2Fs3%2Faws4_request&amp;X-Amz-Date=20250901T134148Z&amp;X-Amz-Expires=3600&amp;X-Amz-SignedHeaders=host&amp;X-Amz-Signature=535d9427a6f30462311df071b446b1ea2d4eff971ab2fd6a3b993c6c33d69ac2</a><br>其中，这个主机名就是该站的S3_ENDPOINT。<br>这个存储桶还算安全，我也看了这个供应商，e2存储桶确实比b2要良心，但我最近也懒得再迁移了，关键是每个月差价小于10美分，也不清楚每次下载操作要多少钱。留着备选吧，等哪天我存储桶也被DDOS小鬼盯上了，那我就试试迁移过去。看上去完美适配了长毛象。</p><p>这种情况下，即使url有期限，也可能被用户DDOS。</p><h1 id="踩坑历程"><a href="#踩坑历程" class="headerlink" title="踩坑历程"></a>踩坑历程</h1><p>鄙人能力有限，没法摸清这个临时链接是如何生成的，动用了哪些依赖。而且刚才还发现，如果使用了b2存储桶以外的供应商，反而可能会导致更多的bug。<br>最后的解决思路就是用这段代码</p><figure class="highlight ruby"><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">url = attachment.expiring_url(expires_in.to_i)</span><br><span class="line"><span class="variable constant_">ENV</span>.key?(<span class="string">&#x27;S3_ALIAS_HOST&#x27;</span>)? url.sub(<span class="variable constant_">ENV</span>.fetch(<span class="string">&#x27;S3_ENDPOINT&#x27;</span>) + <span class="string">&quot;/&quot;</span> + <span class="variable constant_">ENV</span>.fetch(<span class="string">&#x27;S3_BUCKET&#x27;</span>), <span class="string">&quot;https://&quot;</span> + <span class="variable constant_">ENV</span>.fetch(<span class="string">&#x27;S3_ALIAS_HOST&#x27;</span>)) : url</span><br></pre></td></tr></table></figure><p>取代原来的</p><figure class="highlight ruby"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">attachment.expiring_url(expires_in.to_i)</span><br></pre></td></tr></table></figure><p>结果就是，目前仅在我实例上（不论是新地址还是旧地址）运行良好。</p><p>这属于是b2存储的坑吧</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;这个问题发现得挺早了，本来以为官方会修，升到4.4就好了。结果还是需要自己动手。&lt;br&gt;其实说大不大，说小也不小。别人用的r2，可能也没那么容易被DDOS个几千块的。但我这个b2的政策可谓是越改越坏，直接让人看见我的存储桶名称。&lt;/p&gt;</summary>
    
    
    
    <category term="建站技术" scheme="https://blog.xuzhou-jiang.su/categories/%E5%BB%BA%E7%AB%99%E6%8A%80%E6%9C%AF/"/>
    
    <category term="长毛象魔改" scheme="https://blog.xuzhou-jiang.su/categories/%E5%BB%BA%E7%AB%99%E6%8A%80%E6%9C%AF/%E9%95%BF%E6%AF%9B%E8%B1%A1%E9%AD%94%E6%94%B9/"/>
    
    <category term="长毛象实例运维" scheme="https://blog.xuzhou-jiang.su/categories/%E5%BB%BA%E7%AB%99%E6%8A%80%E6%9C%AF/%E9%95%BF%E6%AF%9B%E8%B1%A1%E5%AE%9E%E4%BE%8B%E8%BF%90%E7%BB%B4/"/>
    
    <category term="b2存储" scheme="https://blog.xuzhou-jiang.su/categories/%E5%BB%BA%E7%AB%99%E6%8A%80%E6%9C%AF/%E9%95%BF%E6%AF%9B%E8%B1%A1%E5%AE%9E%E4%BE%8B%E8%BF%90%E7%BB%B4/b2%E5%AD%98%E5%82%A8/"/>
    
    
    <category term="言论自由只在这里" scheme="https://blog.xuzhou-jiang.su/tags/%E8%A8%80%E8%AE%BA%E8%87%AA%E7%94%B1%E5%8F%AA%E5%9C%A8%E8%BF%99%E9%87%8C/"/>
    
    <category term="网络安全" scheme="https://blog.xuzhou-jiang.su/tags/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/"/>
    
    <category term="长毛象运维" scheme="https://blog.xuzhou-jiang.su/tags/%E9%95%BF%E6%AF%9B%E8%B1%A1%E8%BF%90%E7%BB%B4/"/>
    
    <category term="爆改哈基🐘" scheme="https://blog.xuzhou-jiang.su/tags/%E7%88%86%E6%94%B9%E5%93%88%E5%9F%BA%F0%9F%90%98/"/>
    
  </entry>
  
  <entry>
    <title>长毛象代码测试（初步）</title>
    <link href="https://blog.xuzhou-jiang.su/2025/09/01/mastodon-code-test/"/>
    <id>https://blog.xuzhou-jiang.su/2025/09/01/mastodon-code-test/</id>
    <published>2025-09-01T12:12:51.000Z</published>
    <updated>2025-09-01T13:22:42.000Z</updated>
    
    <content type="html"><![CDATA[<p>上回<a href="/2025/08/17/%E9%95%BF%E6%AF%9B%E8%B1%A1%E6%B5%8B%E8%AF%95%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA/">长毛象测试环境搭建</a>，有很多东西没有补充，就比如，进行测试什么的。<br><a href="https://docs.joinmastodon.org/dev/setup/#testing">官方文档</a>似乎已经说得很清楚了，测试的方法就是这样</p><span id="more"></span><blockquote><p><font color=#49B1F5><strong>Useful commands for testing</strong></font><br><code>rspec</code><br>    Run the Ruby test suite<br><code>yarn run test</code><br>    Run the JavaScript test suite<br><code>rubocop</code><br>    Check the Ruby code for conformance with our code style</p></blockquote><p>实际上运行起来，基本上都是报错。我自己上网搜了一下，发现也没有测试长毛象代码的中文教程。发现的只有这个<a href="https://dev.to/appmap/the-fastest-way-to-run-mastodon-tests-5g03">https://dev.to/appmap/the-fastest-way-to-run-mastodon-tests-5g03</a> ，这应该是最好的非官方教程了，比官方文档解释得还清楚</p><p>我已经测试过代码了，测试方法不对的话，<a href="https://github.com/mastodon/mastodon">官方代码</a>也一堆问题，测试方法对了，那官方<em><strong>现版本</strong></em>的代码完全满分！</p><p>我觉得测试代码的意义不大，毕竟只要<a href="/2025/08/17/%E9%95%BF%E6%AF%9B%E8%B1%A1%E6%B5%8B%E8%AF%95%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA/">搭建长毛象测试环境</a>，就可以验证你代码对不对了。每天活跃用户100人以下的实例，不会有什么黑客来注入代码，或者疯狂试探bug的<del>有的只是<a href="/2025/08/31/%E5%85%B3%E4%BA%8E%E6%9C%80%E8%BF%91%E5%81%9C%E6%9B%B4%E7%9A%84%E8%AF%B4%E6%98%8E/">毫无技术含量可言的DDOS以及社工攻击</a></del>。<br>我认为这个意义就在于，写出一段可以让官方接受PR的代码，养成开发的良好习惯。<del>虽然官方从来没接受过我的PR</del><br>换一个角度，要想尽快理解长毛象代码，你首先得会从头，随时随地部署长毛象（测试和生产）。<br>要想官方接受你的代码，你首先得会写测试用例。<br>要想要想写出合格的测试用例，你首先得学会测试。</p><h1 id="rspec"><a href="#rspec" class="headerlink" title="rspec"></a>rspec</h1><p>网上我搜了<code>rspec</code>，相信有心的读者也跟我一样，结果搜出来的都是培训班式的教程。看一遍可以，看多了你还想 <em>“温故而知新”</em> 也是纯纯文科生思维，跟你说不下去。<br>我看了我上面提到的<a href="https://dev.to/appmap/the-fastest-way-to-run-mastodon-tests-5g03">那篇文章</a>，它解释了旧版本，即未使用vite的v4.3及更早的版本。<br>假如你想测小森林，那么<a href="https://dev.to/appmap/the-fastest-way-to-run-mastodon-tests-5g03">这篇文章</a>就很有参考意义了。你就得照他说的改<code>config/webpacker.yml</code>，然后把环境变量设为<code>RAILS_ENV=test</code>再运行<code>rspec</code>。否则，它会提示缺少依赖。</p><p>如果你想测最新官方实例，或者像我这种<del>（不用测了，肯定不合格）</del>和glitch分支，那我就从头开始解说。</p><h2 id="搭建测试环境"><a href="#搭建测试环境" class="headerlink" title="搭建测试环境"></a>搭建测试环境</h2><p>还是回到我上次写的<a href="/2025/08/17/%E9%95%BF%E6%AF%9B%E8%B1%A1%E6%B5%8B%E8%AF%95%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA/">那篇搭建环境的文章</a>，那里用了vagrant和虚拟机手动安装，这两种方法。其实搭建测试环境并不局限于虚拟机和vagrant，我两者都不是，而是用我的闲置旧VPS测的。我直接生产环境，前面加上<code>RAILS_ENV=development</code>，当作测试环境进行测试。毕竟旧机器上什么软件都有，从头再装浪费时间。而且测试开发数据库<code>mastodon_development</code>和生产用的<code>mastodon_production</code>是分开的。如果你没有备用机和现成的vagrant虚拟机，那还是请参照我上次写的<a href="/2025/08/17/%E9%95%BF%E6%AF%9B%E8%B1%A1%E6%B5%8B%E8%AF%95%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA/">那篇搭建环境的文章</a>搭建完实例再说。<br>如果用vagrant的话，请修改<code>Vagrantfile</code>，调整vbox虚拟机配置，多安排些CPU核数跟虚拟机内存，否则测试将会多花几十倍的时间。全套代码测试一次要30分钟到1小时，所以也不建议浪费时间了。</p><h2 id="测试踩坑"><a href="#测试踩坑" class="headerlink" title="测试踩坑"></a>测试踩坑</h2><ol><li>生产环境少装了很多测试用的依赖，所以你直接<code>rspec</code>必定会报错。首先，你要检查你的长毛象目录内是否有<code>.bundle</code>文件，如果有，里面可能包含了<code>bundle config</code>留下的文件。根据官方文档配置，就会跳过测试环境依赖包的安装。把它删掉，再运行<code>bundle install</code>，你就会发现多装了很多东西。然后<code>yarn install</code>也不能少。</li><li>测试需要用到海量数据，没有安装测试环境数据库的话，还是无法正确运行<code>rspec</code>。你必须按照官方文档指导，运行<code>RAILS_ENV=development rails db:setup</code>。</li><li>做到这一步，你还是无法正确测试，因为你的assets没编译完整。在这最新版长毛象，你必须运行<code>RAILS_ENV=development vite build</code>，它就会给你预编译测试环境的实例。</li><li>在<em><strong>测试环境</strong></em>的依赖、资产和数据库全部齐全的条件下，再运行<code>RAILS_ENV=test rspec</code>，才能将长毛象最新版（v4.4~v4.5限定）的官方代码测出满分佳绩。你只有提前把<code>RAILS_ENV=test</code>加入环境变量，才可能运行出跟官方文档一致的效果。</li></ol><h1 id="yarn-run-test"><a href="#yarn-run-test" class="headerlink" title="yarn run test"></a>yarn run test</h1><p>顺利运行完上一节的<code>rspec</code>，再在官方代码运行<code>yarn run test</code>还是报错对不对？按理来说v4.4分支也应该是满分才对。<br>仔细看输出信息，就会发现，其实它测的都是预编译好的javascript代码。<br>你要进入<code>public</code>文件夹，找到<code>pack</code>开头的那些个文件。这些都是部署和测试过程中安装的前端代码，把这些目录全部删掉，再进行测试</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">yarn run <span class="built_in">test</span></span><br></pre></td></tr></table></figure><p>就会得到较完美的结果。</p><h1 id="rubocop"><a href="#rubocop" class="headerlink" title="rubocop"></a>rubocop</h1><p>这是测试代码风格的命令。这里没有什么坑，还会自动更正代码风格，让你的代码更美观，更优雅。<br>风格的规定全写在了<code>.rubocop</code>目录里，如果你要创立自己的分支项目，你可以在这里修改，并在你的文档里对代码贡献者作出规定。<br><code>rubocop</code>一般也是只测个别文件。测试全体文件的话，你需要验证你操作是否正确时，用</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">rubocop</span><br></pre></td></tr></table></figure><p>测测官方原始代码就行了，如果官方代码也不整洁，那你也不用跟他们讲究了。</p><p>我测了小森林，他的<code>main</code>代码也不讲究，所以我自己魔改也不讲究了。</p><p>当然，由于我是4.4改，他是3.5改，我们注定不能合并。</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;上回&lt;a href=&quot;/2025/08/17/%E9%95%BF%E6%AF%9B%E8%B1%A1%E6%B5%8B%E8%AF%95%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA/&quot;&gt;长毛象测试环境搭建&lt;/a&gt;，有很多东西没有补充，就比如，进行测试什么的。&lt;br&gt;&lt;a href=&quot;https://docs.joinmastodon.org/dev/setup/#testing&quot;&gt;官方文档&lt;/a&gt;似乎已经说得很清楚了，测试的方法就是这样&lt;/p&gt;</summary>
    
    
    
    <category term="建站技术" scheme="https://blog.xuzhou-jiang.su/categories/%E5%BB%BA%E7%AB%99%E6%8A%80%E6%9C%AF/"/>
    
    <category term="踩坑心得" scheme="https://blog.xuzhou-jiang.su/categories/%E5%BB%BA%E7%AB%99%E6%8A%80%E6%9C%AF/%E8%B8%A9%E5%9D%91%E5%BF%83%E5%BE%97/"/>
    
    
    <category term="言论自由只在这里" scheme="https://blog.xuzhou-jiang.su/tags/%E8%A8%80%E8%AE%BA%E8%87%AA%E7%94%B1%E5%8F%AA%E5%9C%A8%E8%BF%99%E9%87%8C/"/>
    
    <category term="踩坑心得" scheme="https://blog.xuzhou-jiang.su/tags/%E8%B8%A9%E5%9D%91%E5%BF%83%E5%BE%97/"/>
    
    <category term="然而并没有什么卵用" scheme="https://blog.xuzhou-jiang.su/tags/%E7%84%B6%E8%80%8C%E5%B9%B6%E6%B2%A1%E6%9C%89%E4%BB%80%E4%B9%88%E5%8D%B5%E7%94%A8/"/>
    
  </entry>
  
  <entry>
    <title>长毛象域名失效急救处理</title>
    <link href="https://blog.xuzhou-jiang.su/2025/09/01/cmx-emergency/"/>
    <id>https://blog.xuzhou-jiang.su/2025/09/01/cmx-emergency/</id>
    <published>2025-08-31T16:12:59.000Z</published>
    <updated>2025-09-01T12:10:26.000Z</updated>
    
    <content type="html"><![CDATA[<p>刚才我写过一篇文章，<a href="/2025/08/31/%E5%85%B3%E4%BA%8E%E6%9C%80%E8%BF%91%E5%81%9C%E6%9B%B4%E7%9A%84%E8%AF%B4%E6%98%8E/">关于站点的情况说明</a>，挂人并不是为了泄愤，也不是最终目的，而是本篇重要博客的基础，以及将来我写保姆级教程的典型案例。</p><h1 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h1><p>天塌了！天塌了！就在刚才，我们的毛象圈子似乎又出事了。什么都别废话，看图</p><span id="more"></span><p><img src="domain-failed.png" alt="笨蛋冰的域名"><br><em>结合王畅睿天天不上学，开小号到处蹦跶的嚣张嘴脸，不得不追杀。（当然，这个图里的杰作，也不清楚是不是他干的，但他似乎已经认领了这起恐怖袭击）</em><br>之前收到乌克兰域名注册局的通知，我就知道要寄了。但我绝对不可能让王某称心如意，就此退网。我的路又两条，最亏的一条：买一个新的域名，抽空从头重新建个实例，我这好不容易攒的100多个粉丝全部放弃。更可恶的是，要把我这一年的上万条嘟文都给放弃，这些除了有让敌人害怕的内容，还要很多一旦失去就要找很久的，甚至绝版的技术踩坑指南！</p><blockquote><p><font color=yellow><strong>屈服于强权而放弃粉丝和自己的所有嘟文，这TM不就跟推特一样了吗！</strong> </font></p></blockquote><p>还有一条路，就是把粉丝迁移到其他站点，本站修改<code>LOCAL_DOMAIN</code>环境变量以后，再迁移回本站。这可以最大程度地挽回损失。</p><h1 id="实验"><a href="#实验" class="headerlink" title="实验"></a>实验</h1><p>迁移账号，必定会造成损失，一个是30天的冷却期，如果失败，将无法重试迁移；另一个是必定有部分粉丝带不走，ta们是bot，或者实例（暂时）跑路了。<br>我开启我的闲置VPS，之前也是运行长毛象实例的，让它重新运行了长毛象实例。<br>我在接到通知后，第一时间就买了几个域名。在群里找笨蛋冰咨询了哪里有防投诉域名和防投诉服务器卖。拿了一些看着不太宝贵的域名，完成解析，全新配置了实例。</p><h2 id="实验内容"><a href="#实验内容" class="headerlink" title="实验内容"></a>实验内容</h2><p>拿旧站当逃生舱，新站模拟域名停止解析状况。迁移的粉丝，就用我那几十个小号。</p><h2 id="实验结果"><a href="#实验结果" class="headerlink" title="实验结果"></a>实验结果</h2><p>可以迁移。首先，迁出时不能修改<code>LOCAL_DOMAIN</code>，但要添加<code>ALTERNATE_DOMAINS</code>，这样用户才能登录。然后新账号要把旧帐号设置为别名。更改<code>LOCAL_DOMAIN</code>后，实例将无法收到一切站外嘟文。除非，取关并重新关注，中继站也都禁用并重新启用。</p><h2 id="实验原理（推测）"><a href="#实验原理（推测）" class="headerlink" title="实验原理（推测）"></a>实验原理（推测）</h2><p>旧帐号所在实例，按照旧帐号的粉丝列表，给所有粉丝发送取关自己，关注新账号的请求。这其中，旧帐号用webfinger去点粉丝，而粉丝却不必用webfinger点旧帐号来验证（旧帐号由于失去旧域名的解析，无法被webfinger触及。而且这个bug肯定不可能修，不然我可以反过来强制禁止人家外站用户对我拉黑取关了）。<br>旧实例修改<code>LOCAL_DOMAIN</code>后，以前的关注和中继依旧是要照常给它发送消息，但是找不到主机。只有重新关注和重新加入中继后，旧实例把新的webfinger地址告诉联合内的其他实例，它们把旧实例当成了一个有25年工作经验的应届生罢了。这很正常，这BUG也不可能修掉，不然你说为什么长毛象没从第一版公测到v4.4，也没把域名写死到数据库里去？<br>新账号迁回改名后的旧实例也非常顺利。</p><h1 id="实际操作"><a href="#实际操作" class="headerlink" title="实际操作"></a>实际操作</h1><p>我备份服务器后，将主账号粉丝全部迁移，共迁移成功80多粉丝。1天后改名操作，重新加入中继，取关一切并重新导入。现在账号跟没事人一样。<br>但是，有些小问题，我的测试账号，无法将粉丝迁移到外站，主要卡在设置别名时，所有外站账号提示找不到此账号。这说明账号没有联合，基本上不必怀疑象友把我小号封了。</p><h1 id="对账号安全的反思和复盘"><a href="#对账号安全的反思和复盘" class="headerlink" title="对账号安全的反思和复盘"></a>对账号安全的反思和复盘</h1><p>平时要做好数据库和证书的备份。</p><h2 id="数据库的备份"><a href="#数据库的备份" class="headerlink" title="数据库的备份"></a>数据库的备份</h2><p>这次王畅睿也举报了我的VPS，侥幸没被删。失去了便宜的VPS事小，我账号上的数据事大。所以得参考这个教程 <a href="https://www.eallion.com/mastodon-backup/">https://www.eallion.com/mastodon-backup/</a> ，每天全自动把数据库备份到存储桶。详细操作，我是简化了很多倍的，用更笨的办法来备份。而且我也觉得这象友的脚本可以加些个<code>&amp;</code>和<code>wait;</code>，显得更优雅。</p><h2 id="证书的备份"><a href="#证书的备份" class="headerlink" title="证书的备份"></a>证书的备份</h2><p>每两个月，实例都必须刷新证书，因为3个月就过期了。每次执行刷新的<code>crontab</code>时，还应该顺带把证书备份到存储桶去。这是为了在备用实例无法添加别名时，可以拿还有余温的旧证书来联合旧实例。<br>就在刚才，我还发现了一招，还没试过的办法，利用<code>ALLOWED_PRIVATE_ADDRESSES</code>和<a href="https://github.com/mastodon/mastodon/blob/main/app/lib/private_address_check.rb#L6">这段代码</a>来进行http连接。把旧实例的IP地址加入到<a href="https://github.com/mastodon/mastodon/blob/main/app/lib/private_address_check.rb#L6">这段代码</a>里，或许能实现很多神奇的功能。</p><p>我觉得<code>rclone</code>比<code>aws-cli</code>更好用，因为b2存储桶用<code>aws-cli</code>得加额外配置，否则会报错。</p><h2 id="关于注册网站第三方服务用的邮箱"><a href="#关于注册网站第三方服务用的邮箱" class="headerlink" title="关于注册网站第三方服务用的邮箱"></a>关于注册网站第三方服务用的邮箱</h2><p>我发现还是需要用公共邮箱，就比如gmail.com和protonmail比较好，而不是用自己域名的邮箱。用自己域名的邮箱，虽然没人知道我身份，但很多服务改不了邮箱，甚至登录不进去。<br><img src="larksuite.png" alt="我飞书被封了😭"></p><p>用gmail这种公共邮箱，隐私性差了一点，还是可能会被俄苏狗开盒，如果你拿干这个用的邮箱，同时来注册腾讯相关账号和b站的话，都是实名的，还经常脱库。<br>我认为最好的办法，还是多注册几个域名，部分域名负责岁静，专门用来给自己转发密码管理器和注册服务用。</p><p>对于如何选购服务器，再搞个域名，我有空再写个保姆级教程。很快就来了</p><p>——————更新————————<br>原来开头那个页面是笨蛋冰自己弄的，<a href="/tags/%E8%8A%82%E7%9B%AE%E6%95%88%E6%9E%9C%E6%8B%89%E6%BB%A1/">节目效果拉满</a>了属于是</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;刚才我写过一篇文章，&lt;a href=&quot;/2025/08/31/%E5%85%B3%E4%BA%8E%E6%9C%80%E8%BF%91%E5%81%9C%E6%9B%B4%E7%9A%84%E8%AF%B4%E6%98%8E/&quot;&gt;关于站点的情况说明&lt;/a&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;天塌了！天塌了！就在刚才，我们的毛象圈子似乎又出事了。什么都别废话，看图&lt;/p&gt;</summary>
    
    
    
    <category term="建站技术" scheme="https://blog.xuzhou-jiang.su/categories/%E5%BB%BA%E7%AB%99%E6%8A%80%E6%9C%AF/"/>
    
    <category term="长毛象实例运维" scheme="https://blog.xuzhou-jiang.su/categories/%E5%BB%BA%E7%AB%99%E6%8A%80%E6%9C%AF/%E9%95%BF%E6%AF%9B%E8%B1%A1%E5%AE%9E%E4%BE%8B%E8%BF%90%E7%BB%B4/"/>
    
    <category term="长毛象急救处理" scheme="https://blog.xuzhou-jiang.su/categories/%E5%BB%BA%E7%AB%99%E6%8A%80%E6%9C%AF/%E9%95%BF%E6%AF%9B%E8%B1%A1%E5%AE%9E%E4%BE%8B%E8%BF%90%E7%BB%B4/%E9%95%BF%E6%AF%9B%E8%B1%A1%E6%80%A5%E6%95%91%E5%A4%84%E7%90%86/"/>
    
    
    <category term="网络安全" scheme="https://blog.xuzhou-jiang.su/tags/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/"/>
    
    <category term="长毛象运维" scheme="https://blog.xuzhou-jiang.su/tags/%E9%95%BF%E6%AF%9B%E8%B1%A1%E8%BF%90%E7%BB%B4/"/>
    
    <category term="坚决捍卫言论自由！" scheme="https://blog.xuzhou-jiang.su/tags/%E5%9D%9A%E5%86%B3%E6%8D%8D%E5%8D%AB%E8%A8%80%E8%AE%BA%E8%87%AA%E7%94%B1%EF%BC%81/"/>
    
    <category term="节目效果拉满" scheme="https://blog.xuzhou-jiang.su/tags/%E8%8A%82%E7%9B%AE%E6%95%88%E6%9E%9C%E6%8B%89%E6%BB%A1/"/>
    
  </entry>
  
  <entry>
    <title>mCustomScrollbar调整鼠标滚轮灵敏度</title>
    <link href="https://blog.xuzhou-jiang.su/2025/08/31/mCustomScrollbar%E8%B0%83%E6%95%B4%E9%BC%A0%E6%A0%87%E6%BB%9A%E8%BD%AE%E7%81%B5%E6%95%8F%E5%BA%A6/"/>
    <id>https://blog.xuzhou-jiang.su/2025/08/31/mCustomScrollbar%E8%B0%83%E6%95%B4%E9%BC%A0%E6%A0%87%E6%BB%9A%E8%BD%AE%E7%81%B5%E6%95%8F%E5%BA%A6/</id>
    <published>2025-08-31T14:53:44.000Z</published>
    <updated>2025-08-31T16:08:08.000Z</updated>
    
    <content type="html"><![CDATA[<p>我开写的时候就预感到，本篇应该不长，但我觉得内容很重要。<br>上次<del>几个月前</del><a href="https://social.baka.pub/@bingxin">笨蛋冰</a>看了我的博客以后，在群里说，我的博客有个bug，就是鼠标滚轮一滚，这个代码就从最底下，往上溜到页面外去了。<br>这个问题很小，但修起来，我觉得太底层了，不适合我这个外行人。</p><span id="more"></span><p>这个8月，我折腾了一下实例。折腾的东西太多了。最开始我为了<a href="/tags/%E5%93%AA%E5%90%922/">压片战争</a>而重拾魔改，同时又发现了一些存储桶的安全问题。从而进行了<a href="/2025/08/17/%E9%95%BF%E6%AF%9B%E8%B1%A1%E5%A4%A7%E7%89%88%E6%9C%AC%E6%9B%B4%E6%96%B0%E8%B8%A9%E5%9D%91%E5%BF%83%E5%BE%97/">大版本更新</a>（估计以后还得折腾，到时候是不是应该直接去<code>main</code>分支？还真不好说）。<br>之后我又开始着手魔改Markdown的Codeblock的样式，向小森林看齐 <em>（这方面的踩坑博客还没开始写）</em>。<br>改到一半，我就想着把博客的小BUG也给修一修了。</p><h1 id="踩坑历程"><a href="#踩坑历程" class="headerlink" title="踩坑历程"></a>踩坑历程</h1><p>前提：我是完全不懂啥叫<code>mCustomScrollbar</code>，也只对<code>jQuery</code>略有耳闻。<br>首先，按F12开始调试。<br>对比<a href="https://blog.byteloid.one/">笨蛋冰的博客</a>，发现我跟他的主题架构没有可比性。<br>经过鼠标滚动，发现它样式的属性会发生变化，于是定位到了.js。<br>我使用的是Firefox浏览器，浏览了<a href="https://fan-lv.github.io/">Fan-lv的博客</a>和<a href="https://dongzhimin-xz.github.io/">我的博客</a>，发现都有这个通病。<br>通过F12界面，我发现了影响这个样式的<code>.js</code>文件<br><img src="wheel-debug.png"><br>只要把图中所圈<code>wheel</code>项的勾取消掉，鼠标滚轮就无法翻页。这样就跟修轮胎一样，找到了这是什么控件在起作用。<br>然后我就发现这个文件太复杂了😭<br>一度想放弃。</p><p>然后我最后再上网搜一下怎么调整鼠标滚轮的敏感度。<br>直接搜索怎么调鼠标滚轮敏感度，那出来的都是改Windows设置。直接转到“调试器”，发现了这个文件名叫<code>mCustomScrollbar</code>什么的，上网搜这个看看有没有文档。<br>就搜出来很多类似这样的文章 <a href="https://www.cnblogs.com/ping228/p/scroll-plug.html">https://www.cnblogs.com/ping228/p/scroll-plug.html</a><br>它们说这个控件有4个文件，名字类似的，我就找到俩。<br>文章中指出了一段代码</p><figure class="highlight css"><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></pre></td><td class="code"><pre><span class="line">$(&quot;<span class="selector-id">#main</span>&quot;)<span class="selector-class">.mCustomScrollbar</span>(&#123;</span><br><span class="line">    scrollButtons:&#123;</span><br><span class="line">        enable:false,</span><br><span class="line">        scrollType:<span class="string">&quot;continuous&quot;</span>,</span><br><span class="line">        scrollSpeed:<span class="number">20</span>,</span><br><span class="line">        scrollAmount:<span class="number">40</span></span><br><span class="line">    &#125;,</span><br><span class="line">     horizontalScroll:false,</span><br><span class="line">&#125;);</span><br></pre></td></tr></table></figure><p>还列出了详细的参数</p><blockquote><p>set_width:false：设置你内容的宽度 值可以是像素或者百分比<br>set_height:false：设置你内容的高度 值可以是像素或者百分比<br>horizontalScroll:Boolean：是否创建一个水平滚动条 默认是垂直滚动条 值可为:true(创建水平滚动条) 或 false<br>scrollInertia:Integer：滚动的惯性值 在毫秒中 使用0可以无滚动惯性 (滚动惯性可以使区块滚动更加平滑)<br>scrollEasing:String：滚动动作类型 查看 jquery UI easing 可以看到所有的类型<br>mouseWheel:String&#x2F;Boolean：鼠标滚动的支持 值为:true.false,像素 默认的情况下 鼠标滚动设置成像素值 填写false取消鼠标滚动功能<br>mouseWheelPixels:Integer：鼠标滚动中滚动的像素数目 值为以像素为单位的数值<br>autoDraggerLength:Boolean：根据内容区域自动调整滚动条拖块的长度 值:true,false<br>scrollButtons:{ enable:Boolean }：是否添加 滚动条两端按钮支持 值:true,false<br>scrollButtons:{ scrollType:String }：滚动按钮滚动类型 值:”continuous”(当你点击滚动控制按钮时断断续续滚动) “pixels”(根据每次点击的像素数来滚动) 点击这里可以看到形象的例子<br>scrollButtons:{ scrollSpeed:Integer }：设置点击滚动按钮时候的滚动速度(默认 20) 设置一个更高的数值可以更快的滚动<br>scrollButtons:{ scrollAmount:Integer }：设置点击滚动按钮时候每次滚动的数值 像素单位 默认 40像素<br>advanced:{ updateOnBrowserResize:Boolean }：根据百分比为自适应布局 调整浏览器上滚动条的大小 值:true,false 设置 false 如果你的内容块已经被固定大小<br>advanced:{ updateOnContentResize:Boolean }：自动根据动态变换的内容调整滚动条的大小 值:true,false 设置成 true 将会不断的检查内容的长度并且据此改变滚动条大小 建议除非必要不要设置成 true 如果页面中有很多滚动条的时候 它有可能会产生额外的移出 你可以使用 update 方法来替代这个功能<br>advanced:{ autoExpandHorizontalScroll:Boolean }：自动扩大水平滚动条的长度 值:true,false 设置 true 你可以根据内容的动态变化自动调整大小 可以看Demo<br>advanced:{ autoScrollOnFocus:Boolean }：是否自动滚动到聚焦中的对象 例如表单使用类似TAB键那样跳转焦点 值:true false<br>callbacks:{ onScrollStart:function(){} }：使用自定义的回调函数在滚动时间开始的时候执行 具体请看Demo<br>callbacks:{ onScroll:function(){} }：自定义回调函数在滚动中执行 Demo 同上<br>callbacks:{ onTotalScroll:function(){} }：当滚动到底部的时候调用这个自定义回调函数 Demo 同上<br>callbacks:{ onTotalScrollBack:function(){} }：当滚动到顶部的时候调用这个自定义回调函数 Demo 同上<br>callbacks:{ onTotalScrollOffset:Integer }：设置到达顶部或者底部的偏移量 像素单位<br>callbacks:{ whileScrolling:function(){} }：当用户正在滚动的时候执行这个自定义回调函数<br>callbacks:{ whileScrollingInterval:Integer }：设置调用 whileScrolling 回调函数的时间间隔 毫秒单位</p></blockquote><p>于是发现这两条很有意思</p><blockquote><p>mouseWheelPixels:Integer：鼠标滚动中滚动的像素数目 值为以像素为单位的数值<br>scrollInertia:Integer：滚动的惯性值 在毫秒中 使用0可以无滚动惯性 (滚动惯性可以使区块滚动更加平滑)</p></blockquote><p>经过检查主题的<code>_config.yml</code>文件，发现<code>scroll.js</code>似乎就是控制滚轮敏感度的文件。<br>找到相关的</p><figure class="highlight css"><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></pre></td><td class="code"><pre><span class="line">$(&#x27;<span class="selector-id">#content-outer</span>&#x27;)<span class="selector-class">.mCustomScrollbar</span>(&#123;</span><br><span class="line">    theme: <span class="string">&#x27;minimal&#x27;</span>,</span><br><span class="line">    axis: <span class="string">&#x27;y&#x27;</span>, // horizontal scrollbar</span><br><span class="line">    callbacks: &#123;</span><br><span class="line">        whileScrolling: function () &#123;</span><br><span class="line">            myCustomFn(this);</span><br><span class="line">            readPercent(this);</span><br><span class="line">            findHeadPosition(this);</span><br><span class="line">        &#125;,</span><br><span class="line">        onScroll: function () &#123;</span><br><span class="line"></span><br><span class="line">        &#125;</span><br><span class="line">    &#125;</span><br><span class="line">&#125;);</span><br></pre></td></tr></table></figure><p>这说明鼠标滚轮像素和滚动惯性，都是默认值，把键和值加上</p><figure class="highlight diff"><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></pre></td><td class="code"><pre><span class="line"><span class="comment">diff --git a/source/js/scroll.js b/source/js/scroll.js</span></span><br><span class="line"><span class="comment">index f5193ca..7c7eba5 100644</span></span><br><span class="line"><span class="comment">--- a/source/js/scroll.js</span></span><br><span class="line"><span class="comment">+++ b/source/js/scroll.js</span></span><br><span class="line"><span class="meta">@@ -49,6 +49,8 @@</span></span><br><span class="line">     $(&#x27;#content-outer&#x27;).mCustomScrollbar(&#123;</span><br><span class="line">         theme: &#x27;minimal&#x27;,</span><br><span class="line">         axis: &#x27;y&#x27;, // horizontal scrollbar</span><br><span class="line"><span class="addition">+        mouseWheelPixels: 300,</span></span><br><span class="line"><span class="addition">+        scrollInertia: 500,</span></span><br><span class="line">         callbacks: &#123;</span><br><span class="line">             whileScrolling: function () &#123;</span><br><span class="line">                 myCustomFn(this);</span><br></pre></td></tr></table></figure><p><code>hexo s</code>的测试环境中，滚轮速度问题，马上就好了</p><h1 id="部署踩坑"><a href="#部署踩坑" class="headerlink" title="部署踩坑"></a>部署踩坑</h1><p>我用<code>hexo d</code>部署到GitHub上去以后，发现我写的文章已经同步了，但是鼠标滚轮问题仍未修复。<br>我检查了<code>public/</code>目录和<code>.deploy_git/</code>目录下的js文件，发现都有。于是检查GitHub仓库，发现也有我改动内容。<br>再检查浏览器的开发者模式，js代码竟然没到！<br>我把CloudFlare缓存的开发者模式打开，再按Ctrl+F5清除缓存刷新，发现还是没到。那基本可以肯定是GitHub同步javascript比正文更慢，再等了一会儿，BUG修复。</p><p>修这个BUG不是多重要的事情，也不是为了锻炼“永不言弃”（钻牛角尖）的精神。主要是学习排查问题的一种思路。</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;我开写的时候就预感到，本篇应该不长，但我觉得内容很重要。&lt;br&gt;上次&lt;del&gt;几个月前&lt;/del&gt;&lt;a href=&quot;https://social.baka.pub/@bingxin&quot;&gt;笨蛋冰&lt;/a&gt;看了我的博客以后，在群里说，我的博客有个bug，就是鼠标滚轮一滚，这个代码就从最底下，往上溜到页面外去了。&lt;br&gt;这个问题很小，但修起来，我觉得太底层了，不适合我这个外行人。&lt;/p&gt;</summary>
    
    
    
    <category term="建站技术" scheme="https://blog.xuzhou-jiang.su/categories/%E5%BB%BA%E7%AB%99%E6%8A%80%E6%9C%AF/"/>
    
    <category term="博客搭建" scheme="https://blog.xuzhou-jiang.su/categories/%E5%BB%BA%E7%AB%99%E6%8A%80%E6%9C%AF/%E5%8D%9A%E5%AE%A2%E6%90%AD%E5%BB%BA/"/>
    
    <category term="踩坑心得" scheme="https://blog.xuzhou-jiang.su/categories/%E5%BB%BA%E7%AB%99%E6%8A%80%E6%9C%AF/%E5%8D%9A%E5%AE%A2%E6%90%AD%E5%BB%BA/%E8%B8%A9%E5%9D%91%E5%BF%83%E5%BE%97/"/>
    
    
    <category term="踩坑心得" scheme="https://blog.xuzhou-jiang.su/tags/%E8%B8%A9%E5%9D%91%E5%BF%83%E5%BE%97/"/>
    
    <category term="jQuery" scheme="https://blog.xuzhou-jiang.su/tags/jQuery/"/>
    
    <category term="mCustomScrollbar" scheme="https://blog.xuzhou-jiang.su/tags/mCustomScrollbar/"/>
    
    <category term="博客主题维护" scheme="https://blog.xuzhou-jiang.su/tags/%E5%8D%9A%E5%AE%A2%E4%B8%BB%E9%A2%98%E7%BB%B4%E6%8A%A4/"/>
    
  </entry>
  
  <entry>
    <title>填坑：个人主页的配置</title>
    <link href="https://blog.xuzhou-jiang.su/2025/08/31/imsyy-home/"/>
    <id>https://blog.xuzhou-jiang.su/2025/08/31/imsyy-home/</id>
    <published>2025-08-31T13:11:30.000Z</published>
    <updated>2025-08-31T14:55:24.000Z</updated>
    
    <content type="html"><![CDATA[<p>最近发现，本博客的文章，绝大多数都是跟长毛象有关的。本来以为写过我的<a href="https://xuzhou-jiang.su/">个人主页</a>是怎么配置的，后来发现原来当初是嫌太简单，没写（？）<br>也好办，读了本文以后，你也能像我一样，做出如此酷炫的个人主页。</p><span id="more"></span><p>今天看见这个主页作者的仓库已经封存3个月了，还写了如下留言，甚是感慨。</p><blockquote><p><strong>致大家</strong><br>此项目最初只是一个简单的主页。然而，随着越来越多的小伙伴发现了这个项目，它受到了大量本不应有的关注。而且，此项目作为初学前端的作品，其代码相当杂乱且质量低下。此外，该项目还遭到众多不明资源站或下载站的倒卖，致使许多不明真相的购买者从源代码中找到本人的联系方式进行问题咨询或提出功能需求。由于目前个人原因，该仓库进行存档，敬请谅解！</p></blockquote><p>就你国这风气，闭关锁国的，还把抄袭当成先知，呵呵。<br>我想起来小学里，有同学把我100分的卷子偷去，把名字改成自己的，获得老师表扬，还当上了班干部。我国的<strong>人民企业家</strong>大概也不过如此吧。马化腾的行径确实是这样，把汉化组给弄进去了。老马下手可比徐逸狠多了。</p><h1 id="起因"><a href="#起因" class="headerlink" title="起因"></a>起因</h1><p>我看<a href="https://byteloid.one/">笨蛋冰的主页</a>非常炫酷，就向他求教怎么弄的，他就指路了<a href="https://github.com/imsyy/home">这个GitHub项目</a>。看语言，应该是Vue框架，又是一个我不懂的领域。<br>好在他的文档写得还不错，东西远比我的博客和在GitHub写的README要多。</p><h1 id="部署"><a href="#部署" class="headerlink" title="部署"></a>部署</h1><p>还是很简单</p><h2 id="安装依赖"><a href="#安装依赖" class="headerlink" title="安装依赖"></a>安装依赖</h2><p>解释器方面仅需要安装<a href="https://nodejs.org/">node.js</a><br>装完node.js以后，安装pnpm包</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm install -g pnpm</span><br></pre></td></tr></table></figure><p>它需要的包都在<code>package.json</code>里，在该项目的目录打开命令行，直接使用<code>pnpm install</code>统一安装</p><blockquote><p>如果你跟赛博丁真何同学一样不会克隆代码，或者不会在当前目录打开命令行，请立即关闭网页</p></blockquote><h2 id="调试网页"><a href="#调试网页" class="headerlink" title="调试网页"></a>调试网页</h2><p>开发过程肯定不能像某些学霸那样人脑跑代码，必定需要看看效果。在目录运行</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">pnpm dev</span><br></pre></td></tr></table></figure><p>这个环境非常智能，运行无误会全自动打开端口，并当场打开浏览器。如果你没改过代码，那它就会显示作者的个人主页（当然，项目旧了，不保证每个链接都有效）。你更改代码后，每当你按下保存键，浏览器就会自动刷新网页，即时显示你的修改效果。不需要你手动重新编译、重启进程、刷新网页了。</p><p>代码写完后，你要发表。笔者是发布在Cloudflare Pages上的，所以GitHub上找不到我个人主页的开源代码。运行</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">pnpm build</span><br></pre></td></tr></table></figure><p>它就会把你的网站编译成一套完整的静态网页，存储在代码目录下的<code>dist</code>目录中。只要把这个目录（拷贝、上传）设为网页服务器的网站根目录，即可在网络上浏览。</p><h1 id="建站过程"><a href="#建站过程" class="headerlink" title="建站过程"></a>建站过程</h1><p>很多内容都在作者文档里有提过，我不愿赘述，以防读者错过真正有用的部分。<br>第一步无非是把<code>.env</code>里的环境变量都改成自己的，<code>src/assets</code>目录里的东西也改成自己的。<br>既然把网址改成了自己的，它只支持作者网站的字体，目录<code>public/font</code>里面，作者也很贴心地留有文档。</p><h2 id="坑1：我的三段域名和现在的超长域名"><a href="#坑1：我的三段域名和现在的超长域名" class="headerlink" title="坑1：我的三段域名和现在的超长域名"></a>坑1：我的三段域名和现在的超长域名</h2><p>不是每个人的域名都这么简洁，这么靓的。而<a href="https://byteloid.one/">笨蛋冰</a>的Bingxin后面有个多余的<code>.</code><br>而我的三段域名却只能显示2段。现在我的超长域名xuzhou-jiang.su却只能显示省略号。<br>这个坑，作者的文档里面没有。经过我用F12查看网页源代码，发现在<code>src/components/Message.vue</code>可以改变文字样式和元素多少。<br>多一个<code>&lt;/span&gt;</code>就多一个点</p><figure class="highlight diff"><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></pre></td><td class="code"><pre><span class="line"><span class="comment">diff --git a/src/components/Message.vue b/src/components/Message.vue</span></span><br><span class="line"><span class="comment">index b130630..53c45da 100644</span></span><br><span class="line"><span class="comment">--- a/src/components/Message.vue</span></span><br><span class="line"><span class="comment">+++ b/src/components/Message.vue</span></span><br><span class="line"><span class="meta">@@ -7,6 +7,7 @@</span></span><br><span class="line">       &lt;div :class=&quot;&#123; name: true, &#x27;text-hidden&#x27;: true, long: siteUrl[0].length &gt;= 6 &#125;&quot;&gt;</span><br><span class="line">         &lt;span class=&quot;bg&quot;&gt;&#123;&#123; siteUrl[0] &#125;&#125;&lt;/span&gt;</span><br><span class="line">         &lt;span class=&quot;sm&quot;&gt;.&#123;&#123; siteUrl[1] &#125;&#125;&lt;/span&gt;</span><br><span class="line"><span class="addition">+        &lt;span class=&quot;sm&quot;&gt;.&#123;&#123; siteUrl[2] &#125;&#125;&lt;/span&gt;</span></span><br><span class="line">       &lt;/div&gt;</span><br><span class="line">     &lt;/div&gt;</span><br><span class="line">     &lt;!-- 简介 --&gt;</span><br></pre></td></tr></table></figure><p>现在我只有两段域名了，把<code>&lt;/span&gt;</code>给删掉，再把<code>bg</code>这个类改成<code>sm</code>就行了。</p><h2 id="坑2：高德地图api"><a href="#坑2：高德地图api" class="headerlink" title="坑2：高德地图api"></a>坑2：高德地图api</h2><p>查看<a href="https://byteloid.one/">Bingxinの主页</a>，你会发现很多人的天气都是一样问题，都显示“天气数据获取失败”。而我却可以显示用户当地天气。<br>这是因为我配置了高德api。没错，我申请了api。但这api是实名的，我认为非常不安全。<br>我按F12发现，这个api就是在前端运行的。那就很好办了。我只要用搜索引擎，把所有用本框架的主页都搜出来，找到能正确显示天气的，把那位老哥的高德api给复制过来。<em>我也不知道他的是不是偷的，反正只要我不被盒了就行</em></p><h2 id="坑3：长毛象署名"><a href="#坑3：长毛象署名" class="headerlink" title="坑3：长毛象署名"></a>坑3：长毛象署名</h2><p>这也不算坑，纯粹为了凑个规整。<br>之前我也在<a href="/2025/01/19/Hexo%E6%90%AD%E5%BB%BA%E4%B8%AA%E4%BA%BA%E5%8D%9A%E5%AE%A2%E6%95%99%E7%A8%8B/#%E9%95%BF%E6%AF%9B%E8%B1%A1%E4%BD%9C%E8%80%85%E7%BD%B2%E5%90%8D">本博客的搭建教程</a>里面提过。这个比较简单，只要在项目根目录的<code>index.html</code>里面添加就行</p><h2 id="坑4：添加BlueSky和开往图标"><a href="#坑4：添加BlueSky和开往图标" class="headerlink" title="坑4：添加BlueSky和开往图标"></a>坑4：添加BlueSky和开往图标</h2><p>这也不用我废话，直接上网找图标，放进文件夹，在<code>src/assets/socialLinks.json</code>里面引用就行。什么？你说如何找到大小合适的图片？我都自己亲手缩放裁剪的。如果你等学校（或作者）给你发手工课材料或者文具（电脑）以后才肯动手的话，请立即关闭本页面，谢谢！<del>如果你遇上了“我给你发素材&#x2F;文具&#x2F;电脑了吗？你就做了”的老板、老师、同学，请帮我揍她qqqxx</del></p><h2 id="坑5：vite编译失败"><a href="#坑5：vite编译失败" class="headerlink" title="坑5：vite编译失败"></a>坑5：vite编译失败</h2><p>这个<code>vite</code>的依赖包，编译需要建立软链接，编译很容易报错。错误的发生原因，就是你在NTFS格式的分区编译此项目，从而无法建立软链接。解决办法：在项目的根目录下，添加文件<code>.npmrc</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">node-linker=hoisted</span><br></pre></td></tr></table></figure><p>以上就是imsyy的个人主页的踩坑心得。写给自己看，也希望读者也能拥有属于自己的酷主页。</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;最近发现，本博客的文章，绝大多数都是跟长毛象有关的。本来以为写过我的&lt;a href=&quot;https://xuzhou-jiang.su/&quot;&gt;个人主页&lt;/a&gt;是怎么配置的，后来发现原来当初是嫌太简单，没写（？）&lt;br&gt;也好办，读了本文以后，你也能像我一样，做出如此酷炫的个人主页。&lt;/p&gt;</summary>
    
    
    
    <category term="建站技术" scheme="https://blog.xuzhou-jiang.su/categories/%E5%BB%BA%E7%AB%99%E6%8A%80%E6%9C%AF/"/>
    
    <category term="踩坑心得" scheme="https://blog.xuzhou-jiang.su/categories/%E5%BB%BA%E7%AB%99%E6%8A%80%E6%9C%AF/%E8%B8%A9%E5%9D%91%E5%BF%83%E5%BE%97/"/>
    
    
    <category term="踩坑心得" scheme="https://blog.xuzhou-jiang.su/tags/%E8%B8%A9%E5%9D%91%E5%BF%83%E5%BE%97/"/>
    
    <category term="网络安全" scheme="https://blog.xuzhou-jiang.su/tags/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/"/>
    
    <category term="免费的技术支持就在这里" scheme="https://blog.xuzhou-jiang.su/tags/%E5%85%8D%E8%B4%B9%E7%9A%84%E6%8A%80%E6%9C%AF%E6%94%AF%E6%8C%81%E5%B0%B1%E5%9C%A8%E8%BF%99%E9%87%8C/"/>
    
    <category term="Vue" scheme="https://blog.xuzhou-jiang.su/tags/Vue/"/>
    
    <category term="互联网非物质文化手艺传承" scheme="https://blog.xuzhou-jiang.su/tags/%E4%BA%92%E8%81%94%E7%BD%91%E9%9D%9E%E7%89%A9%E8%B4%A8%E6%96%87%E5%8C%96%E6%89%8B%E8%89%BA%E4%BC%A0%E6%89%BF/"/>
    
  </entry>
  
  <entry>
    <title>关于最近站点发生变化的说明</title>
    <link href="https://blog.xuzhou-jiang.su/2025/08/31/%E5%85%B3%E4%BA%8E%E6%9C%80%E8%BF%91%E5%81%9C%E6%9B%B4%E7%9A%84%E8%AF%B4%E6%98%8E/"/>
    <id>https://blog.xuzhou-jiang.su/2025/08/31/%E5%85%B3%E4%BA%8E%E6%9C%80%E8%BF%91%E5%81%9C%E6%9B%B4%E7%9A%84%E8%AF%B4%E6%98%8E/</id>
    <published>2025-08-31T08:31:57.000Z</published>
    <updated>2025-08-31T10:38:18.000Z</updated>
    
    <content type="html"><![CDATA[<p>本站至今为止，由于担心影响加入<a href="https://www.travellings.cn/">开往项目</a>的资格，一直没有谈论过技术以外的话题，就比如键政和<font color=red><strong>挂人</strong></font>之类的。<br>但是，既然此事已严重影响到了本站及一切相关子域名的维护，以及高并发、高性能和高可用性，那么也不必藏着掖着，打掉牙往肚里咽了。<br>上次更新到现在，我已进行了多次魔改，还有一些bug修复，准备分享，但是总有股黑暗势力在捣乱</p><span id="more"></span><p>首先，我不在开头说凶手的名字和个人信息，不然有人会借此大作文章对本站进行举报。<br>我开长毛象实例的理由，并且相比于同一批难民，快一年也没跑路，每次技术博客（不得不承认，我这真的就是外行人写的技术博客）都必定打上<a href="/tags/%E8%A8%80%E8%AE%BA%E8%87%AA%E7%94%B1%E5%8F%AA%E5%9C%A8%E8%BF%99%E9%87%8C/">这种tag</a>，原因懂的都懂，无非就是DEI，从长毛象寻过来的都知道。而且因为与本次事件无关，所以今天也不说了。<br>我先从技术的角度来切入此事，之前我写过几篇文章，以后还会出保姆级教程。就比如说，将<a href="/2025/05/18/mastodon-b2-cdn/">将存储桶隐藏在CDN背后</a>，<a href="/2025/04/12/Warp%E4%BB%A3%E7%90%86%EF%BC%88%E9%9D%9EDocker%E7%89%88%EF%BC%89/">用Cloudflare隐藏自己站点</a>。这防的是什么？<br>防的就是DDOS。我写这篇博文，不是来教技术的，所以不深入科普DDOS的原理和危害了。给大家看看后果</p><h1 id="DDOS攻击"><a href="#DDOS攻击" class="headerlink" title="DDOS攻击"></a>DDOS攻击</h1><p><img src="DDOS.png" alt="DDOS攻击"><br>没被DDOS攻击过的站长们可以看看，这就是典型的被DDOS了的现象。<br>第一次遭遇时，我当时正在调试我魔改的代码，还以为是出BUG了。看了CloudFlare仪表板，发现我站多了很多客人，为什么我站就变得那么吸引人了呢？仔细看请求，发现这些请求所期望的返回值完全毫无意义，但是非常消耗服务器的计算资源。如果你硬要帮某人辩护的话，我请问了，谁家好人一天到晚，搜索空格作为关键词，还反复观摩我当时根本没开放注册的关于页面和登录页面？<br>而且这些访问大多数来自TOR节点，跟<a href="https://social.baka.pub/@bingxin">笨蛋冰</a>当时所报告的情形一致，基本确定了是谁干的。<br>这就彻底排除了没被DDOS的合理怀疑。</p><h1 id="社工攻击"><a href="#社工攻击" class="headerlink" title="社工攻击"></a>社工攻击</h1><h2 id="人肉开盒与滥用公告板"><a href="#人肉开盒与滥用公告板" class="headerlink" title="人肉开盒与滥用公告板"></a>人肉开盒与滥用公告板</h2><p>刘某被人在公告板上开盒的截图我就不放了，遵守法律，保护被害人。我记得当时也根本没人管，因为这是一个去中心化的法外之地（其实也不完全去中心化，还是有很多站长在那帮坏人拉偏架的，毕竟被害人是个国男😅<del>至于那些自己明明是个男的，却还要维护自己永生永世得不到的女权，本文就不多评价了</del>）。然后一些小仙女骂刘某是个“肥猪男”，肯定是干了什么坏事，所以才被人开盒没人管😅（还是被我们的伟大祖国保护得太好了，翻墙出来找屎吃，还忘不了知心大姐姐那套逻辑）。后来道歉了，xxn的嘟文我刚搜了一下，也删了<del>你不道歉也没事嘛，又没人查得到，关键是晶哥也懒得查</del>。<br>就在刚才，它又出现了<br><img src="wangchangrui-abuse-board.png" alt="神秘的畜生"></p><h2 id="恶意举报，套取实名信息"><a href="#恶意举报，套取实名信息" class="headerlink" title="恶意举报，套取实名信息"></a>恶意举报，套取实名信息</h2><p>光是人肉搜索还不够，它的目的是要我永远闭嘴。<br>于是就给Contabo和nic.ua寄了举报信。<br><img src="reporter1.jpeg" alt="内含举报人的神必电话号码"></p><blockquote><p>本来我还担心遭到攻击，现在我可以写一篇搭建长毛象保姆级教程了，里面包含如何注册域名，白嫖飞书邮箱（昨晚发现有邮箱地址被吞的风险，找resender也可以，亚马逊是最好的，但是审核严格。实在不行我再研究一下自己搭建邮箱，实例每月预算+$10.00）</p></blockquote><p>最后，我的VPS暂且放过我了，域名寄了😭。好就好在我找到了减小损失的方法，这个放在下一篇博客讲。<br>今后，我要勤于备份实例数据库，以及letsencrypt证书。</p><h1 id="神必代码开源"><a href="#神必代码开源" class="headerlink" title="神必代码开源"></a><del>神必</del>代码开源</h1><p>最后又到了大家最喜欢的<del>神必</del>代码开源环节了🤭<br>对于代码开源，我只是站在众多大佬的肩膀上。信创的开源项目众多，王畅睿早已成为了这个社区人人喊打的过街老鼠。再怎么不跟未成年计较（更何况被害人里面也有未成年），你王若明和刘娟不会教孩子，我们替你教育教育<br><img src="wangchangrui's-funeral.png"><br>对于此事，我对出生不予评价。我要说的，就是男子汉出来混，就得立得住威信，你怂了，这些妖魔鬼怪就强了。<br><img src="likui.jpeg" alt="天师擒鬼"><br>之前我爸出门，他一个70岁的退伍军人，被一个小孩拿玩具枪追着打😅。他说：“你这大人怎么教育孩子的？”然后带孩子的大人装死听不见。因为曾经是人民子弟兵，所以也不跟小孩子计较。<br><del>想当年李洪志大师二十几岁时，直接一jio干飞邻居家的孩子</del><br>都到墙外了，都是什么人才会翻墙的，大家心里都清楚，真没人惯着你</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;本站至今为止，由于担心影响加入&lt;a href=&quot;https://www.travellings.cn/&quot;&gt;开往项目&lt;/a&gt;的资格，一直没有谈论过技术以外的话题，就比如键政和&lt;font color=red&gt;&lt;strong&gt;挂人&lt;/strong&gt;&lt;/font&gt;之类的。&lt;br&gt;但是，既然此事已严重影响到了本站及一切相关子域名的维护，以及高并发、高性能和高可用性，那么也不必藏着掖着，打掉牙往肚里咽了。&lt;br&gt;上次更新到现在，我已进行了多次魔改，还有一些bug修复，准备分享，但是总有股黑暗势力在捣乱&lt;/p&gt;</summary>
    
    
    
    <category term="网络安全" scheme="https://blog.xuzhou-jiang.su/categories/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/"/>
    
    <category term="技术无关" scheme="https://blog.xuzhou-jiang.su/categories/%E6%8A%80%E6%9C%AF%E6%97%A0%E5%85%B3/"/>
    
    
    <category term="坚决捍卫言论自由！" scheme="https://blog.xuzhou-jiang.su/tags/%E5%9D%9A%E5%86%B3%E6%8D%8D%E5%8D%AB%E8%A8%80%E8%AE%BA%E8%87%AA%E7%94%B1%EF%BC%81/"/>
    
    <category term="挂人" scheme="https://blog.xuzhou-jiang.su/tags/%E6%8C%82%E4%BA%BA/"/>
    
  </entry>
  
  <entry>
    <title>长毛象测试环境搭建</title>
    <link href="https://blog.xuzhou-jiang.su/2025/08/17/%E9%95%BF%E6%AF%9B%E8%B1%A1%E6%B5%8B%E8%AF%95%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA/"/>
    <id>https://blog.xuzhou-jiang.su/2025/08/17/%E9%95%BF%E6%AF%9B%E8%B1%A1%E6%B5%8B%E8%AF%95%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA/</id>
    <published>2025-08-17T15:21:03.000Z</published>
    <updated>2025-08-17T17:51:40.000Z</updated>
    
    <content type="html"><![CDATA[<p>我之前就想对长毛象的代码进行深度地魔改，但是对其架构一窍不通，只能一步一步学。<br>对于想要学习别人的代码，就比如超级酷炫的<a href="https://hello.2heng.xin/">小森林</a>，也需要掌握搭建环境的方法，否则就会发现人家的main分支代码你根本跑不动😄</p><span id="more"></span><p>到我踩坑之前，我只知道，在<code>vagrant up</code>之后，再<code>git checkout</code>到其他的中版本，甚至大版本，至少需要在这个测试环境走一遍长毛象的更新流程。要么直接<code>vagrant destroy</code>。可到了差不多前两周的时候，我发现新建vagrant实例也不顶用了！于是提交了一个Issue，后来还把<code>Vagrantfile</code>给改了，提交了Pull Request。🥺<br><img src="vagrantPR.png"><br>这是因为我踩坑太多导致改了又改😄<br>官方的管理员似乎也从来都不用vagrant来进行开发。</p><h1 id="面向的读者"><a href="#面向的读者" class="headerlink" title="面向的读者"></a>面向的读者</h1><p>这个还是挺实用，难度也是略高的。希望大家都来看看。主要还是给自己看。</p><h1 id="Vagrant的问题"><a href="#Vagrant的问题" class="headerlink" title="Vagrant的问题"></a>Vagrant的问题</h1><p><del>这里也不发踩坑的图了，一来没帮助，二来也没这个时间重新踩这个坑</del><br>我翻了一下我一周以前的<a href="https://cmx.dzm.pp.ua/@Network/115004094040092266">嘟文</a><del>前后的键政别介意哈😄</del><br>原文：</p><blockquote><p>#技术相关  #长毛象实例升级<br>本来我想写个博客的，但是问题无法解决还是算了🥹<br>昨天我把我的魔改部分合并进长毛象官方分支v4.4，然后用vagrant运行发现不能用了🥹输出的日志显示我魔改的部分代码有问题<br>好，我再检出到官方的v4.4.3版本，原封不动的版本<br>结果它显示缺少libvips，安装了以后又显示libvips版本不够🥹<br>之后还升级了vagrant虚拟机的ubuntu，升到22.04也没用，还有软件版本不够😡<br>最后升到Ubuntu 24.04，惊喜又来了，NFS挂载不了，挂载了以后，又给我报错🙃</p></blockquote><p>现在分析下来，一开始在我魔改版代码上运行，我的代码本身就是有问题的，它确实与官方v4.4.3版本发生了冲突。此外，“官方纯净版”的长毛象v4.4.3也无法在<code>Vagrantfile</code>所配置的虚拟机上运行。这方面我当时就留意了报错信息，缺少libvips。补上了libvips以后，其他一个接一个的依赖又不行了。我用<code>apt update &amp;&amp; apt search</code>查看了一下版本，发现那个Ubuntu版本的最新版的版本号是远低于长毛象v4.4分支所需版本的。</p><p>于是，我就手动升级了vagrant虚拟机的Ubuntu版本。接下来遇到的又一个大坑，就是Ubuntu24.04版的NFS挂载的主机目录，不能有中文！要去掉中文，就得先把NFS从任务管理器给停掉，否则一直占用文件夹，无法改名，没有耐心的小白往往就得把Google关掉重启电脑了😄。</p><p><del>来不及为前面的大坑哀悼，</del>紧跟在中文bug后面的大坑是😅，虚拟机内，NFS的这个版本不能用udp挂载。这当然是很后面才处理掉的大坑。</p><p>修改<code>Vagrantfile</code>绕开UDP以后，等着我的大坑我记得好像是无法读取文件，反正安装ruby的时候就无法读取版本号，只会安装ruby3.0.0😅进一步的依赖就更别说了</p><h1 id="虚拟机踩坑记"><a href="#虚拟机踩坑记" class="headerlink" title="虚拟机踩坑记"></a>虚拟机踩坑记</h1><p>长毛象有一点非常好，就是文档非常完备。为什么长毛象功能这么少，内存消耗那么大，我还要用长毛象呢？因为我是一个技术小白，不论安装什么种类，什么分支的Fedi软件，我都要来看<a href="https://docs.joinmastodon.org/">长毛象官方文档</a>。这真不是我吹，这是事实。不知道联邦宇宙是不是长毛象的创始人发明的？懂的读者在评论区解释一下🥺</p><blockquote><p>求求你把网络关闭</p></blockquote><iframe src="//player.bilibili.com/player.html?isOutside=true&aid=1551468009&bvid=BV1yy421i7cq&cid=1456693714&p=1" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe><p>我根据官方文档<a href="https://docs.joinmastodon.org/dev/setup/#manual">https://docs.joinmastodon.org/dev/setup/#manual</a> 安装了长毛象测试环境。又踩了不少坑。<br>首先，长毛象很难在无虚拟机的条件下在Windows下运行，除非使用WSL，本质上还是虚拟机。具体我没试过在Windows下跑长毛象，找了10分钟也没有找到不能在Windows下运行的依赖。总之软件包也不如Linux好管理。</p><h2 id="VMWare"><a href="#VMWare" class="headerlink" title="VMWare"></a>VMWare</h2><p>我首先在VMWare上安装了桌面版的Ubuntu。每次都需要花1小时！还需要安装<code>open-vm-tools</code>。</p><p>安装了官方文档所述的依赖和正确版本的Ruby以后，运行<code>bundle install</code>和<code>yarn install</code>，创建数据库角色。<br>在长毛象目录使用命令<code>bin/rails db:setup</code>初始化数据库。</p><blockquote><p>注意⚠：<code>bin/rails db:setup</code>命令会清除数据库！视环境变量而定，在这里会清除开发环境的数据库！</p></blockquote><p>接着运行</p><figure class="highlight bash"><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">gem install foreman --no-document</span><br><span class="line">foreman start</span><br></pre></td></tr></table></figure><p>观察代码发现，在长毛象目录运行<code>bin/dev</code>也是等效的</p><p>测试服务器运行后，在浏览器输入<a href="http://localhost:3000/">http://localhost:3000</a> 即可用官方文档所述的邮箱和密码以站长身份登录测试环境的长毛象实例。</p><h3 id="坑1"><a href="#坑1" class="headerlink" title="坑1"></a>坑1</h3><p>以上步骤当你直接在Linux虚拟机内克隆长毛象代码，是肯定能运行的。但是，大坑来了，当你用VMWare共享文件夹，把你的代码文件共享进去，就会卡在<code>yarn install</code>编译失败，<code>foreman start</code>当然也是跑不起来的。它死在了Link这一步。这是因为在VMWare的共享文件夹内，是无法建立软链接的😅。（前面还有一个小坑，就是需要把你操作的非root用户给加入到共享文件夹的组里去）</p><h3 id="坑2"><a href="#坑2" class="headerlink" title="坑2"></a>坑2</h3><p>那我把虚拟机内的文件夹共享出来行不行？且不说你辛苦开发的未提交代码会不会跟虚拟机一起随风而去了，光是用SMB共享出来（用<code>网上邻居</code>共享出来）。乍一看你可以用外面的SourceTree各种<code>checkout</code>代码，但到了<code>commit</code>的时候，就会出问题，它提示这个路径不对。<em>反正我人麻了</em>，最后把两个文件拷出来提交了，这波不亏。</p><h2 id="VirtualBox"><a href="#VirtualBox" class="headerlink" title="VirtualBox"></a>VirtualBox</h2><p>经过一天的摸鱼Google，第二天下班，我又在VirtualBox重新安装了一遍系统。这里需要用命令行开启允许共享文件夹链接，</p><figure class="highlight cmd"><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">VBoxManage setextradata YOURVMNAME VBoxInternal2/SharedFoldersEnableSymlinksCreate/YOURSHAREFOLDERNAME <span class="number">1</span>  </span><br><span class="line"># YOURVMNAME为虚拟机中ubuntu系统的名称</span><br><span class="line"># YOURSHAREFOLDERNAME 为共享的目录名称</span><br><span class="line"># 例如：</span><br><span class="line"><span class="function">C:\<span class="title">Program</span> <span class="title">Files</span>\<span class="title">Oracle</span>\<span class="title">VirtualBox</span>\<span class="title">VBoxManage</span> <span class="title">setextradata</span> <span class="title">ubuntu1404</span> <span class="title">VBoxInternal2</span>/<span class="title">SharedFoldersEnableSymlinksCreate</span>/<span class="title">share</span> 1</span></span><br></pre></td></tr></table></figure><p>用文本编辑器来编辑虚拟机文件也是可以的。<br>先用<code>ln -s</code>测试了一下，确实可以。接着继续安装环境，<code>yarn install</code>也确实顺利完成了。发现确实可以启动。</p><p>美中不足的是，<code>/api/v1/streaming/?</code>的请求会得到500的状态码。具体原因还没吃透。这个坑无伤大雅，部署在生产环境和Vagrant上的长毛象都是101状态码。</p><h1 id="回归Vagrant"><a href="#回归Vagrant" class="headerlink" title="回归Vagrant"></a>回归Vagrant</h1><p>Vagrant的原理其实也并不复杂，虽然我至今还没完全吃透😄。<br>这个软件其实也是用Ruby编写的，所以，它出BUG的时候，我还以为虚拟机里的长毛象在用外面的Ruby呢😅。</p><p>当你在你的新项目文件夹中，用命令行输入<code>vagrant init</code>时，它会自动生成一个<code>Vagrantfile</code>，也就是长毛象里的那个。这个文件虽然没有后缀，但其实是个ruby文件，遵循ruby语法，你就把它看作一个<code>.rb</code>文件好了。在使用编辑器时，高亮风格设置为Ruby。</p><p>这时候就用ruby的语法来解读一下vagrant到底做了什么：<br>在你使用<code>vagrant up</code>的时候，你没有生成过vagrant实例，也没有同名虚拟机，那么它就会正常运行。如果有同名虚拟机，vagrant就不会继续运行。首先它会下载一个vbox，并修改virtualbox虚拟机的配置。还会给你生成一个主机<code>mastodon.local</code>。启动后会挂载文件夹。</p><blockquote><p>避坑：NFS类型的挂载不顶用了，rsync类型的挂载速度巨慢，把<code>Vagrantfile</code>里那一行的<code>type: &quot;nfs&quot;</code>连着前面后面的逗号和后面的所有参数一起删掉，它就会自动用vbox共享文件夹挂载到<code>Vagrantfile</code>里的同样的位置去，并且自动允许设置软链接。虽然速度稍微慢一点，但是可接受，而且表现更加稳定了。</p></blockquote><p>vagrant完成上述操作后，就会执行<code>provision</code>代码。也就是<code>Vagrantfile</code>里面安装依赖，并且<strong>初始化数据库</strong>，配置环境变量。</p><p>当你已经生成了相关虚拟机了，再运行<code>vagrant up</code>，那么vagrant就会运行除了provision以外的所有<code>Vagrantfile</code>代码。如果需要重新运行一遍provision，那么你只要在vagrant虚拟机启动后，运行一遍<code>vagrant provision</code>即可。为了避免<code>vagrant destroy</code>+<code>vagrant up</code>重装系统浪费时间和梯子流量，建议活用provision代码。</p><p>Vagrant的好处在于：当你用<a href="http://mastodon.local/">http://mastodon.local</a> 登录时，你每次修改完代码，按下保存，系统就会自动刷新浏览器，经过我的测试，这是手动安装测试环境所体现不出来的。</p><h1 id="后记"><a href="#后记" class="headerlink" title="后记"></a>后记</h1><p>今天改完实例后，我又研究了一下<a href="https://hello.2heng.xin/">小森林</a>的代码，想学习一下markdown是怎么实现的。刚开始发现<code>yarn install</code>装不上依赖，发现原来是<code>Vagrantfile</code>没更新过，我把我改出来的代码贴一下</p><figure class="highlight ruby"><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><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br><span class="line">124</span><br><span class="line">125</span><br><span class="line">126</span><br><span class="line">127</span><br><span class="line">128</span><br><span class="line">129</span><br><span class="line">130</span><br><span class="line">131</span><br><span class="line">132</span><br><span class="line">133</span><br><span class="line">134</span><br><span class="line">135</span><br><span class="line">136</span><br><span class="line">137</span><br><span class="line">138</span><br><span class="line">139</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># -*- mode: ruby -*-</span></span><br><span class="line"><span class="comment"># vi: set ft=ruby :</span></span><br><span class="line"></span><br><span class="line"><span class="variable constant_">ENV</span>[<span class="string">&quot;PORT&quot;</span>] |<span class="params"></span>|= <span class="string">&quot;3000&quot;</span></span><br><span class="line"></span><br><span class="line"><span class="variable">$provision</span> = <span class="string">&lt;&lt;SCRIPT</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">cd /vagrant # This is where the host folder/repo is mounted</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string"># Add the yarn repo + yarn repo keys</span></span><br><span class="line"><span class="string">curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -</span></span><br><span class="line"><span class="string">sudo apt-add-repository &#x27;deb https://dl.yarnpkg.com/debian/ stable main&#x27;</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string"># Add repo for NodeJS</span></span><br><span class="line"><span class="string">curl -sL https://deb.nodesource.com/setup_14.x | sudo bash -</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string"># Add firewall rule to redirect 80 to PORT and save</span></span><br><span class="line"><span class="string">sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port <span class="subst">#&#123;<span class="variable constant_">ENV</span>[<span class="string">&quot;PORT&quot;</span>]&#125;</span></span></span><br><span class="line"><span class="string">echo iptables-persistent iptables-persistent/autosave_v4 boolean true | sudo debconf-set-selections</span></span><br><span class="line"><span class="string">echo iptables-persistent iptables-persistent/autosave_v6 boolean true | sudo debconf-set-selections</span></span><br><span class="line"><span class="string">sudo apt-get install iptables-persistent -y</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string"># Add packages to build and run Mastodon</span></span><br><span class="line"><span class="string">sudo apt-get install \</span></span><br><span class="line"><span class="string">  git-core \</span></span><br><span class="line"><span class="string">  g++ \</span></span><br><span class="line"><span class="string">  libpq-dev \</span></span><br><span class="line"><span class="string">  libxml2-dev \</span></span><br><span class="line"><span class="string">  libxslt1-dev \</span></span><br><span class="line"><span class="string">  imagemagick \</span></span><br><span class="line"><span class="string">  nodejs \</span></span><br><span class="line"><span class="string">  redis-server \</span></span><br><span class="line"><span class="string">  redis-tools \</span></span><br><span class="line"><span class="string">  postgresql \</span></span><br><span class="line"><span class="string">  postgresql-contrib \</span></span><br><span class="line"><span class="string">  yarn \</span></span><br><span class="line"><span class="string">  libicu-dev \</span></span><br><span class="line"><span class="string">  libidn11-dev \</span></span><br><span class="line"><span class="string">  libreadline-dev \</span></span><br><span class="line"><span class="string">  libpam0g-dev \</span></span><br><span class="line"><span class="string">  -y</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string"># Install rvm</span></span><br><span class="line"><span class="string">read RUBY_VERSION &lt; .ruby-version</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">curl -sSL https://rvm.io/mpapis.asc | gpg --import</span></span><br><span class="line"><span class="string">curl -sSL https://rvm.io/pkuczynski.asc | gpg --import</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">curl -sSL https://raw.githubusercontent.com/rvm/rvm/stable/binscripts/rvm-installer | bash -s stable --ruby=$RUBY_VERSION</span></span><br><span class="line"><span class="string">source /home/vagrant/.rvm/scripts/rvm</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string"># Install Ruby</span></span><br><span class="line"><span class="string">rvm reinstall ruby-$RUBY_VERSION --disable-binary</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string"># Configure database</span></span><br><span class="line"><span class="string">sudo -u postgres createuser -U postgres vagrant -s</span></span><br><span class="line"><span class="string">sudo -u postgres createdb -U postgres mastodon_development</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string"># Install gems and node modules</span></span><br><span class="line"><span class="string">gem install bundler foreman</span></span><br><span class="line"><span class="string">bundle install</span></span><br><span class="line"><span class="string">yarn install</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string"># Build Mastodon</span></span><br><span class="line"><span class="string">export RAILS_ENV=development </span></span><br><span class="line"><span class="string">export $(cat &quot;.env.vagrant&quot; | xargs)</span></span><br><span class="line"><span class="string">bundle exec rails db:setup</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string"># Configure automatic loading of environment variable</span></span><br><span class="line"><span class="string">echo &#x27;export RAILS_ENV=development&#x27; &gt;&gt; ~/.bash_profile</span></span><br><span class="line"><span class="string">echo &#x27;export $(cat &quot;/vagrant/.env.vagrant&quot; | xargs)&#x27; &gt;&gt; ~/.bash_profile</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">SCRIPT</span></span><br><span class="line"></span><br><span class="line"><span class="variable">$start</span> = <span class="string">&lt;&lt;SCRIPT</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">echo &#x27;To start server&#x27;</span></span><br><span class="line"><span class="string">echo &#x27;  $ vagrant ssh -c &quot;cd /vagrant &amp;&amp; foreman start&quot;&#x27;</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">SCRIPT</span></span><br><span class="line"></span><br><span class="line"><span class="variable constant_">VAGRANTFILE_API_VERSION</span> = <span class="string">&quot;2&quot;</span></span><br><span class="line"></span><br><span class="line"><span class="title class_">Vagrant</span>.configure(<span class="variable constant_">VAGRANTFILE_API_VERSION</span>) <span class="keyword">do</span> |<span class="params">config</span>|</span><br><span class="line"></span><br><span class="line">  config.vm.box = <span class="string">&quot;ubuntu/bionic64&quot;</span></span><br><span class="line"></span><br><span class="line">  config.vm.provider <span class="symbol">:virtualbox</span> <span class="keyword">do</span> |<span class="params">vb</span>|</span><br><span class="line">    vb.name = <span class="string">&quot;little-forest&quot;</span></span><br><span class="line">    vb.customize [<span class="string">&quot;modifyvm&quot;</span>, <span class="symbol">:id</span>, <span class="string">&quot;--memory&quot;</span>, <span class="string">&quot;8192&quot;</span>]</span><br><span class="line">    vb.customize [<span class="string">&quot;modifyvm&quot;</span>, <span class="symbol">:id</span>, <span class="string">&quot;--cpus&quot;</span>, <span class="string">&quot;3&quot;</span>]</span><br><span class="line">    <span class="comment"># Increase the number of CPUs. Uncomment and adjust to</span></span><br><span class="line">    <span class="comment"># increase performance</span></span><br><span class="line">    <span class="comment"># vb.customize [&quot;modifyvm&quot;, :id, &quot;--cpus&quot;, &quot;3&quot;]</span></span><br><span class="line"></span><br><span class="line">    <span class="comment"># Disable VirtualBox DNS proxy to skip long-delay IPv6 resolutions.</span></span><br><span class="line">    <span class="comment"># https://github.com/mitchellh/vagrant/issues/1172</span></span><br><span class="line">    vb.customize [<span class="string">&quot;modifyvm&quot;</span>, <span class="symbol">:id</span>, <span class="string">&quot;--natdnsproxy1&quot;</span>, <span class="string">&quot;off&quot;</span>]</span><br><span class="line">    vb.customize [<span class="string">&quot;modifyvm&quot;</span>, <span class="symbol">:id</span>, <span class="string">&quot;--natdnshostresolver1&quot;</span>, <span class="string">&quot;off&quot;</span>]</span><br><span class="line"></span><br><span class="line">    <span class="comment"># Use &quot;virtio&quot; network interfaces for better performance.</span></span><br><span class="line">    vb.customize [<span class="string">&quot;modifyvm&quot;</span>, <span class="symbol">:id</span>, <span class="string">&quot;--nictype1&quot;</span>, <span class="string">&quot;virtio&quot;</span>]</span><br><span class="line">    vb.customize [<span class="string">&quot;modifyvm&quot;</span>, <span class="symbol">:id</span>, <span class="string">&quot;--nictype2&quot;</span>, <span class="string">&quot;virtio&quot;</span>]</span><br><span class="line"></span><br><span class="line">  <span class="keyword">end</span></span><br><span class="line"></span><br><span class="line">  <span class="comment"># This uses the vagrant-hostsupdater plugin, and lets you</span></span><br><span class="line">  <span class="comment"># access the development site at http://mastodon.local.</span></span><br><span class="line">  <span class="comment"># If you change it, also change it in .env.vagrant before provisioning</span></span><br><span class="line">  <span class="comment"># the vagrant server to update the development build.</span></span><br><span class="line">  <span class="comment">#</span></span><br><span class="line">  <span class="comment"># To install:</span></span><br><span class="line">  <span class="comment">#   $ vagrant plugin install vagrant-hostsupdater</span></span><br><span class="line">  config.vm.hostname = <span class="string">&quot;mastodon.local&quot;</span></span><br><span class="line"></span><br><span class="line">  <span class="keyword">if</span> <span class="keyword">defined</span>?(<span class="title class_">VagrantPlugins</span><span class="symbol">:</span><span class="symbol">:HostsUpdater</span>)</span><br><span class="line">    config.vm.network <span class="symbol">:private_network</span>, <span class="symbol">ip:</span> <span class="string">&quot;192.168.42.42&quot;</span>, <span class="symbol">nictype:</span> <span class="string">&quot;virtio&quot;</span></span><br><span class="line">    config.hostsupdater.remove_on_suspend = <span class="literal">false</span></span><br><span class="line">  <span class="keyword">end</span></span><br><span class="line"></span><br><span class="line">  <span class="keyword">if</span> config.vm.networks.any? &#123; |<span class="params">type, options</span>| type == <span class="symbol">:private_network</span> &#125;</span><br><span class="line">    config.vm.synced_folder <span class="string">&quot;.&quot;</span>, <span class="string">&quot;/vagrant&quot;</span></span><br><span class="line">  <span class="keyword">else</span></span><br><span class="line">    config.vm.synced_folder <span class="string">&quot;.&quot;</span>, <span class="string">&quot;/vagrant&quot;</span></span><br><span class="line">  <span class="keyword">end</span></span><br><span class="line"></span><br><span class="line">  <span class="comment"># Otherwise, you can access the site at http://localhost:3000 and http://localhost:4000 , http://localhost:8080</span></span><br><span class="line">  config.vm.network <span class="symbol">:forwarded_port</span>, <span class="symbol">guest:</span> <span class="number">3000</span>, <span class="symbol">host:</span> <span class="number">3000</span></span><br><span class="line">  config.vm.network <span class="symbol">:forwarded_port</span>, <span class="symbol">guest:</span> <span class="number">4000</span>, <span class="symbol">host:</span> <span class="number">4000</span></span><br><span class="line">  config.vm.network <span class="symbol">:forwarded_port</span>, <span class="symbol">guest:</span> <span class="number">8080</span>, <span class="symbol">host:</span> <span class="number">8080</span></span><br><span class="line"></span><br><span class="line">  <span class="comment"># Full provisioning script, only runs on first &#x27;vagrant up&#x27; or with &#x27;vagrant provision&#x27;</span></span><br><span class="line">  config.vm.provision <span class="symbol">:shell</span>, <span class="symbol">inline:</span> <span class="variable">$provision</span>, <span class="symbol">privileged:</span> <span class="literal">false</span></span><br><span class="line"></span><br><span class="line">  <span class="comment"># Start up script, runs on every &#x27;vagrant up&#x27;</span></span><br><span class="line">  config.vm.provision <span class="symbol">:shell</span>, <span class="symbol">inline:</span> <span class="variable">$start</span>, <span class="symbol">run:</span> <span class="string">&#x27;always&#x27;</span>, <span class="symbol">privileged:</span> <span class="literal">false</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">end</span></span><br><span class="line"></span><br></pre></td></tr></table></figure><p>运行下来，发现main分支确实是他实例的代码。之后的研究过些天再继续。</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;我之前就想对长毛象的代码进行深度地魔改，但是对其架构一窍不通，只能一步一步学。&lt;br&gt;对于想要学习别人的代码，就比如超级酷炫的&lt;a href=&quot;https://hello.2heng.xin/&quot;&gt;小森林&lt;/a&gt;，也需要掌握搭建环境的方法，否则就会发现人家的main分支代码你根本跑不动😄&lt;/p&gt;</summary>
    
    
    
    <category term="建站技术" scheme="https://blog.xuzhou-jiang.su/categories/%E5%BB%BA%E7%AB%99%E6%8A%80%E6%9C%AF/"/>
    
    <category term="踩坑心得" scheme="https://blog.xuzhou-jiang.su/categories/%E5%BB%BA%E7%AB%99%E6%8A%80%E6%9C%AF/%E8%B8%A9%E5%9D%91%E5%BF%83%E5%BE%97/"/>
    
    
    <category term="言论自由只在这里" scheme="https://blog.xuzhou-jiang.su/tags/%E8%A8%80%E8%AE%BA%E8%87%AA%E7%94%B1%E5%8F%AA%E5%9C%A8%E8%BF%99%E9%87%8C/"/>
    
    <category term="踩坑心得" scheme="https://blog.xuzhou-jiang.su/tags/%E8%B8%A9%E5%9D%91%E5%BF%83%E5%BE%97/"/>
    
  </entry>
  
</feed>
