個人情報保護方針 お支払いについて お問い合わせ

Rock Compute Module CM3へのUbuntu20.04 LTEのインストール


2023/7/23更新 MaxIdleTimeの記載追加、Networkのpolkit回避に関する記述追加
2023/8/25更新 ファイルシステム不整合で起動できなくなった時の対処法追加


Raspberry Pi Compute Module 4は人気ですが品薄状態がつづいています。ここでは代替として Radxa社 https://wiki.radxa.com/Rock/ja_JPのRock Compute Module3が使用できます。CM3は RS-ONLINE で購入できるようです。CM3はRaspberryPiCM4と互換の2つのコネクタを持ち、さらに拡張機能として3つ目のコネクタを備えていいます。3つ目のコネクタを使用するとUSB3.0やSATA等のRock3独自の拡張された機能を使用できますが、このコネクタは使用しなくてもCM4と同様の機能は動作します。ここではRaspberry Pi CM4用のCM4 IO Boardを用いてRock CM3を動作させてみます。

マイクロSDカードへのインストール
eMMCへのインストール
SSHとVNCの設定
TigerVNCの設定 (1.10以前の場合)
TigerVNCの設定 (1.11以降の場合)
PCIExpressの設定
OSイメージの作成(システムのバックアップ)
CPU温度の表示
Qt5.15/QtDesignerのインストール
UNEXPECTED INCONSISTENCYへの対処方法

注) 現在マイクロSDカードからの起動ができていません。調査中です。


マイクロSDカードへのインストール

eMMCへのインストールはこちら


CM3は初期設定でマイクロSDカード、eMMC、ROMブートの順番で起動するようになっているようです。つまりマイクロSDカードが挿入されている場合にはマイクロSDカードに書き込まれたOSが優先的に起動するようです。しかし、実際にやってみたところ、eMMC32GBのCM3はSDカードから起動できないようです。マイクロSDカードからの起動はeMMCが搭載されていないCM3のみと考えるのが良さそうです。

1) OSイメージをダウンロードする

Redxa社のダウンロードサイト https://wiki.radxa.com/Rock3/downloads からOSのイメージをダウンロードします。Radxa CM3 RASPCM4IOを選択します



現時点ではBullseysとUbuntu20.04 server (CUI)が選べるようです。 ubuntuのimgファイルをダウンロードします。GUI化は後で行います。




サイトを見ると現時点ではdtbファイルにパッチを当てる必要があるようです。この作業は後に行います。

2) フラッシュツール Etcher のダウンロード

Rexda社のサイトからOSをマイクロSDカードに書き込むフラッシュツールEtcher のサイトに移動します。



使用しているPCのOSに応じてインストーラーを選択します。ここではWindows10なので、ETCHER FOR WINDOWS (X86|X64) (INSTALLER) を選択します。





3) Etcherのインストール

balenaEtcher-Setup-1.18.8.exeをダブルクリックして、Etcherをインストールします。




4) EtcherによるマイクロSDカードへのOSイメージのインストール

Etcherを起動し、1)でダウンロードしたOSイメージ radxa-cm3-io-debian-bullseye-xfce4-arm64-20221101-0302-gpt.img.xz を選択、PCに挿入したSDカードを選択しOSイメージを書き込みます。







OSイメージを書き込んだマイクロSDカードをCM4 IO ボードに挿入して電源を投入します。


参考資料: https://wiki.radxa.com/Rock/ja_JP
参考資料: https://wiki.radxa.com/Rock3/CM3/raspcm4io/getting_started
参考資料: https://wiki.radxa.com/Rock3/installusb-install-radxa-cm3-io

CM3のeMMCへのインストール

マイクロSDカードへのインストールはこちら

1) OSイメージをダウンロードする

Redxa社のダウンロードサイト https://wiki.radxa.com/Rock3/downloads からOSのイメージをダウンロードします。Radxa CM3 RASPCM4IOを選択します



現時点ではBullseysとUbuntu20.04 server (CUI)が選べるようです。 ubuntuのimgファイルをダウンロードします。




2) RKDevToolのインストール

RKDevTool https://dl.radxa.com/tools/windows/RKDevTool_Release_v2.86.zip をダウンロードして任意のフォルダに展開します。RKDevToolはインストーラはなく、展開したフォルダ内のRKDevTool.exeをダブルクリックするだけで起動します。ショートカットを作っておくと便利でしょう。




