Rstudio server上でRを使う時に追加しておいた方がいいRHELパッケージのメモ


Rstudio serverをRHEL9上で動かす際にR側でいろいろパッケージを追加する際に必要となるパッケージがあったので、そのメモ

まずは基本

「dnf groupinstall “開発ツール”」で開発ツールをインストール

tidyverseに必要だったもの

install.packages(“tidyverse”) でtidyverseを追加しようとしたら前提となるraggのインストールがfontconfigコマンドが無いことで失敗

→ fontconfig-devel

次のエラーがfribidi was not found in the pkg-config search path

→ fribidi-devel
→ libtiff-devel
→ libjpeg-turbo-devel

Rstudioからpythonを使う際に必要だったもの

Rstudio serverでpythonスクリプトを使う際に、追加パッケージを要求されるが、それが必要としているもの

→ libxml2-devel
→ libcurl-devel
→ libpng-devel

WiFi/Bluetooth搭載のOrange Pi 5Bが登場する?


Orange Pi 公式のビルドスクリプト の最近の更新に「Update for Orange Pi 5 v1.1.2 and support Orange Pi 5B」というのがあった

内容を確認すると

options+=("orangepi5"                 "Rockchip  RK3588S octa core 4-16GB RAM GBE USB3 USB-C NvME")
#options+=("orangepi5b"                 "Rockchip  RK3588S octa core 4-16GB RAM GBE USB3 USB-C WiFi/BT")

とある。

M.2スロットが削除され、WiFi/Bluetoothが搭載されている、ということになっている。

最初の発表の時に出てたスペックがOrange Pi 5Bとして登場してくるようだ

価格がどれくらいの違いがでるのかちょっと気になりますね

Orange Pi 5でChromium OS(openFyde) R102を動かす


2023/05/09追記: このページの記述はR102時代のものです。現状はR108のページを参照のこと


Orange Pi 5のCPUパワーがあればChrome OSが動くんじゃないかと検索してみると、Chromium OSベースのFydeOSのオープンソース版openFydeOrange Pi 5向け移植があるのを発見した。

なんと5日前に最初のコードが公開されて、3日前にイメージファイルが公開されたばかりというもの。

ChromiumOSはディスクI/Oが多いのでmicroSD起動ではなく、M.2 NVMe SSDかM.2 SATA SSDで使うことを推奨されている。

とりあえず、M.2 SATA SSDに書き込んで見ます。

orangepi@orangepi5:~$ ls
Desktop    Downloads  Orangepi5_1.1.0_ubuntu_jammy_desktop_xfce_linux5.10.110.img  Pictures  Templates
Documents  Music      orangepi5-openfyde-r102.img                                  Public    Videos
orangepi@orangepi5:~$ sudo dd if=orangepi5-openfyde-r102.img of=/dev/sda bs=4M conv=fdatasync status=progress
6933184512 bytes (6.9 GB, 6.5 GiB) copied, 16 s, 433 MB/s
1766+1 records in
1766+1 records out
7407221248 bytes (7.4 GB, 6.9 GiB) copied, 19.8569 s, 373 MB/s
orangepi@orangepi5:~$ sudo fdisk -l /dev/sda
GPT PMBR size mismatch (14467228 != 1000215215) will be corrected by write.
The backup GPT table is not on the end of the device.
Disk /dev/sda: 476.94 GiB, 512110190592 bytes, 1000215216 sectors
Disk model: Kingchuxing 512G
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 0A2133E6-2262-584F-8E41-66BED45870B0

Device       Start      End Sectors  Size Type
/dev/sda1  6078464 14467180 8388717    4G Linux filesystem
/dev/sda2    69632   135167   65536   32M ChromeOS kernel
/dev/sda3   499712  6078463 5578752  2.7G ChromeOS root fs
/dev/sda4   135168   200703   65536   32M ChromeOS kernel
/dev/sda5   495616   499711    4096    2M ChromeOS root fs
/dev/sda6    65600    65600       1  512B ChromeOS kernel
/dev/sda7    65601    65601       1  512B ChromeOS root fs
/dev/sda8   200704   233471   32768   16M Linux filesystem
/dev/sda9    65602    65602       1  512B ChromeOS reserved
/dev/sda10   65603    65603       1  512B ChromeOS reserved
/dev/sda11      64    65599   65536   32M unknown
/dev/sda12  364544   495615  131072   64M EFI System

