Gentoo実マシン引退へ

Gentoo AMD64の実マシンは,現在,サブWorkstation (Intel Core i7搭載の古いデスクトップ機.以下 “サブWS” )のサブOSの位置づけです.しかし,サブWSのサブOSとしてup-to-dateに保っていくには荷が重いOSです.

そこで,実マシンとしての運用はあきらめて,仮想化してサブWSのメインOS (Manjaro AMD64)で飼うことにします.

サブWSのサブOSにはお手軽簡単で守備範囲の広いDebianを仮想マシンから実マシンに復帰させます.

サブWSのSSDは現在512GBで,それをメインとサブのOSで半分ずつ使っているので,仮想ディスクの変換などをするにはかなり手狭です.

一方,サブサブWSとなった,というか,未だWSとして使えるかの実証実験レベルのステージにあるManjaro ARM64をインストールしたRaspberry Pi 4 Model B (RPi4)には,なりゆき上ですが,1TBのSSDが繋がっていて,持て余しています.

そこで,今回,サブWSの512GBとサブサブWSの1TBのSSDを入れ替えることもします.

手順としては,

  1. サブWSのサブOSであるGentoo AMD64を仮想ディスクにクローニングする(昨夜に済み)
  2. Manjaro ARM64 (RPi4)のSSD(1TB)の中身を空いているHDDにコピーする
  3. サブWSの512GB SSDの中身を1TB SSDにコピー(メイン・サブOS用にそれぞれ約500GBパーティションを切る)
  4. HDDに待避したManjaro ARM64の内容を512GB SSDにコピーして,起動を確認
  5. 1TB SSDをなんやかんやしてManjaro AMD64(メインOS)で起動するようにする
  6. サブOSとして,仮想ディスクイメージのDebianをクローニングして,起動できるようにする
  7. 仮想化したGentoo AMD64が起動するようにする

なかなか難工事になりそうですが,頭の体操になると思います.

追記

念の為,1TB SSDからHDDにコピーしたら,そのHDDからManjaro ARM64が起動できることを確認します.手順を以下のように変更します.

  1. サブWSのサブOSであるGentoo AMD64を仮想ディスクにクローニングする(昨夜に済み)
  2. Manjaro ARM64 (RPi4)のSSD(1TB)の中身を空いているHDDにコピーする
  3. コピーしたHDDから,Manjaro ARM64の起動を確認する(RPi4)
  4. サブWSの512GB SSDの中身を1TB SSDにコピー(メイン・サブOS用にそれぞれ約500GBパーティションを切る)
  5. HDDに待避したManjaro ARM64の内容を512GB SSDにコピーして,起動を確認
  6. 1TB SSDをなんやかんやしてManjaro AMD64(メインOS)で起動するようにする
  7. サブOSとして,仮想ディスクイメージのDebianをクローニングして,起動できるようにする
  8. 仮想化したGentoo AMD64が起動するようにする
忍耐の必要なステージ.他のことをして夢中になると,肝心なことを忘れて手順を間違える危険が大きい(当社実績による)ので,コピーの様子をぼーっと眺めているしかない.

Manjaro: hibernationに関するエラー

サブWS (Workstation)のメインOSである,Manjaro x86_64の起動時(たぶんgrubがkernelをロードした時)に,ハイバーネーション用のUUIDなんたらのディバイスが見つからないというエラーメッセージが出ます.

たしかに,ログインの後blkidで表示しても,その指し示されたUUIDのディバイスはありません.

別にそれで不具合が生じているわけでなく,ブートに要する時間が遅くなっている感じもありません.

このManjaroは,現在は実マシンで動いていますが,もともと実マシンにインストールしたのではなく,仮想マシンを構築して,少々評価した後に,実マシンにクローニングしたもので,そのあたりがこのエラーの根源かと思います.

仮想マシンとして構築するときは, ほとんどの設定はお仕着せのままで,多分知らずにハイバネーション用のパーティションが仮想ディスクに切られたのだと思います.しかし,実マシンに移行する際,実際のディスク(SSD)のパーティションの切り直しは避けたので,ハイバネーション用のパーティションをManjaro用に作らなかったのです.

ざっと検索して,

superuser: How do I fix Manjaro error hibernation device not found on boot?

この記事を参考に,/etc/default/grubから,エラーの対象になるUUID以下を削除して,mkinitcpioと,grub-mkconfigを実行しましたが,今度は,そもそもハイバーネーションのディバイスがないというエラーに変わっただけで,エラーは出ています.