RKDevTool v2.86はデフォルトで中国語で起動してしまうようです。config.iniを変更して英語で起動するようにします。Kinds=1に変更、中国語のLang1の設定を削除し、英語設定のLang2*をLang1に変更します。

[Language]
Kinds=1
Selected=1
LangPath=Language\

Lang1File=English.ini
Lang1FontName=Arial
Lang1FontSize=9




3) RKDriverAssistantのインストール

次いでRKDriverAssistant.zip https://dl.radxa.com/tools/windows/DriverAssitant_v5.0.zipをダウンロードしてこれも任意のフォルダに展開し、DriverInstall.exeを実行します。




Install Driver ボタンを押してドライバをインストールします。



これでOTG経由でeMMCが見れるようになります。

4) img.xzファイルの展開

現在のところ、RKDevToolでは残念ながら.img.xzで圧縮されたファイルが扱えないようです。ですので、OSイメージファイルradxa-cm3-io-debian-bullseye-xfce4-arm64-20221101-0302-gpt.img.xz をあらかじめradxa-cm3-io-debian-bullseye-xfce4-arm64-20221101-0302-gpt.img に展開しておく必要があります。Windows上での圧縮の解除はWinzipや7zipで行うことができます。ここでは7-zipを使用することにします。7-zipのウェブサイト https://7-zip.opensource.jp/ から64bit版(使用しているWindowsが32bitなら32bit版)をダウンロードします。



radxa-cm3-io-debian-bullseye-xfce4-arm64-20221101-0302-gpt.img.xz を7-zipで開き、展開します。




5) OSイメージのeMMCへのダウンロード

Radxa社のサイトからダウンローダをrk356x_spl_loader_ddr1056_v1.10.111.bin をダウンロードします。 https://dl.radxa.com/rock3/images/loader/rock-3a/



5) OSイメージのeMMCへの書き込み

USBケーブルでPCとCM4 IO BoardのUSB OTGコネクタを接続します。CM3のeMMCに何も書かれていない状態でしたら、そのままCM3/CM4 IO Boardの電源を入れます。eMMCに何か書かれている場合にはCM3ボード上にあるスイッチを押しながら電源を投入します。その状態で1) でインストールしたRKDevToolを起動します。Found One MASKROM Device と表示されていることを確認してください。デフォルトで適当な仮のパーティションイメージが設定されています。



右クリック->"Del Item"で、一旦削除し、3)、4)で作成したファイルを右クリック->"Add Item"で追加します。次回も同じ設定が必要な場合には右クリック->"Export Config"で設定を保存できます。ここでは以下のファイルを指定しました。

C:\MyProjects\GroveDesign\RaspberryPi4\rock3\rk356x_spl_loader_ddr1056_v1.10.111.bin
C:\MyProjects\GroveDesign\RaspberryPi4\rock3\radxa-cm3-io-ubuntu-focal-server-arm64-20221101-0254-gpt.img

runボタンを押して、書き込みが終わるのを待ちます。途中USBデバイスが切り離されたり、再接続するような音がしますが、じっと待ちます。



Download image OKが表示されれば書込み終了です。HDMIに接続したディスプリにログイン画面が表示されています。


6) eMMCの消去

他のOSをインストールしたいなどなんらかの理由で、eMMCを消去したい場合にもRKDevToolを使用します。Advance Functionタブを選択、bootにrk356x_spl_loader_ddr1056_v1.10.111.binを指定して、Downloadボタンをクリックします。




次にEraseAllボタンを押してeMMCを消去します。



最後にReset Deviceボタンを押して再起動します。eMMCは消去されていますので、起動しません。



参考資料: https://wiki.radxa.com/Rock3/installusb-install-radxa-cm3-io


SSHとVNC(Virtual Network Computing)の設定

OSイメージのダウンロードサイトに寄れば、OSイメージradxa-cm3-io-debian-bullseye-xfce4-arm64-20221101-0302-gpt.img.xzはRadxa CM3 IO boardを想定して作成されいるため、CM4 IO boardをキャリアボードとして使用する場合には dtbファイルを差し替える必要があるようです。SSHとVNCを設定して、PCからGUIが使えるようにします。