Partition table entries are not in disk order.
orangepi@orangepi5:~$

ちなみにAndroidを書き込んだ場合は下記の様なパーテーション構成だったので、似た構成ではある、ってところですね。

orangepi@orangepi5:~$ sudo fdisk -l /dev/sda
Disk /dev/sda: 476.94 GiB, 512110190592 bytes, 1000215216 sectors
Disk model: Kingchuxing 512G
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 1B040000-0000-4531-8000-2CDC00004E46

Device       Start        End   Sectors  Size Type
/dev/sda1     8192      16383      8192    4M unknown
/dev/sda2    16384      28671     12288    6M unknown
/dev/sda3    28672      36863      8192    4M unknown
/dev/sda4    36864      45055      8192    4M unknown
/dev/sda5    45056      53247      8192    4M unknown
/dev/sda6    53248      55295      2048    1M unknown
/dev/sda7    55296     137215     81920   40M unknown
/dev/sda8   137216     333823    196608   96M unknown
/dev/sda9   333824    1120255    786432  384M unknown
/dev/sda10 1120256    1906687    786432  384M unknown
/dev/sda11 1906688    1939455     32768   16M unknown
/dev/sda12 1939456    1941503      2048    1M unknown
/dev/sda13 1941504    8314879   6373376    3G unknown
/dev/sda14 8314880 1000215151 991900272  473G unknown
orangepi@orangepi5:~$

つづいて、今回はM.2 SATA SSDなので、ssd-sataドライバを読み込ませる設定をします。

ただ、/dev/sda1をマウントして stateful_partition/unencrypted に Env.txt を作る、とあるのにディレクトリがない?

orangepi@orangepi5:~$ sudo mount /dev/sda1 /mnt
orangepi@orangepi5:~$ ls /mnt
dev_image  lost+found  unencrypted  var_overlay  vmlinuz_hd.vblock
orangepi@orangepi5:~$ ls /mnt/unencrypted/
import_extensions
orangepi@orangepi5:~$ ls /mnt/stateful_partition/unencrypted
ls: cannot access '/mnt/stateful_partition/unencrypted': No such file or directory
orangepi@orangepi5:~$

とりあえず書いてあるコマンドを実行してみる

orangepi@orangepi5:~$ echo overlays=ssd-sata | sudo tee /mnt/stateful_partition/unencrypted/Env.txt
tee: /mnt/stateful_partition/unencrypted/Env.txt: No such file or directory
overlays=ssd-sata
orangepi@orangepi5:~$ cat /mnt/stateful_partition/unencrypted/Env.txt
cat: /mnt/stateful_partition/unencrypted/Env.txt: No such file or directory
orangepi@orangepi5:~$

まあ、エラーになりますね

stateful_partitionは不要なのかな?と削った /mnt/unencrypted/Env.txt でファイルを作ってみた。

orangepi@orangepi5:~$ echo overlays=ssd-sata | sudo tee /mnt/unencrypted/Env.txt
overlays=ssd-sata
orangepi@orangepi5:~$ cat /mnt/unencrypted/Env.txt
overlays=ssd-sata
orangepi@orangepi5:~$

また、再起動前にmtdblock0にSATA用イメージを書き込みます。

orangepi@orangepi5:~$ sudo dd if=/usr/share/orangepi5/rkspi_loader_sata.img of=/dev/mtdblock0 status=progress
13894144 bytes (14 MB, 13 MiB) copied, 1 s, 13.9 MB/s
32768+0 records in
32768+0 records out
16777216 bytes (17 MB, 16 MiB) copied, 246.949 s, 67.9 kB/s
orangepi@orangepi5:~$

で、Linuxをshutdown してから、microSDを抜き、電源を入れると、openFydeが起動しました。

