投稿者名:TOKIDA

このサイトは備忘録であるとともにIT界隈の人に情報をお返し出来たら良いなぁという物です。

GCEがKernel Panic で起動しないときの対処

症状

  • GCEに対して再起動を実施したら起動してない
  • シリアルポートログを確認すると「Kernel Panic」で停止している
  • Kernel panic – not syncing: VFS: Unable to mount root fs on unknown-block(0,0)

環境

  • Ubuntu 22.04 ( upgradeで来ている)
  • e2-micro (一番小さいやつ)
  • ストレージサイズ 10G (一番小さいやつ)

原因

結果的には以下が原因となっていた

  • Kernel Update の際にディスクの容量不足?でUpdate が正常に行えず、かつロールバックも出来ない状態になっていた
  • その際に、ディスク装置に問題が発生しておりSuperBlockか何処かがおかしい状態になっている(通常の mount が出来ない状態)

対処

GCEなので対処の方法は色々取れるのは助かりました。結果として実施した内容を以下に整理しておきます。原因は別でも似たような症状になった場合には対処できることもあるかもしれません。

  1. ストレージのスナップショットから「ディスクを作成」する
    • 今回は日々スナップショットをスケジュールで実行していたので昨日のスナップショットを利用した(大切、1世代でも取得しておくことをおすすめ)
    • 復元するリージョン・ゾーンと同じ場所に作る
    • サイズをこの段階で20Gに変更しておく(サイズはGCEの場合にはオンラインでも変更可能)
    • 名前は適当に
  2. 新規に同じリージョン・ゾーンでインスタンス①を作成する
    • 復旧の一時的なものなのでマシンスペックは大きめにしておくほうが良い(特にメモリは4Gとかはある方が無難、一時的なのでそれほど費用はかからない想定)
      先程作成した「ディスク」をセカンドディスクとして接続しておく
    • ネットワークなどの通信設定は不要(ディフォルトで作成して問題ない)
    • OSは故障したものと同じOSのバージョンのイメージ(今回はUbuntu22.04 min LTS)を利用して作成する
  3. インスタンス①を起動したらディスクを修復
    • fdisk -l でストレージを確認(/dev/sdb)
    • parted -l で GPTエラーが出ていたら修復する
    • ディスクサイズを大きくしているので以下で拡張をする
      • growpart /dev/sdb 1 を実施してパーティションを拡張(※sdb1がデータが入っている本体のパーティションの場合)
      • resize2fs /dev/sdb1 を実施(ファイルシステムを拡張)
    • ディスクを修復 e2fsck -f /dev/sdb1
  4. ディスクをマウントしてChrootを実施
    • mkdir /data_disk
    • mount -o nouuid /dev/sdb1 /data_disk
    • mount –bind /dev /data_disk/dev/
    • mount –bind /dev/pts /data_disk/dev/pts
    • mount –bind /proc /data_disk/proc
    • mount –bind /sys /data_disk/sys
    • chroot /data_disk
    • これでルートが追加したディスクになっていることを確認しておく
    • 何故か初期で mount -o nouuid でマウントできずオプションなしでマウントすることになった(同じマシンで起動する場合には競合する可能性があるので注意)
  5. Kernelの再導入
    • 色々この段階で調査をしているのだが今回はKernelが半端に入っているので再度導入を行う(実際には apt –reinstall install linxu-xxx をしたのだが実行が出来ず結果的には apt autoremmove で修復が実施された
    • Kernelを導入するとその段階でGrub系のコマンドも実行される
    • 今回のケースではない場合には grub install や update-grub などを利用してブート (/boot) を修復する必要があるかもしれない。
    • インスタンス②を停止
    • 編集からディスクを取り外す
  6. 新規にインスタンス②を起動
    • 最終的にはこのインスタンス②を利用するか、壊れたインスタンスのディスクを取り外しても良い(怖いのでここは②を利用して確認をおこなう)
    • 作成時に、先程のディスクを boot diskとして選択する
    • ネットワークの設定などは壊れたインスタンスの内容と同じにしておく
    • 起動を実施してシリアルログから起動メッセージを確認する
    • 起動しない場合にはBoot領域がおかしいなどの場合がある。今回のケースで言えば修復だけして起動したら指定されたKernelがないために起動することが出来なかった。多分 grubで一つ前のものをうまくしてするように修正すれば起動したと思われる

感想

まぁクラウドで良かった。色々試せたので。たまにはスナップショット意外にもマシンイメージとしてバックアップも必要だなと感じた次第。スナップショットの定期実行は便利。Config Managerの自動アップデートの構成(のせい?)は怖い。KernelはUpdateしないほうが無難かもしれない。あとそもそもの原因はストレージ不足とメモリ不足もある気がするのでストレージ拡張した上でZramとかSwapをきちんと定義しておくことで予防にはなる

LinuxでBluetoothで接続機種(m5stack)が見つけられないときの対処

最近Bluetoothの機器が非常に見つけづらくなっていて何故か理由が分からなかったのですが以下の設定になっていたので修正

❯❯❯ bluetoothctl show
Controller 48:E7:DA:C2:04:0C (public)
Name: pop-os
Alias: pop-os
Class: 0x006c010c
Powered: yes
Discoverable: yes
DiscoverableTimeout: 0x000000b4
Pairable: yes

この項目が no になっていたことが原因でした。 yes に変更するためには bluetoothctl pairable on というコマンドで設定を変更できます。

m5stack でBLE経由したMouseエミュレーションのプログラムを作成していたのですがなかなかLinux側で認識できてなかったのですがこれで認識ができるようになりました。不具合かなとおもったら一度初診に帰ってそもそもの設定を確認しておくと良いですね。

今回の利用したパラメータは以下の通り。

pairableBluetooth レシーバーのペアリング可否の状態を変更するpairable on|off
discoverableBluetooth レシーバーを、他のデバイスから検索可能な状態にするかどうかを変更するdiscoverable on|off

Wayland環境でGoogle Meet を利用して画面共有 (Screenshare)を行いたい

Waylandになり、画面共有の方法がXorgと異なっています。Chromeのディフォルトの設定では利用できないため設定方法をメモしておきます。

実施方法

Chromeの設定 chrome://flags/#enable-webrtc-pipewire-capturer にて、以下のパラメータを変更します。

WebRTC PipeWire support :  Enable
When enabled the WebRTC will use the PipeWire multimedia server for capturing the desktop content on the Wayland display server. – Linux

Linux上の設定、POPOSでは標準で実施がされていますがもし xdg-desktop-portal-wlr が導入されていない場合にはInstallをします。 apt install で入るはずです。

メモ

ChromeをWaylandモードで動いているかとかその他にもはまりどころは色々ある模様です。こちらを確認しておくと良いかもしれません。https://gist.github.com/PowerBall253/2dea6ddf6974ba4e5d26c3139ffb7580

100WPD/USB3.2Gen2(20Gbps)対応の RAMPOW社 USB Type-Cケーブルを購入

家のDisplayで利用しているケーブルが調子が悪くなったのでType-Cケーブルを購入をし直しました。今利用しているディスプレイは、DisplayPort Alt Mode(バージョンは不明)をサポートしているPDケーブル(98W)が対応になります。

Type-Cケーブルは仕様がややこしいのですが今回購入したものは

  • 100WPD対応
  • USB 3.2 Gen 2×2 20Gbps
  • DisplayPort Alternate Mode対応
  • 2m (仕様的には2mもOKとAmazonのコメントでメーカーの記載があり)

というものです。4K/60Hzとのことですが4Kディスプレイは持っていないので試せていませんが3440×1440/100Hzでの動作はできている感じです。

箱はシンプル、説明は1枚のみ

ケーブルは硬いみたいなコメントがありましたがそんなことはなく普通に丸めるくらいの取り回しはできます。コンパクトに折りたたむお少し強度は心配です。

キャップがついています。これまで使っていたものにつけておきたいと思います。RAMPOWのロゴが出ていますがそれほど気になる感じではありません。ロゴは片面にしか入ってないので裏側で利用すれば目立つこともありません。

RAMPOWの製品ですが、「保証」という文言が入っています。Amazonから購入した物が正規の対象商品です。https://rampow.com にいきアカウントを登録して製品サポートを登録すればいい模様です(Amazonの注文番号が必要です)、登録ができているのかできてないのかわかりませんが以下の画面になりました(Amazonの商品ページだと「永久保証」とありますが以下を見る限り2年間保証ですかね?いずれにしても2回までは交換してもらえそうです)

実際のところどのくらいでケーブルが壊れるかはわかりませんが元に元のディスプレイに付属のケーブルは調子がおかしくなってしまったので2年程度で壊れることもあるかもしれません。こういった消耗品に近い備品で保証がしっかりとしているというのは嬉しいですね。

[TailScale] iPhoneとLinux間でのファイル転送(TailDrop)

最近、Wiregrardの技術を使ったVPNサービスであるTailscaleに興味を持って色々触っていますがずっと課題に感じていた iPhone ⇔ Linux 間でのデータ転送を簡単に P2P で実行することとができました。TailScaleは、基本はP2PでのPVNを簡単に作ることができるサービスです。認証部分はTailScaleのサービスがGoogle認証などを促しクライアントに情報を伝達し、通信自体はP2Pで行われる形になる形式の模様です。(TailScaleは認可を担っている)

Install&Howto

この転送機能をtailscaleでは、taildrop (AirDropのもじりですね)と呼んでいます。
https://tailscale.com/kb/1106/taildrop/?tab=macos
内容はこの公式ガイドライン通りなので少しなぞって説明しておきます。

Linux

Linux側の導入は、公式ガイドに沿って実施すれば問題ありません。https://tailscale.com/download/linux 今回はマニュアルでインストールしました。プルダウンから該当するディストリビューションの種類を選んで実行します。

Linux側の注意点としては、tailscale自体が root権限で動いている点です。そのため受信したファイルは root権限のファイルとなっていまいます。接続(tailscale up)後に以下のコマンドで受信ができます。

~/D/tmp
❯❯❯ sudo tailscale file get .

上記のコマンドで受信モードになります。ディレクトリ内のファイルの権限は注意

-rw-r--r-- 1 root root 49212 1月 23 20:22 IMG_7881.PNG
-rw-r--r-- 1 root root 1293555 1月 23 20:15 IMG_7918.PNG

上記実施後、tailscale file コマンドは終了します。

P2Pと言いながらも以前に送信したものが送られてくる感じのタイミングがありました。(tailscale file get を後で実行したら)TialDrop自体のデータがどこかを経由してキャッシュしているのかそのタイミングでiPhone側から送られてきているのかちょっと未検証

iPhone

導入は以下のQRコードで読み取ったAppStoreのアプリをいれるだけす。

アプリは「VPN」アプリとして登録されますので、「設定」→「VPN」でON/OFFすることができます。他のVPNアプリと違って右上にvpnのマークが出てこないため接続されていることを認識しづらさがありますが基本的には使い方は同じで利用したいときだけONにしておけばよいです。
TailDropのやり方は、通常のアプリ共有と同じ方法でできます。複数のファイルを一度に送ることもできますので非常に便利

https://tailscale.com/kb/1106/taildrop/iphone-to-mac.mp4

注意点

便利なtailscaleですが、ローカルのデーモンは root権限で動作します。このため認可を行っているtailscaleやローカルのデーモンのセキュリティホールなどが見つかった場合には非常に危険な動作となります。これらのことを理解したうえで、なるべくであればモジュールのUpdateなどは毎日行う事ができる環境のマシンに導入することを強くおすすめします。
上部へスクロール