注) ここではTightVNCの設定を行っていますが、TightVNC + xfce4 の組み合わせにはウインドウのタイトルバーが表示されないという問題があるようです。代替案としてTigerVNCをインストールします。TigerVNCのインストール方法は こちら



1) OSを最新の状態に

まず、IPアドレスはDHCPによって与えられていますので、ルーターなどHDCPサーバが動いているデバイスで、一番最近に付与されたIPアドレスを調べます。コマンドプロンプトから ssh rock@[IPアドレス] と入力し、ログインします。パスワードの初期値はrockです。



aptコマンドでインストールをしたいのですが、公開鍵が古くなっているようです。先に公開鍵をインストールします。

source /etc/os-release
export DISTRO="${VERSION_CODENAME}-stable"
wget -O - apt.radxa.com/$DISTRO/public.key | sudo apt-key add -



OSを最新の状態にします。

sudo apt update
sudo apt upgrade




2) DTBの書き換え

CM4 IO boardを使用している場合にはDTBを書き換えます。Radza CM3 IO boardを使用している場合には変更の必要はありません

$ cd /boot/dtbs/$(uname -r)/rockchip/
$ sudo mv rk3566-radxa-cm3-io.dtb rk3566-radxa-cm3-io.dtb.bak
$ sudo cp rk3566-radxa-cm3-rpi-cm4-io.dtb rk3566-radxa-cm3-io.dtb
$ sudo reboot



3) GUI環境のインストール

Ubuntu 20.04 serverにはGUI環境がインストールされていませんので、インストールします。

$ sudo apt-get install ubuntu-desktop
$ sudo reboot



4) VNCの設定

SSHではCUIで各種設定が可能ですが、GUIでの設定も必要になる場合があります。VNCを設定して、他のPCからGUIアクセスできるようにします。

xfce4-goodiesをインストールして、Xfceデスクトップ環境を構築します。(Ubuntu DesktopはVNCと相性が悪いようです。VNCはXFCEを使用します。) 次いでTightVNC server、dbus-x11をインストールします。

$ sudo apt update
$ sudo apt-get install xfonts-base
$ sudo apt-get install xfonts-100dpi
$ sudo apt-get install xfonts-75dpi
$ sudo apt install xfce4 xfce4-goodies
$ sudo apt upgrade
$ sudo apt install tightvncserver
$ sudo apt install dbus-x11
$ sudo reboot

インストール時にディスプレイマネージャが1.gdmか2.lightdmかを選択します。ディスプレイマネージャとはOS起動後のログイン画面のことです。あとで変更したい場合は

$ sudo dpkg-reconfigure gdm3

または

$ sudo dpkg-reconfigure lightdm

で変更可能です。




インストールしたらvncserverと入力し一旦起動します。起動するとパスワードを聞かれますので設定します。vncserver -kill :1で一旦display 1を停止します。~/.vnc/xstartupの初期値を保存して編集します。xstartupはVNC サーバーを起動または再起動するたびに自動的に実行されるものです。

$ vncserver
Password:
Verify:
Would you like to enter a view-only password (y/n)? n
xauth: file /home/sammy/.Xauthority does not exist

New 'X' desktop is your_hostname:1

Creating default startup script /home/sammy/.vnc/xstartup
Starting applications specified in /home/sammy/.vnc/xstartup
Log file is /home/sammy/.vnc/your_hostname:1.log

$ vncserver -kill :1
Killing Xtightvnc process ID 17648

$ mv ~/.vnc/xstartup ~/.vnc/xstartup.bak
$ vi ~/.vnc/xstartup
#!/bin/bash
xrdb $HOME/.Xresources
startxfce4 &

$ sudo chmod +x ~/.vnc/xstartup $ vncserver




再びvncserverを起動すると、PCにインストールしたVNC Viewerからアクセスできるようになります。Ultra VNC, Read VNC 等が使用できます。お好きなViewerを使用してください。



4) VNC Serverをサービスとして動作

3)ではvncserverをSSHでログインして実行しましたが、これだとSSHセッションを抜けてしまうと使えなくなりますし、そもそもVNC Viewerでログインしたいのでこの方法では不便です。VNCServerをサービスとして使用できるようにします。 /etc/systemd/system/vncserver@.service という名前のファイルを作成します。

$ sudo vi /etc/systemd/system/vncserver@.service