Fyde OSのオリジナルアカウントかGoogleアカウントでログインすることができます。

Googleアカウントでログインする場合は、普通のChrome OSと同じようにセットアップしていきます。

セットアップが終わるとまあ、普通のChromeOSです

Linux環境も使えます。

ブラウザでWebアクアリウムを動かしてみると10000匹でfps:38となかなかいい感じで動いている。この値はUbuntuでGPU有効で動かした場合より良いものになっている。

また、youtube再生した場合の動作も、openFydeで動かした方がよい感じになっている。

音声再生もきちんと動いている。

ブラウザで日本語入力を試みたところ、日本語入力モードへの切り替えはできたのですが、変換機能がうまく動いていないようで…

いや、ブラウザのURL入力欄では日本語入力ができないだけでした。

FydeOS App Storeを開くと「Android apps」という項目があるのですが、どういうチョイスかよくわからないものがインストールできるようです。

Orange Pi 5でAndroid/Linux共にM.2 SATA SSDから起動できるようになった


Orange Pi 5の中国語DownloadページのAndroid镜像リンクをたどってみたところ、SPIFlash-SATA SSDというディレクトリが・・・

え?と思って、ダウンロードしてRKDevToolを使って書き込みを試して見るも「Switch into SATA storage Fail, did not support to switch in」というエラーで成功しない。

改めて中国ページの官方工具にあるマニュアルを確認してみると「OrangePi_5_RK3588S_用户手册_v0.7.pdf」と英語ページにあるマニュアルよりだいぶバージョンが上がっている。

ただ、M.2 SATA SSDからAndroidを起動する場合の書き込み手順について違う点はなく、原因は不明・・・

(注:最終的にはLinux側でSPIFlashを書き換えるとAndroidの書き込みが成功するようになりました。)

LinuxをM.2 SATA SSDから起動

その他にないかマニュアルを読み直すとM.2 SATA SSDからLinuxを起動する手順が掲載されているので、そちらを試行してみた。

マニュアル上の重要なポイントは以下

実際にやってみる。

まずSPIFlashの書き換えに使うファイルを確認

orangepi@orangepi5:~$ ls -ld /usr/share/orangepi*
drwxr-xr-x 2 root root 4096 Dec 22 19:36 /usr/share/orangepi
drwxrwxr-x 2 root root 4096 Dec 12 17:58 /usr/share/orangepi5
orangepi@orangepi5:~$ ls -l /usr/share/orangepi
total 4
-rw-r--r-- 1 root root 3269 Dec 22 19:34 boot.cmd
orangepi@orangepi5:~$ ls -l /usr/share/orangepi5/
total 16384
-rw-rw-r-- 1 root root 16777216 Dec 12 17:58 rkspi_loader_sata.img
orangepi@orangepi5:~$

SPIFlashを書き換えます。

orangepi@orangepi5:~$ sudo dd if=/usr/share/orangepi5/rkspi_loader_sata.img of=/dev/mtdblock0
[sudo] password for orangepi:
32768+0 records in
32768+0 records out
16777216 bytes (17 MB, 16 MiB) copied, 244.953 s, 68.5 kB/s
orangepi@orangepi5:~$

現状のM.2 SATA SSD上のブートローダ、パーテーションをddでzeroを書き込んで消します。

orangepi@orangepi5:~$ sudo dd bs=1M if=/dev/zero of=/dev/sda count=2000 status=progress
1754267648 bytes (1.8 GB, 1.6 GiB) copied, 2 s, 877 MB/s
2000+0 records in
2000+0 records out
2097152000 bytes (2.1 GB, 2.0 GiB) copied, 5.5852 s, 375 MB/s
orangepi@orangepi5:~$
orangepi@orangepi5:~$ sudo fdisk -l /dev/sda
Disk /dev/sda: 476.94 GiB, 512110190592 bytes, 1000215216 sectors
Disk model: WT M.2 512G
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
orangepi@orangepi5:~$

次にmicroSD上にコピーしておいたLinuxイメージをM.2 SATA SSDに書き込みます。

