<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Overlayroot on ポンコツ地方エンジニアの技術ブログ</title><link>https://blog-0847c6.gitlab.io/tags/overlayroot/</link><description>Recent content in Overlayroot on ポンコツ地方エンジニアの技術ブログ</description><generator>Hugo -- gohugo.io</generator><language>ja-jp</language><lastBuildDate>Fri, 19 Aug 2022 00:00:00 +0900</lastBuildDate><atom:link href="https://blog-0847c6.gitlab.io/tags/overlayroot/index.xml" rel="self" type="application/rss+xml"/><item><title>overlayroot 環境内で docker を使う方法</title><link>https://blog-0847c6.gitlab.io/posts/2022/08/19/overlayroot/</link><pubDate>Fri, 19 Aug 2022 00:00:00 +0900</pubDate><guid>https://blog-0847c6.gitlab.io/posts/2022/08/19/overlayroot/</guid><description>&lt;p&gt;overlayroot でルートファイルシステムを読み取り専用にしたところ、docker が使えなくなりました。&lt;/p&gt;
&lt;p&gt;OS は Ubuntu 20.04 です。&lt;br&gt;
overlayroot を有効にする方法などについては以前の記事を参考にしてください。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://kuttsun.blogspot.com/2022/04/overlayroot-ubuntu.html" target="_blank" rel="noopener"
 &gt;https://kuttsun.blogspot.com/2022/04/overlayroot-ubuntu.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="問題点"&gt;&lt;a href="#%e5%95%8f%e9%a1%8c%e7%82%b9" class="header-anchor"&gt;&lt;/a&gt;問題点
&lt;/h2&gt;&lt;p&gt;Docker がインストールされている環境で、overlayroot でルートファイルシステムを読み取り専用にした場合、docker コマンドを実行すると以下のようなエラーが発生します。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-console" data-lang="console"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="go"&gt;Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;いろいろ調べてみた結果、基本的に overlayroot が有効な状態では docker は使えないようです。&lt;br&gt;
一応以下にあるやり方で docker コンテナを立ち上げるところまではできました。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://superuser.com/questions/1526682/docker-in-overlayroot-environment-invalid-cross-device-link" target="_blank" rel="noopener"
 &gt;https://superuser.com/questions/1526682/docker-in-overlayroot-environment-invalid-cross-device-link&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/docker/for-linux/issues/775" target="_blank" rel="noopener"
 &gt;https://github.com/docker/for-linux/issues/775&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;しかし、そもそも Docker ボリュームには DB のデータなどを逐次格納していっているので、tmpfs 上（＝メモリ上）だとメモリがすぐ枯渇してしまいそうです。&lt;br&gt;
また、Docker コンテナ・イメージをアップデートしたい場合にも困ります。&lt;/p&gt;
&lt;p&gt;というわけで、少なくとも &lt;code&gt;/var/lib/docker&lt;/code&gt; の領域はパーティションを分けるしかないじゃないかというところに行き着きました。&lt;br&gt;
以下のページでも書き込み可能としたい場合はパーティションを分ける方法が紹介されています。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://armadillo.atmark-techno.com/index.php/blog/10899/8648" target="_blank" rel="noopener"
 &gt;https://armadillo.atmark-techno.com/index.php/blog/10899/8648&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;また、Docker に関するベストプラクティスでも、コンテナ用にパーティションを分けるとあります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://www.creationline.com/lab/aquasecurity/43087" target="_blank" rel="noopener"
 &gt;https://www.creationline.com/lab/aquasecurity/43087&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;その上で、Docker コンテナも read-only で起動すれば、ルートファイルシステムだけでなく Docker コンテナも保護できそうです。&lt;/p&gt;
&lt;h2 id="対処方法"&gt;&lt;a href="#%e5%af%be%e5%87%a6%e6%96%b9%e6%b3%95" class="header-anchor"&gt;&lt;/a&gt;対処方法
&lt;/h2&gt;&lt;p&gt;とりあえず以下のようにパーティションを分けることで overlayroot と docker の共存ができました。&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;パス&lt;/th&gt;
 &lt;th&gt;マウントポイント&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;/dev/sda1&lt;/td&gt;
 &lt;td&gt;EFI システムパーティション&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;/dev/sda2&lt;/td&gt;
 &lt;td&gt;/&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;/dev/sda3&lt;/td&gt;
 &lt;td&gt;/var&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;この状態で overlayroot をインストールし、&lt;code&gt;/etc/overlayroot.local.conf&lt;/code&gt; に &lt;code&gt;overlayroot=&amp;quot;tmpfs:recurse=0&amp;quot;&lt;/code&gt; を記載します。