ファイルの中身は以下のようにします。

[Unit]
Description=Start TightVNC server at startup
After=syslog.target network.target

[Service]
Type=forking
User=rock
Group=rock
WorkingDirectory=/home/rock

PIDFile=/home/rock/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :%i
ExecStop=/usr/bin/vncserver -kill :%i

[Install]
WantedBy=multi-user.target




変更内容をシステムに認識させ、有効にします。

$ sudo systemctl daemon-reload
$ sudo systemctl enable vncserver@1.service
$ sudo systemctl start vncserver@1
$ sudo systemctl status vncserver@1 -l --no-pager



これで、キーボード、モニタが無くてもネットワークケーブルのみでGUI操作ができるようになりました。SSHでのアクセスをしなくても、VNCで直接GUIログインできます。



参考資料: https://github.com/radxa-build/radxa-cm3-io/releases/tag/20221101-0118
参考資料: https://wiki.radxa.com/RockpiS/ssh
参考資料: https://blog.amedama.jp/entry/ubuntu-2004-install-gui
参考資料: https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-vnc-on-debian-11
参考資料: https://teratail.com/questions/301589



TigerVNCの設定 (tigerVNC 1.10以前の場合)

先の説明で、TightVNCをインストールして設定を行いましたが、xfce4との組み合わせでウインドウのタイトルバーが表示されないという問題があります。タイトルバーが表示されないとウインドウを閉じたりリサイズするのがうまくいきません。ここでは代替案としてTigerVNCをインストールします。

注意: TigerVNC 1.11以降では設定方法が変わりました。こちらを参照してください。

1) インストール
TightVNCがインストールされている場合にはアンインストールします。

$ sudo apt purge tightvncserver



TigerVNCをインストールします。

$ sudo apt install tigervnc-standalone-server



2) VNC Serverをの設定

インストールしたらvncpasswdと入力しVNCでログインする際のパスワードを設定します。~/.vnc/xstartupの初期値を保存して編集します。xstartupはVNC サーバーを起動または再起動するたびに自動的に実行されるものです。

$ vncpasswd
Password:
Verify:
Would you like to enter a view-only password (y/n)? n

$ mv ~/.vnc/xstartup ~/.vnc/xstartup.bak
$ vi ~/.vnc/xstartup
#!/bin/bash
xrdb $HOME/.Xresources
startxfce4 &

$ sudo chmod +x ~/.vnc/xstartup $ vncserver


XFCE4ではなく、gnome-desktop(通常のubuntuの画面)にしたい場合には下記のようにします。

$ sudo apt-get install -y tigervnc-common tigervnc-standalone-server tigervnc-xorg-extension
$ vi ~/.vnc/xstartup
#!/bin/bash
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -x $HOME/.Xresources ] && xrdb $HOME/.Xresources
vncconfig -iconix &
dbus-launch --exit-with-session gnome-session &





VNCサーバーを起動します。

$ vncserver -localhost no



VNCクライアントからログイン名 radxa-cm3-io:1でログインします。タイトルバーも表示されていますし、USBストレージ、NVMe SSDもGUIでマウントできます。





3) VNC Serverをサービスとして動作

3)ではvncserverをSSHでログインして実行しましたが、これだとSSHセッションを抜けてしまうと使えなくなりますし、そもそもVNC Viewerでログインしたいのでこの方法では不便です。VNCServerをサービスとして使用できるようにします。 /etc/systemd/system/vncserver@.service という名前のファイルを作成します。

$ sudo vi /etc/systemd/system/vncserver@.service

ファイルの中身は以下のようにします。

[Unit]
Description=Start TightVNC server at startup
After=syslog.target network.target

[Service]
Type=simple
User=rock
Group=rock
WorkingDirectory=/home/rock

PIDFile=/home/rock/.vnc/%H:%i.pid
ExecStartPre=/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :%i -localhost no -MaxIdleTime=0 -SecurityTypes VncAuth
ExecStop=/usr/bin/vncserver -kill :%i

[Install]
WantedBy=multi-user.target

変更内容をシステムに認識させ、有効にします。

$ sudo systemctl daemon-reload
$ sudo systemctl enable vncserver@1.service
$ sudo systemctl start vncserver@1.service
$ sudo systemctl status vncserver@1.service -l --no-pager