orangepi@orangepi5:~$ sudo dd if=Orangepi5_1.0.8_ubuntu_jammy_desktop_xfce_linux5.10.110.img of=/dev/sda bs=1M status=progress
8129609728 bytes (8.1 GB, 7.6 GiB) copied, 119 s, 68.3 MB/s
7800+0 records in
7800+0 records out
8178892800 bytes (8.2 GB, 7.6 GiB) copied, 121.861 s, 67.1 MB/s
orangepi@orangepi5:~$

書き込み完了後のパーテーションはこのようになります

orangepi@orangepi5:~$ sudo sync
orangepi@orangepi5:~$ sudo fdisk -l /dev/sda
GPT PMBR size mismatch (15974399 != 1000215215) will be corrected by write.
The backup GPT table is not on the end of the device.
Disk /dev/sda: 476.94 GiB, 512110190592 bytes, 1000215216 sectors
Disk model: WT M.2 512G
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 58FCCC02-859A-5041-ADA7-14802AADF341

Device      Start      End  Sectors  Size Type
/dev/sda1   61440   585727   524288  256M Linux extended boot
/dev/sda2  585728 15974366 15388639  7.3G Linux filesystem
orangepi@orangepi5:~$

書き込んだM.2 SATA SSDの/dev/sda1 にあるorangepiEnv.txtを書き換えるためにマウントします。

orangepi@orangepi5:~$ sudo mount /dev/sda1 /mnt
orangepi@orangepi5:~$ df -h /mnt
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       256M   95M  162M  37% /mnt
orangepi@orangepi5:~$ ls -l /mnt
total 96104
-rwxr-xr-x 1 root root   230456 Dec 22 19:39 boot.bmp
-rwxr-xr-x 1 root root     3269 Dec 22 19:34 boot.cmd
-rwxr-xr-x 1 root root     3341 Dec 22 19:51 boot.scr
-rwxr-xr-x 1 root root   215221 Dec 22 18:24 config-5.10.110-rockchip-rk3588
drwxr-xr-x 3 root root     4096 Dec 22 19:36 dtb
drwxr-xr-x 3 root root     4096 Dec 22 19:36 dtb-5.10.110-rockchip-rk3588
-rwxr-xr-x 1 root root 33915392 Dec 22 18:24 Image
-rwxr-xr-x 1 root root 11119990 Dec 22 19:54 initrd.img-5.10.110-rockchip-rk3588
-rwxr-xr-x 1 root root      154 Dec 22 19:51 orangepiEnv.txt
-rwxr-xr-x 1 root root     1542 Dec 22 19:48 orangepi_first_run.txt.template
-rwxr-xr-x 1 root root  7853912 Dec 22 18:24 System.map-5.10.110-rockchip-rk3588
-rwxr-xr-x 1 root root 11120054 Dec 22 19:54 uInitrd
-rwxr-xr-x 1 root root 33915392 Dec 22 18:24 vmlinuz-5.10.110-rockchip-rk3588
orangepi@orangepi5:~$

orangepiEnv.txtの最後に「overlays=ssd-sata」を追加します。

orangepi@orangepi5:~$ sudo cp /mnt/orangepiEnv.txt /mnt/orangepiEnv.txt.org
orangepi@orangepi5:~$ sudo vi /mnt/orangepiEnv.txt
orangepi@orangepi5:~$ cat /mnt/orangepiEnv.txt
verbosity=1
bootlogo=true
overlay_prefix=rk3588
fdtfile=rockchip/rk3588s-orangepi-5.dtb
rootdev=UUID=5ead0754-b05b-4f29-8170-b0620e7ae6d2
rootfstype=ext4
overlays=ssd-sata
orangepi@orangepi5:~$

書き込んだらumount

orangepi@orangepi5:~$ sudo umount /mnt
orangepi@orangepi5:~$

このあと、microSDを抜いて、M.2 SATA SSDのみで電源を入れると、M.2 SATA SSDから起動しました。

orangepi@orangepi5:~$ sudo fdisk -l /dev/sda
Disk /dev/sda: 476.94 GiB, 512110190592 bytes, 1000215216 sectors
Disk model: WT M.2 512G
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 58FCCC02-859A-5041-ADA7-14802AADF341