あ,こちらが正解ですね.mkinitcpioの設定をいじらないといけないようです.

以上まとめますと,

  1. /etc/mkinitcpio.conf のHOOKから,resumeを削除する
  2. ls /etc/mkinitcpio.d から,最新のLinuxバージョンを調べる(ここでは linux59.presetだったとする)
  3. root権限で, mkinitcpio -p linux59 を実行
  4. 要るのか要らないのかわからないけど, grub-mkconfig -o /etc/grub/grub.cfg もやっとく😥

つい最近,Gentooに代わってメインOSに昇格しました😓

サブWSもManjaroに

結局,LinuxのリアルマシンであるWorkstation (WS),あるいは,AMD64 (x86_64) WSとして2番めの使用頻度のマシンのdual boot設定のうちの第一のOSをManjaro x86_64にしました.

理由は,各種ソフト(OS,システム関係,アプリ)が最新に近いこと,ハードの能力をかなり引き出していると感じていること,QEMU/KVMをかなり守備範囲広くインストールできること,システムのインストールや,その後のupdateや追加が楽であることなどです.

簡単で,最新で,速い,といったところでしょうか

しかし,残念ながら,x86_64下でのRaspberry Piのエミュレーションはまだうまくいっていません.

ここまでは.Arch Linuxのおかげ.
Manjaroの一番の売り.
Distroの提供するパッケージとして.
個人の感想です.

QEMU/KVMその後2

Raspberry Pi 4 Model BのQEMUは,AMD64 (x86_64)のDebianを動かすことができます.ただし,遅すぎで全く実用になりませんが.

Raspberry Pi 4 Model Bで動いているManjaro aarch64版で動いているQEMU/Virt-Managerで起動中のAMD64版のDebian(拡大イメージ).

本当は,その逆(AMD64のマシンで,Raspberry Piのエミュレーション)をしたいのですが,今AMD64のマシンにインストールしてある実マシンは,SlackwareとGentooで,いずれもQEMU/KVMとlibvirt, Virt-Managerはインストールしてありますが,いろいろ制約があって,手詰まりになり,さらに燃え尽きてしまった次第です.

一番簡単なのは,Manjaro x86_64版を実マシンにインストールすることかなと考えています(Arch Linuxはけっこうめんどくさそうです😓).

QEMU/KVMその後

Distroによったり,MacPortsやHomeBrewそれぞれで,QEMUやlibvirtのconfigureの仕方が違って,できることにかなりの差があります.

出来上がりとして,一番守備範囲が広いのは,Manjaro (aarch64)です.しかし,安定版じゃないみたいで,仮想マシンを作ってちゃんと動くのは,i386とx86_64だけで,Raspberry Pi 3をエミュレートする設定はできるんですが,動いてくれません.

Manjaro AMD64版(または,Arch Linux AMD64版)なら,いろいろできて安定と思われますが,第2 workstationにインストールするためには,既にインストールしてあるDebianかGentooを消すか引っ越すかして空きを作らないといけません.

一番安定して動いてくれるGentooでは,今のところx86_64の仮想マシンしか作れません.これは,なんかフラグかなんかで他のエミュレーターを増やせると思うので,調べてみます.

macOSの取り組みでは,MacPortではvirtqemudとvirtnetworkdができないので,仮想マシンが動きません(当社調べ).そこで,HomeBrewに乗り換え,virtqemud他,libvirtのmodularデーモンがひととおりできましたが,Virt-managerでマシンを作ることができませんでした.

で,このへんで燃え尽きてしまいました😥 現在手持ちのハードウェアで一番ハイスペックなMac miniでQEMUを動かしたかったのですが諦めます.

AMD64のGentooで,Raspberry Piのエミュレーションができないかくらいに縮小して取り組んでみます.

要UEFI firmware

なんだかわかりませんが,Manjaro (Arch Linux) で,Raspbery Pi OSのSDカードのイメージから起動するためには,UEFIのfirmwareが必要で,そのためには,OVMFとかが必要なようです.しかし,aarch64版はないようです😥

したがって,Raspberry Pi 4 model BのManjaroで動かす仮想マシンは,x86 PCのBIOS形式のブートしか使えない,ということのようです.

AMD64 Gentooでも,この情報をもとに,edk2-ovmfをインストールしてみましたが,RPi3の仮想マシンを設定しようとしても,UEFIは見つからないというエラーが出ます.

ただし,ものすごく遅い😥
設定不可能😓