これで、キーボード、モニタが無くてもネットワークケーブルのみでGUI操作ができるようになりました。SSHでのアクセスをしなくても、VNCで直接GUIログインできます。



Polikitが正しく動作しないと、ネットワークの設定もいじれません。/etc/NetworkManager/conf.d/any-user.confファイルを作成し、以下の2行を設定をすることでpolikitなしで、パスワードの入力が促されます。

$ vi /etc/NetworkManager/conf.d/any-user.conf

[main]
auth-polikit=false




注1) VNCをサービスとして起動した場合にpolkitが正しく動作しないという問題が報告されています。VNCを介してXFCEを起動した場合に、USBストレージなどのアイコンからマウントしようとしても、パスワードの入力画面が表示されず、結果マウントできません。ターミナルからmountコマンドでマウントすればマウントできます。また、VNCではなくキーボードとモニタを接続して通常のログインをしてUbuntu Desktopから起動した場合には問題なくUSBストレージは自動マウントされます。この状態でVNCでログインすると、USBストレージはマウントされています。
注2) VNCクライアントが頻繁に切断されることがあります。この場合、vnc server起動時に-MaxIdleTime=0を指定することによって回避できるようです。
注3) pokitが正しく動作しない問題は vncserver を起動するときに -SecurityTypes VncAuth オプションを指定すると解決するようです。

参考資料: http://serverarekore.blogspot.com/2020/05/ubuntu-2004tigervnc.html


TigerVNCの設定 (tigerVNC 1.11以前の場合)

TigerVNC 1.11以降では設定方法が大きく変わりました。

バージョンに寄らず共通の設定 (:2 の部分はセッション番号)
  • vncpasswd コマンドで、VNCでアクセスするためのパスワードを設定しておく。/home/$HOME/.vnc/passwdに保存される
  • $sudo systemctl start vncserver@:2.service で手動でVNC サービスを開始する
  • $sudo systemctl enable vncserver@:2.service で起動時に自動的にVNCサービスを開始するように設定
  • $sudo systemctl status vncserver@:2.service で正常に起動できているか確認
  • vncserver -list で現在起動しているVNCサーバーを確認
  • vncserver -kill :2 で現在起動しているVNC サーバーを終了
tigerVNC 1.10以前の設定
  • /etc/system/system/vncserver@service という名前のファイルを作成し、systemdの仕組みを使って自動起動する
  • /home/$HOME/.vnc/xstarup にVNCセッションが開始されるときにsystemd から実行されるコマンドを記述しておく。ここに書く内容で、gnomeやxfce4 など起動されるセッションの種類が変わる
  • ログインユーザーとVNCセッションに対応は関係ない
tigerVNC 1.11以降の設定
  • /home/$USER/.vnc/xstartup ファイルは作成しない(削除する)
  • /etc/system/system/vncserver@service という名前のファイルは作成しない(削除する)
  • /etc/tigervnc/vncserver.users ファイルに、各セッション番号でログインするユーザーを登録
TigerVNC User assignment
#
# This file assigns users to specific VNC display numbers.
# The syntax is =. E.g.:
#
# :2=andrew
# :3=lisa
:2=mori
:3=user
  • /etc/tigervnc/vncserver-config-defaults ファイルに、省略時の指定を設定する(なにも記述しない)
  • /home/$USER/.vnc/config ファイルに、各ユーザー別の指定を設定する
session=gnome
securitytypes=vncauth,tlsvnc
geometry=1366x768
alwaysshared

注意:同じユーザーで、VNC とキーボード+モニタの両方からgnome-desktopでログインしようとすると両方のセッションが破壊される。もしやってしまったら、再起動で復活する。


PCIExpressの設定

Rock Pi 5/4(RaspberryPi4B)とCM3(CM4)の最大の違いはPCIExpressのサポートの有無です。キャリアボードの中にはPCIExpress Gen2 x 1のコネクタまたはM.2コネクタを有しており、HAT以外にも機器の拡張が行えます。HATでのI2C/SPI/I2Sに比べて格段に速い速度で拡張ボードと通信ができます。PCIExpressを使用するためには若干の設定が必要なため、解説していきます。

1) DTBの書き換え

CM4 IO boardを使用している場合にはDTBを書き換えます。すでに変更している場合には不要です。Radza CM3 IO boardを使用している場合には変更の必要はありません。