Device      Start       End   Sectors   Size Type
/dev/sda1   61440    585727    524288   256M Linux extended boot
/dev/sda2  585728 990183423 989597696 471.9G Linux filesystem
orangepi@orangepi5:~$

Android再挑戦

Linux側でSPIFlashを書き換えたあとであれば成功するかな?と試してみたところ、これまで失敗していたところは問題無く終了し、書き込みが実行されるようになりました。

(microSDをさしっぱなしにしていると途中で失敗するので注意)

Androidの書き込み完了後は自動的に再起動されAndroidが起動します。

なお、起動したAndroidは、WiringOPアプリが追加されている以外はあまり違いがないような感じでした。


2023/01/12追記

新しいM.2 SATA SSDが届いたので、Androidイメージを書き込むべく、とりあえず「sudo dd if=/usr/share/orangepi5/rkspi_loader_sata.img of=/dev/mtdblock0」を行ったあとに、RKDevToolで書き込みを実施してみましたが、書き込みはfailしました。

「sudo dd if=Orangepi5_1.0.8_ubuntu_jammy_desktop_xfce_linux5.10.110.img of=/dev/sda bs=1M status=progress」でLinuxイメージを書き込み、一度起動させたあとで、RKDevTool書き込みを試すと、成功しました。

(このとき、Linuxを書き込んだあとのorangepiEnv.txt 修正を忘れたので、Linux起動が途中で失敗してinitramfsで止まりましたが、電源強制オフのあと、Android書き込みには問題ありませんでした。)

Orange Pi 5のまとめ 2023/01/13版


Orange Pi 5 が届いた」を始めにいろいろOrange Pi 5に関する記事をいろいろ書いていったら探しにくくなってしまっているので、まとめ記事を作成しました。

この記事の更新履歴

2023/01/07: 作成
2023/01/13: Chromium OS(openFyde)について追加。microSDとM.2 SSDの優先順位について修正。M.2 SATA SSDの入れ替えに関して追加

仕様について

M.2スロットで使用できるもの

・M.2 NVMe SSD(M-key)

M.2 M-keyで使えるSSDには、M.2 NVMe SSDとM.2 SATA SSDの2種類があります。

Orange Pi 5の公式仕様としてはM.2 NVMe SSDが使用できる、ということになっています。

Orange Pi 5ではM.2 NVMe SSDの2242が適切なサイズですが、日本で買うと高いです。

aliexpressでは日本の半額程度で買え、2週間程度で届きます。

私はKingSpecというメーカの512GBを買いました。詳細は「aliexpressでM.2 2242サイズのSATAとNVMeを買ってみた

・コンバーターボード経由でM.2のA/E-keyのWiFiカード

本来はA/E-keyのM.2はM-keyにさすことが出来ませんが、コンバーターボードを使うことでさすことができます。

詳細については TechnicaLifeさん「Orange Pi 5 で Intel AX200 Wi-Fi を使う」にて

・限定的にM.2 SATA SSD(M-key)

2023/01/07時点ではOrange Pi 純正Ubuntu/Debianで使える手法ですが、microSDからLinuxを起動したあと、ssd-sataというkernelモジュールを読み込むことでM.2 SATA SSDを利用することができるようになります。

詳細「Orange Pi 5でデータディスクとしてならM.2 SATAも使える

2022/12/23に中国サイトでのみリリースされてたAndroidイメージではM.2 SATAから起動できるイメージなるものがありました。(いま気がついたのでダウンロード中です)

中国サイトのマニュアルにLinux/AndroidでM.2 SATA SSDから起動するための手順が書かれていました。
詳細「Orange Pi 5でAndroid/Linux共にM.2 SATA SSDから起動できるようになった

microSD起動とM.2 SSD起動の切り替え

microSDとM.2 SSDを両方入れている場合にどちらを優先するか、というあたりはnand領域に書き込んで設定しているようです。 基本的には起動できるmicroSDがあればそちらから起動するようです。

