HackMDが死んでるのでここに書きます
前準備
SSHのつなぎかた
メインメニュー > ネットワーク設定 > Wi-Fi有効 にして SSIDをキーを設定してWiFiに接続します。
IPアドレスはこの画面か、メインメニューのバージョンの横に表示されるので確認します。(毎回変わるので注意)
任意のゲームを起動して、SELECT + Xを押して、メニューを開きます。
一覧に戻り、左から2番目のSettingsの下の方にあるServicesから SSHを有効にします。
#!/bin/bash
echo "ssh-ed25519 AAAAAA user@hostname" >> /storage/.ssh/authorized_keyschmod 600 /storage/.ssh/authorized_keys内蔵フラッシュのダンプ
USBメモリは/dev/sda1とします
おそらく自動で/media/<USBのラベル>にマウントされます
dd # load to memory
systemctl stop emustation
mount -o remount,ro /dev/mmcblk0p4mount -o remount,ro /storage/romsmount -o remount,ro /storage/.updatemount -o remount,ro /dev/mmcblk0p3
dd if=/dev/mmcblk0 of=/media/<USBのラベル>/r36ultra.img bs=1Msyncumount /media/<USBのラベル>R36 Ultraのブート条件
おそらくSDカードの16384セクタにU-Bootがあるとそちらから起動するようです。
ですので、先程ダンプしたイメージをSDカードにそのまま書き込みます。
ディスク /dev/loop1: 7.28 GiB, 7818182656 バイト, 15269888 セクタ単位: セクタ (1 * 512 = 512 バイト)セクタサイズ (論理 / 物理): 512 バイト / 512 バイトI/O サイズ (最小 / 推奨): 512 バイト / 512 バイトディスクラベルのタイプ: gptディスク識別子: 5A620000-0000-4E5B-8000-25FA00006E0C
デバイス 開始位置 終了位置 セクタ サイズ タイプ/dev/loop1p1 16384 24575 8192 4M 不明 # U-boot/dev/loop1p2 24576 32767 8192 4M 不明 # BL2?/dev/loop1p3 32768 4227071 4194304 2G 不明 # Bootパーティション/dev/loop1p4 4227072 12582911 8355840 4G 不明/dev/loop1p5 12582912 15267839 2684928 1.3G Microsoft 基本データ
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTSloop1 7:1 0 7.3G 1 loop├─loop1p1 259:6 0 4M 1 part├─loop1p2 259:7 0 4M 1 part├─loop1p3 259:8 0 2G 1 part├─loop1p4 259:9 0 4G 1 part└─loop1p5 259:10 0 1.3G 1 partEMUELECパーティションの整理
EMUELECパーティションはFAT16でフォーマットされていて、その上1GBまでしか使えないようです。
FAT32でフォーマットし直して、中身をコピーします。(してください)