$ cd /boot/dtbs/$(uname -r)/rockchip/
$ sudo mv rk3566-radxa-cm3-io.dtb rk3566-radxa-cm3-io.dtb.bak
$ sudo cp rk3566-radxa-cm3-rpi-cm4-io.dtb rk3566-radxa-cm3-io.dtb
$ sudo reboot



2) config.datの書き換え

Ubuntuの場合、/boot/config.txtを変更しなくてもPCIeが認識されているようです。。念のため、 /boot/config.datを開いて、下記の1行を追加します。

dtoverlay=radxa-cm3-io-pcie2x1




UbuntuではPCIe上に接続されたNVMe SSDを認識しているようですが、GUIで右クリックしてマウントしようとするとエラーになるようです。通常通りsudo mount /dev/mvme0n1 /mnt/nvme のように手動でマウントすれば問題なく使用できるようです。


NVMeのフォーマットや読み書き速度のテストついては bullseyeでのNVMeフォーマット以下を参照ください。

PCIe x1 のネットワークカードも見えています。



参考資料: https://scrapbox.io/dojineko/nvme-cliを使ってNVMe_SSDを初期化する
参考資料: https://blog.amedama.jp/entry/nvme-secure-erase
参考資料: https://qiita.com/sasadango/items/fcb657d3b4bbd39c3497
参考資料: https://blog.amedama.jp/entry/nvme-secure-erase


OSイメージの作成(システムのバックアップ)

マイクロSDカードで起動する場合には、マイクロSDカードをコピーするなり取り替えるなりすれば簡単にOSを入れ替えられます。しかしeMMCは取り外すことができません。eMMCの書き込みに使用したRkDevToolでeMMC全体を読み出せるかとおもったのですが、v2.81現在では、Start+Countが64436以上では動作せず、最初の32MBしか読み出せないようです。そこで、ddコマンドを使用してOSのイメージファイルを作成します。

必要なもの

・eMMCの容量以上(32GBなら64GB以上のストレージ NVMeメモリやUSBフラッシュメモリ等)

まずはストレージをマウントします。ここではPCIeスロットに挿入した。NVMe SSDを使用します。dfコマンドで/mntがマウントされていることを確認します。

$ sudo mkdir /mnt/nvme
$ sudo mount /dev/nvme0n1 /mnt/nvme
$ sudo fdisk -l



eMMCのデバイス名を確認します。/dev/mmcmblk0 のようです

$ df -T
$ ls /dev/mmcblk*



ddコマンドで /dev/mmcmblk0 全体をimgファイルに書き出します。bsは処理単位で大きくしてあげると速度がずいぶん上がるようです。

$ sudo dd if=/dev/mmcblk0 of=/mnt/radxa-cm3-io-ubuntu20.04-arm64-[日付].img bs=256M
[sudo] password for rock
116+1 recored in
116+1 recored out
31268536320 bytes (31 GB, 29 GiB) copied, 329.313 s, 95.0 MB/s
$



xzコマンドで圧縮します。-T4は4スレッドで高速に処理する場合に指定します。SOCが高温になりますので。ヒートシンク等の放熱処理してください。

$ cd /mnt/nvme"
$ ls
$ sudo xz -k -T4 radxa-cm3-io-ubuntu20.04-arm64-[日付].img
$ ls -l



WindowsでFAT32フォーマットにてフォーマット済みのUSBフラッシュメモリをマウントしてコピーします。

$ sudo mount -o iocharset=utf8 -t vfat /dev/sda1 /mnt/usbfm
$ ls /mnt/usbfm
$ sudo cp radxa-cm3-io-debian_bullseye-xfce4-arm64-[日付].img /mnt/usbfm
$ /mnt/usbfm



新しく作成したimgファイルを用いて、eMMCに再度書き込めば、バックアップした状態に復元できます。今回は64GB以上のUSBフラッシュメモリが無かったので、圧縮してからコピーしましたが、圧縮にかなりの時間を要しました。32GB以上の空きがあるUSBストレージを用いれば直接非圧縮のまま保存して、より高速なPCで圧縮したほうが早いです。この場合、USBストレージをNTFSでフォーマットしてください。FAT32ですと4GB以上のサイズのファイルが作成できずエラーになります。

