如何使用 debootstrap 构建一个最小化的Ubuntu
<blockquote>一个简单的 debootstrap 部署教程。</blockquote><blockquote>
<p>debootstrap 是 Debian 及其附属分支下的一个工具,用来构建一套基本的系统(根文件系统)。生成的目录符合 Linux 文件系统标准(FHS),即包含了 /boot、/etc、/bin、/usr 等等目录,但它比发行版本的 Linux 体积小很多</p>
</blockquote>
<h2 id="debootstrap-介绍">debootstrap 介绍
</h2><h3 id="啥是-debootstrap">啥是 debootstrap
</h3><p>debootstrap 是 Debian 及其附属分支下的一个工具,用来构建一套基本的系统(根文件系统)。生成的目录符合 Linux 文件系统标准(FHS),即包含了 /boot、/etc、/bin、/usr 等等目录,但它比发行版本的 Linux 体积小很多</p>
<p><del>似曾相识燕归来</del></p>
<h3 id="debootstrap-有啥用">debootstrap 有啥用
</h3><p>debootstrap 可以用来快速 简便的构建一个最小化的 debian 及其附属分支的最小化 rootfs</p>
<p>我们可以用其构建一个最小化的 rootfs (主要是这个相较于 Ubuntu Server 版本还是小得多)</p>
<h3 id="如何使用-debootstrap">如何使用 debootstrap
</h3><p>其实 使用 debootstrap 很简单 它已经被放入到默认源了 我们只需要 apt install 即可</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo apt install debootstrap
</span></span></code></pre></td></tr></table>
</div>
</div><p>如何使用呢 <del>自己看</del> 详情 wiki</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">sudo debootstrap <span class="o">[</span>--arch 架构(可选项)<span class="o">][</span>发行版本<span class="o">]</span> <span class="o">[</span>目录<span class="o">]</span> <span class="o">[</span>映像源(可选项)<span class="o">]</span>
</span></span></code></pre></td></tr></table>
</div>
</div><h2 id="开始动手构建自己的-ubuntu">开始动手构建自己的 Ubuntu
</h2><p>我们这里使用 Ubuntu Server 20.04 作为 Live CD 来进行构建</p>
<h3 id="进入-shell-并安装-debootstrap">进入 Shell 并安装 debootstrap
</h3><p><img src="https://cdn.jsdelivr.net/gh/186526/jsdelivr@master/img/Ubuntu%20ISO.png"
loading="lazy"
alt="Ubuntu ISO shell"
></p>
<ol>
<li>
<p>点击 Help</p>
</li>
<li>
<p>Enter Shell</p>
</li>
<li>
<p>(可选)修改 sources.list</p>
</li>
<li>
<p>update sourcelist 并安装 debootstrap</p>
</li>
</ol>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span><span class="lnt">21
</span><span class="lnt">22
</span><span class="lnt">23
</span><span class="lnt">24
</span><span class="lnt">25
</span><span class="lnt">26
</span><span class="lnt">27
</span><span class="lnt">28
</span><span class="lnt">29
</span><span class="lnt">30
</span><span class="lnt">31
</span><span class="lnt">32
</span><span class="lnt">33
</span><span class="lnt">34
</span><span class="lnt">35
</span><span class="lnt">36
</span><span class="lnt">37
</span><span class="lnt">38
</span><span class="lnt">39
</span><span class="lnt">40
</span><span class="lnt">41
</span><span class="lnt">42
</span><span class="lnt">43
</span><span class="lnt">44
</span><span class="lnt">45
</span><span class="lnt">46
</span><span class="lnt">47
</span><span class="lnt">48
</span><span class="lnt">49
</span><span class="lnt">50
</span><span class="lnt">51
</span><span class="lnt">52
</span><span class="lnt">53
</span><span class="lnt">54
</span><span class="lnt">55
</span><span class="lnt">56
</span><span class="lnt">57
</span><span class="lnt">58
</span><span class="lnt">59
</span><span class="lnt">60
</span><span class="lnt">61
</span><span class="lnt">62
</span><span class="lnt">63
</span><span class="lnt">64
</span><span class="lnt">65
</span><span class="lnt">66
</span><span class="lnt">67
</span><span class="lnt">68
</span><span class="lnt">69
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">$ sudo apt update <span class="o">&&</span> apt install debootstrap
</span></span><span class="line"><span class="cl"> Ign:1 cdrom://Ubuntu-Server 20.04 LTS _Focal Fossa_ - Release amd64 <span class="o">(</span>20200423<span class="o">)</span> focal InRelease
</span></span><span class="line"><span class="cl"> Hit:2 cdrom://Ubuntu-Server 20.04 LTS _Focal Fossa_ - Release amd64 <span class="o">(</span>20200423<span class="o">)</span> focal Release
</span></span><span class="line"><span class="cl"> Get:4 http://mirrors.aliyun.com/ubuntu focal InRelease <span class="o">[</span><span class="m">265</span> kB<span class="o">]</span>
</span></span><span class="line"><span class="cl"> Get:5 http://mirrors.aliyun.com/ubuntu focal-updates InRelease <span class="o">[</span><span class="m">107</span> kB<span class="o">]</span>
</span></span><span class="line"><span class="cl"> Get:6 http://mirrors.aliyun.com/ubuntu focal-backports InRelease <span class="o">[</span>98.3 kB<span class="o">]</span>
</span></span><span class="line"><span class="cl"> Get:7 http://mirrors.aliyun.com/ubuntu focal-security InRelease <span class="o">[</span><span class="m">107</span> kB<span class="o">]</span>
</span></span><span class="line"><span class="cl"> Get:8 http://mirrors.aliyun.com/ubuntu focal/main amd64 Packages <span class="o">[</span><span class="m">970</span> kB<span class="o">]</span>
</span></span><span class="line"><span class="cl"> Get:9 http://mirrors.aliyun.com/ubuntu focal/main Translation-en <span class="o">[</span><span class="m">506</span> kB<span class="o">]</span>
</span></span><span class="line"><span class="cl"> Get:10 http://mirrors.aliyun.com/ubuntu focal/main amd64 c-n-f Metadata <span class="o">[</span>29.5 kB<span class="o">]</span>
</span></span><span class="line"><span class="cl"> Get:11 http://mirrors.aliyun.com/ubuntu focal/restricted amd64 Packages <span class="o">[</span>22.0 kB<span class="o">]</span>
</span></span><span class="line"><span class="cl"> Get:12 http://mirrors.aliyun.com/ubuntu focal/restricted Translation-en <span class="o">[</span><span class="m">6212</span> B<span class="o">]</span>
</span></span><span class="line"><span class="cl"> Get:13 http://mirrors.aliyun.com/ubuntu focal/restricted amd64 c-n-f Metadata <span class="o">[</span><span class="m">392</span> B<span class="o">]</span>
</span></span><span class="line"><span class="cl"> Get:14 http://mirrors.aliyun.com/ubuntu focal/universe amd64 Packages <span class="o">[</span><span class="m">8628</span> kB<span class="o">]</span>
</span></span><span class="line"><span class="cl"> Get:15 http://mirrors.aliyun.com/ubuntu focal/universe Translation-en <span class="o">[</span><span class="m">5124</span> kB<span class="o">]</span>
</span></span><span class="line"><span class="cl"> Get:16 http://mirrors.aliyun.com/ubuntu focal/universe amd64 c-n-f Metadata <span class="o">[</span><span class="m">265</span> kB<span class="o">]</span>
</span></span><span class="line"><span class="cl"> Get:17 http://mirrors.aliyun.com/ubuntu focal/multiverse amd64 Packages <span class="o">[</span><span class="m">144</span> kB<span class="o">]</span>
</span></span><span class="line"><span class="cl"> Get:18 http://mirrors.aliyun.com/ubuntu focal/multiverse Translation-en <span class="o">[</span><span class="m">104</span> kB<span class="o">]</span>
</span></span><span class="line"><span class="cl"> Get:19 http://mirrors.aliyun.com/ubuntu focal/multiverse amd64 c-n-f Metadata <span class="o">[</span><span class="m">9136</span> B<span class="o">]</span>
</span></span><span class="line"><span class="cl"> Get:20 http://mirrors.aliyun.com/ubuntu focal-updates/main amd64 Packages <span class="o">[</span><span class="m">197</span> kB<span class="o">]</span>
</span></span><span class="line"><span class="cl"> Get:21 http://mirrors.aliyun.com/ubuntu focal-updates/main Translation-en <span class="o">[</span>77.7 kB<span class="o">]</span>
</span></span><span class="line"><span class="cl"> Get:22 http://mirrors.aliyun.com/ubuntu focal-updates/main amd64 c-n-f Metadata <span class="o">[</span><span class="m">5676</span> B<span class="o">]</span>
</span></span><span class="line"><span class="cl"> Get:23 http://mirrors.aliyun.com/ubuntu focal-updates/restricted amd64 Packages <span class="o">[</span>11.0 kB<span class="o">]</span>
</span></span><span class="line"><span class="cl"> Get:24 http://mirrors.aliyun.com/ubuntu focal-updates/restricted Translation-en <span class="o">[</span><span class="m">3000</span> B<span class="o">]</span>
</span></span><span class="line"><span class="cl"> Get:25 http://mirrors.aliyun.com/ubuntu focal-updates/restricted amd64 c-n-f Metadata <span class="o">[</span><span class="m">116</span> B<span class="o">]</span>
</span></span><span class="line"><span class="cl"> Get:26 http://mirrors.aliyun.com/ubuntu focal-updates/universe amd64 Packages <span class="o">[</span><span class="m">110</span> kB<span class="o">]</span>
</span></span><span class="line"><span class="cl"> Get:27 http://mirrors.aliyun.com/ubuntu focal-updates/universe Translation-en <span class="o">[</span>51.9 kB<span class="o">]</span>
</span></span><span class="line"><span class="cl"> Get:28 http://mirrors.aliyun.com/ubuntu focal-updates/universe amd64 c-n-f Metadata <span class="o">[</span><span class="m">4092</span> B<span class="o">]</span>
</span></span><span class="line"><span class="cl"> Get:29 http://mirrors.aliyun.com/ubuntu focal-updates/multiverse amd64 Packages <span class="o">[</span><span class="m">1172</span> B<span class="o">]</span>
</span></span><span class="line"><span class="cl"> Get:30 http://mirrors.aliyun.com/ubuntu focal-updates/multiverse Translation-en <span class="o">[</span><span class="m">540</span> B<span class="o">]</span>
</span></span><span class="line"><span class="cl"> Get:31 http://mirrors.aliyun.com/ubuntu focal-updates/multiverse amd64 c-n-f Metadata <span class="o">[</span><span class="m">116</span> B<span class="o">]</span>
</span></span><span class="line"><span class="cl"> Get:32 http://mirrors.aliyun.com/ubuntu focal-backports/main amd64 c-n-f Metadata <span class="o">[</span><span class="m">112</span> B<span class="o">]</span>
</span></span><span class="line"><span class="cl"> Get:33 http://mirrors.aliyun.com/ubuntu focal-backports/restricted amd64 c-n-f Metadata <span class="o">[</span><span class="m">116</span> B<span class="o">]</span>
</span></span><span class="line"><span class="cl"> Get:34 http://mirrors.aliyun.com/ubuntu focal-backports/universe amd64 Packages <span class="o">[</span><span class="m">2784</span> B<span class="o">]</span>
</span></span><span class="line"><span class="cl"> Get:35 http://mirrors.aliyun.com/ubuntu focal-backports/universe Translation-en <span class="o">[</span><span class="m">1272</span> B<span class="o">]</span>
</span></span><span class="line"><span class="cl"> Get:36 http://mirrors.aliyun.com/ubuntu focal-backports/universe amd64 c-n-f Metadata <span class="o">[</span><span class="m">192</span> B<span class="o">]</span>
</span></span><span class="line"><span class="cl"> Get:37 http://mirrors.aliyun.com/ubuntu focal-backports/multiverse amd64 c-n-f Metadata <span class="o">[</span><span class="m">116</span> B<span class="o">]</span>
</span></span><span class="line"><span class="cl"> Get:38 http://mirrors.aliyun.com/ubuntu focal-security/main amd64 Packages <span class="o">[</span><span class="m">106</span> kB<span class="o">]</span>
</span></span><span class="line"><span class="cl"> Get:46 http://mirrors.aliyun.com/ubuntu focal-security/universe amd64 c-n-f Metadata <span class="o">[</span><span class="m">1612</span> B<span class="o">]</span>
</span></span><span class="line"><span class="cl"> Get:47 http://mirrors.aliyun.com/ubuntu focal-security/multiverse amd64 Packages <span class="o">[</span><span class="m">1172</span> B<span class="o">]</span>
</span></span><span class="line"><span class="cl"> Get:48 http://mirrors.aliyun.com/ubuntu focal-security/multiverse Translation-en <span class="o">[</span><span class="m">540</span> B<span class="o">]</span>
</span></span><span class="line"><span class="cl"> Get:49 http://mirrors.aliyun.com/ubuntu focal-security/multiverse amd64 c-n-f Metadata <span class="o">[</span><span class="m">116</span> B<span class="o">]</span>
</span></span><span class="line"><span class="cl"> Fetched 17.1 MB in 6s <span class="o">(</span><span class="m">3096</span> kB/s<span class="o">)</span>
</span></span><span class="line"><span class="cl"> Reading package lists... Done
</span></span><span class="line"><span class="cl"> Building dependency tree
</span></span><span class="line"><span class="cl"> Reading state information... Done
</span></span><span class="line"><span class="cl"> <span class="m">65</span> packages can be upgraded. Run <span class="s1">'apt list --upgradable'</span> to see them.
</span></span><span class="line"><span class="cl"> Reading package lists... Done
</span></span><span class="line"><span class="cl"> Building dependency tree
</span></span><span class="line"><span class="cl"> Reading state information... Done
</span></span><span class="line"><span class="cl"> Suggested packages:
</span></span><span class="line"><span class="cl"> arch-test squid-deb-proxy-client
</span></span><span class="line"><span class="cl"> The following NEW packages will be installed:
</span></span><span class="line"><span class="cl"> debootstrap
</span></span><span class="line"><span class="cl"> <span class="m">0</span> upgraded, <span class="m">1</span> newly installed, <span class="m">0</span> to remove and <span class="m">65</span> not upgraded.
</span></span><span class="line"><span class="cl"> Need to get 39.4 kB of archives.
</span></span><span class="line"><span class="cl"> After this operation, <span class="m">299</span> kB of additional disk space will be used.
</span></span><span class="line"><span class="cl"> Get:1 http://mirrors.aliyun.com/ubuntu focal-updates/main amd64 debootstrap all 1.0.118ubuntu1.1 <span class="o">[</span>39.4 kB<span class="o">]</span>
</span></span><span class="line"><span class="cl"> Fetched 39.4 kB in 0s <span class="o">(</span><span class="m">221</span> kB/s<span class="o">)</span>
</span></span><span class="line"><span class="cl"> Selecting previously unselected package debootstrap.
</span></span><span class="line"><span class="cl"> <span class="o">(</span>Reading database ... <span class="m">33860</span> files and directories currently installed.<span class="o">)</span>
</span></span><span class="line"><span class="cl"> Preparing to unpack .../debootstrap_1.0.118ubuntu1.1_all.deb ...
</span></span><span class="line"><span class="cl"> Unpacking debootstrap <span class="o">(</span>1.0.118ubuntu1.1<span class="o">)</span> ...
</span></span><span class="line"><span class="cl"> Setting up debootstrap <span class="o">(</span>1.0.118ubuntu1.1<span class="o">)</span> ...
</span></span><span class="line"><span class="cl"> Processing triggers <span class="k">for</span> man-db <span class="o">(</span>2.9.1-1<span class="o">)</span> ...
</span></span><span class="line"><span class="cl">$ debootstrap
</span></span><span class="line"><span class="cl"> I: usage: <span class="o">[</span>OPTION<span class="o">]</span>... <suite> <target> <span class="o">[</span><mirror> <span class="o">[</span><script><span class="o">]]</span>
</span></span><span class="line"><span class="cl"> I: Try <span class="sb">`</span>debootstrap --help<span class="err">'</span> <span class="k">for</span> more information.
</span></span><span class="line"><span class="cl"> E: You must specify a suite and a target.
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="给硬盘分区">给硬盘分区
</h3><p>这步没啥好说的 用 cfdisk 进行分区 使用 mkfs.ext4 来格式化硬盘(请记住如何分区的!!!!(后面编写 fstab 会涉及到))</p>
<table>
<thead>
<tr>
<th>/dev 路径</th>
<th>挂载位置</th>
<th>分区模式</th>
<th>作用</th>
</tr>
</thead>
<tbody>
<tr>
<td>/dev/sda1</td>
<td>/boot</td>
<td>fat32</td>
<td>负责 efi 引导</td>
</tr>
<tr>
<td>/dev/sda2</td>
<td>swap</td>
<td>swap</td>
<td>内存交换</td>
</tr>
<tr>
<td>/dev/sda3</td>
<td>/</td>
<td>ext4</td>
<td>根目录</td>
</tr>
</tbody>
</table>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">$ mkfs.ext4 /dev/sda3
</span></span><span class="line"><span class="cl">mke2fs 1.45.5 <span class="o">(</span>07-Jan-2020<span class="o">)</span>
</span></span><span class="line"><span class="cl">Creating filesystem with <span class="m">9311995</span> 4k blocks and <span class="m">2330160</span> inodes
</span></span><span class="line"><span class="cl">Filesystem UUID: fbe7f7fe-1997-4ab3-929f-52aa73aa72eb
</span></span><span class="line"><span class="cl">Superblock backups stored on blocks:
</span></span><span class="line"><span class="cl"> 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
</span></span><span class="line"><span class="cl"> 4096000, <span class="m">7962624</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">Allocating group tables: <span class="k">done</span>
</span></span><span class="line"><span class="cl">Writing inode tables: <span class="k">done</span>
</span></span><span class="line"><span class="cl">Creating journal <span class="o">(</span><span class="m">65536</span> blocks<span class="o">)</span>: <span class="k">done</span>
</span></span><span class="line"><span class="cl">Writing superblocks and filesystem accounting information: <span class="k">done</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">$ mkswap /dev/sda2
</span></span><span class="line"><span class="cl">Setting up swapspace version 1, <span class="nv">size</span> <span class="o">=</span> <span class="m">4</span> GiB <span class="o">(</span><span class="m">4294963200</span> bytes<span class="o">)</span>s
</span></span><span class="line"><span class="cl">no label, <span class="nv">UUID</span><span class="o">=</span>9fe83e8e-cd78-4a25-8a1e-ab305181c46d
</span></span><span class="line"><span class="cl">$ swapon /dev/sda2
</span></span><span class="line"><span class="cl">$ mkfs.vfat /dev/sda1
</span></span><span class="line"><span class="cl">mkfs.fat 4.1 <span class="o">(</span>2017-01-24<span class="o">)</span>
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="挂载分区并释放-rootfs">挂载分区并释放 rootfs
</h3><p>这里构建选择最新的 Focal X86_64 位</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span><span class="lnt">21
</span><span class="lnt">22
</span><span class="lnt">23
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">$ mkdir /target
</span></span><span class="line"><span class="cl">$ mount /dev/sda3 /target
</span></span><span class="line"><span class="cl">$ debootstrap focal /target http://mirrors.aliyun.com/ubuntu
</span></span><span class="line"><span class="cl">I: Retrieving InRelease
</span></span><span class="line"><span class="cl">I: Checking Release signature
</span></span><span class="line"><span class="cl">I: Valid Release signature <span class="o">(</span>key id F6ECB3762474EDA9D21B7022871920D1991BC93C<span class="o">)</span>
</span></span><span class="line"><span class="cl">I: Retrieving Packages
</span></span><span class="line"><span class="cl">I: Validating Packages
</span></span><span class="line"><span class="cl">I: Resolving dependencies of required packages...
</span></span><span class="line"><span class="cl">I: Resolving dependencies of base packages...
</span></span><span class="line"><span class="cl">I: Checking component main on http://mirrors.aliyun.com/ubuntu...
</span></span><span class="line"><span class="cl">I: Retrieving adduser 3.118ubuntu2
</span></span><span class="line"><span class="cl">I: Validating adduser 3.118ubuntu2
</span></span><span class="line"><span class="cl">I: Retrieving apt 2.0.2
</span></span><span class="line"><span class="cl">I: Validating apt 2.0.2
</span></span><span class="line"><span class="cl">…………………………………………………………
</span></span><span class="line"><span class="cl">I: Configuring console-setup...
</span></span><span class="line"><span class="cl">I: Configuring kbd...
</span></span><span class="line"><span class="cl">I: Configuring ubuntu-minimal...
</span></span><span class="line"><span class="cl">I: Configuring libc-bin...
</span></span><span class="line"><span class="cl">I: Configuring systemd...
</span></span><span class="line"><span class="cl">I: Configuring ca-certificates...
</span></span><span class="line"><span class="cl">I: Base system installed successfully. <span class="c1">##当你看到这句时 说明你的操作没有问题</span>
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="chroot-并进行基本设置">chroot 并进行基本设置
</h3><h4 id="修改软件源">修改软件源
</h4><p>默认 rootfs 中的软件源不完整 我们这里 cp 一下 live cd 的软件源</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">cp /etc/apt/sources.list /target/etc/apt/sources.list<span class="p">;</span>sed -i 3d /target/etc/apt/sources.list
</span></span></code></pre></td></tr></table>
</div>
</div><div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span><span class="lnt">21
</span><span class="lnt">22
</span><span class="lnt">23
</span><span class="lnt">24
</span><span class="lnt">25
</span><span class="lnt">26
</span><span class="lnt">27
</span><span class="lnt">28
</span><span class="lnt">29
</span><span class="lnt">30
</span><span class="lnt">31
</span><span class="lnt">32
</span><span class="lnt">33
</span><span class="lnt">34
</span><span class="lnt">35
</span><span class="lnt">36
</span><span class="lnt">37
</span><span class="lnt">38
</span><span class="lnt">39
</span><span class="lnt">40
</span><span class="lnt">41
</span><span class="lnt">42
</span><span class="lnt">43
</span><span class="lnt">44
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">$ cat >> /target/etc/apt/sources.list <span class="s"><< EOF
</span></span></span><span class="line"><span class="cl"><span class="s"># See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
</span></span></span><span class="line"><span class="cl"><span class="s"># newer versions of the distribution.
</span></span></span><span class="line"><span class="cl"><span class="s">deb http://mirrors.aliyun.com/ubuntu/ focal main restricted
</span></span></span><span class="line"><span class="cl"><span class="s"># deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted
</span></span></span><span class="line"><span class="cl"><span class="s">## Major bug fix updates produced after the final release of the
</span></span></span><span class="line"><span class="cl"><span class="s">## distribution.
</span></span></span><span class="line"><span class="cl"><span class="s">deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted
</span></span></span><span class="line"><span class="cl"><span class="s"># deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted
</span></span></span><span class="line"><span class="cl"><span class="s">## N.B. software from this repository is E</span>NTIRELY UNSUPPORTED by the Ubuntu
</span></span><span class="line"><span class="cl"><span class="c1">## team. Also, please note that software in universe WILL NOT receive any</span>
</span></span><span class="line"><span class="cl"><span class="c1">## review or updates from the Ubuntu security team.</span>
</span></span><span class="line"><span class="cl">deb http://mirrors.aliyun.com/ubuntu/ focal universe
</span></span><span class="line"><span class="cl"><span class="c1"># deb-src http://mirrors.aliyun.com/ubuntu/ focal universe</span>
</span></span><span class="line"><span class="cl">deb http://mirrors.aliyun.com/ubuntu/ focal-updates universe
</span></span><span class="line"><span class="cl"><span class="c1"># deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates universe</span>
</span></span><span class="line"><span class="cl"><span class="c1">## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu</span>
</span></span><span class="line"><span class="cl"><span class="c1">## team, and may not be under a free licence. Please satisfy yourself as to</span>
</span></span><span class="line"><span class="cl"><span class="c1">## your rights to use the software. Also, please note that software in</span>
</span></span><span class="line"><span class="cl"><span class="c1">## multiverse WILL NOT receive any review or updates from the Ubuntu</span>
</span></span><span class="line"><span class="cl"><span class="c1">## security team.</span>
</span></span><span class="line"><span class="cl">deb http://mirrors.aliyun.com/ubuntu/ focal multiverse
</span></span><span class="line"><span class="cl"><span class="c1"># deb-src http://mirrors.aliyun.com/ubuntu/ focal multiverse</span>
</span></span><span class="line"><span class="cl">deb http://mirrors.aliyun.com/ubuntu/ focal-updates multiverse
</span></span><span class="line"><span class="cl"><span class="c1"># deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates multiverse</span>
</span></span><span class="line"><span class="cl"><span class="c1">## N.B. software from this repository may not have been tested as</span>
</span></span><span class="line"><span class="cl"><span class="c1">## extensively as that contained in the main release, although it includes</span>
</span></span><span class="line"><span class="cl"><span class="c1">## newer versions of some applications which may provide useful features.</span>
</span></span><span class="line"><span class="cl"><span class="c1">## Also, please note that software in backports WILL NOT receive any review</span>
</span></span><span class="line"><span class="cl"><span class="c1">## or updates from the Ubuntu security team.</span>
</span></span><span class="line"><span class="cl">deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
</span></span><span class="line"><span class="cl"><span class="c1"># deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse</span>
</span></span><span class="line"><span class="cl"><span class="c1">## Uncomment the following two lines to add software from Canonical's</span>
</span></span><span class="line"><span class="cl"><span class="c1">## 'partner' repository.</span>
</span></span><span class="line"><span class="cl"><span class="c1">## This software is not part of Ubuntu, but is offered by Canonical and the</span>
</span></span><span class="line"><span class="cl"><span class="c1">## respective vendors as a service to Ubuntu users.</span>
</span></span><span class="line"><span class="cl"><span class="c1"># deb http://archive.canonical.com/ubuntu focal partner</span>
</span></span><span class="line"><span class="cl"><span class="c1"># deb-src http://archive.canonical.com/ubuntu focal partner</span>
</span></span><span class="line"><span class="cl">deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted
</span></span><span class="line"><span class="cl"><span class="c1"># deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted</span>
</span></span><span class="line"><span class="cl">deb http://mirrors.aliyun.com/ubuntu/ focal-security universe
</span></span><span class="line"><span class="cl"><span class="c1"># deb-src http://mirrors.aliyun.com/ubuntu/ focal-security universe</span>
</span></span><span class="line"><span class="cl">deb http://mirrors.aliyun.com/ubuntu/ focal-security multiverse
</span></span><span class="line"><span class="cl"><span class="c1"># deb-src http://mirrors.aliyun.com/ubuntu/ focal-security multiverse</span>
</span></span></code></pre></td></tr></table>
</div>
</div><h4 id="编写-fstab">编写 fstab
</h4><p>这里推荐一下这篇文章 <a class="link" href="https://blog.csdn.net/richerg85/article/details/17917129" target="_blank" rel="noopener"
>linux 之 fstab 文件详解 来自 csdn richerg85</a></p>
<p>fstab 主要由这几部分组成</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl"><file system> <dir> <type> <options> <dump> <pass>
</span></span><span class="line"><span class="cl">(/dev下的位置)(挂载位置)(文件系统)(挂载参数)(dump 工具通过它决定何时作备份)(fsck 读取 <pass> 的数值来决定需要检查的文件系统的检查顺序。)
</span></span></code></pre></td></tr></table>
</div>
</div><p>这里以我的 fstab 文件作为实例</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">$ cat >> /target/etc/fstab << EOF
</span></span><span class="line"><span class="cl">tmpfs /tmp tmpfs nodev,nosuid <span class="m">0</span> <span class="m">0</span>
</span></span><span class="line"><span class="cl">/dev/sda2 none swap defaults <span class="m">0</span> <span class="m">0</span>
</span></span><span class="line"><span class="cl">/dev/sda3 / ext4 defaults,noatime <span class="m">0</span> <span class="m">0</span>
</span></span></code></pre></td></tr></table>
</div>
</div><h4 id="chroot-进入系统">chroot 进入系统
</h4><p>先挂载 efi 分区</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">mkdir /target/boot/efi <span class="o">&&</span> <span class="se">\
</span></span></span><span class="line"><span class="cl">mount /dev/sda1 /target/boot/efi
</span></span></code></pre></td></tr></table>
</div>
</div><p>挂载 proc 等分区</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="k">for</span> i in /dev /dev/pts /proc /sys /run<span class="p">;</span> <span class="k">do</span> sudo mount -B <span class="nv">$i</span> /target<span class="nv">$i</span><span class="p">;</span> <span class="k">done</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>挂载并安装 grub 和 kernel(这里安装的是虚拟化内核)</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span><span class="lnt">21
</span><span class="lnt">22
</span><span class="lnt">23
</span><span class="lnt">24
</span><span class="lnt">25
</span><span class="lnt">26
</span><span class="lnt">27
</span><span class="lnt">28
</span><span class="lnt">29
</span><span class="lnt">30
</span><span class="lnt">31
</span><span class="lnt">32
</span><span class="lnt">33
</span><span class="lnt">34
</span><span class="lnt">35
</span><span class="lnt">36
</span><span class="lnt">37
</span><span class="lnt">38
</span><span class="lnt">39
</span><span class="lnt">40
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">$ sudo chroot /target
</span></span><span class="line"><span class="cl">$ sudo passwd <span class="c1">##配置passwd</span>
</span></span><span class="line"><span class="cl">New password:
</span></span><span class="line"><span class="cl">Retype new password:
</span></span><span class="line"><span class="cl">passwd: password updated successfully
</span></span><span class="line"><span class="cl">$ sudo apt install grub-efi-amd64 linux-virtual -y <span class="c1">##安装grub和kernel</span>
</span></span><span class="line"><span class="cl">Reading package lists... Done
</span></span><span class="line"><span class="cl">Building dependency tree
</span></span><span class="line"><span class="cl">Reading state information... Done
</span></span><span class="line"><span class="cl">The following additional packages will be installed:
</span></span><span class="line"><span class="cl"> efibootmgr gettext-base grub-common grub-efi-amd64-bin grub-efi-amd64-signed grub2-common libefiboot1 libefivar1
</span></span><span class="line"><span class="cl"> libfreetype6 libfuse2 libpng16-16 linux-headers-generic linux-headers-virtual os-prober sbsigntool secureboot-db
</span></span><span class="line"><span class="cl">Suggested packages:
</span></span><span class="line"><span class="cl">rvice.
</span></span><span class="line"><span class="cl">Running in chroot, ignoring request: daemon-reload
</span></span><span class="line"><span class="cl">Running in chroot, ignoring request: is-active
</span></span><span class="line"><span class="cl">Running in chroot, ignoring request: start
</span></span><span class="line"><span class="cl">Setting up libefiboot1:amd64 <span class="o">(</span>37-2ubuntu2<span class="o">)</span> ...
</span></span><span class="line"><span class="cl">Setting up linux-virtual <span class="o">(</span>5.4.0.26.32<span class="o">)</span> ...
</span></span><span class="line"><span class="cl">Setting up libfreetype6:amd64 <span class="o">(</span>2.10.1-2<span class="o">)</span> ...
</span></span><span class="line"><span class="cl">Setting up efibootmgr <span class="o">(</span>17-1<span class="o">)</span> ...
</span></span><span class="line"><span class="cl">Setting up grub-common <span class="o">(</span>2.04-1ubuntu26<span class="o">)</span> ...
</span></span><span class="line"><span class="cl">Running in chroot, ignoring request: daemon-reload
</span></span><span class="line"><span class="cl">Running in chroot, ignoring request: daemon-reload
</span></span><span class="line"><span class="cl">Running in chroot, ignoring request: is-active
</span></span><span class="line"><span class="cl">Running in chroot, ignoring request: restart
</span></span><span class="line"><span class="cl">update-rc.d: warning: start and stop actions are no longer supported<span class="p">;</span> falling back to defaults
</span></span><span class="line"><span class="cl">Running in chroot, ignoring request: daemon-reload
</span></span><span class="line"><span class="cl">Running in chroot, ignoring request.
</span></span><span class="line"><span class="cl">Running in chroot, ignoring request: daemon-reload
</span></span><span class="line"><span class="cl">Running in chroot, ignoring request: is-active
</span></span><span class="line"><span class="cl">Running in chroot, ignoring request: restart
</span></span><span class="line"><span class="cl">Setting up os-prober <span class="o">(</span>1.74ubuntu2<span class="o">)</span> ...
</span></span><span class="line"><span class="cl">Setting up grub-efi-amd64-bin <span class="o">(</span>2.04-1ubuntu26<span class="o">)</span> ...
</span></span><span class="line"><span class="cl">Setting up grub2-common <span class="o">(</span>2.04-1ubuntu26<span class="o">)</span> ...
</span></span><span class="line"><span class="cl">Setting up grub-efi-amd64 <span class="o">(</span>2.04-1ubuntu26<span class="o">)</span> ...
</span></span><span class="line"><span class="cl">Setting up grub-efi-amd64-signed <span class="o">(</span>1.142+2.04-1ubuntu26<span class="o">)</span> ...
</span></span><span class="line"><span class="cl">Processing triggers <span class="k">for</span> systemd <span class="o">(</span>245.4-4ubuntu3<span class="o">)</span> ...
</span></span><span class="line"><span class="cl">Running in chroot, ignoring request: daemon-reload
</span></span><span class="line"><span class="cl">Processing triggers <span class="k">for</span> libc-bin <span class="o">(</span>2.31-0ubuntu9<span class="o">)</span> ...
</span></span></code></pre></td></tr></table>
</div>
</div><h4 id="安装-grub2">安装 grub2
</h4><div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">$ grub-install /dev/sda
</span></span><span class="line"><span class="cl">update-grub Installing <span class="k">for</span> x86_64-efi platform.
</span></span><span class="line"><span class="cl">Installation finished. No error reported.
</span></span><span class="line"><span class="cl">$ update-grub
</span></span><span class="line"><span class="cl">Sourcing file <span class="sb">`</span>/etc/default/grub<span class="s1">'
</span></span></span><span class="line"><span class="cl"><span class="s1">Sourcing file `/etc/default/grub.d/init-select.cfg'</span>
</span></span><span class="line"><span class="cl">Generating grub configuration file ...
</span></span><span class="line"><span class="cl">Found linux image: /boot/vmlinuz-5.4.0-26-generic
</span></span><span class="line"><span class="cl">Found initrd image: /boot/initrd.img-5.4.0-26-generic
</span></span><span class="line"><span class="cl">Adding boot menu entry <span class="k">for</span> UEFI Firmware Settings
</span></span><span class="line"><span class="cl"><span class="k">done</span>
</span></span></code></pre></td></tr></table>
</div>
</div><h4 id="设置网络">设置网络
</h4><p>Ubuntu 18.04 及其上的 Server 版本默认使用 systemd-networkd 联网</p>
<p>先使用 ip a 获取设备</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">$ ip a
</span></span><span class="line"><span class="cl">1: lo: <LOOPBACK,UP,LOWER_UP> mtu <span class="m">65536</span> qdisc noqueue state UNKNOWN group default qlen <span class="m">1000</span>
</span></span><span class="line"><span class="cl"> link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
</span></span><span class="line"><span class="cl"> inet 127.0.0.1/8 scope host lo
</span></span><span class="line"><span class="cl"> valid_lft forever preferred_lft forever
</span></span><span class="line"><span class="cl"> inet6 ::1/128 scope host
</span></span><span class="line"><span class="cl"> valid_lft forever preferred_lft forever
</span></span><span class="line"><span class="cl">2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu <span class="m">1500</span> qdisc fq_codel state UP group default qlen <span class="m">1000</span> <span class="c1">## ens33就是网络设备</span>
</span></span><span class="line"><span class="cl"> link/ether 00:0c:29:9d:a0:73 brd ff:ff:ff:ff:ff:ff
</span></span><span class="line"><span class="cl"> inet 192.168.57.140/24 brd 192.168.57.255 scope global dynamic ens33
</span></span><span class="line"><span class="cl"> valid_lft 5433596sec preferred_lft 5433596sec
</span></span><span class="line"><span class="cl"> inet6 fe80::20c:29ff:fe9d:a073/64 scope link
</span></span><span class="line"><span class="cl"> valid_lft forever preferred_lft forever
</span></span></code></pre></td></tr></table>
</div>
</div><p>配置所有网卡 DHCP 联网</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">$ cat >> /etc/systemd/network/ens33.network << EOF
</span></span><span class="line"><span class="cl"><span class="o">[</span>Match<span class="o">]</span>
</span></span><span class="line"><span class="cl"><span class="nv">Name</span><span class="o">=</span>*
</span></span><span class="line"><span class="cl"><span class="o">[</span>Network<span class="o">]</span>
</span></span><span class="line"><span class="cl"><span class="nv">DHCP</span><span class="o">=</span>both
</span></span></code></pre></td></tr></table>
</div>
</div><h4 id="重启">重启
</h4><div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">$ <span class="nb">exit</span>
</span></span><span class="line"><span class="cl"><span class="nb">exit</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">reboot
</span></span></code></pre></td></tr></table>
</div>
</div><p>PS: 第一次开机会有一点点慢(就亿点点)</p>
<h3 id="重启并配置网络">重启并配置网络
</h3><p>启动 systemd-networkd</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">$ systemctl <span class="nb">enable</span> --now systemd-networkd
</span></span><span class="line"><span class="cl">Created symlink /etc/systemd/system/dbus-org.freedesktop.network1.service → /lib/systemd/system/systemd-networkd.service.
</span></span><span class="line"><span class="cl">Created symlink /etc/systemd/system/multi-user.target.wants/systemd-networkd.service → /lib/systemd/system/systemd-networkd.service.
</span></span><span class="line"><span class="cl">Created symlink /etc/systemd/system/sockets.target.wants/systemd-networkd.socket → /lib/systemd/system/systemd-networkd.socket.
</span></span><span class="line"><span class="cl">Created symlink /etc/systemd/system/network-online.target.wants/systemd-networkd-wait-online.service → /lib/systemd/system/systemd-networkd-wait-online.service.
</span></span></code></pre></td></tr></table>
</div>
</div><p>修改 hostname 并添加 hosts</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">$ hostnamectl set-hostname vm-ubuntu-test
</span></span><span class="line"><span class="cl">$ cat >> /etc/hosts << EOF
</span></span><span class="line"><span class="cl">127.0.0.1 vm-ubuntu-test localhost
</span></span><span class="line"><span class="cl">::1 vm-ubuntu-test localhost ip6-localhost ip6-loopback
</span></span><span class="line"><span class="cl">ff02::1 ip6-allnodes
</span></span><span class="line"><span class="cl">ff02::2 ip6-allrouters
</span></span></code></pre></td></tr></table>
</div>
</div><p>最后 reboot 生效</p>
<p>享受全新的 ubuntu 体验吧</p>