コマンド一発でやる場合は以下です。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;overlayroot=&amp;#34;tmpfs:recurse=0&amp;#34;&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; sudo tee -a /etc/overlayroot.local.conf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;overlayroot のインストールや設定については以前の記事を参考にしてください。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://kuttsun.blogspot.com/2022/04/overlayroot-ubuntu.html" target="_blank" rel="noopener"
 &gt;https://kuttsun.blogspot.com/2022/04/overlayroot-ubuntu.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;今回はルートファイルシステムのみを読み取り専用にするので、&lt;code&gt;tmpfs:recurse=0&lt;/code&gt; を指定するらしいです。&lt;br&gt;
以下が参考になりました。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://gihyo.jp/admin/serial/01/ubuntu-recipe/0568" target="_blank" rel="noopener"
 &gt;https://gihyo.jp/admin/serial/01/ubuntu-recipe/0568&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;これで再起動すれば、ルートファイルシステムのみが読み取り専用となり、&lt;code&gt;/var&lt;/code&gt; は読み書き可能な状態となります。&lt;br&gt;
docker も普通に使えました。&lt;/p&gt;
&lt;h2 id="参考-url"&gt;&lt;a href="#%e5%8f%82%e8%80%83-url" class="header-anchor"&gt;&lt;/a&gt;参考 URL
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://superuser.com/questions/1526682/docker-in-overlayroot-environment-invalid-cross-device-link" target="_blank" rel="noopener"
 &gt;https://superuser.com/questions/1526682/docker-in-overlayroot-environment-invalid-cross-device-link&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/docker/for-linux/issues/775" target="_blank" rel="noopener"
 &gt;https://github.com/docker/for-linux/issues/775&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://armadillo.atmark-techno.com/index.php/blog/10899/8648" target="_blank" rel="noopener"
 &gt;https://armadillo.atmark-techno.com/index.php/blog/10899/8648&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://armadillo.atmark-techno.com/forum/armadillo/7894" target="_blank" rel="noopener"
 &gt;https://armadillo.atmark-techno.com/forum/armadillo/7894&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://spin.atomicobject.com/2015/03/10/protecting-ubuntu-root-filesystem/" target="_blank" rel="noopener"
 &gt;https://spin.atomicobject.com/2015/03/10/protecting-ubuntu-root-filesystem/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://kurosute.com/raspberrypi-overlayroot/" target="_blank" rel="noopener"
 &gt;https://kurosute.com/raspberrypi-overlayroot/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://qiita.com/kakkie/items/c4a9a2f2a9e4e802ca0b" target="_blank" rel="noopener"
 &gt;https://qiita.com/kakkie/items/c4a9a2f2a9e4e802ca0b&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://gihyo.jp/admin/serial/01/ubuntu-recipe/0568" target="_blank" rel="noopener"
 &gt;https://gihyo.jp/admin/serial/01/ubuntu-recipe/0568&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Jetson Xavier NX でルートファイルシステムを overlayroot で読み込み専用に設定する</title><link>https://blog-0847c6.gitlab.io/posts/2022/04/26/jetson-overlayroot/</link><pubDate>Tue, 26 Apr 2022 00:00:00 +0900</pubDate><guid>https://blog-0847c6.gitlab.io/posts/2022/04/26/jetson-overlayroot/</guid><description>&lt;p&gt;以前、Ubuntu で overlayroot を使ってルートファイルシステムを読み込み専用にしてみたのですが、Jetson Xavier NX で同じように試してみたところ、それだけではだめでした。&lt;/p&gt;
