amegonの雑なブログ

日常的なものから技術的なものまでメモの雑記

Raspberry Pi 4B の初期設定をする

Raspberry Pi でやりたいこと

  • Raspberry Pi を触ってみたい
  • Zabbix Proxy として動かしたい
  • 温度センサーをつけて室内監視したい

Raspberry Pi の入手

Raspberry Pi 4B を Amazon で購入(いろいろついているキット)

Raspberry Pi の組み立て

付属の説明書通りに実施。

  • ヒートシンクを基盤に接着
  • 基盤に MicroSD カードをセット
    • MicroSD にはすでに Raspbian 11 bullseye の OS セットアップイメージが準備されていた
  • ケースに冷却ファンを取り付け
  • 基盤をケースにセット
    • ケースの底面部から先に装着
  • ケースのふたを閉じる
    • ここで冷却ファンを GPI0 ポートに接続

Raspberry Pi OSのインストール

OS をインストールする前に以下の準備を実施。

  • マウスとキーボードを USB 2.0 側に接続
  • HDMI でモニターを接続
  • ネットワークケーブルを接続
  • 電源アダプタを Type-C に接続

いざ電源 ON。
インストールは最初に日本語を選択後は特に困ることもなく進む。
完了まで時間はまぁまぁかかった。(体感で20-30分くらい)

Raspberry Pi の初期設定

IP アドレスは DHCP サーバー側で固定のアドレスを返すようにしたので、ラズパイ側の設定変更はなし。
特になにもしなかった。

Raspberry PiVNC で接続

Raspbery Pi 側の設定

VNC Viewer で接続するために必要な設定を実施。

クライアント側

Windows での接続を試行。
最初 Ultra VNC を試していたがどうしても接続できず、調べたところ Raspbery Pi との接続に必要な認証方式がサポートされていないということだった。
結果、使える VNC Viewer (クライアント) は Real VNC しか見つけられなかった。
(他にも TightVNC を試してみたが接続できず。)

SSH 有効化

このあとツールやアプリを入れるときに VNC しなくても SSH でできたら楽だと思ったので、SSH を有効化。

  • コンソールを開くで sudo raspi-config と実行
  • 開いた画面で Interfaces Options を選択
  • P2 SSH を選択
  • Would you like the SSH server to be enabled? と聞かれるので Yes を選択
    • SSH を無効化したい場合は NO を選択
  • The SSH server is enabled と表示されればOK
  • 戻ってきた画面で Finish を選択して設定完了

リモートから接続を試してみる。

コマンドプロンプトPowerShell で以下のコマンドを実行

ssh userid@[IPアドレス] or [hostname]

ログイン結果

ログインできた。
これで今後いろいろと使っていきたい。

iPhone の Outlook でさくらのメールが利用できなくなった(が解決した)

事象

  • iPhoneOutlook を開くと、さくらのメールアドレスに対してサインインするような表示がされた
  • IMAPSMTP ともに正しいパスワードを入力してもログインできない

回避策

  • Outlook から一度さくらのメールアカウントを削除
  • 再度追加
    • 事象発生時に試みていたパスワードを用いてログインし、メール受信することができた

感想

正しいパスワードを使用してログインできる、できないの状況が発生していたので、Outlook 側の問題だと思われる。 アカウントを Outlook に再登録することで回避できたので、しばらく様子を見ます。

Zabbix 5.0 から 6.0 へのバージョンアップ

結果

以下ページの通りに実施したらできた。

https://tech-mmmm.blogspot.com/2022/03/zabbix-5060-mariadb.html

わかりやすいご説明で感謝です!

実行手順

以下は先述の手順にしたがって実施した内容と自身の環境で発生したメモを記載。
ただ、特筆するようなものはなし。

バックアップ作成

自身の環境は Hyper-V で動作している環境なので、チェックポイント(スナップショット)を作成しておいた。

Zabbix の停止

systemctl stop zabbix-server zabbix-agent httpd php-fpm

MariaDB の停止

systemctl stop mariadb

MariaDB のアンインストール

Zabbix 6.0 では MariaDB 10.5~10.6 を利用する必要があるが、標準のリポジトリではインストールすることができないため、一度 dnf remove を使ってMariaDBをアンインストールする。 とのこと。

dnf remove mariadb mariadb-server

mysql-libsmysql-common が残っていると次版の MariaDB インストール時に競合することがあるらしいので、個別にアンインストールしておくとのこと。 私の環境では残っていなかったのでスキップした。

rpm -qa | grep mysql
rpm -e <上記コマンドで表示された mysql-libs のフルネーム>
rpm -e <上記コマンドで表示された mysql-common のフルネーム>

MariaDB の最新版をインストール

以下のコマンドで MariaDB のインストールを実施。

curl -O https://downloads.mariadb.com/MariaDB/mariadb_repo_setup
bash mariadb_repo_setup --mariadb-server-version mariadb-10.6
dnf clean all
dnf install -y MariaDB-server MariaDB-client

インストール後 MariaDB のバージョンを確認

mariadb --version

Zabbix のバージョンアップ

rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/8/x86_64/zabbix-release-6.0-1.el8.noarch.rpm
dnf clean all
dnf install -y zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-agent zabbix-web-japanese

Zabbix のパッケージでバージョンがあがっていないものがないか確認する。 あれば dnf install を実施してバージョンアップする。

rpm -qa | grep zabbix
dnf install -y <バージョンが上がっていなかったパッケージの名前>

MariDB 起動

systemctl start mariadb
systemctl enable mariadb

MariaDB を起動するとエラーがでることがあるらしい。 (私の環境では発生しなかった。)