どちらかしかさしていない状態であれば、さしているデバイスから起動するようになっているようです。

このため、うちではM.2 NVMe SSDから起動するように設定した後、他のOS環境を試す際は、一度M.2にさしたSSDを取り外して、microSDのみにして起動しています。

M.2 NVMe SSD起動とM.2 SATA SSD起動の切り替え

「Androidを書き込んだM.2 NVMe SSD」と「Androidを書き込んだM.2 SATA SSD」をさしなおして環境をかえられるかな?とやってみましたが、無理でした。

SPIFlashの内容を書き換えないと駄目なようですが、RKDevToolで自動化されている作業を手動でできるのかが不明です。

なお、RKDevToolを使って、M.2 SSDをフォーマット/書き換えすれば切り替え自体はできました。

M.2 SATA SSDのLinuxとM.2 SATA SSDのAndroidの切り替え

M.2 SATA SSDを2枚用意して、差し替えることで起動を切り替えられるか試してみましたが上手くいきませんでした。どうやらLinux起動用の設定とAndroid起動用の設定は違うようです。

Linuxについて

Orange Pi純正のUbuntu/Debianの他に、2022年末にarmbianのベータ版公開が始まりました。

Orange Pi純正は2023年1月にも更新されてv1.0.8(年末はv1.0.6だった)になっていますが、v1.0.6からv1.0.8相当にアップデートする手法がわからない、というのが難点です。

GPUドライバがない件

2023/01/07時点ではOrange Pi純正もarmbianも初期設定では、ソフトウェア処理となっていて、SoCに含まれているGPUが有効活用されていません。

Panfrost GPU driverを適用するとSoCのGPUが活用できます。

Orange Pi 5純正のUbuntuのGPU表示を高速化できるのか?」で試したのですが、確かに数値としては速くなったものの全体的な動きに問題がありました。

armbianの方は、armbianのページにかかれている解説の通りに実行するこで組み込み正常動作はするのですが、あまり変化がなく微妙でした・・・

また、2023/01/03リリースの Orangepi5_1.0.8_ubuntu_jammy_desktop_xfce_linux5.10.110.img で起動した際、初期状態の /etc/chromium-browser/default に対して「CHROMIUM_FLAGS=”-use-gl=egl”」という変更を加えたところ、それだけで、chromiumブラウザ上でのWebアクアリウムがfps:3からfps:60に改善されるという状況に・・・

2023/01/07時点ではGPU周りはまだ混沌としている感じです。

Androidについて

2023/01/07時点で公式から配布されているAndroidイメージにはGoogle Playは含まれていません。
→「Orange Pi 5をAndroid 12で動かす

中国サイトにあるOrange Pi OS(Droid)にも含まれていませんでした。
→「Orange Piの中国サイトからだとOrange Pi OS(Droid)が入手できる

じゃあ、Google Playが使えないか、というとそうでもなくて、Androidの開発者向けオプションにあるDSU Loader機能を使うとなんとか使えるようになる、というのを発見しました。
→「Orange Pi 5用Android 12からGSIイメージの汎用Androidを起動する

また、Orange Piの中国サイトで2022/12/23にリリースされたAndroidイメージはM.2 SATA SSDから起動できるものがあるようです。(いま気がついたのでダウンロード中です…)

ためした限りではAndroid部分はWiringOPというGPIO関連のテストを行うアプリが追加されていましたが、それ以外はあまり差がないようでした。

Chromium OSについて

ChromeBookなどで使われているChromeOSには、オープンソースのみで構成されているChromium OSというものがあります。

このChromium OSをベースとしていろんな機種で動作させるようにするプロジェクトがいくつかあり、その1つのFydeOSという商業ベースのものがあります。

このFydeOSのオープンソース版は以前からあったのですが2022年になってからopenFydeという名称を付けて展開を始めています。このopenFydeで2023/01/07からOrange Pi 5向けの開発と提供が始まっていました。

さっそく導入してみました→「Orange Pi 5でChromium OS(openFyde)を動かす

ChromeアプリやLinuxについては特に問題無く動いています。音声出力にも問題はありません。