&lt;p&gt;恐らくですが、ブートローダーが EXTLINUX であることが原因のような気がしています。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://docs.nvidia.com/jetson/l4t/index.html#page/Tegra%20Linux%20Driver%20Package%20Development%20Guide/uboot_guide.html#wwpID0E0YD0HA" target="_blank" rel="noopener"
 &gt;https://docs.nvidia.com/jetson/l4t/index.html#page/Tegra%20Linux%20Driver%20Package%20Development%20Guide/uboot_guide.html#wwpID0E0YD0HA&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Jetson Xavier NX ではどうやってやればいいのかググってみると、NVIDIA のフォーラムで議論されているのが見つかりました。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://forums.developer.nvidia.com/t/xavier-nx-filesystem-to-readonly/185605" target="_blank" rel="noopener"
 &gt;https://forums.developer.nvidia.com/t/xavier-nx-filesystem-to-readonly/185605&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://forums.developer.nvidia.com/t/overlayfs-for-jetson/78540/29" target="_blank" rel="noopener"
 &gt;https://forums.developer.nvidia.com/t/overlayfs-for-jetson/78540/29&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;その中で、解決策として提示されていたのが以下です。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/negachov/overlayroot-jetpack" target="_blank" rel="noopener"
 &gt;https://github.com/negachov/overlayroot-jetpack&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="環境"&gt;&lt;a href="#%e7%92%b0%e5%a2%83" class="header-anchor"&gt;&lt;/a&gt;環境
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Jetson Xavior NX&lt;/li&gt;
&lt;li&gt;Ubuntu 18.04&lt;/li&gt;
&lt;li&gt;JetPack 4.5.1&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="overlayroot-のインストールと有効化"&gt;&lt;a href="#overlayroot-%e3%81%ae%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab%e3%81%a8%e6%9c%89%e5%8a%b9%e5%8c%96" class="header-anchor"&gt;&lt;/a&gt;overlayroot のインストールと有効化
&lt;/h2&gt;&lt;p&gt;以下の記事を参考にしてください。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://kuttsun.blogspot.com/2022/04/overlayroot-ubuntu.html" target="_blank" rel="noopener"
 &gt;https://kuttsun.blogspot.com/2022/04/overlayroot-ubuntu.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Jetson Xavier NX ではこれに加え、次のことが必要でした。&lt;/p&gt;
&lt;h2 id="bootinitrd-の置き換え"&gt;&lt;a href="#bootinitrd-%e3%81%ae%e7%bd%ae%e3%81%8d%e6%8f%9b%e3%81%88" class="header-anchor"&gt;&lt;/a&gt;/boot/initrd の置き換え
&lt;/h2&gt;&lt;p&gt;GitHub にスクリプトが公開されているので、まずこれをクローンします。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ git clone https://github.com/negachov/overlayroot-jetpack
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;あとは以下を実行するだけです。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ &lt;span class="nb"&gt;cd&lt;/span&gt; overlayroot-jetpack
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ sudo ./update-initramfs-jetpack
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ reboot
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;これで、再起動後に overlayroot が有効になっていました。&lt;/p&gt;
&lt;h2 id="参考-url"&gt;&lt;a href="#%e5%8f%82%e8%80%83-url" class="header-anchor"&gt;&lt;/a&gt;参考 URL
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://forums.developer.nvidia.com/t/xavier-nx-filesystem-to-readonly/185605" target="_blank" rel="noopener"
 &gt;https://forums.developer.nvidia.com/t/xavier-nx-filesystem-to-readonly/185605&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://forums.developer.nvidia.com/t/overlayfs-for-jetson/78540/29" target="_blank" rel="noopener"
 &gt;https://forums.developer.nvidia.com/t/overlayfs-for-jetson/78540/29&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://docs.nvidia.com/jetson/l4t/Tegra%20Linux%20Driver%20Package%20Development%20Guide/uboot_guide.html#wwpID0E0YD0HA" target="_blank" rel="noopener"
 &gt;https://docs.nvidia.com/jetson/l4t/Tegra%20Linux%20Driver%20Package%20Development%20Guide/uboot_guide.html#wwpID0E0YD0HA&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://zenn.dev/tunefs/articles/288d3a069f0cb3" target="_blank" rel="noopener"
 &gt;https://zenn.dev/tunefs/articles/288d3a069f0cb3&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Ubuntu のファイルシステムを overlayroot で読み込み専用にする</title><link>https://blog-0847c6.gitlab.io/posts/2022/04/25/overlayroot/</link><pubDate>Mon, 25 Apr 2022 00:00:00 +0900</pubDate><guid>https://blog-0847c6.gitlab.io/posts/2022/04/25/overlayroot/</guid><description>&lt;p&gt;電源ブチ切り対策の一環として、overlayroot で Ubuntu の rootfs を read only にしてみました。&lt;/p&gt;