作成したimgファイルをRKDevToolでeMMCに書き込んでみました。ファイルサイズが大きいためか、書込み終了まで到達できません。十分時間が経ってから電源を再投入したところ、問題なく書き込んだOSイメージで起動できました。おそらくimgファイルを作成するときに正しいセクタサイズを指定する必要があったと思います。次回試してみます。

参考資料: https://isleofhoso.com/linux-dd/
参考資料: http://tech.clickyourstyle.com/articles/126
参考資料: https://pcvogel.sarakura.net/2018/09/21/31873
参考資料: https://qiita.com/hana_shin/items/df1cf4dd67d1dd19d44a


CPU温度の表示


以下のコマンドでCPUの0.001度単位の温度が表示されます。

$ cat /sys/class/thermal/thermal_zone*/temp
63333
62777
18800

また、Hardinfo等のGUIアプリでも温度は確認できます。

$ sudo apt install hardinfo
$ hardinfo &



なお、CM3にヒートシンクをつける前は平常時63度ぐらいだったのが、ヒートシンクをつけることで46度ぐらいになりました。4スレッド動作で高負荷をかけても65度程度で収まっているようです。RK3566の動作温度は75度までなので、ファンまでは必要なくても、ヒートシンクはつけたほうが良さそうです。

参考資料: https://qiita.com/koara-local/items/1fac13704123717f5cc8
参考資料: https://news.mynavi.jp/techplus/article/20201229-1613873/




Qt5.15/QtDesignerのインストール


仮想PC(x64)で行ったQtのインストールをCM3のUbuntuでも行います。手順は 仮想PCでのQtインストール を参照ください。

sudo apt-get install build-essential
sudo apt-get install qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools
sudo apt-get install qtcreator
sudo apt-get install qtmultimedia5-dev libqt5multimediawidgets5
sudo apt-get install libqt5multimedia5-plugins
sudo apt-get install `apt-cache search 5-examples | grep qt | grep example | awk '{print $1 }' | xargs`
sudo apt-get install `apt-cache search 5-doc | grep "^qt" | awk '{print $1}' | xargs`

Qt Creatorを起動して、仮想PCのx86環境で動作確認していたプロジェクトをビルドします。







ビルドしたRefAppQtからdpkgを生成し、インストールします。

sudo dpkg -i refappqt_0.2.1.0_arm64.deb

アンインストールしたい場合には以下のようにします。

sudo dpkg -r refappqt








UNEXPECTED INCONSISTENCYへの対処方法


eMMCを使用しているとファイルシステムの不整合が起きることがあります。経験上rebootやshutdown後に起きることが多いようです。起動時に、UNEXPECTED INCONSISTENCY; RUN fsck MANUALLYと表示されるのですが、自動的にリブートしてしまうので、fsckコマンドを手動で実行することができません。ですので、まず正常な状態で自動リブートしないように設定します。(現在正常に起動しない場合には、バックアップからOSイメージをeMMCに書き直してください)

sudo vi /boot/config.txt

以下の行を

cmdline: panic=10 rootwait rw init=/sbin/init rootfstype=exp4

下記のように書き換えます

cmdline: rootwait rw init=/sbin/init rootfstype=exp4

自動的にリブートしなくなりますので、以下のようにエラーが表示されたパーティションを指定してコマンドを入力し、ファイルシステムを修正します。途中、修正するかどうか聞かれますので、yまたはa(すべてy)を入力します。

fsck /dev/mmcblk0p2

補足:fsckを実行する方法として以下の方法でbootすることを試みましたが、Rock CM3(eMMC) + CM4 I/O boardの組み合わせでは動作しませんでした。

  • SDカードにバックアップしたOSイメージを書き込んでCM4 I/O boardのSDカードスロットに挿入して起動
  • USBメモリにバックアップしたOSイメージを書き込んでCM4 I/O boardのUSB端子に挿入して起動
  • USB-eMMCアダプタ経由でNVMeSSDにバックアップしたOSイメージを書き込んでCM4 I/O boardのPCIeスロットに挿入して起動

  • 2020年ごろからRaspberryPi 4BではUSBからOS起動できるようですが、現時点でのRockCM3のブートローダーでは対応していないようです。

    参考資料: https://atmarkit.itmedia.co.jp/flinux/rensai/linuxtips/974fsck.html

    アクセスカウンター アクセスカウンター