# tail -30 /var/log/messages | grep "ERROR"
Feb 27 20:35:52 t1024cent mariadbd[20784]: 2022-02-27 20:35:52 0 [ERROR] Incorrect definition of table mysql.event: expected column 'definer' at position 3 to have type varchar(, found type char(141).
Feb 27 20:35:52 t1024cent mariadbd[20784]: 2022-02-27 20:35:52 0 [ERROR] mariadbd: Event Scheduler: An error occurred when initializing system tables. Disabling the Event Scheduler.

その場合には以下のコマンドを実行する。

mariadb-upgrade

Zabbix 起動

起動すると zabbix_server.log にアップグレードプロセスの実施記録が残るので事前にログを表示しておいてから Zabbix を起動してみる。 (Zabbix 起動時に確認できなかった場合は後で確認でも当然OK。)

tail -f /var/log/zabbix/zabbix_server.log

Zabbix を起動する。

systemctl start zabbix-server zabbix-agent httpd php-fpm
systemctl enable zabbix-server zabbix-agent httpd php-fpm

Zabbix へのログイン確認

ブラウザにログインして確認する。

バージョンアップ中データの欠けが存在しているが、バージョンアップ前のデータも残っており、監視データの取得も再開されていることが確認できた。 このことから正常にバージョンアップができたと判断できる。

(バージョンアップ前に 1時間弱発生しているデータ欠けは別の検証で他の Zabbix から監視データ移行を行った際に発生したデータ欠けです。今回のバージョンアップとは関係ありません(汗) )

Zabbix サーバーの DB を別に構築したサーバーに移行する手順のまとめ

実現したいこと

  • CentOS 7 環境で稼働している Zabbix の監視データ(監視設定、監視データともに)を Miracle Linux で稼働している Zabbix に移行したい。

きっかけ

自宅で利用している Zabbix サーバーは稼働 OS が CentOS 7 でありサポートが終了してしばらく経過している。 このままだと何かあったときに面倒なので、サポート中の OS で稼働している Zabbix に移行したいと思った。

移行段取り

  • 移行先の OS を MIRACLE LINUX で構築し、Zabbix もインストールしておく
  • 移行元 Zabbix で DB のダンプを実行してダンプファイルを作成
  • 移行先 Zabbix でダンプファイルをインポート

結果

  • OS の種類は違えど Zabbix サーバーのバージョンは LTS のマイナーバージョンまでは合わせていたためか難しいことはなかった。
  • MariaDB のバージョンが移行元(10.1.48)と移行先(10.10.3)で異なっていたが、こちらも問題は発生しなかった。

環境

Zabbix データベース移行手順

データ移行元 Zabbix での作業

データベースのバックアップ作成(dump)

以下のコマンドを実行して dump を作成する。

mysqldump -u zabbix -p zabbix > mysqldump_zabbix_`date +"%Y%m%d"`.sql

データ移行先 Zabbix での作業

データ移行元 Zabbix で作成したバックアップをローカルに保存しておく

今回は root ユーザーで実行していたので、/root の配下にバックアップを置いた。

[root@ml86 ~]# ls -la /root/mysqldump_zabbix_20230510.sql
-rw-r--r-- 1 root root 483217015  5月  9 18:51 /root/mysqldump_zabbix_20230510.sql
[root@ml86 ~]#

データベースの移行(リストア)

以下の手順で実施。

  • Zabbix サーバーの停止
  • MaridDB から zabbix データベースの削除
  • MaridDB の停止
  • MaridDB のログファイルの削除
  • MaridDB の起動
  • MaridDB に zabbix データベースを再作成
  • MaridDB の zabbix ユーザーに zabbix データベースへのアクセス権を追加
  • バックアップファイルからデータベースのリストア
  • Zabbix サーバーの再起動

以下、コマンド実行順序

systemctl stop zabbix-server
mysql -e"drop database zabbix;"
systemctl stop mysql
rm /var/lib/mysql/ib_logfile0
rm /var/lib/mysql/ibdata*
systemctl start mysql
mysql -e"create database zabbix character set utf8 collate utf8_bin;"
mysql -e"grant all privileges on zabbix.* to zabbix@localhost;"
mysql zabbix < /root/mysqldump_zabbix_20230510.sql
systemctl start zabbix-server

Zabbix の稼働状態を確認

zabbix_server.log

  1995:20230509:193112.958 Starting Zabbix Server. Zabbix 5.0.32 (revision 44d6302efbd).
  1995:20230509:193112.958 ****** Enabled features ******
  1995:20230509:193112.958 SNMP monitoring:           YES
  1995:20230509:193112.958 IPMI monitoring:           YES
  1995:20230509:193112.958 Web monitoring:            YES
  1995:20230509:193112.958 VMware monitoring:         YES
  1995:20230509:193112.958 SMTP authentication:       YES
  1995:20230509:193112.959 ODBC:                      YES
  1995:20230509:193112.959 SSH support:               YES
  1995:20230509:193112.959 IPv6 support:              YES
  1995:20230509:193112.959 TLS support:               YES
  1995:20230509:193112.959 ******************************
  1995:20230509:193112.959 using configuration file: /etc/zabbix/zabbix_server.conf
  1995:20230509:193112.963 current database version (mandatory/optional): 05000000/05000005
  1995:20230509:193112.963 required mandatory version: 05000000
  1995:20230509:193112.963 optional patches were found
  1995:20230509:193112.963 starting automatic database upgrade
  1995:20230509:193113.010 completed 50% of database upgrade
  1995:20230509:193113.013 completed 100% of database upgrade
  1995:20230509:193113.013 database upgrade fully completed
  1995:20230509:193113.021 server #0 started [main process]
  1996:20230509:193113.022 server #1 started [configuration syncer #1]
  1998:20230509:193113.432 server #3 started [alerter #1]
  1999:20230509:193113.434 server #4 started [alerter #2]
  1997:20230509:193113.435 server #2 started [alert manager #1]
  2000:20230509:193113.436 server #5 started [alerter #3]
  2001:20230509:193113.438 server #6 started [preprocessing manager #1]
  2002:20230509:193113.440 server #7 started [preprocessing worker #1]
  2003:20230509:193113.443 server #8 started [preprocessing worker #2]
  2005:20230509:193113.444 server #10 started [lld manager #1]
  2004:20230509:193113.446 server #9 started [preprocessing worker #3]
  2006:20230509:193113.446 server #11 started [lld worker #1]
  2007:20230509:193113.447 server #12 started [lld worker #2]
  2008:20230509:193113.450 server #13 started [housekeeper #1]
  2009:20230509:193113.452 server #14 started [timer #1]
  2010:20230509:193113.453 server #15 started [http poller #1]
  2011:20230509:193113.454 server #16 started [discoverer #1]
  2013:20230509:193113.459 server #17 started [history syncer #1]
  2016:20230509:193113.461 server #19 started [history syncer #3]
  2015:20230509:193113.463 server #18 started [history syncer #2]
  2022:20230509:193113.469 server #21 started [escalator #1]
  2021:20230509:193113.472 server #20 started [history syncer #4]
  2023:20230509:193113.477 server #22 started [proxy poller #1]
  2025:20230509:193113.480 server #23 started [self-monitoring #1]
  2027:20230509:193113.482 server #24 started [task manager #1]
  2028:20230509:193113.483 server #25 started [poller #1]
  2029:20230509:193113.485 server #26 started [poller #2]
  2034:20230509:193113.487 server #29 started [poller #5]
  2033:20230509:193113.489 server #28 started [poller #4]
  2032:20230509:193113.491 server #27 started [poller #3]
  2038:20230509:193113.493 server #30 started [unreachable poller #1]
  2039:20230509:193113.494 server #31 started [trapper #1]
  2040:20230509:193113.496 server #32 started [trapper #2]
  2044:20230509:193113.501 server #33 started [trapper #3]
  2047:20230509:193113.503 server #34 started [trapper #4]
  2048:20230509:193113.504 server #35 started [trapper #5]
  2049:20230509:193113.505 server #36 started [icmp pinger #1]
  2052:20230509:193113.506 server #37 started [alert syncer #1]

起動できた。 ただ、起動後に監視できないホストがいる旨のログが記録されていた。 これは移行元の Zabbix と移行後の Zabbix のサーバーの IP アドレスが異なっているから。 最終的には移行後の Zabbix サーバーの IP アドレスを移行元の IP アドレスにあわせる予定なので、今は気にしないことにする。

ブラウザ

ダッシュボードの図。 トリガーで Zabbix Server のバージョンが変わった旨も検知できているので、良いのではないでしょうか。

Google Nexus 7 (2013) を Android 12L にしてみたが四苦八苦した記録

きっかけから設定の流れ

  • 家の掃除中に眠っている Google Nexus 7 (2013) Wifi モデルを発見
  • フルリセットかけてみたところバッテリもまぁまぁ生きていてそこそこ動きそう。
  • 何かに利用できないか動作確認はじめたところ、動かないアプリが多そう。
    • Google PlayAmazon とか Yahoo 天気 とか入れることができない。。
    • Andtoid 6 なのが原因っぽい。古いもんね。
  • インターネットで記事を読んでいたら Android 12L なるものを動かすことができるらしいことを知り、セットアップに挑戦する気になる。
  • 調べたら Android 13 も出ているらしい。そんな時代だから、Nexus 7 もせっかくなら新しい OS にしてみようかという気になる。

結果

Amdroid 12 相当で動作し、アプリは Google Play からインストールできるようになった。

きっかけ参考記事

やってみた記録

試行錯誤した記録をそのまま載せています。
長いですが、誰かの参考になれば幸いです。

実行環境

参考ページ

実行

TWRP の準備

Windows 11 に Android Device のドライバをセットアップ

Windows のデバイスマネージャに Android Device というのが登録されていないとだめらしいので設定する。

  • Google からドライバをダウンロード
  • ダウンロードした zip を展開して任意の場所に保存
  • Windows でデバイスマネージャを起動して、ツリーの最上部で右クリック → ドライバーの追加 を選択
  • ダウンロードして展開して保存したフォルダーを選択して次へボタンを押す
  • Android Device が登録される。ここでコンピュータの再起動が必要と言われたら再起動する。
adb コマンドの導入
  • Platform-Toolsのダウンロード
    • SDK Platform-Tools for Windows をダウンロード を選択
  • ダウンロードした zip ファイルの解凍
    • 今回ダウンロードしたファイルは platform-tools_r34.0.1-windows.zip だった
  • 解凍したファイルをディレクトリごと C ドライブ直下に保存
    • 今回は C:\platform-tools のようになった
  • 環境変数の設定を実施する
    • Windows キー + Pause キーで システム > バージョン情報 を表示
    • 画面中段くらいにある システムの詳細設定 を選択
    • 開いた システムのプロパティ環境変数 ボタンを押す
    • システム環境変数 側の Path を選択して 編集 ボタンを押す
    • 開いた 環境編集名の編集新規 ボタンを押して先ほどのパス C:\platform-tools を記載して OK ボタンを押す
    • あとは OK ボタンを押して行って開いた画面を閉じていけばOK
  • コマンドプロンプトを開き adb コマンドを実行してみる
    • 実行してみて以下みたいにたくさんの表示がされればOK
C:\>adb
Android Debug Bridge version 1.0.41
Version 34.0.1-9680074
Installed as C:\platform-tools\adb.exe

global options:
 -a                       listen on all network interfaces, not just localhost
 -d                       use USB device (error if multiple devices connected)
 -e                       use TCP/IP device (error if multiple TCP/IP devices available)
 -s SERIAL                use device with given serial (overrides $ANDROID_SERIAL)
 -t ID                    use device with given transport id
 -H                       name of adb server host [default=localhost]
 -P                       port of adb server [default=5037]
 -L SOCKET                listen on given socket for adb server [default=tcp:localhost:5037]
 --one-device SERIAL|USB  only allowed with 'start-server' or 'server nodaemon', server will only connect to one USB device, specified by a serial number or USB device address.
 --exit-on-write-error    exit if stdout is closed

general commands:
 devices [-l]             list connected devices (-l for long output)
 help                     show this help message
 version                  show version num

networking:
 connect HOST[:PORT]      connect to a device via TCP/IP [default port=5555]
 disconnect [HOST[:PORT]]
     disconnect from given TCP/IP device [default port=5555], or all
 pair HOST[:PORT] [PAIRING CODE]
     pair with a device for secure TCP/IP communication
 forward --list           list all forward socket connections
 forward [--no-rebind] LOCAL REMOTE
     forward socket connection using:
       tcp:<port> (<local> may be "tcp:0" to pick any open port)
       localabstract:<unix domain socket name>
       localreserved:<unix domain socket name>
       localfilesystem:<unix domain socket name>
       dev:<character device name>
       jdwp:<process pid> (remote only)
       vsock:<CID>:<port> (remote only)
       acceptfd:<fd> (listen only)
 forward --remove LOCAL   remove specific forward socket connection
 forward --remove-all     remove all forward socket connections
 reverse --list           list all reverse socket connections from device
 reverse [--no-rebind] REMOTE LOCAL
     reverse socket connection using:
       tcp:<port> (<remote> may be "tcp:0" to pick any open port)
       localabstract:<unix domain socket name>
       localreserved:<unix domain socket name>
       localfilesystem:<unix domain socket name>
 reverse --remove REMOTE  remove specific reverse socket connection
 reverse --remove-all     remove all reverse socket connections from device
 mdns check               check if mdns discovery is available
 mdns services            list all discovered services

file transfer:
 push [--sync] [-z ALGORITHM] [-Z] LOCAL... REMOTE
     copy local files/directories to device
     --sync: only push files that are newer on the host than the device
     -n: dry run: push files to device without storing to the filesystem
     -z: enable compression with a specified algorithm (any/none/brotli/lz4/zstd)
     -Z: disable compression
 pull [-a] [-z ALGORITHM] [-Z] REMOTE... LOCAL
     copy files/dirs from device
     -a: preserve file timestamp and mode
     -z: enable compression with a specified algorithm (any/none/brotli/lz4/zstd)
     -Z: disable compression
 sync [-l] [-z ALGORITHM] [-Z] [all|data|odm|oem|product|system|system_ext|vendor]
     sync a local build from $ANDROID_PRODUCT_OUT to the device (default all)
     -n: dry run: push files to device without storing to the filesystem
     -l: list files that would be copied, but don't copy them
     -z: enable compression with a specified algorithm (any/none/brotli/lz4/zstd)
     -Z: disable compression

shell:
 shell [-e ESCAPE] [-n] [-Tt] [-x] [COMMAND...]
     run remote shell command (interactive shell if no command given)
     -e: choose escape character, or "none"; default '~'
     -n: don't read from stdin
     -T: disable pty allocation
     -t: allocate a pty if on a tty (-tt: force pty allocation)
     -x: disable remote exit codes and stdout/stderr separation
 emu COMMAND              run emulator console command

app installation (see also `adb shell cmd package help`):
 install [-lrtsdg] [--instant] PACKAGE
     push a single package to the device and install it
 install-multiple [-lrtsdpg] [--instant] PACKAGE...
     push multiple APKs to the device for a single package and install them
 install-multi-package [-lrtsdpg] [--instant] PACKAGE...
     push one or more packages to the device and install them atomically
     -r: replace existing application
     -t: allow test packages
     -d: allow version code downgrade (debuggable packages only)
     -p: partial application install (install-multiple only)
     -g: grant all runtime permissions
     --abi ABI: override platform's default ABI
     --instant: cause the app to be installed as an ephemeral install app
     --no-streaming: always push APK to device and invoke Package Manager as separate steps
     --streaming: force streaming APK directly into Package Manager
     --fastdeploy: use fast deploy
     --no-fastdeploy: prevent use of fast deploy
     --force-agent: force update of deployment agent when using fast deploy
     --date-check-agent: update deployment agent when local version is newer and using fast deploy
     --version-check-agent: update deployment agent when local version has different version code and using fast deploy
     (See also `adb shell pm help` for more options.)
 uninstall [-k] PACKAGE
     remove this app package from the device
     '-k': keep the data and cache directories

debugging:
 bugreport [PATH]
     write bugreport to given PATH [default=bugreport.zip];
     if PATH is a directory, the bug report is saved in that directory.
     devices that don't support zipped bug reports output to stdout.
 jdwp                     list pids of processes hosting a JDWP transport
 logcat                   show device log (logcat --help for more)

security:
 disable-verity           disable dm-verity checking on userdebug builds
 enable-verity            re-enable dm-verity checking on userdebug builds
 keygen FILE
     generate adb public/private key; private key stored in FILE,

scripting:
 wait-for[-TRANSPORT]-STATE...
     wait for device to be in a given state
     STATE: device, recovery, rescue, sideload, bootloader, or disconnect
     TRANSPORT: usb, local, or any [default=any]
 get-state                print offline | bootloader | device
 get-serialno             print <serial-number>
 get-devpath              print <device-path>
 remount [-R]
      remount partitions read-write. if a reboot is required, -R will
      will automatically reboot the device.
 reboot [bootloader|recovery|sideload|sideload-auto-reboot]
     reboot the device; defaults to booting system image but
     supports bootloader and recovery too. sideload reboots
     into recovery and automatically starts sideload mode,
     sideload-auto-reboot is the same but reboots after sideloading.
 sideload OTAPACKAGE      sideload the given full OTA package
 root                     restart adbd with root permissions
 unroot                   restart adbd without root permissions
 usb                      restart adbd listening on USB
 tcpip PORT               restart adbd listening on TCP on PORT

internal debugging:
 start-server             ensure that there is a server running
 kill-server              kill the server if it is running
 reconnect                kick connection from host side to force reconnect
 reconnect device         kick connection from device side to force reconnect
 reconnect offline        reset offline/unauthorized devices to force reconnect

usb:
 attach                   attach a detached USB device
 detach                   detach from a USB device to allow use by other processes
environment variables:
 $ADB_TRACE
     comma-separated list of debug info to log:
     all,adb,sockets,packets,rwx,usb,sync,sysdeps,transport,jdwp
 $ADB_VENDOR_KEYS         colon-separated list of keys (files or directories)
 $ANDROID_SERIAL          serial number to connect to (see -s)
 $ANDROID_LOG_TAGS        tags to be used by logcat (see logcat --help)
 $ADB_LOCAL_TRANSPORT_MAX_PORT max emulator scan port (default 5585, 16 emus)
 $ADB_MDNS_AUTO_CONNECT   comma-separated list of mdns services to allow auto-connect (default adb-tls-connect)

Online documentation: https://android.googlesource.com/platform/packages/modules/adb/+/refs/heads/master/docs/user/adb.1.md


C:\>
  • Nexus 7 をつないで動作確認
    • Nexus 7 側で USB デバッグを有効(ON)にする
      • Nexus 7 で 設定 → タブレット情報を選択
      • ビルド番号 を何回かタップする
        • すると 開発者オプションが有効になりました と表示される
      • 設定 → 開発者オプションを選択して USB デバッグ を有効にする
    • パソコンと Nexus 7 をつなぐ
    • FASTBOOT MODE を起動する
      • コマンドプロンプトで 以下のコマンドを実行
        • adb reboot bootloader
      • Nexus 7 側で USBデバッグを許可しますか? という画面がでてくるのでチェックをつけてOKを選択
      • 再度 adb reboot bootloader コマンドを実行
      • Nexux 7 で FASTBOOT MODE が起動したことを確認
    • ※ 参考にしたサイトでは、以下のコマンドを実行すると結果が得られるようであるが、私の Nexus 7 では初回実施時は応答が得られなかった
      • FASTBOOT MODE で端末情報を表示させる:fastboot devices
      • FASTBOOT MODE で端末を再起動させる:fastboot reboot
      • Google のドライバをインストールしたら応答が返ってくるようになった! なので、先にドライバをインストールする手順を記載しておく。
TWRP のダウンロード
Nexus 7 に TWRP をインストール
  • PC と Nexus 7 を USB で接続
    • ※ 充電モードで接続していることがあるので、その際は通知から充電通知を選択して ファイル転送 を選択する
  • PC で PowerShell を起動
  • 以下のコマンドでFASTBOOTモードを起動
    • adb reboot bootloader
  • Bootloader を unlock する:ブートローダのアンロックでメーカー保証は一切なし、Nexus 7 も完全に初期化されるので、必ず自身の判断で実施してください。(Nexus 7 の保証がいまだにあるのかはわからないですが...)
    • (私の Nexus 7 では Bootloader が locked だったので、アンロックする)
    • 以下のコマンドを実行
      • fastboot oem unlock
    • Nexus 7 側で本当に unlock するのかどうか聞いてくるのでボリュームボタンで Yes を選択して電源ボタンを押す
  • ここで Nexus 7 が再起動してくるが、初期化されているので再セットアップを行う
  • USB デバッグも無効になっているので、再度有効にする
  • 再度 PC と Nexus 7 を USB で接続
  • PC で PowerShell を起動
  • 以下のコマンドでFASTBOOTモードを起動
    • adb reboot bootloader
  • TWRP をインストールする
    • Nexus 7 が FASTBOOT モードの状態のまま以下のコマンドを実行
      • fastboot flash recovery recovery.img
  • TWRP の起動
    • Nexus 7 が FASTBOOT モードの状態のまま以下のコマンドを実行
      • fastboot boot recovery.img
      • 少し間をおいてから起動してくる
    • ※ 次回以降 TWRP を起動するには、電源を切った状態で 音量上 + 電源ボタン 長押しで起動できる
lineage-20 (Android 13) をインストール
  • lineage-20.0-20230507-UNOFFICIAL-flo.zip を Nexus 7 にコピー
  • TWRP で Install を選択
  • lineage-20.0-20230507-UNOFFICIAL-flo.zip を選択
  • 以下1つにチェックを入れて Swipe to confirm Flash を実行
    • Skip Digest check before installing zip
    • 失敗
  • パーティションのリサイズを実行
    • 以下のページを参考に実施
    • sysrepart_1380_20.zip を Nexus 7 ににコピー
    • TWRP で Install → sysrepart_1380_20.zip を選択して以下だけにチェックをいれて Swipe
      • Skip Digest check before installing zip
    • Reboot System を選択して再起動
  • 再起動したら再度 TWRP を起動
    • Wipe を選択
    • Advanced Wipe を選択
    • Sysetm と Data と Cache にチェックを入れて Swipe を実行
    • フォーマットが終わったら Back と 左矢印で戻る
  • カスタム ROM の zip ファイル(lineage-20.0-20230507-UNOFFICIAL-flo.zip)と、GApps の zip ファイル(MindTheGapps-13.0.0-arm-20230401_160426.zip)を Nexux 7 にコピー
  • Install を選択
  • カスタム ROM を選択して Add more Zips で GApps を選択
  • Swipe してインストールを開始
    • GApps のインストールに失敗。パーティションがなんやかんやといわれる。(エラーをちゃんとメモしておけばよかったが流してしまった...)
  • Reboot System を選択して再起動
  • 電源入れると新しい OS が起動された。

Android 13 で起動した。
しかし GApps がインストールできなかったのでアプリを追加することができない。
一旦ここで中断。

lineage-19 (Android 12) をインストール

以下のモジュールをゲットできたので、再度インストールにトライする。

  • lineage-19.0-20220215-UNOFFICIAL-flo.zip
  • open_gapps-arm-12L-pico-20220705-UNOFFICIAL_MOD.zip

インストールの手順

  • Nexus 7Windows につなぐ
  • Nexus 7 上でファイル転送に設定
  • WindowsPowerShell を起動
  • PowerShell 上で以下のコマンドを実行
    • adb reboot bootloader
  • Nexus 7 が FASTBOOT MODE になったことを確認
  • TWRP の起動
    • Nexus 7 が FASTBOOT モードの状態のまま以下のコマンドを実行
      • fastboot boot recovery.img
      • 少し間をおいてから起動してくるのでちょっと待つ
  • TWRP で Wipe を実行
    • Wipe を選択
    • Advanced Wipe を選択
    • Sysetm と Data と Cache にチェックを入れて Swipe を実行
    • フォーマットが終わったら Back と 左矢印で戻る
  • 以下2つのファイルを Nexus 7 にコピーする
    • lineage-19.0-20220215-UNOFFICIAL-flo.zip
    • open_gapps-arm-12L-pico-20220705-UNOFFICIAL_MOD.zip
    • コマンド
      • adb push .\lineage-19.0-20220215-UNOFFICIAL-flo.zip /sdcard/
      • adb push .\open_gapps-arm-12L-pico-20220705-UNOFFICIAL_MOD.zip /sdcard/
  • TWRP で Install を選択
  • カスタム ROM (lineage-19.0-20220215-UNOFFICIAL-flo.zip) を選択して Add more Zips で GApps (open_gapps-arm-12L-pico-20220705-UNOFFICIAL_MOD.zip) を選択
  • Swipe してインストールを開始
    • GApps のインストールに失敗。 Error Code: 20 Updating partition details...
  • パーティションのリサイズを実行
    • sysrepart_1380_20.zip を Nexus 7 ににコピー
    • TWRP で Install → sysrepart_1380_20.zip を選択して以下だけにチェックをいれて Swipe
      • Skip Digest check before installing zip
  • インストールが成功したら、Wipe cache/delvik を選択
  • Reboot System を選択
  • 電源入れると新しい OS が起動される。
  • 以下のコマンドでFASTBOOTモードを起動
    • adb reboot bootloader
  • TWRP を再度インストールする
    • Nexus 7 が FASTBOOT モードの状態のまま以下のコマンドを実行
      • fastboot flash recovery recovery.img
  • TWRP の起動
    • Nexus 7 が FASTBOOT モードの状態のまま以下のコマンドを実行
      • fastboot boot recovery.img
      • 少し間をおいてから起動してくる
  • TWRP で Mount を選択
    • System、Data、Cache にチェックを入れてホームボタンで戻る
  • TWRP で Wipe を実行
    • Wipe を選択
    • Advanced Wipe を選択
    • Sysetm と Data と Cache にチェックを入れて Swipe を実行
    • フォーマットが終わったら ホームボタンで戻る
  • 以下2つのファイルを Nexus 7 にコピーする
    • lineage-19.0-20220215-UNOFFICIAL-flo.zip
    • open_gapps-arm-12L-pico-20220705-UNOFFICIAL_MOD.zip
    • コマンド
      • adb push .\lineage-19.0-20220215-UNOFFICIAL-flo.zip /sdcard/
      • adb push .\open_gapps-arm-12L-pico-20220705-UNOFFICIAL_MOD.zip /sdcard/
  • TWRP で Install を選択
  • カスタム ROM (lineage-19.0-20220215-UNOFFICIAL-flo.zip) を選択して Add more Zips で GApps (open_gapps-arm-12L-pico-20220705-UNOFFICIAL_MOD.zip) を選択
  • Swipe してインストールを開始
    • やはり GApps がインストールできず。
  • 次に BiTGApps-arm-12.0.0-R39_signed.zip をためす
    • 成功したっぽい
    • Reboot System を選択
  • 動いた

lineage 19 起動後の動作確認

  • 日本語表示:設定可能、日本語も違和感なし
  • GooglePlay:インストールされていた。
    • サインインして Chrome をインストール。しかし保留中でインストールできず。。
    • いくら待ってもアプリがインストールされない。

今回もここでいったん中断。
アプリはいらないとあまり使い道がないので、もう一回考える。

lineage 19 と GApps の組み合わせを変えてみる

ネットでの検索結果をもとに、Google Play が動作した報告のある以下の組み合わせにしてみる。

  • lineage-19.0-20220215-UNOFFICIAL-flo.zip
  • NikGapps-core-arm64-12.1-20230418-signed.zip

いざ実行。

  • WindowsNexus 7 を USB で接続
  • FASTBOOTモードを起動
    • adb reboot bootloader
  • TWRP の起動
    • Nexus 7 が FASTBOOT モードの状態のまま以下のコマンドを実行
      • fastboot boot recovery.img
      • 少し間をおいてから起動してくる
  • TWRP で System をマウント
  • TWRP で Wipe を選択
    • Advanced Wipe を選択
    • Sysetm と Data と Cache にチェックを入れて Swipe を実行
    • ホームボタンで戻る
  • TWRP で Wipe を選択
    • Format Data を選択
    • yes を入力
  • 以下2つのファイルを Nexus 7 にコピーする
    • lineage-19.0-20220215-UNOFFICIAL-flo.zip
    • open_gapps-arm-12L-pico-20220705-UNOFFICIAL_MOD.zip
    • コマンド
      • adb push .\lineage-19.0-20220215-UNOFFICIAL-flo.zip /sdcard/
      • adb push .\NikGapps-core-arm64-12.1-20230418-signed.zip /sdcard/
  • TWRP で Install を選択
  • カスタム ROM (lineage-19.0-20220215-UNOFFICIAL-flo.zip) を選択して Add more Zips で GApps (open_gapps-arm-12L-pico-20220705-UNOFFICIAL_MOD.zip) を選択
  • Swipe してインストールを開始
  • インストールできた
  • Reboot System を選択

GApps がでてこない。
では、もう一つ動作報告のある以下の構成を試してみる。

  • lineage-19.0-20220215-UNOFFICIAL-flo.zip
  • BiTGApps-arm-12.0.0-v2.0-CORE.zip

実施。
だんだん手馴れてきた。

  • WindowsNexus 7 を USB で接続
  • FASTBOOTモードを起動
    • adb reboot bootloader
  • TWRP の起動
    • Nexus 7 が FASTBOOT モードの状態のまま以下のコマンドを実行
      • fastboot boot recovery.img
      • 少し間をおいてから起動してくる
  • TWRP で System をマウント
  • TWRP で Wipe を選択
    • Advanced Wipe を選択
    • Sysetm と Data と Cache にチェックを入れて Swipe を実行
    • ホームボタンで戻る
  • TWRP で Wipe を選択
    • Format Data を選択
    • yes を入力
  • 以下2つのファイルを Nexus 7 にコピーする
    • lineage-19.0-20220215-UNOFFICIAL-flo.zip
    • open_gapps-arm-12L-pico-20220705-UNOFFICIAL_MOD.zip
    • コマンド
      • adb push .\lineage-19.0-20220215-UNOFFICIAL-flo.zip /sdcard/
      • adb push .\BiTGApps-arm-12.0.0-v2.0-CORE.zip /sdcard/
  • TWRP で Install を選択
  • カスタム ROM (lineage-19.0-20220215-UNOFFICIAL-flo.zip) を選択して Add more Zips で GApps (open_gapps-arm-12L-pico-20220705-UNOFFICIAL_MOD.zip) を選択
  • Swipe してインストールを開始
  • インストールできた
  • Reboot System を選択

OS が Android 12 で Gooele Play も動作した。
ChromeFirefox、Yahoo 天気 をインストールすることができた。

GApps が使えなければ...

以下でアプリを入れることができるらしい。
実際には試さなかったがメモしておく。

  • apkpure
  • aurora store

OVA ファイルとしてエクスポートした仮想マシンを Hyper-V で使用する

手順

  • OVA ファイルから VMDK の取り出し
  • Microsoft Virtual Machine Converter による VMDK から VHDX への変換
    • Microsoft Virtual Machine Converter の取得、インストール
    • PowerShell でのコマンド実行(管理者権限で実行)
  • Hyper-V へのインポート
  • 仮想マシン起動できず試したこと

OVA ファイルから VMDK の取り出し

  • OVA ファイルを 7-zip で解凍する
  • 解凍したファイル群にふくまれている VMDK ファイルを取り出す

Microsoft Virtual Machine Converter による VMDK から VHDX への変換

Microsoft Virtual Machine Converter の取得、インストール

  • Microsoft Virtual Machine Converter を取得する。
    • 現時点ではサポート完了しているらしい。
    • 探すと archive からダウンロードできるようであるが、利用は個人の判断でお願いします。
  • Microsoft Virtual Machine Converter をインストール

PowerShell でのコマンド実行(管理者権限で実行)

  • PowerShell を管理者権限で実行する
  • PowerShell 上で以下のコマンドを順に実行
    • import-module "C:\Program Files\Microsoft Virtual Machine Converter\MvmcCmdlet.psd1"
    • convertto-mvmcvirtualharddisk -sourceliteralpath FILENAME.vmdk -destinationliteralpath FILENAME.vhdx -vhdformat vhdx -vhdtype fixedharddisk
      • FILENAME.vmdk と FILENAME.vhdx は適宜名前を変更する
      • fixedharddisk は dynamicharddisk にしてもOK
  • エラーなく完了したらできあがり

Hyper-V へのインポート

  • Hyper-V マネージャ
  • 開始する前に
    • 次へ ボタンを選択
  • 名前と場所の指定
    • 名前 をつける
    • 次へ ボタンを選択
  • 世代の指定
    • 世代を選択する
    • 次へ ボタンを選択
  • メモリの割り当て
    • 起動メモリを割り当てる
    • 次へ ボタンを選択
  • ネットワークの構成
    • 接続先を設定する
    • 次へ ボタンを選択
  • 仮想ハードディスクの接続
    • 既存の仮想ハードディスクを使用する を選択し VHDX を選択する
    • 次へ ボタンを選択
  • 要約
    • 完了 ボタンを押す

作成した仮想マシンに対して追加の設定が必要であれば随時行う。 設定方法は、作成した仮想マシンを選択して 設定 を選択する。

仮想マシン起動できず試したこと

ディスクが見つからず仮想マシンが起動できず(dracut で対応)

/dev/disk/by-uuid/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX does not exist とメッセージがでて起動できず。 一旦仮想マシンの電源OFF → ON をして rescue モードで起動。 その後ログインしてから以下の順に設定を実施。

  • /boot に移動
    • cd /boot
  • カーネルの確認。vmlinuz ではじまるファイルを確認する。
    • ls -l vmlinuz*
  • 起動するカーネルの名前を使用して以下のコマンドを実行して initramfs を再構築。ここでは vmlinuz-4.4.116-1.el7.elrepo.x86_64 の場合を想定する。
    • mv initramfs-4.4.116-1.el7.elrepo.x86_64.img{,.old}
    • dracut initramfs-4.4.116-1.el7.elrepo.x86_64.img 4.4.116-1.el7.elrepo.x86_64
  • 再起動する
    • reboot

参考

Debian 11 で SNMPトラップを受信できる環境を作成

はじめに

掲題の環境が必要になったので作成する。
まずは Debian 環境がないのでインストールから始める。
ざっとした流れは以下の通り。

今回の流れ

  • Debian 11 のインストール(Hyper-V)
  • Debian 11 のインストール後の設定
  • snmptrapd のインストール
  • snmp をインストール(snmpwalk や snmptrap を使用したい)
  • snmptrapd の起動オプションを修正

Debian 11 のインストール(Hyper-V)

Hyper-V 上に仮想マシンを作成してインストール
以下のサイトを参考にインストール

https://mebee.info/2019/12/01/post-3751/

仮想マシンのセキュリティの設定で セキュリティブートを有効にするのチェックを外す のがわからずはまった。。。

インストールが終わったら GUI も一緒にインストールされていた。
その意図ではなかったのでちょっと驚いた。

Debian 11 のインストール後の設定

ユーザーを sudo グループに追加

  • su コマンドで root になる
<ユーザー名>@<ホスト名>:~$ su -
パスワード:
  • adduser コマンドで指定したユーザーを sudo グループに追加
root@<ホスト名>:~# adduser <ユーザー名> sudo
パスワード:

ここで sudo に追加されるが、一般ユーザーで sudo を使用する場合にはいったんログアウトする必要あり。

snmptrapd のインストール

https://installati.one/debian/11/snmptrapd/

sudo apt-get update
sudo apt-get -y install snmptrapd

snmp をインストール(snmpwalk や snmptrap を使用したい)

sudo apt install snmp

snmptrapd の起動オプションを修正

/lib/systemd/system/snmptrapd.serviceExecStart を修正する。

  • 修正前
[Unit]
Description=Simple Network Management Protocol (SNMP) Trap Daemon.
After=network.target
ConditionPathExists=/etc/snmp/snmptrapd.conf

[Service]
Type=simple
ExecStart=/usr/sbin/snmptrapd -LOw -f -p /run/snmptrapd.pid
ExecReload=/bin/kill -HUP $MAINPID

[Install]
WantedBy=multi-user.target
  • 修正後
[Unit]
Description=Simple Network Management Protocol (SNMP) Trap Daemon.
After=network.target
ConditionPathExists=/etc/snmp/snmptrapd.conf

[Service]
Type=simple
#ExecStart=/usr/sbin/snmptrapd -LOw -f -p /run/snmptrapd.pid
ExecStart=/usr/sbin/snmptrapd -Lsd -f -p /run/snmptrapd.pid
ExecReload=/bin/kill -HUP $MAINPID

[Install]
WantedBy=multi-user.target

上記の変更後以下のコマンドを順に実行。

sudo systemctl daemon-reload
sudo systemctl restart snmptrapd

トラップ受信確認

以下のコマンドを実行する。

udo snmptrap -v 2c -c public localhost '' .1.3.6.1.4.1.8072.100 .1.3.6.1.4.1.8072.100.1 s "hoge"

snmptrapd で受信したログが /var/log/syslog に書き込まれるようになった。

xxx@debian:~$ sudo tail -f /var/log/syslog
[sudo] xxx のパスワード:

Apr 16 00:50:25 debian snmptrapd[2233]: 2023-04-16 00:50:25 localhost [UDP: [127.0.0.1]:34635->[127.0.0.1]:162]:#012iso.3.6.1.2.1.1.3.0 = Timeticks: (479856) 1:19:58.56#011iso.3.6.1.6.3.1.1.4.1.0 = OID: iso.3.6.1.4.1.8072.100#011iso.3.6.1.4.1.8072.100.1 = STRING: "hoge"

おまけ

使用しているポート番号を確認するコマンド

  • 使用している UDP のポート番号 162(snmp-trap) を翻訳せずに表示する
    • ss -anu | grep 162
xxx@debian:~$ ss -anu | grep 162
UNCONN 0      0                             0.0.0.0:162        0.0.0.0:*
xxx@debian:~$

snmptrap 送信コマンド

snmptrap -v 2c -c public localhost '' .1.3.6.1.4.1.8072.100 .1.3.6.1.4.1.8072.100.1 s "hoge"

他のホストに SNMP トラップを送りたければ、上記の localhost の部分を宛先のホスト名もしくは IP アドレスに変えて。