<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Linux on Alicey's blog</title><link>https://blog.alicey.dev/tags/linux/</link><description>Recent content in Linux on Alicey's blog</description><generator>Hugo</generator><language>ja</language><lastBuildDate>Sat, 09 May 2026 07:18:48 +0900</lastBuildDate><atom:link href="https://blog.alicey.dev/tags/linux/index.xml" rel="self" type="application/rss+xml"/><item><title>[CVE-2026-31431 CopyFail] RockyLinux10での検証と対策</title><link>https://blog.alicey.dev/2026/05/cve-2026-31431-copyfail-rockylinux10.html</link><pubDate>Fri, 01 May 2026 00:47:00 +0900</pubDate><guid>https://blog.alicey.dev/2026/05/cve-2026-31431-copyfail-rockylinux10.html</guid><description>&lt;p>&lt;span style="font-family: LINE Seed JP"> こんにちは。&lt;/span>&lt;/p>&lt;p>&lt;span style="font-family: LINE Seed JP">Twitterで話題の&lt;a href="https://copy.fail/" target="_blank">CVE-2026-31431 CopyFail&lt;/a> を実際にRockyLinux10(RHEL10相当)で動かし、対策方法が有効か確認しようと思います。&lt;/span>&lt;/p></description></item><item><title>LinuxからIX2215にSSH接続する際に出るエラーの解決</title><link>https://blog.alicey.dev/2025/04/linuxix2215ssh.html</link><pubDate>Sun, 06 Apr 2025 17:08:00 +0900</pubDate><guid>https://blog.alicey.dev/2025/04/linuxix2215ssh.html</guid><description>&lt;p> こんにちは。&lt;br>今回はFedora 41やRHEL9系(RockyLinuxなど)のLinuxからIX2215にSSH接続しようとしたら、エラーが出て接続できなかったので、改善法を備忘録として残しておきます。&lt;/p></description></item><item><title>Linux KernelをBuildしようとしたら詰まったところ</title><link>https://blog.alicey.dev/2025/03/linux-kernelbuild.html</link><pubDate>Sun, 30 Mar 2025 23:07:00 +0900</pubDate><guid>https://blog.alicey.dev/2025/03/linux-kernelbuild.html</guid><description>&lt;p> こんにちは。&lt;br>今回は&lt;a href="http://kernel.org" rel="nofollow" target="_blank">kernel.org&lt;/a>にあるKernelをBuildしようとしたところErrorになり詰まったので、改善方法をメモがてら残しておきます。&lt;/p>&lt;p>&lt;br>&lt;/p>&lt;h2>Error内容&lt;/h2>&lt;div>makeを実行してしばらくすると以下のようなエラーになります。&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>```&lt;/div>&lt;div>&lt;div>  CC [M]  arch/x86/kvm/svm/avic.o&lt;/div>&lt;div>  CC [M]  arch/x86/kvm/svm/sev.o&lt;/div>&lt;div>  CC      kernel/context_tracking.o&lt;/div>&lt;div>  CC      kernel/iomem.o&lt;/div>&lt;div>  CC [M]  arch/x86/kvm/svm/hyperv.o&lt;/div>&lt;div>  CC [M]  arch/x86/kvm/svm/svm_onhyperv.o&lt;/div>&lt;div>  CC      kernel/rseq.o&lt;/div>&lt;div>  CC      kernel/watch_queue.o&lt;/div>&lt;div>  LD [M]  arch/x86/kvm/kvm.o&lt;/div>&lt;div>  AS [M]  arch/x86/kvm/vmx/vmenter.o&lt;/div>&lt;div>  CHK     kernel/kheaders_data.tar.xz&lt;/div>&lt;div>  CC [M]  kernel/torture.o&lt;/div>&lt;div>  AS [M]  arch/x86/kvm/svm/vmenter.o&lt;/div>&lt;div>  GEN     kernel/kheaders_data.tar.xz&lt;/div>&lt;div>  LD [M]  arch/x86/kvm/kvm-intel.o&lt;/div>&lt;div>  LD [M]  arch/x86/kvm/kvm-amd.o&lt;/div>&lt;div>  AR      kernel/built-in.a&lt;/div>&lt;div>  CC [M]  kernel/kheaders.o&lt;/div>&lt;div>make[2]: *** [/home/alicey/work/alicey-kernel/6.13.8/BUILD/linux-6.13.8/Makefile:1989: .] Error 2&lt;/div>&lt;div>make[1]: *** [Makefile:251: __sub-make] Error 2&lt;/div>&lt;div>make[1]: Leaving directory '/home/alicey/work/alicey-kernel/6.13.8/BUILD/linux-6.13.8'&lt;/div>&lt;div>error: Bad exit status from /var/tmp/rpm-tmp.CINzKf (%build)&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>RPM build errors:&lt;/div>&lt;div>    Bad exit status from /var/tmp/rpm-tmp.CINzKf (%build)&lt;/div>&lt;div>make: *** [Makefile:12: build] Error 1&lt;/div>&lt;/div>&lt;div>```&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>はじめは、kheaders.oのBuildに失敗でもしているのかと思い単独Buildしても問題なく、-Vオプションを付けてmakeを実行してもなぜ失敗しているのかよくわかりませんでした。&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>.configを作る際に、defconifgで作るとうまくいき(kernel moduleが足りないので、起動には失敗してemergency modeになる)、Buildに利用していたRockyLinuxの/boot配下からCopyしたものに対してolddefconfigするとBuildに失敗する状況でした。&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;h2>改善方法&lt;/h2>&lt;div>CONFIG_SYSTEM_TRUSTED_KEYS の指定を空にすることで改善しました。&lt;/div>&lt;div>SecureBootなどで利用する署名用の鍵なのでしょうか。&lt;/div>&lt;div>(適当にググると皆さん無効にしているようには見えますが...)&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>asis&lt;/div>&lt;div>```&lt;/div>&lt;div>&lt;div>$ cat /boot/config-5.14.0-503.26.1.el9_5.x86_64 |grep certs/rhel.pem&lt;/div>&lt;div>CONFIG_SYSTEM_TRUSTED_KEYS="certs/rhel.pem"&lt;/div>&lt;/div>&lt;div>```&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>tobe&lt;/div>&lt;div>```&lt;/div>&lt;div>&lt;div>$ cat SOURCES/config |grep CONFIG_SYSTEM_TRUSTED_KEYS&lt;/div>&lt;div>CONFIG_SYSTEM_TRUSTED_KEYS=""&lt;/div>&lt;/div>&lt;div>```&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>（余談ですが、このオプションみつけるまでmenuconfig→buildを繰り返したので辛かった....）&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;h2>修正後&lt;/h2>&lt;div>修正してBuildしたところ問題なくInstallできました！&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>&lt;a href="https://blog.alicey.dev/2025/03/linux-kernelbuild/img/777a6a7e4cae8fc3_hu5300786250270517442.webp" class="lightbox-trigger">
 &lt;img src="https://blog.alicey.dev/2025/03/linux-kernelbuild/img/777a6a7e4cae8fc3_hu5300786250270517442.webp"
 alt=""
 width="767"
 height="139"
 loading="lazy" decoding="async">
 &lt;/a>&lt;div>&lt;br>&lt;/div>余談ですが、defconfigでBuildしたRPMと、olddefconfigでBuildしたRPMの容量はそれぞれ&lt;/div>&lt;div>defconfig: 14MB&lt;/div>&lt;div>olddefconfig: 76MB&lt;/div>&lt;div>程度になりました。&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>出来上がったものはこの辺に置いておきます&lt;/div>&lt;div>&lt;a href="https://yumrepo.alicey.dev/alicey-kernel/" target="_blank">https://yumrepo.alicey.dev/alicey-kernel/&lt;br>&lt;/a>&lt;br>&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>それでは、ばいち。&lt;/div></description></item><item><title>OCIの無料Instanceでyum(dnf)使うとOOMする対策</title><link>https://blog.alicey.dev/2024/10/oci-yum-oom.html</link><pubDate>Sun, 20 Oct 2024 20:39:00 +0900</pubDate><guid>https://blog.alicey.dev/2024/10/oci-yum-oom.html</guid><description>&lt;p> こんにちは、今回はOracleCloud(OCI)で利用できる無料Instance(Memory 1GB)で、yum install などのコマンドを叩くとフリーズしたり、OOMして使い物にならなかったため対策をしました。その備忘録です。&lt;/p></description></item><item><title>1つのKubernetesクラスタにingress-nginxを2個以上デプロイする</title><link>https://blog.alicey.dev/2024/09/1kubernetesingress-nginx2.html</link><pubDate>Fri, 27 Sep 2024 07:29:00 +0900</pubDate><guid>https://blog.alicey.dev/2024/09/1kubernetesingress-nginx2.html</guid><description>&lt;p> こんにちは。&lt;br>今回は、自宅K8sでingress-nginxを2つデプロイしたので備忘録として残しておきます。&lt;br>Service: LBが使える前提です。ない場合はMetalLBなどで作成しましょう。&lt;/p></description></item><item><title>古のMiniDVをUbuntuで吸い出した備忘録</title><link>https://blog.alicey.dev/2024/03/minidvubuntu.html</link><pubDate>Sun, 10 Mar 2024 18:18:00 +0900</pubDate><guid>https://blog.alicey.dev/2024/03/minidvubuntu.html</guid><description>&lt;p> こんにちは。&lt;/p>&lt;p>今回は、古のテープカメラのメディアであるMiniDVのデータを吸い出して一般的なPCで開ける状態にしたログを残します。&lt;/p></description></item><item><title>NTPサーバー「SEIKO TS-2550」導入してみた</title><link>https://blog.alicey.dev/2023/12/ntpseiko-ts-2550.html</link><pubDate>Sun, 17 Dec 2023 23:36:00 +0900</pubDate><guid>https://blog.alicey.dev/2023/12/ntpseiko-ts-2550.html</guid><description>&lt;p> こんにちは、今回ヤフオクでTS-2550(TJ)というNTPサーバ(TimeServer)を購入しみたので軽くご紹介します。&lt;/p></description></item><item><title>【HPE】ML110のRAIDカードとNICのファームウェアをUbuntuでアップデートした備忘録</title><link>https://blog.alicey.dev/2023/06/hpeml110raidnicubuntu.html</link><pubDate>Sun, 25 Jun 2023 23:37:00 +0900</pubDate><guid>https://blog.alicey.dev/2023/06/hpeml110raidnicubuntu.html</guid><description>&lt;div> こんにちは。&lt;/div>&lt;div>HPE ML110 Gen9のRAIDカード(Smart Array P440)とNIC(331T, 330i)をUbuntuでアップデートしたので、その手順を記録として残しておきます。&lt;/div>&lt;div>なぜこのような備忘録を書いたかというと、HPEで配布されるファームウェアは基本WinとRedHatを基準にしており、Ubuntuではひと手間加える必要があるためです。&lt;/div>&lt;div>&lt;span style="color: red; font-size: x-small">※筆者はこの手順を参考にして起きたトラブル(機器の故障等)の責任の一切を負いません。自己責任でお願いします。&lt;/span>&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;h3>手順１: ファームウェアのダウンロード&lt;/h3>&lt;div>HPEのサポートページからファームウェアをダウンロードします。&lt;/div>&lt;div>URLは&lt;a href="https://support.hpe.com/connect/s/softwaredetails?language=ja&amp;amp;softwareId=MTX_26880c85fb3e4f5897e03283cc" rel="nofollow" target="_blank">このへん&lt;/a>。&lt;/div>&lt;div>このとき、OSの選択肢にUbuntuはないため、Red Hat Enterprise Linuxを選択しておきます。そのためrpmファイルがダウンロードされます。&lt;/div>&lt;div>ダウンロードが成功したら、scpなどを用いてサーバにコピーします。&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;h3>手順2: rpmファイルをdebファイルにコンバート&lt;/h3>&lt;div>rpmファイルをdebにコンバートするために、 &lt;span style="background-color: #eeeeee">alien&lt;/span> というミドルウェアを利用します。&lt;/div>&lt;div>以下コマンドでインストールします。&lt;/div>&lt;div>&amp;gt; &lt;span style="background-color: #eeeeee">sudo apt update &amp;amp;&amp;amp; sudo apt install -y alien&lt;/span>&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>&lt;span>インストールに成功したらファイルのコンバートを行います。コンバートは以下コマンドで行えます&lt;/span>&lt;/div>&lt;div>&lt;span>&amp;gt; &lt;/span>&lt;span style="background-color: #eeeeee">alien [firmware-filename].rpm&lt;/span>&lt;/div>&lt;div>&lt;span>&lt;br>&lt;/span>&lt;/div>&lt;div>&lt;span>完了すると、同一ディレクトリに &lt;/span>&lt;span style="background-color: #eeeeee">[firmware-filename].deb&lt;/span> ファイルが生成されます。&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;h3>手順3: debパッケージをInstall&lt;/h3>&lt;div>debファイルを取り込むためには、dpkgコマンドを利用します。以下コマンドで作業します。&lt;/div>&lt;div>&amp;gt; &lt;span style="background-color: #eeeeee">dpkg -i [firmware-filename].deb&lt;/span>&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>HPのファームウェアの場合、 &lt;span style="background-color: #eeeeee">/lib/x86_64-linux-gnu/&lt;/span> 配下にフォルダが作成されるようです。&lt;/div>&lt;div>cdコマンドで移動して、存在を確認します。&lt;/div>&lt;div>&amp;gt; &lt;span style="background-color: #eeeeee">cd /lib/x86_64-linux-gnu/[firmware-filename]/&lt;/span>&lt;/div>&lt;div>&amp;gt; &lt;span style="background-color: #eeeeee">ls -al&lt;/span>&lt;/div>&lt;div>&lt;span style="background-color: #eeeeee">&lt;br>&lt;/span>&lt;/div>&lt;div>&lt;span>(パッケージのアンインストールは  &lt;/span>&lt;span style="background-color: #eeeeee">dpkg -r&lt;/span> でできます。&lt;span>)&lt;/span>&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;h3>手順4: ファームウェアインストーラの実行&lt;/h3>&lt;div>ファームウェアをRAIDカードやNICに適応します。&lt;/div>&lt;div>電源状況等には注意して行うと良いと思います。&lt;/div>&lt;div>この手順はアップデートする機器により多少異なるため、ファームウェアのインストールページを確認すると良いと思います。&lt;/div>&lt;div>一例のみ掲載します。&lt;/div>&lt;div>例1: &amp;gt; &lt;span style="background-color: #eeeeee">./setup&lt;/span>&lt;/div>&lt;div>例2: &amp;gt; &lt;span style="background-color: #eeeeee">./CP042888.scexe&lt;/span>&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>実行すると、どのカードに対して適応するかなどをプロンプトで質問されるので、該当するものを選びます。&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;h3>おまけ&lt;/h3>&lt;div>ちなみに、この手順を利用してもUbuntuではインストールできないものもありました。&lt;/div>&lt;div>QLogicの10G NICのドライバの場合、次のようなエラーが起こりました。&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;a href="https://blog.alicey.dev/2023/06/hpeml110raidnicubuntu/img/78a7dfb86da39225_hu4813860911422341781.webp" class="lightbox-trigger">
 &lt;img src="https://blog.alicey.dev/2023/06/hpeml110raidnicubuntu/img/78a7dfb86da39225_hu4813860911422341781.webp"
 alt=""
 width="908"
 height="98"
 loading="lazy" decoding="async">
 &lt;/a>&lt;br>&lt;div>&lt;br>&lt;/div>&lt;div>こういった場合は、大人しくRHEL系のOSやWindowsを使うべきでしょう。&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>&lt;span>&lt;br>&lt;/span>&lt;/div>&lt;div>&lt;span>&lt;br>&lt;/span>&lt;/div>&lt;div>&lt;br>&lt;/div></description></item><item><title>Zabbixとラズパイで室温監視してみた</title><link>https://blog.alicey.dev/2023/03/temp-zabbix.html</link><pubDate>Wed, 08 Mar 2023 05:35:00 +0900</pubDate><guid>https://blog.alicey.dev/2023/03/temp-zabbix.html</guid><description>&lt;p> こんにちは&lt;br>先日、エアコンが突然停止していたことに気づかず、サーバをおいている部屋の温度が45度になり、ONUが停止。リモート操作を受け付けなくなるという事件がおきました。&lt;/p></description></item><item><title>流行りの「おうちKubernetesクラスタ」やってみた</title><link>https://blog.alicey.dev/2022/02/kubernetes.html</link><pubDate>Sat, 19 Feb 2022 16:22:00 +0900</pubDate><guid>https://blog.alicey.dev/2022/02/kubernetes.html</guid><description>&lt;p> こんにちは。&lt;br>今回は、RaspberryPi4が2台手に入ったので、「おうちKubernetesクラスタ」を構築してみたいと思います。「おうちKubernetes」といえば、株式会社サイバーエージェントの「&lt;a href="https://developers.cyberagent.co.jp/blog/archives/27443/" target="_blank">おうちKubernetesインターン&lt;/a>」が有名かと思いますので、気になる方は覗いてみてください。&lt;/p></description></item><item><title>【Kubernetes】[pod cidr not assigned] flannelインストール時にハマったこと。</title><link>https://blog.alicey.dev/2022/02/k8s-flannel.html</link><pubDate>Tue, 01 Feb 2022 01:39:00 +0900</pubDate><guid>https://blog.alicey.dev/2022/02/k8s-flannel.html</guid><description>&lt;p>&lt;a href="https://github.com/kelseyhightower/kubernetes-the-hard-way" rel="nofollow" target="_blank">Kubernetes The Hard Way&lt;/a>を参考にしたオンプレKubernetsクラスタに&lt;a href="https://github.com/flannel-io/flannel" rel="nofollow" target="_blank">flannel&lt;/a>を構築しようとしたところ、ハマった点があるので、ご紹介します。&lt;/p>&lt;p>&lt;a href="https://blog.alicey.dev/2021/12/kubernetescalico.html" target="_blank">前回の記事(【Kubernetes】Calicoインストール時にハマったこと。)&lt;/a>も似た内容を取り扱っているため、参考にしていただけると嬉しいです。&lt;/p>&lt;p>&lt;br>&lt;/p>&lt;h2>エラー内容&lt;/h2>&lt;div>各ノードで&lt;/div>&lt;div>&lt;b>sudo sysctl net.ipv4.conf.all.forwarding=1&lt;/b>&lt;/div>&lt;div>&lt;b>sudo sysctl net.ipv6.conf.all.forwarding=1&lt;/b>&lt;br>を実行し、&lt;/div>&lt;div>&lt;b>kube-flannel.yml&lt;/b>を&lt;b>apply&lt;/b>したところ、下記画像のようにクラッシュし、再起動を繰り返します。&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>&lt;a href="https://blog.alicey.dev/2022/02/k8s-flannel/img/58e828436cf2904a_hu4394775999323284024.webp" class="lightbox-trigger">
 &lt;img src="https://blog.alicey.dev/2022/02/k8s-flannel/img/58e828436cf2904a_hu4394775999323284024.webp"
 alt=""
 width="636"
 height="93"
 loading="lazy" decoding="async">
 &lt;/a>&lt;br>&lt;br>&lt;/div>&lt;div>エラー内容は、&lt;br>[&lt;b>Error registering network: failed to acquire lease: node "*NodeName*" pod cidr not assigned&lt;/b>]&lt;br>となっており、&lt;b>PodCIDR&lt;/b>が設定されていないといった旨を示しています。&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>&lt;a href="https://blog.alicey.dev/2022/02/k8s-flannel/img/90cad8878654e914_hu7716610413010456336.webp" class="lightbox-trigger">
 &lt;img src="https://blog.alicey.dev/2022/02/k8s-flannel/img/90cad8878654e914_hu7716610413010456336.webp"
 alt=""
 width="1420"
 height="339"
 loading="lazy" decoding="async">
 &lt;/a>&lt;br>&lt;br>&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;h2>改善方法&lt;/h2>&lt;div>&lt;a href="https://blog.alicey.dev/2022/02/k8s-flannel/img/dd4582bbf27a3474_hu4942060307044828549.webp" class="lightbox-trigger">
 &lt;img src="https://blog.alicey.dev/2022/02/k8s-flannel/img/dd4582bbf27a3474_hu4942060307044828549.webp"
 alt=""
 width="1025"
 height="749"
 loading="lazy" decoding="async">
 &lt;/a>&lt;div class="separator">&lt;a href="https://github.com/kelseyhightower/kubernetes-the-hard-way/blob/master/docs/08-bootstrapping-kubernetes-controllers.md#configure-the-kubernetes-controller-manager" rel="nofollow" target="_blank">Configure the Kubernetes Controller Manager&lt;/a>&lt;br>&lt;/div>&lt;br>&lt;a href="https://blog.alicey.dev/2022/02/k8s-flannel/img/6f9162f841680d8b_hu3486704972641404885.webp" class="lightbox-trigger">
 &lt;img src="https://blog.alicey.dev/2022/02/k8s-flannel/img/6f9162f841680d8b_hu3486704972641404885.webp"
 alt=""
 width="576"
 height="196"
 loading="lazy" decoding="async">
 &lt;/a>&lt;br>上記のファイルに変更を加えることで改善します。&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;h3>手順&lt;/h3>&lt;div>&lt;ol>&lt;li>&lt;b>sudo vi /etc/systemd/system/kube-controller-manager.service&lt;/b> &lt;br>でエディタを開く&lt;/li>&lt;li>&lt;b>--allocate-node-cidrs=true \&lt;/b> &lt;br>を追記する&lt;/li>&lt;li>保存する&lt;/li>&lt;li>&lt;b>sudo systemctl daemon-reload&lt;br>sudo systemctl restart kube-controller-manager&lt;/b> &lt;br>で再読み込みする&lt;/li>&lt;/ol>&lt;/div>&lt;div>(すべてのノードで行います。)&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;h2>結果&lt;/h2>&lt;div>&lt;a href="https://blog.alicey.dev/2022/02/k8s-flannel/img/fc5128365fa11d30_hu2117142756630235382.webp" class="lightbox-trigger">
 &lt;img src="https://blog.alicey.dev/2022/02/k8s-flannel/img/fc5128365fa11d30_hu2117142756630235382.webp"
 alt=""
 width="1413"
 height="588"
 loading="lazy" decoding="async">
 &lt;/a>&lt;br>&lt;br>&lt;/div>&lt;div>正常に動作するようになりました。&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>初心者殺しだ...ばいち。&lt;/div></description></item><item><title>【Kubernetes】Calicoインストール時にハマったこと。</title><link>https://blog.alicey.dev/2021/12/kubernetescalico.html</link><pubDate>Mon, 06 Dec 2021 11:12:00 +0900</pubDate><guid>https://blog.alicey.dev/2021/12/kubernetescalico.html</guid><description>&lt;p>&lt;/p>&lt;a href="https://blog.alicey.dev/2021/12/kubernetescalico/img/56d6665b2ffb5e81_hu879352853489370369.webp" class="lightbox-trigger">
 &lt;img src="https://blog.alicey.dev/2021/12/kubernetescalico/img/56d6665b2ffb5e81_hu879352853489370369.webp"
 alt=""
 width="703"
 height="650"
 loading="lazy" decoding="async">
 &lt;/a>&lt;br> 先日、&lt;a href="https://github.com/kelseyhightower/kubernetes-the-hard-way" rel="nofollow" target="_blank">Kubetenetes-The-Hard-Way&lt;/a>&lt;span>(オンプレ3台構成にアレンジしてます)&lt;/span>を行い、初めてKubernetes触れました。その後、ネットワーク周りで遊ぶために&lt;a href="https://www.tigera.io/project-calico/" rel="nofollow" target="_blank">Calico&lt;/a>をインストールしようとしたところ、若干ハマった部分があるので、簡単にご紹介します。&lt;p>&lt;/p>&lt;p>&lt;br>&lt;/p>&lt;h2>症状&lt;/h2>&lt;div>&lt;a href="https://projectcalico.docs.tigera.io/archive/v3.20/getting-started/kubernetes/self-managed-onprem/onpremises" rel="nofollow" target="_blank">Install Calico networking and network policy for on-premises deployments&lt;/a>を参考にCalicoとcalicoctlを &lt;b>kubectl apply -f calico.yaml&lt;/b> , &lt;b>kubectl apply -f calicoctl.yaml&lt;/b> でデプロイしました。&lt;/div>&lt;div>yamlファイルにはPod CIDRの項目のみ、変更を行っています。&lt;/div>&lt;div>&lt;a href="https://blog.alicey.dev/2021/12/kubernetescalico/img/1769ba3abc3c8125_hu629328151621056061.webp" class="lightbox-trigger">
 &lt;img src="https://blog.alicey.dev/2021/12/kubernetescalico/img/1769ba3abc3c8125_hu629328151621056061.webp"
 alt=""
 width="1252"
 height="122"
 loading="lazy" decoding="async">
 &lt;/a>&lt;br>&lt;br>&lt;/div>&lt;div>しかし、Podに割り振られるIPアドレスはデプロイ以前と同様のもので、&lt;a href="https://docs.projectcalico.org/security/tutorials/kubernetes-policy-basic" rel="nofollow" target="_blank">Kubernetes policy, basic tutorial&lt;/a>を参考にネットワークポリシーのテストをしても、中途半端に反映されているような挙動をし、アクセス拒否の設定をしても、アクセスできてしまう(未設定時より時間かかったりする印象)といった状態でした。&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;h2>原因と改善策&lt;/h2>&lt;div>そこで、改めてCalicoのインストール手順やKubernetes-The-Hard-Wayの手順を確認した所、初歩的なミスを見つけました。&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>Calicoをインストールする際は&lt;/div>&lt;div>&lt;ul>&lt;li>&lt;a href="https://github.com/kelseyhightower/kubernetes-the-hard-way/blob/master/docs/09-bootstrapping-kubernetes-workers.md#configure-cni-networking" rel="nofollow" target="_blank">Configure CNI Networking&lt;/a>&lt;/li>&lt;/ul>&lt;/div>&lt;div>が不要になります。また、オンプレ用にカスタマイズして行っていたルーティングの設定も不要になりました。&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>ここでは、&lt;b>10-bridge.conf, &lt;/b>&lt;b>99-loopback.conf&lt;/b>を作成していますが、Calicoをインストールすると以下のようなコンフィグファイルが自動で生成されます。&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>&lt;a href="https://blog.alicey.dev/2021/12/kubernetescalico/img/e95c50582b2ae29f_hu5486732378438558030.webp" class="lightbox-trigger">
 &lt;img src="https://blog.alicey.dev/2021/12/kubernetescalico/img/e95c50582b2ae29f_hu5486732378438558030.webp"
 alt=""
 width="338"
 height="47"
 loading="lazy" decoding="async">
 &lt;/a>&lt;br>&lt;br>&lt;/div>&lt;div>というわけで、&lt;b>rm 10-bridge.conf 99-loopback.conf&lt;/b>で設定ファイルを削除し、再度確認すると、&lt;/div>&lt;div>&lt;a href="https://blog.alicey.dev/2021/12/kubernetescalico/img/2b14d5dd53d2db7b_hu5307384877804852910.webp" class="lightbox-trigger">
 &lt;img src="https://blog.alicey.dev/2021/12/kubernetescalico/img/2b14d5dd53d2db7b_hu5307384877804852910.webp"
 alt=""
 width="1326"
 height="512"
 loading="lazy" decoding="async">
 &lt;/a>&lt;div>&lt;br>&lt;/div>Calicoが生成したIPアドレスに置き換わり、ネットワークポリシーも適応できるようになりました。&lt;br>&lt;br>&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;h2>まとめ&lt;/h2>&lt;div>初Kubernetes、仕組みを理解しない状態で触るとハマりポイントが非常に多く、苦戦していますが、わかると楽しく、非常に面白いシステムです。&lt;/div>&lt;div>是非皆さんも遊んでみてください。&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;p>&lt;br>&lt;/p></description></item><item><title>DockerでDjango(SQLite)な開発環境を用意する</title><link>https://blog.alicey.dev/2021/08/dockerdjangosqlite.html</link><pubDate>Thu, 19 Aug 2021 02:56:00 +0900</pubDate><guid>https://blog.alicey.dev/2021/08/dockerdjangosqlite.html</guid><description>&lt;h1> DockerでDjango(SQLite)な開発環境を用意する&lt;/h1>&lt;div>&lt;a href="https://blog.alicey.dev/2021/08/dockerdjangosqlite/img/16ac204b04f823bb_hu12709945454257530165.webp" class="lightbox-trigger">
 &lt;img src="https://blog.alicey.dev/2021/08/dockerdjangosqlite/img/16ac204b04f823bb_hu12709945454257530165.webp"
 alt=""
 width="1002"
 height="420"
 loading="lazy" decoding="async">
 &lt;/a>&lt;br>&lt;/div>&lt;div>今回は、Pythonで実装されたWebフレームワークの1つである、DjangoをDockerコンテナ上で動かす環境を作っていきます。環境は以下のようになっています。本来であれば&lt;b>コンテナはなるべく軽く&lt;/b>、&lt;b>1コンテナ1アプリケーション&lt;/b>構成で作るべきだとは思いますが、今回は開発しやすさを優先して構築しています。&lt;/div>&lt;div>DBにSQLiteを利用していることや、Shellにexecして作業しているのもこの為で、コンテナに馴染みのない人でもわかりやすいことや、開発時のDBを共有しやすくするためにこの構成にしています。&lt;/div>&lt;div>もっとコンテナの特徴を生かした構成にしたい場合や、本番環境で利用したい場合は他のサイト(&lt;a href="https://docs.docker.jp/compose/django.html" rel="nofollow" target="_blank">ドキュメン&lt;/a>ト等)をご覧ください。&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>Dockerバージョン&lt;/div>&lt;div>&lt;ul>&lt;li>Docker version 20.10.7, build f0df350&lt;/li>&lt;/ul>&lt;div>入れるもの&lt;/div>&lt;/div>&lt;div>&lt;ul>&lt;li>Python3.9.6&lt;/li>&lt;li>Django3.2.5&lt;/li>&lt;li>SQLite3&lt;/li>&lt;li>その他使うもの(vim, lessなど)&lt;/li>&lt;/ul>&lt;div>&lt;br>&lt;/div>&lt;/div>&lt;div>今回作成したファイルは&lt;a href="https://github.com/Alicey0719/pythonDjangoDevelopEnv" target="_blank">GitHub&lt;/a>に掲載しています。&lt;/div>&lt;div>git cloneしていただければ、そのまま動くと思います。&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;h2>使い方&lt;/h2>&lt;div>まず、git cloneでGitHubからファイルを落とします。(コードをコピペしても動きます)&lt;/div>&lt;div>&amp;gt; git clone https://github.com/Alicey0719/pythonDjangoDevelopEnv.git&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>&lt;a href="https://blog.alicey.dev/2021/08/dockerdjangosqlite/img/6e9e7390875fbf04_hu6322068163805801501.webp" class="lightbox-trigger">
 &lt;img src="https://blog.alicey.dev/2021/08/dockerdjangosqlite/img/6e9e7390875fbf04_hu6322068163805801501.webp"
 alt=""
 width="779"
 height="231"
 loading="lazy" decoding="async">
 &lt;/a>&lt;br>次に、落ちてきたディレクトリに移動し、start.shを起動します。&lt;/div>&lt;div>この際、Dockerが起動していないと動かないので注意しましょう。&lt;/div>&lt;div>&amp;gt; cd pythonDjangoDevelopEnv/&lt;/div>&lt;div>&amp;gt; sh start.sh &lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>&lt;a href="https://blog.alicey.dev/2021/08/dockerdjangosqlite/img/b700e8778a764a71_hu7159808751559793198.webp" class="lightbox-trigger">
 &lt;img src="https://blog.alicey.dev/2021/08/dockerdjangosqlite/img/b700e8778a764a71_hu7159808751559793198.webp"
 alt=""
 width="853"
 height="826"
 loading="lazy" decoding="async">
 &lt;/a>&lt;br>すると構築が始まり、しばらくすると...&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>&lt;a href="https://blog.alicey.dev/2021/08/dockerdjangosqlite/img/9f4177a23a76194d_hu8311664410722720216.webp" class="lightbox-trigger">
 &lt;img src="https://blog.alicey.dev/2021/08/dockerdjangosqlite/img/9f4177a23a76194d_hu8311664410722720216.webp"
 alt=""
 width="851"
 height="95"
 loading="lazy" decoding="async">
 &lt;/a>&lt;br>コンテナのシェルに接続されます。&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>&lt;a href="https://blog.alicey.dev/2021/08/dockerdjangosqlite/img/3f0c00070dc57806_hu17742677800450812187.webp" class="lightbox-trigger">
 &lt;img src="https://blog.alicey.dev/2021/08/dockerdjangosqlite/img/3f0c00070dc57806_hu17742677800450812187.webp"
 alt=""
 width="390"
 height="450"
 loading="lazy" decoding="async">
 &lt;/a>&lt;br>意図された環境が構築されています。&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;h2>記述されている内容の解説&lt;/h2>&lt;div>1つずつ順に見ていきます。&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;h3>&lt;/h3>&lt;h3>&lt;ul>&lt;li>docker-compose.yml&lt;/li>&lt;/ul>&lt;div>&lt;a href="https://blog.alicey.dev/2021/08/dockerdjangosqlite/img/8086075dc329e79c_hu13179720913116256235.webp" class="lightbox-trigger">
 &lt;img src="https://blog.alicey.dev/2021/08/dockerdjangosqlite/img/8086075dc329e79c_hu13179720913116256235.webp"
 alt=""
 width="479"
 height="307"
 loading="lazy" decoding="async">
 &lt;/a>&lt;div>&lt;br>&lt;/div>&lt;/div>&lt;div>&lt;span style="font-size: small; font-weight: 400">ここでは、起動するコンテナの設定を記述することができます。&lt;/span>&lt;/div>&lt;div>&lt;span style="font-size: small">&lt;span style="font-weight: 400">4行目から見ていきましょう。&lt;/span>&lt;/span>&lt;/div>&lt;div>&lt;span style="font-size: small">&lt;span style="font-weight: 400">4行目では、サービスの名称を"python-django"(任意の名前)と定義しています。&lt;/span>&lt;/span>&lt;/div>&lt;div>&lt;span style="font-size: small">&lt;span>&lt;span style="font-weight: 400">5行目では、build(&lt;/span>&lt;/span>&lt;span style="font-weight: 400">ComposeFileを実行し、ビルドされるときのpath&lt;/span>&lt;span style="font-weight: 400">)するものに対して"."を指定しています。&lt;/span>&lt;span style="font-weight: 400">これはカレントディレクトリを示し、そこに置かれているDockerfileが対応します。&lt;/span>&lt;/span>&lt;/div>&lt;div>&lt;span style="font-size: small; font-weight: 400">6行目では、container_nameを指定しています。そのまんまですねｗ コンテナの名前(任意)です。&lt;/span>&lt;/div>&lt;div>&lt;span style="font-size: small">&lt;span style="font-weight: 400">7行目では、stdin_openを指定しています。これは、&lt;/span>&lt;span style="font-weight: 400">コンテナの標準入力をオープンしたままにします。&lt;/span>&lt;/span>&lt;/div>&lt;div>&lt;span style="font-size: small; font-weight: 400">8行目では、ttyをtrueにしています。これはコンテナに擬似TTYを割り当てています。これにより、コンテナが自動的に正常終了することを防ぎ、起動したままの状態を作ることができます。&lt;/span>&lt;/div>&lt;div>&lt;span style="font-size: small; font-weight: 400">9,10行目では、Volumesの設定をしています。これは、コンテナ内の/codeとホストPCの./codeを同一のものとして扱うような設定となります。&lt;/span>&lt;/div>&lt;div>&lt;span style="font-size: small">&lt;span style="font-weight: 400">11,12行目では、Portの割り当てをしています。これにより、コンテナ内の8000ポートとホストPCの8000&lt;/span>&lt;span style="font-weight: 400">ポートを同一のものとして扱えます。よって、ホストPCからlocalhost:8000のように指定すると、コンテナ上のサーバにアクセスできるようになります。&lt;br>&lt;br>&lt;/span>&lt;/span>&lt;/div>&lt;div>&lt;span style="font-size: small">&lt;span style="font-weight: 400">※djangoを実行する際に&lt;u>python3 manage.py runserver &lt;span style="color: red">0:8000&lt;/span>&lt;/u>と指定しないとコンテナ外からアクセスできません。&lt;/span>&lt;/span>&lt;/div>&lt;div>&lt;span style="font-size: small">&lt;span style="font-weight: 400">&lt;br>&lt;/span>&lt;/span>&lt;/div>&lt;div>&lt;span style="font-size: small">&lt;span style="font-weight: 400">より正確で詳しい説明はリファレンスを御覧ください。&lt;/span>&lt;/span>&lt;/div>&lt;div>&lt;span style="font-size: small">&lt;span style="font-weight: 400">&lt;br>&lt;/span>&lt;/span>&lt;/div>&lt;div>&lt;span style="font-size: medium; font-weight: 400">&lt;br>&lt;/span>&lt;/div>&lt;ul>&lt;li>Dockerfile&lt;/li>&lt;/ul>&lt;div>&lt;div class="separator">&lt;a href="https://blog.alicey.dev/2021/08/dockerdjangosqlite/img/9a896e9b8d5a27c3_hu15752551789585350237.webp" class="lightbox-trigger">
 &lt;img src="https://blog.alicey.dev/2021/08/dockerdjangosqlite/img/9a896e9b8d5a27c3_hu15752551789585350237.webp"
 alt=""
 width="509"
 height="217"
 loading="lazy" decoding="async">
 &lt;/a>&lt;br>&lt;/div>&lt;span style="font-size: small; font-weight: 400">docker-composeのbuildで呼ばれているものになります。&lt;/span>&lt;/div>&lt;div>&lt;span style="font-size: small">&lt;span style="font-weight: 400">1行目のFROMでは利用するイメージを指定しています。今回はPython3.9.6を利用します。&lt;/span>&lt;/span>&lt;/div>&lt;div>&lt;span style="font-size: small">&lt;span>&lt;span style="font-weight: 400">2行目では、Pythonの環境変数を指定しています。(&lt;/span>&lt;/span>&lt;span style="font-weight: 400">非空なら標準出力・標準エラーのストリームのバッファリングを行わない&lt;/span>&lt;span style="font-weight: 400">)&lt;/span>&lt;/span>&lt;/div>&lt;div>&lt;span style="font-size: small; font-weight: 400">3,4行目ではcodeディレクトリを作成し、それをワーキングディレクトリに設定しています。&lt;/span>&lt;/div>&lt;div>&lt;span style="font-size: small; font-weight: 400">5行目では、ホストPCにあるrequirements.txtをコンテナ内のcodeディレクトリにコピーしています。&lt;/span>&lt;/div>&lt;div>&lt;span style="font-size: small; font-weight: 400">6行目でaptのパッケージ一覧を更新し、&lt;/span>&lt;span style="font-size: medium; font-weight: 400">aptでインストールするものを記述しています。(sqlite3とかvimとか) コンテナのお作法的には、apt install 後にapt cleanなどでアーカイブファイルを削除しコンテナを軽量化することが多いです(&lt;a href="https://docs.docker.jp/engine/articles/dockerfile_best-practice.html" rel="nofollow" target="_blank">参考&lt;/a>)。&lt;/span>&lt;/div>&lt;div>&lt;span style="font-size: small">&lt;span style="font-weight: 400">7行目で、pipをアップグレードして、8行目で&lt;/span>&lt;span style="font-weight: 400">requirements.txtにかかれているものを、pipでインストールしています。&lt;/span>&lt;/span>&lt;/div>&lt;div>&lt;span style="font-size: small">&lt;span style="font-weight: 400">&lt;br>&lt;/span>&lt;/span>&lt;/div>&lt;div>&lt;span style="font-size: small">&lt;span style="font-weight: 400">本来であれば、コンテナはアプリケーションが主役であり、1コンテナ1アプリケーション等、軽い構成で作るべきだと思いますので、上記のようにアレコレ入れないほうが良いとは思います。が、作業効率化の為導入しました...&lt;/span>&lt;/span>&lt;/div>&lt;div>&lt;span style="font-size: small">&lt;span style="font-weight: 400">また、継続して利用するものであれば、なるべく全てのものに関してバージョンの固定を行うべきだと思います。&lt;/span>&lt;/span>&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;ul>&lt;li>requirements.txt&lt;/li>&lt;/ul>&lt;div>&lt;a href="https://blog.alicey.dev/2021/08/dockerdjangosqlite/img/98cdaf4fa1a821eb_hu15256599815183760606.webp" class="lightbox-trigger">
 &lt;img src="https://blog.alicey.dev/2021/08/dockerdjangosqlite/img/98cdaf4fa1a821eb_hu15256599815183760606.webp"
 alt=""
 width="255"
 height="139"
 loading="lazy" decoding="async">
 &lt;/a>&lt;span style="font-size: small; font-weight: 400">pipでインストールするものの一覧です。&lt;/span>&lt;/div>&lt;div>&lt;span style="font-size: small">&lt;span style="font-weight: 400">Djangoの3.2.5やその他使いそうなものを書いていきます。&lt;/span>&lt;/span>&lt;/div>&lt;div>&lt;span style="font-size: small">&lt;span style="font-weight: 400">各々使用するものを入れましょう。&lt;/span>&lt;/span>&lt;br>&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;ul>&lt;li>start.sh&lt;/li>&lt;/ul>&lt;div>&lt;a href="https://blog.alicey.dev/2021/08/dockerdjangosqlite/img/a07f6661f2a2bcbf_hu9786989542199976294.webp" class="lightbox-trigger">
 &lt;img src="https://blog.alicey.dev/2021/08/dockerdjangosqlite/img/a07f6661f2a2bcbf_hu9786989542199976294.webp"
 alt=""
 width="501"
 height="112"
 loading="lazy" decoding="async">
 &lt;/a>&lt;span style="font-size: small; font-weight: normal">start.shではDockerコンテナを構築・起動し、シェルへ接続するまでの作業を1つで行うシェルスクリプトです。&lt;/span>&lt;/div>&lt;div>&lt;span style="font-size: small">&lt;span style="font-weight: normal">まず docker-compose up -d でdocker-compose.ymlファイルを元にコンテナを起動します。&lt;/span>&lt;/span>&lt;/div>&lt;div>&lt;span style="font-size: small">&lt;span style="font-weight: normal">この操作が成功した場合に&amp;amp;&amp;amp;の右側に書かれたコードが実行されます。&lt;/span>&lt;/span>&lt;/div>&lt;div>&lt;span style="font-size: small">&lt;span style="font-weight: normal">右側のコードでは、docker exec -it でpython-djangoという名前のコンテナのシェルに接続しています。&lt;/span>&lt;/span>&lt;/div>&lt;div>&lt;span style="font-size: small">&lt;span style="font-weight: normal">コンテナ起動時に実行するとそのままシェルに入ることができます。&lt;/span>&lt;/span>&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>&lt;span style="font-size: small">&lt;span style="font-weight: normal">&lt;br>&lt;/span>&lt;/span>&lt;/div>&lt;div>参考文献&lt;/div>&lt;div>&lt;ul>&lt;li>&lt;a href="https://docs.docker.jp/compose/django.html" rel="nofollow" style="font-weight: normal" target="_blank">&lt;span style="font-size: small">クィックスタート: Compose と Django&lt;/span>&lt;/a>&lt;/li>&lt;li>&lt;a href="https://zenn.dev/hohner/articles/43a0da20181d34" rel="nofollow" style="font-weight: normal" target="_blank">&lt;span style="font-size: small">DockerのTTYって何?&lt;/span>&lt;/a>&lt;/li>&lt;li>&lt;a href="https://qiita.com/yuta-ushijima/items/d3d98177e1b28f736f04" rel="nofollow" style="font-weight: normal" target="_blank">&lt;span style="font-size: small">docker-compose.ymlの書き方について解説してみた&lt;/span>&lt;/a>&lt;/li>&lt;/ul>&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;/h3></description></item><item><title>機械学習基盤の構築(Ubuntu20.04+Tensorflow+Docker+GPU)</title><link>https://blog.alicey.dev/2021/08/ubuntu2004dockergpu.html</link><pubDate>Tue, 03 Aug 2021 10:01:00 +0900</pubDate><guid>https://blog.alicey.dev/2021/08/ubuntu2004dockergpu.html</guid><description>&lt;h2> なりゆき&lt;/h2>&lt;div>大学で行っている研究にて、機械学習を用いた処理を行っているのですが、学生の持っているマシン(大半がm3なMacBook)では遅すぎていつまで経っても終わらないという話が出ました。そこで、大学に機械学習のリソースをくれないかという話をしたところ、GPU搭載のゲーミングノートPCを貸していただけたので、これを使うことにしました。&lt;/div>&lt;div>（本当はGPU乗ったサーバのVM貸してほしかった.....電気代怖い....）&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>PCの詳細はこんな感じ&lt;/div>&lt;div>&lt;ul>&lt;li>CPU : Intel Core i7 9750H(6C12T 2.6GHz up to 4.5GHz)&lt;/li>&lt;li>RAM : DDR4-2400 SODIMM 32GB&lt;/li>&lt;li>GPU : NVIDIA RTX2070 Mobile&lt;/li>&lt;li>OS : Windows10Home → Ubuntu 20.04 LTS&lt;/li>&lt;/ul>&lt;/div>&lt;div>&lt;a href="https://blog.alicey.dev/2021/08/ubuntu2004dockergpu/img/1a6dca740247810f_hu3304391076628058705.webp" class="lightbox-trigger">
 &lt;img src="https://blog.alicey.dev/2021/08/ubuntu2004dockergpu/img/1a6dca740247810f_hu3304391076628058705.webp"
 alt=""
 width="1293"
 height="920"
 loading="lazy" decoding="async">
 &lt;/a>&lt;br>&lt;br>&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;h2>OSの載せ替え&lt;/h2>&lt;div>まず、既存のWindowsをバックアップします。&lt;/div>&lt;div>SSDを載せ替えても良かったのですが、予算の関係で今回はディスクのイメージを作成しました。&lt;/div>&lt;div>詳しい内容は&lt;a href="https://blog.alicey.dev/2021/07/windowsdd.html" target="_blank">前回の記事&lt;/a>を御覧ください。&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;h2>Ubuntuのインストール&lt;/h2>&lt;div>Ubuntuをインストールします。&lt;/div>&lt;div>といっても、難しいことはなく、USBブートし画面の指示に従いインストールするだけです。&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>&lt;a href="https://blog.alicey.dev/2021/08/ubuntu2004dockergpu/img/c26ec61a3e653565_hu14426114048247843325.webp" class="lightbox-trigger">
 &lt;img src="https://blog.alicey.dev/2021/08/ubuntu2004dockergpu/img/c26ec61a3e653565_hu14426114048247843325.webp"
 alt=""
 width="1064"
 height="797"
 loading="lazy" decoding="async">
 &lt;/a>&lt;br>&lt;br>&lt;/div>&lt;h2>ドライバのインストール&lt;/h2>&lt;div>ドライバ類のインストールをします。&lt;/div>&lt;div>今回は、GPUのドライバのみ手動インストールしました。&lt;/div>&lt;div>バージョンに関しては、&lt;a href="https://www.tensorflow.org/install/gpu?hl=ja" rel="nofollow" target="_blank">TensoeflowのGPUサポート&lt;/a>と照らし合わせ、&lt;/div>&lt;div>CUDA 11.4, NVIDIA-SMI 470.42.01をインストールしました。&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>&lt;a href="https://blog.alicey.dev/2021/08/ubuntu2004dockergpu/img/40b50e33b212a9e8_hu11333822182802677762.webp" class="lightbox-trigger">
 &lt;img src="https://blog.alicey.dev/2021/08/ubuntu2004dockergpu/img/40b50e33b212a9e8_hu11333822182802677762.webp"
 alt=""
 width="1181"
 height="827"
 loading="lazy" decoding="async">
 &lt;/a>&lt;br>ココで1箇所ハマったことがあります。&lt;/div>&lt;div>UbuntuをSecureBootを利用する形でセットアップしたため、ドライバインストール時に見慣れない「Enrolling MOK Key」の設定が必要になります。&lt;/div>&lt;div>ドライバをセットアップし、Reboot後、見慣れない青背景の画面が出たため、何も考えずにContinueBootした所、ドライバを読み込みませんでした。気をつけましょう。&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>その時参考にしたサイト: &lt;a href="https://seedoftalk.blogspot.com/2021/06/ubuntu-secureboot.html" rel="nofollow" target="_blank">UbuntuでNVIDIAドライバが動かない&lt;/a>&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;h2>Docker等の構築&lt;/h2>&lt;div>ココまで来てしまえば、後は必要なソフトウェアをインストールするだけです。&lt;/div>&lt;div>Tensorflowの場合ですと、公式に&lt;a href="https://www.tensorflow.org/install/docker?hl=ja" rel="nofollow" target="_blank">Docker&lt;/a>を利用するものと、&lt;a href="https://www.tensorflow.org/install/pip?hl=ja" rel="nofollow" target="_blank">pip&lt;/a>でのセットアップに関するものがまとめられています。&lt;/div>&lt;div>これを参考に構築します。&lt;/div>&lt;div>（需要があれば、別途記事にします。）&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>また、DockerでNVIDIA GPUを利用する際にはNVIDIA Container Toolkit(nvidia-docker2)のインストールが必要になります。&lt;/div>&lt;div>&lt;a href="https://gangannikki.hatenadiary.jp/entry/2020/09/26/200000" rel="nofollow" target="_blank">こちら&lt;/a>を参考にさせていただきました。&lt;/div>&lt;div>公式の&lt;a href="https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#setting-up-nvidia-container-toolkit" rel="nofollow" target="_blank">ドキュメント&lt;/a>はこの辺りですね。&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>docker composeを利用する場合、v1とv2でdocker-compose.ymlのGPUを指定する方法が異なりますのでご注意ください。個人的にはv2で構築することをおすすめします。&lt;/div>&lt;div>詳しくは、&lt;a href="https://matsuand.github.io/docs.docker.jp.onthefly/compose/gpu-support/" rel="nofollow" target="_blank">ドキュメント&lt;/a>をご参照ください。&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>また、この辺りは、バージョンによって変化が生じやすい部分かと思われますので、環境(OSやGPU)に応じた設定を都度ドキュメント等で確認することをおすすめします。&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;h2>おまけ&lt;/h2>&lt;div>せっかくゲーミングPCだからゲームしないとね？&lt;/div>&lt;div>というわけで、マイクラをプレイしておきました。&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>&lt;a href="https://blog.alicey.dev/2021/08/ubuntu2004dockergpu/img/caba0afd9f74752f_hu16241844205032627848.webp" class="lightbox-trigger">
 &lt;img src="https://blog.alicey.dev/2021/08/ubuntu2004dockergpu/img/caba0afd9f74752f_hu16241844205032627848.webp"
 alt=""
 width="726"
 height="920"
 loading="lazy" decoding="async">
 &lt;/a>&lt;div>&lt;br>&lt;/div>&lt;div>僕がよくする配信+ゲームではGPUフルロード。フレームレートも落ちますね....144Hzモニタの意味....&lt;/div>&lt;div>&lt;a href="https://blog.alicey.dev/2021/08/ubuntu2004dockergpu/img/82426cc5ab1153e6_hu15285195861590897201.webp" class="lightbox-trigger">
 &lt;img src="https://blog.alicey.dev/2021/08/ubuntu2004dockergpu/img/82426cc5ab1153e6_hu15285195861590897201.webp"
 alt=""
 width="1031"
 height="730"
 loading="lazy" decoding="async">
 &lt;/a>&lt;br>&lt;br>&lt;/div>&lt;br>&lt;br>&lt;/div>&lt;div>というか、キー配列無茶苦茶すぎん？&lt;/div>&lt;div>&lt;a href="https://blog.alicey.dev/2021/08/ubuntu2004dockergpu/img/abaf06300e8ef4a4_hu3461504936845575084.webp" class="lightbox-trigger">
 &lt;img src="https://blog.alicey.dev/2021/08/ubuntu2004dockergpu/img/abaf06300e8ef4a4_hu3461504936845575084.webp"
 alt=""
 width="1600"
 height="987"
 loading="lazy" decoding="async">
 &lt;/a>&lt;br>&lt;br>&lt;/div>&lt;div>無駄にBIOSからキーボードの光り方変えられるｗ&lt;/div>&lt;div>&lt;a href="https://blog.alicey.dev/2021/08/ubuntu2004dockergpu/img/a17ea08e664c9044_hu6141220186596196352.webp" class="lightbox-trigger">
 &lt;img src="https://blog.alicey.dev/2021/08/ubuntu2004dockergpu/img/a17ea08e664c9044_hu6141220186596196352.webp"
 alt=""
 width="1260"
 height="900"
 loading="lazy" decoding="async">
 &lt;/a>&lt;div>&lt;br>&lt;/div>&lt;br>いろいろと癖が強いマシンだった。&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>ばいち&lt;/div></description></item><item><title>初期状態のWindowsをddでバックアップ</title><link>https://blog.alicey.dev/2021/07/windowsdd.html</link><pubDate>Fri, 30 Jul 2021 09:24:00 +0900</pubDate><guid>https://blog.alicey.dev/2021/07/windowsdd.html</guid><description>&lt;h1> 初期状態のWindowsをddでバックアップ&lt;/h1>&lt;div>大学から借りたPCにUbuntuをインストールすることになりました。&lt;span>(詳しくは次回投稿します)&lt;/span>&lt;/div>&lt;div>しかし、PCにはWindowsがインストールされており、しかも初期設定をしていない状態でした。これでは回復ディスクを作成するのも面倒です。&lt;/div>&lt;div>ここで思いつく方法として&lt;/div>&lt;div>&lt;ul>&lt;li>SSDの換装&lt;/li>&lt;li>ddでイメージの抽出&lt;/li>&lt;/ul>&lt;div>があります。&lt;/div>&lt;/div>&lt;div>予算がなく、SSDの換装が難しかった為、ddで初期状態のWindowsのイメージを作成することにしました。&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>&lt;span style="color: #cc0000">&lt;b>※参考にする際は自己責任でお願いします。ミスると全データ消えます。&lt;/b>&lt;/span>&lt;/div>&lt;h2>はじめに&lt;/h2>&lt;div>まず、ddを実行する環境を用意します。&lt;/div>&lt;div>今回はUbuntu20.04LTSをUSBメモリからライブブートしました。&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;h2>UbuntuでWindowsのイメージを作る&lt;/h2>&lt;div>イメージの作成をします。&lt;/div>&lt;div>まず、作成したイメージを保存する記憶媒体を接続します。&lt;/div>&lt;div>今回は外付けHDDを接続しました。&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>次に、&lt;b>lsblk&lt;/b>で認識しているブロックデバイスの一覧を表示します。&lt;/div>&lt;div>こんな感じになります。&lt;/div>&lt;div>&lt;div class="separator">&lt;a href="https://blog.alicey.dev/2021/07/windowsdd/img/ce8a6020b1d3ea2b_hu4274611840410504531.webp" class="lightbox-trigger">
 &lt;img src="https://blog.alicey.dev/2021/07/windowsdd/img/ce8a6020b1d3ea2b_hu4274611840410504531.webp"
 alt=""
 width="1024"
 height="669"
 loading="lazy" decoding="async">
 &lt;/a>&lt;br>&lt;br>&lt;/div>ここで、&lt;b>コピー元のデバイス名とコピー先のマウントポイントを確認&lt;/b>します。&lt;/div>&lt;div>今回は&lt;/div>&lt;div>コピー元デバイス：nvme0n1&lt;/div>&lt;div>コピー先マウントポイント：/media/ubuntu/backup/&lt;/div>&lt;div>となります。&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>次に、cdコマンド等で&lt;b>コピー先マウントポイントへ移動&lt;/b>します。&lt;/div>&lt;div>&amp;gt; cd /media/ubuntu/backup/&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>ここで、&lt;b>ddコマンド&lt;/b>を使用します。&lt;/div>&lt;div>しかし、そのまま実行するとクソデカファイルが作成されるので、&lt;b>gzip&lt;/b>を併用します。&lt;/div>&lt;div>&amp;gt; sudo dd if=/dev/nvme0n1 | gzip -c &amp;gt; ./backup.gz&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>コマンドの意味はそれぞれ&lt;/div>&lt;div>sudo：管理者権限で実行&lt;/div>&lt;div>dd if=/dev/nvme0n1 ：ddで/dev/nvme0n1が参照元&lt;/div>&lt;div>gzip -c：圧縮(結果をファイルではなく標準出力へ出力する)&lt;/div>&lt;div>&amp;gt; ./backup.gz：ファイル./backup.gzに出力&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>実行画面はこんな感じ&lt;/div>&lt;div>&lt;a href="https://blog.alicey.dev/2021/07/windowsdd/img/54546da11f620c37_hu1629143948681775808.webp" class="lightbox-trigger">
 &lt;img src="https://blog.alicey.dev/2021/07/windowsdd/img/54546da11f620c37_hu1629143948681775808.webp"
 alt=""
 width="1031"
 height="678"
 loading="lazy" decoding="async">
 &lt;/a>&lt;div>(テストとかミスとかしてるけど気にしないで....)&lt;/div>&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>しばらく待つと、&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>&lt;a href="https://blog.alicey.dev/2021/07/windowsdd/img/5523ba1c8910accc_hu9330939546999931117.webp" class="lightbox-trigger">
 &lt;img src="https://blog.alicey.dev/2021/07/windowsdd/img/5523ba1c8910accc_hu9330939546999931117.webp"
 alt=""
 width="1157"
 height="642"
 loading="lazy" decoding="async">
 &lt;/a>&lt;br>&lt;br>&lt;/div>&lt;div>作成が完了します。&lt;/div>&lt;div>ファイルサイズは14GB程でした。&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>戻すときは逆の手順で行います。&lt;/div>&lt;div>&amp;gt; gzip -dc &amp;lt; backup.gz | dd of=/dev/nvme0n1&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;h2>余談&lt;/h2>&lt;div>今回、gzipを利用していますが、これがなかなか遅いです。。。&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>&lt;a href="https://blog.alicey.dev/2021/07/windowsdd/img/3e09032e39fb7d7c_hu10208610542307569686.webp" class="lightbox-trigger">
 &lt;img src="https://blog.alicey.dev/2021/07/windowsdd/img/3e09032e39fb7d7c_hu10208610542307569686.webp"
 alt=""
 width="956"
 height="308"
 loading="lazy" decoding="async">
 &lt;/a>&lt;br>&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>&lt;a href="https://blog.alicey.dev/2021/07/windowsdd/img/286844a258d01610_hu8518318291877277941.webp" class="lightbox-trigger">
 &lt;img src="https://blog.alicey.dev/2021/07/windowsdd/img/286844a258d01610_hu8518318291877277941.webp"
 alt=""
 width="1030"
 height="665"
 loading="lazy" decoding="async">
 &lt;/a>&lt;div class="separator">1コア フル利用...&lt;/div>&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>そこでpigzを利用するとマルチスレッド処理できるため速いらしいです。標準で入っていなかったため挑戦しませんでしたが、試してみても面白いかも。&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>なにかの参考になれば幸いです。&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;h2>参考文献&lt;/h2>&lt;div>&lt;div>ddの進捗を確認：&lt;a href="https://qiita.com/tukiyo3/items/5e3fd748287ffa4b6612" rel="nofollow" target="_blank">https://qiita.com/tukiyo3/items/5e3fd748287ffa4b6612&lt;/a>&lt;/div>&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>&lt;br>&lt;/div>&lt;div>ばいち&lt;/div></description></item><item><title>【Zabbix4.0】You are not logged in - リバースプロキシ環境での利用</title><link>https://blog.alicey.dev/2021/05/zabbix4033you-are-not-logged-in.html</link><pubDate>Mon, 10 May 2021 02:53:00 +0900</pubDate><guid>https://blog.alicey.dev/2021/05/zabbix4033you-are-not-logged-in.html</guid><description>&lt;p> こんにちは。&lt;br>ZabbixをIISでのリバースプロキシ環境で利用したところ、&lt;a href="https://blog.alicey.dev/2021/05/zabbix4033you-are-not-logged-in/img/60b18058b7abaaa3_hu3065430490044826404.webp" class="lightbox-trigger">
 &lt;img src="https://blog.alicey.dev/2021/05/zabbix4033you-are-not-logged-in/img/60b18058b7abaaa3_hu3065430490044826404.webp"
 alt="You are not logged in"
 width="904"
 height="303"
 loading="lazy" decoding="async">
 &lt;/a>&lt;/p>&lt;p>&lt;br>このようなエラーメッセージが表示されログインできませんでした。&lt;br>IPAddressでアクセスは可能なため、リバースプロキシを経由していることが原因と考えられます。&lt;br>今回はこれをどうにかしたいと思います。&lt;/p></description></item></channel></rss>