デバイスツリーの編集
元々入っているrk3326-evb-lp3-v12-linux.dtbは、デバイスツリー内にカーネルのコマンドラインが入っていて、こちらが優先されてしまうので編集して削除する必要があります。
dtc -I dtb -O dts -o rk3326-evb-lp3-v12-linux.dts rk3326-evb-lp3-v12-linux.dtbデコンパイルしたdtsファイルを編集します。
diff --git a/rk3326-evb-lp3-v12-linux.dts b/rk3326-evb-lp3-v12-linux-fix.dtsindex e25733f..28f752d 100644--- a/rk3326-evb-lp3-v12-linux.dts+++ b/rk3326-evb-lp3-v12-linux-fix.dts@@ -4379,7 +4379,7 @@ };
chosen {- bootargs = "earlycon=uart8250,mmio32,0xff178000 console=ttyFIQ0 root=PARTUUID=614e0000-0000 rootfstype=ext4 rw rootwait overlayroot=device:dev=PARTLABEL=STORAGE,fstype=ext4,mkfs=1,bootfromnand=1";+ bootargs = "earlycon=uart8250,mmio32,0xff178000 console=ttyFIQ0"; };
fiq-debugger {dtc -O dtb -o rk3326-evb-lp3-v12-linux-fix.dtb rk3326-evb-lp3-v12-linux-fix.dtsできたdtbはEMUELECラベルのついたFAT32パーティションに入れます。
Ubuntuのインストール
パーティションの作成
SDカードのおしりとかに適当なext4パーティションを作ります。
作成後、以下のコマンドでext4のオプションを無効化してください。
作成したパーティションを/dev/sdXnとします。
e2fsck -f /dev/sdXntune2fs -O ^orphan_file /dev/sdXnrootfsはdrwxr-xr-x, root:rootである必要があります。
mount /dev/sdXn /mntchown root:root /mntchmod 755 /mntUbuntuの展開
今回はUbuntu Base 24.04.3を使用します。
Ubuntu Baseは以下のURLからダウンロードできます。
https://cdimage.ubuntu.com/ubuntu-base/releases/
ubuntu-base-24.04.3-base-arm64.tar.gzを先程作成したパーティションに展開します。
sudo tar -xzvf ubuntu-base-24.04.3-base-arm64.tar.gz -C /mntchroot環境の準備
今回のホストマシンはamd64なので、qemuを使ってarm64のバイナリを実行できるようにします。
sudo pacman -S qemu-user-static qemu-user-static-binfmtchrootします
sudo arch-chroot /mnt /bin/bashexport PATH=$PATH:/usr/sbinexport TERM=xterm-256colorUbuntuの初期設定
一般ユーザを作成します。
useradd -m -s /bin/bash -G sudo sim1222passwd sim1222hostnameを設定します。
echo "r36ultra" > /etc/hostnameecho "127.0.1.1 r36ultra" >> /etc/hostsecho "127.0.0.1 localhost" >> /etc/hostsaptの更新をします。
apt updateapt upgrade -yaptに必要なパッケージをインストールします。
apt install dialogapt install localeslocale-gen "en_US.UTF-8"必須パッケージをインストールします。
apt install ubuntu-minimalapt install kmscon wget apt-utils wpasupplicant network-manager vim ssh openssh-server initramfs-toolsその他お好みで。
apt install bash-completion htop neofetchfbconが使えないので、kmsconを使うようにします。
systemctl disable getty@tty1.servicesystemctl enable kmsconvt@tty1.serviceln -s /usr/lib/systemd/system/kmsconvt\@.service /etc/systemd/system/autovt\@.serviceinitramfsの生成
EMUELECパーティションにあるSYSTEMファイルはsquashfsファイルです。これをマウントして、/usr/lib/kernel-overlays/base/lib/フォルダー内のファイルをrootfsの/usr/libにコピーします。
また、/usr/lib/firmwareフォルダー内のファイルもコピーします。
initramfsを生成します。
カーネルのバージョンは各自の環境に合わせて変更してください。
mkinitramfs -o /root/ubuntu-zImage 5.10.160blkidコマンドで、UbuntuのパーティションのUUIDを確認します。
blkid /dev/sdXn/root/ubuntu-zImageをEMUELECパーティションにコピーします。
EMUELECパーティションの/extlinux/extlinux.confを編集します。
blkidで確認したUUIDをroot=UUID=xxxxの部分に設定します。
以下を追記してください。
DEFAULT ubuntu
LABEL ubuntu LINUX /KERNEL FDT /rk3326-evb-lp3-v12-linux-fix.dtb INITRD /ubuntu-zImage APPEND root=UUID=uuuuuuuu-uuuu-iiii-dddd-uuiduuiduuid rw rootwait earlyprintk console=ttyFIQ0 net.iframes=0 fbcon=rotate:3 ssh consoleblank=0 selinux=0 fastbootfstabに以下を追記します。
/dev/mmcblk1p3 /boot vfat rw,relatime 0 0お好みでSwapを設定しておきましょう。ZRAMはモジュールがビルトインではないので使えません。
おまけ
echo "rk915" >> /etc/modules-load.d/rk915.confsystemctl enable NetworkManagerブート
SDカードをR36 Ultraに挿して起動します。
たぶん起動します。
OTGポートにハブをつけて、キーボードとLANアダプタを接続しておくと便利です。
netplanとかの設定は各自でがんばってください。
KDEとかはkubuntu-desktopとかで入ると思います。
まとめ
GPUドライバ(libmali)を元システムからコピーしてきたり、ネットから拾ってきて当てようとしていますが、うまく動いていません。
音は出たり出なかったりします。(alsamixerからSPKとかにルートを設定してください)
ジョイスティックはスティックだけ動きますが、ボタンは動きません。(なぜ?)