&lt;p&gt;やり方はいろいろググってみましたが、以下のサイトがとても参考になりました。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://gihyo.jp/admin/serial/01/ubuntu-recipe/0568" target="_blank" rel="noopener"
 &gt;https://gihyo.jp/admin/serial/01/ubuntu-recipe/0568&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://zenn.dev/tunefs/articles/288d3a069f0cb3" target="_blank" rel="noopener"
 &gt;https://zenn.dev/tunefs/articles/288d3a069f0cb3&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="環境"&gt;&lt;a href="#%e7%92%b0%e5%a2%83" class="header-anchor"&gt;&lt;/a&gt;環境
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Ubuntu 20.04 (デスクトップ版)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="現在の状態を確認"&gt;&lt;a href="#%e7%8f%be%e5%9c%a8%e3%81%ae%e7%8a%b6%e6%85%8b%e3%82%92%e7%a2%ba%e8%aa%8d" class="header-anchor"&gt;&lt;/a&gt;現在の状態を確認
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;mount&lt;/code&gt; コマンドで確認してみます。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ mount
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;抜粋ですが、以下の状態が確認できます。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/dev/sda2 on / &lt;span class="nb"&gt;type&lt;/span&gt; ext4 &lt;span class="o"&gt;(&lt;/span&gt;rw,relatime,errors&lt;span class="o"&gt;=&lt;/span&gt;remount-ro&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="overlayroot-のインストール"&gt;&lt;a href="#overlayroot-%e3%81%ae%e3%82%a4%e3%83%b3%e3%82%b9%e3%83%88%e3%83%bc%e3%83%ab" class="header-anchor"&gt;&lt;/a&gt;overlayroot のインストール
&lt;/h2&gt;&lt;p&gt;サーバー版には最初からインストールされているそうですが、デスクトップ版にはインストールされていないので、apt でインストールします。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ sudo apt install overlayroot
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="overlayroot-の有効化"&gt;&lt;a href="#overlayroot-%e3%81%ae%e6%9c%89%e5%8a%b9%e5%8c%96" class="header-anchor"&gt;&lt;/a&gt;overlayroot の有効化
&lt;/h2&gt;&lt;p&gt;overlayroot を有効化するには、以下のいずれかの対応が必要だそうです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;カーネルパラメーターに &lt;code&gt;overlayroot=XXX&lt;/code&gt; を指定する&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/etc/overlayroot.local.conf&lt;/code&gt; に &lt;code&gt;overlayroot=&amp;quot;XXX&amp;quot;&lt;/code&gt; を指定する&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/etc/overlayroot.conf&lt;/code&gt; に &lt;code&gt;overlayroot=&amp;quot;XXX&amp;quot;&lt;/code&gt; を指定する&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;設定内容は上位のほうが優先されるそうです。&lt;br&gt;
今回は &lt;code&gt;/etc/overlayroot.local.conf&lt;/code&gt; に設定を追加します。&lt;br&gt;
まずはエディタで開きます。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ sudo gedit /etc/overlayroot.local.conf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;以下を追記します。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;overlayroot&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;tmpfs&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;コマンド一発でやるなら以下です。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;overlayroot=&amp;#34;tmpfs&amp;#34;&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; sudo tee -a /etc/overlayroot.local.conf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;tmpfs はメモリ上に作成ファイルシステムで、一時的にデータを格納するために使われます。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://linuc.org/study/knowledge/441/" target="_blank" rel="noopener"
 &gt;https://linuc.org/study/knowledge/441/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Linux ではマウントするファイルシステムの情報が &lt;code&gt;/etc/fstab&lt;/code&gt; に書かれていますが、ここが overlayroot における下位レイヤーとなり、読み込み専用レイヤーとなります。&lt;br&gt;
そして、先ほど追記した &lt;code&gt;tempfs&lt;/code&gt; が上位レイヤーとなり、書き込み可能レイヤーとなります。&lt;br&gt;
ここらへんは後述するように &lt;code&gt;mount&lt;/code&gt; コマンドで確認可能です。&lt;/p&gt;
&lt;p&gt;ただし、tmpfs はメモリ上に作成されたファイルシステムなので、再起動時にはデータは消えます。&lt;/p&gt;
&lt;h3 id="ルートファイルシステムのみを読み取り専用にする"&gt;&lt;a href="#%e3%83%ab%e3%83%bc%e3%83%88%e3%83%95%e3%82%a1%e3%82%a4%e3%83%ab%e3%82%b7%e3%82%b9%e3%83%86%e3%83%a0%e3%81%ae%e3%81%bf%e3%82%92%e8%aa%ad%e3%81%bf%e5%8f%96%e3%82%8a%e5%b0%82%e7%94%a8%e3%81%ab%e3%81%99%e3%82%8b" class="header-anchor"&gt;&lt;/a&gt;ルートファイルシステムのみを読み取り専用にする
&lt;/h3&gt;&lt;p&gt;パーティションを分けている場合などで、ルートファイルシステムのみを読み取り専用にするためには、&lt;code&gt;/etc/overlayroot.local.conf&lt;/code&gt; に &lt;code&gt;tmpfs:recurse=0&lt;/code&gt; を指定するらしいです。&lt;br&gt;
コマンド一発でやる場合は以下。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://gihyo.jp/admin/serial/01/ubuntu-recipe/0568" target="_blank" rel="noopener"
 &gt;https://gihyo.jp/admin/serial/01/ubuntu-recipe/0568&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;echo &amp;#39;overlayroot=&amp;#34;tmpfs:recurse=0&amp;#34;&amp;#39; | sudo tee -a /etc/overlayroot.local.conf
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;これで再起動すれば、ルートファイルシステムのみが読み取り専用となり、他のパーティションは読み書き可能な状態となります。&lt;/p&gt;
&lt;h2 id="確認"&gt;&lt;a href="#%e7%a2%ba%e8%aa%8d" class="header-anchor"&gt;&lt;/a&gt;確認
&lt;/h2&gt;&lt;p&gt;先ほどと同じように &lt;code&gt;mount&lt;/code&gt; コマンドで確認してみます。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ mount
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;抜粋ですが、以下の状態が確認できました。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/dev/sda2 on /media/root-ro &lt;span class="nb"&gt;type&lt;/span&gt; ext4 &lt;span class="o"&gt;(&lt;/span&gt;ro,relatime&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;tmpfs-root on /media/root-rw &lt;span class="nb"&gt;type&lt;/span&gt; tmpfs &lt;span class="o"&gt;(&lt;/span&gt;rw,relatime,inode64&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;overlayroot on / &lt;span class="nb"&gt;type&lt;/span&gt; overlay &lt;span class="o"&gt;(&lt;/span&gt;rw,relatime,lowerdir&lt;span class="o"&gt;=&lt;/span&gt;/media/root-ro,upperdir&lt;span class="o"&gt;=&lt;/span&gt;/media/root-rw/overlay,workdir&lt;span class="o"&gt;=&lt;/span&gt;/media/root-rw/overlay-workdir/_&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;ルートファイルシステムが &lt;code&gt;/media/root-ro&lt;/code&gt; に読み込み専用(ro)の下位レイヤー(lowerdir) として設定され、tmpfs が &lt;code&gt;/media/root-rw/overlay&lt;/code&gt; に書き込み可能(rw)な上位レイヤー(upperdir) して設定されているのが確認できます。&lt;/p&gt;
&lt;h3 id="ファイルが消えることを確認"&gt;&lt;a href="#%e3%83%95%e3%82%a1%e3%82%a4%e3%83%ab%e3%81%8c%e6%b6%88%e3%81%88%e3%82%8b%e3%81%93%e3%81%a8%e3%82%92%e7%a2%ba%e8%aa%8d" class="header-anchor"&gt;&lt;/a&gt;ファイルが消えることを確認
&lt;/h3&gt;&lt;p&gt;ついでに、ホームディレクトリに適当にファイルを作成し、再起動時にファイルが消えていることを確認します。&lt;/p&gt;
&lt;h2 id="overlayroot-の無効化"&gt;&lt;a href="#overlayroot-%e3%81%ae%e7%84%a1%e5%8a%b9%e5%8c%96" class="header-anchor"&gt;&lt;/a&gt;overlayroot の無効化
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;/etc/overlayroot.local.conf&lt;/code&gt; を削除するか、&lt;code&gt;/etc/overlayroot.local.conf&lt;/code&gt; を編集して中身を &lt;code&gt;overlayroot=&amp;quot;&amp;quot;&lt;/code&gt; に変更すれば、overlayroot の無効化されます。&lt;/p&gt;
&lt;p&gt;しかし、現在は overlayroot が有効化になっている状況なので、このまま変更しても再起動後にはまた元に戻ってしまいます。&lt;br&gt;
そのため、この変更は一時的に書き込みを許可した状態で行う必要があります。&lt;br&gt;
一時的に書き込み可能な状態にするには以下のコマンドを実行します。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ sudo overlayroot-chroot
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;そして、&lt;code&gt;/etc/overlayroot.local.conf&lt;/code&gt; を削除するか、&lt;code&gt;/etc/overlayroot.local.conf&lt;/code&gt; を編集して中身を &lt;code&gt;overlayroot=&amp;quot;&amp;quot;&lt;/code&gt; に変更します。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# rm /etc/overlayroot.local.conf&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;exit&lt;/code&gt; でシェルから抜ければ書き込み可能状態は終了します。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# exit&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;再起動後、overlayroot が無効状態になっています。&lt;/p&gt;
&lt;h2 id="grub-メニューで時間がかかることの対策"&gt;&lt;a href="#grub-%e3%83%a1%e3%83%8b%e3%83%a5%e3%83%bc%e3%81%a7%e6%99%82%e9%96%93%e3%81%8c%e3%81%8b%e3%81%8b%e3%82%8b%e3%81%93%e3%81%a8%e3%81%ae%e5%af%be%e7%ad%96" class="header-anchor"&gt;&lt;/a&gt;GRUB メニューで時間がかかることの対策
&lt;/h2&gt;&lt;p&gt;overlayroot を有効にした状態で再起動すると、GRUB メニューが表示され、30秒ほど待たされるようになります。&lt;br&gt;
詳細は以下をご参照ください。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://gihyo.jp/admin/serial/01/ubuntu-recipe/0568" target="_blank" rel="noopener"
 &gt;https://gihyo.jp/admin/serial/01/ubuntu-recipe/0568&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;起動が30秒も遅くなるのは困るので、以下を参考にして GRUB の設定を変更しました。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://askubuntu.com/questions/754974/grub-defaulting-to-30-second-timeout" target="_blank" rel="noopener"
 &gt;https://askubuntu.com/questions/754974/grub-defaulting-to-30-second-timeout&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://plaza.rakuten.co.jp/ftechworks/diary/202005130001/" target="_blank" rel="noopener"
 &gt;https://plaza.rakuten.co.jp/ftechworks/diary/202005130001/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://www.hiroom2.com/2018/04/30/ubuntu-1804-serial-console-ja/" target="_blank" rel="noopener"
 &gt;https://www.hiroom2.com/2018/04/30/ubuntu-1804-serial-console-ja/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;※以下は overlayroot を無効にした状態で行う必要があります！&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;/etc/default/grub&lt;/code&gt; をエディタで開きます。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ sudo nano /etc/default/grub
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;以下を追記します。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;GRUB_RECORDFAIL_TIMEOUT=$GRUB_TIMEOUT
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;設定を反映するために以下のコマンドを実行します。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ sudo grub-mkconfig -o /boot/grub/grub.cfg
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;これで overlayroot を有効にしても起動時間は変わらなくなりました。&lt;/p&gt;
&lt;h2 id="参考-url"&gt;&lt;a href="#%e5%8f%82%e8%80%83-url" class="header-anchor"&gt;&lt;/a&gt;参考 URL
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://gihyo.jp/admin/serial/01/ubuntu-recipe/0568" target="_blank" rel="noopener"
 &gt;https://gihyo.jp/admin/serial/01/ubuntu-recipe/0568&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://askubuntu.com/questions/754974/grub-defaulting-to-30-second-timeout" target="_blank" rel="noopener"
 &gt;https://askubuntu.com/questions/754974/grub-defaulting-to-30-second-timeout&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://plaza.rakuten.co.jp/ftechworks/diary/202005130001/" target="_blank" rel="noopener"
 &gt;https://plaza.rakuten.co.jp/ftechworks/diary/202005130001/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://www.hiroom2.com/2018/04/30/ubuntu-1804-serial-console-ja/" target="_blank" rel="noopener"
 &gt;https://www.hiroom2.com/2018/04/30/ubuntu-1804-serial-console-ja/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>