電子辞書Brainをいじる
以前ネットを検索していると、電子辞書を改造して、WinCE上でアプリを動かしたり、
Linux(Debian)を動かすことができるというのを発見していたが、動かせる電子辞書を持っていないので、記憶の片隅に置いていた。
先日Bookoffを探索していたときに、、SHARPさんの電子辞書であるBrain SH3が3000円で転がっているのを発見。
検索してみたところ、通称Brain第3世代と言われるもので、比較的に簡単にWindowsCE化やLinux(Brailux)を動かすことが可能なようですので、その場で購入。
(第1-3世代が普通に動かすことができる範囲で、第4世代は機種選定や工夫が必要とのこと)

で、WindowsCE(WinCE)化についてはもともとこの電子手帳が「Windows Embedded CE 6.0 Core」上で動いているので、それを開放する形でアプリが動かすことができます。
また、Linux(Brainux)については、SDに書き込むDiskイメージが公開されているので、こちらを利用すればOKですが、ファイルシステムの関係でそのままでは、1間のSDカードで教養は難しそうでしたので、まずは、Linux(Brainux)を準備して、Boot領域にある少量のFAT32領域を拡張して、WinCE環境で共用利用できるよう環境構築を挑戦してみます。
BrainのWindowsCE化を含めた活用ページ
Brain Wiki
Brainuxについては、こちらが紹介ページだと思います。
Brainux Wiki
用意するもの
今回用意するのは以下ですが、
ぶっちゃけ第1-3世代のSHARP 電子辞書Brainさえ入手できれば、あとは何とかなると思います。
- SHARP BRAIN PW-SH3(第3世代Brain)
- MicroSDカード(今回は32GBを用意。Linuxだけなら4GB以上のmicroSDカードが必要)
- PC(今回はWindowsPCを使った手順になります)
- PC上でMIcroSDが読み書きできるスロットやUSBドングル(必要に応じてSDアダプター)
- Linux(Brainux)のDiskイメージ
今回は、以下のgithub上にある2024-12-23-202715バージョンのイメージをダウンロードします。
Releases · brain-hackers/buildbrain
sdimage-2024-12-23-202715.zip - 起動可能なUSBドライブを簡単に作成できるツール
今回はrufusを利用しますが、以下からダウンロードできます。
Rufus – 起動可能なUSBドライブを簡単に作成できますrufus-4.11p.exeのポータブル版で大丈夫です。 - Windows上でパーティーションを操作できるツール
今回はMinTool Partition Wizard無償版を利用します。
以下からダウンロードできます。
MiniTool Partition Wizard ダウンロード センター
無償版(pw-free-online.exe)で問題ありません。
Linuxイメージの書き込み
まずはダウンロードしたBrainuxの起動イメージのzipファイル(sdimage-2024-12-23-202715.zip)を展開し、出てきたファイル(sdimage-2024-12-23-202715.img)を
Rufusを利用して用意したMicroSDに書き込みします。
まずは、用意したMicroSDをPCに接続して認識させます。
次にMicroSDにLinuxイメージを書き込みます。
Rufusはポータブル版であれば、インストール不要でするの利用が簡単です。
「ブートの種類」横の「選択」をクリックして、先ほど解凍したイメージファイル(sdimage-2024-12-23-202715.img)を設定します。

「デバイス」については用意したMicroSDを選択してください。
(間違えるとデータが消えて大惨事になりますので、容量などで確認してください。)
あとはデフォルトでOKです。
準備ができたらスタートを押します
警告が出るので、問題なければ「OK」をクリックすると書き込みが開始されます。

書き込みが終われば、SDカードの準備は完了です。


書き込んだ結果、全体で約3GBが使用済です。
うちWindows10,11やWinCEで操作可能な領域であるFAT領域は64MBで、
空き領域は残りF48MB程度ですね。
WinCE環境と共存させるには、心もとない容量です。

アプリフォルダには、Linux(Brainux)起動用のアプリが登録されています。
Linux(Brainux)の起動
作成したMicroSDをBrain(PW-SH3)に挿して電源を入れます。
電子辞書のメニュー(HOME -> ツール -> 追加コンテンツ -> 追加アプリ・動画)に進んで、
「launch Linux」をクリックすることで、Linux(Brailunx)を起動できます。
OS起動には50秒くらいかかります。

ログイン画面では、Xinitrc、Shell、Jvmが選べるようです。
デフォルトのログイン認証情報は、user/brainです。
Shellが非X11環境で、Xinitrc・JvmがX11環境になります。
Shellでは、X11が立ち上がらないので、GUIは使えませんが動きが軽いです。
Xinitrc・Jvmの違いがまだ分かっていないのですが、初回起動時にタッチパネルの調整画面が出るのでここで設定すれば、画面タッチパネルも問題なく使えます。
画面タッチパネルは感圧式なので、付属のペンか爪の先で押すような操作になるのですが、
何もないところでタッチすると、メニューが出てくるので、Terminalを選べば、Shellが起動します。
キーボード操作について
SH3の場合、、キーボードバインドは以下になります(基本英字キーボードな割り当てです)。
Enter「決定」ボタンになります。
ESC 「調べる」ボタン
TAB 「国語辞典」ボタン
Shift 「シフト」ボタン
Ctrl 「^を縦に並べた」ボタン
Alt 「文字切り替え」ボタン
記号 「記号」ボタン
それ以外のキーマップは、BrainWikiに詳しく書かれています。

ハードウェア等の情報を表示させてみる
では、Terminalを立ち上げて現在の状態を確認するため、コマンドを打ってみます。
lsblk ブロックデバイス(ストレージ)の一覧を表示
|
1 2 3 4 5 6 7 8 9 |
user@brain:~$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT mmcblk0 179:0 0 7.3G 0 disk mmcblk0booto 179:8 0 4M 1 disk mmcblk1 179:16 0 29.1G 0 disk ├mmcblklp1 179:17 0 64M 0 part /boot └mmcblklp2 197:18 0 2.9G 0 part / mmcblk0boot1 179:24 0 4M 1 disk |
mount マウント状況
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
user@brain:~$ mount /dev/mmcblk1p2 on / type ext4 (rw,relatime) devtmpfs on /dev type devtmpfs (rw,relatime,size=59072k,nr_inodes=14768,mode=755) proc on /proc type proc (rw,nosuid,nodev,noexec,relatime) sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime) tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev) devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000) tmpfs on /run type tmpfs (rw,nosuid,nodev,size=23672k,nr_inodes=819200,mode=755) tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k) cgroup2 on /sys/fs/cgroup type cgroup2 (rw,nosuid,nodev,noexec,relatime,nsdelegate) debugfs on /sys/kernel/debug type debugfs (rw,nosuid,nodev,noexec,relatime) configfs on /sys/kernel/config type configfs (rw,nosuid,nodev,noexec,relatime) /dev/mmcblk1p1 on /boot type vfat (ro,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro) tmpfs on /run/user/1000 type tmpfs (rw,nosuid,nodev,relatime,size=11832k,nr_inodes=2958,mode=700,uid=1000,gid=1000) user@brain:~$ |
brainuxを終了させる
brainuxを終了させるには、以下のコマンドを入力します(userのパスワード入力が必要)。
私が使ったイメージでは、自動で電源OFFまでされました。
sudo shutdown -h now
FAT32領域を広げたい
先ほど確認した通り、WinCEでも利用できるFAT領域が64MBなので、MicroSDの空き容量を使って拡張してみます。
今回使うツールはMintool Partition Wizardです。
先ほどダウンロードしたインストーラ(pw-free-online.exe)を実行すればインストールできます。

MicroSDはDisk3になります。
まずはFA32領域にあるLinux領域(EXT4)をずらします。
32GBのMicrosdなので、FAT32を全体の半分の16GBを確保したとすると、
後ろのLinux領域をまずは移動します。
Linux領域であるrootfs(Ext4)を選択して、右クリック->移動/サイズ変更をクリックします。

現在所鵜パーティションの位置情報が表示されます。

グロックを右に移動して、「前の未割り当て領域」を0.00->15.92になるまで移動します。

OKを押して、左横の適用をクリックします。

警告が出るので、「はい」をクリックします。

移動が開始されます。
(実際のデータ移動が発生するのでそれなりに時間がかかります。)

完了するとメッセージが表示されます。

移動が完了しました。
rootfs(Exr4)の領域が移動して、
FAT32領域であるboot(FAT32)の後ろに空き領域が確保できたことがわかります。

次は、FAT32領域を広げます。
FAT32領域であるboot(FAT32)をクリックして、「拡張」をクリックします。

現在のパーティションの状態が表示されます。

「どのくらいの空き領域を利用しますか?」のスライダーを一番右側に移動して、
先ほど確保した空き領域をすべて使って拡張します。

OKを押して、左下の適用をクリックします。

警告が出るので、「はい」をクリックします。

完了するとメッセージが表示されます(データの移動などはないのですぐに終わります)。

SDカードのFAT32領域の状態をWindowsから見ると、容量15.9GBに拡張されています。

これでFAT32領域の拡張は完了です
改めてBrainuxを起動する
拡張したmicroSDをBrainに挿しなおして、先ほどと同様にBrainuxをブートします。
問題なくBootできればOKです

再度、lsblk ブロックデバイス(ストレージ)の一覧を表示すると、
/boot領域16GBになっていますね。拡張成功です。
|
1 2 3 4 5 6 7 8 9 |
user@brain:~$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT mmcblk0 179:0 0 7.3G 0 disk mmcblk0booto 179:8 0 4M 1 disk mmcblk1 179:16 0 29.1G 0 disk ├mmcblklp1 179:17 0 16G 0 part /boot └mmcblklp2 197:18 0 2.9G 0 part / mmcblk0boot1 179:24 0 4M 1 disk |
Linux領域を拡張
次にLinux領域を拡張します。
ツールが用意されているので、こちらを利用します。
sudo brain-config
上下左右キーと Enter キー(決定キー)を使って以下の手順に従って操作します。
“Advanced Options” を選択
“Expand Filesystem” を選択
しばらくすると “Root partition has been resized. …” と表示されるので “Ok” を選択
“Back” を押しトップメニューに戻る
“Finish” を選択すると再起動が促されるため再起動すれば、拡張完了です。
再度、lsblk ブロックデバイス(ストレージ)の一覧を表示すると、
無事 /領域が13.1GBになっています。
|
1 2 3 4 5 6 7 8 9 |
user@brain:~$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT mmcblk0 179:0 0 7.3G 0 disk mmcblk0booto 179:8 0 4M 1 disk mmcblk0boot1 179:24 0 4M 1 disk mmcblk1 179:16 0 29.1G 0 disk ├mmcblklp1 179:17 0 16G 0 part /boot └mmcblklp2 197:18 0 13.1G 0 part / |
SWAP領域の確保
最後にSwap領域を確保します。
デフォルトではSwapは設定されていません。
|
1 |
user@brain:~$ free<br /> total used free shared buff/cache available<br />Mem: 118352 49632 18560 512 49992 63040<br />Swap: 0 0 0 |
まずは、Swapファイルの作成と、Swap設定を実施します。
sudo dd if=/dev/zero of=/swapfile bs=1M count=2048
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
|
1 2 3 4 5 6 7 8 9 10 11 12 |
user@brain:~$ sudo dd if=/dev/zero of=/swapfile bs=1M count=2048 2048+0 records in 2048+0 recorda out 2147483648 bytes (2.1 GB , 2.0 GiB) copied, 169.562 s, 12.7 MB/s user@brain:~$ sudo chmod 600 /swapfile user@brain:~$ sudo mkswap /swapfile Setting up swapspace versiton 1, size = 2 GiB (2147479552 bytes) no label, UUID=51c83415-81eb-414a-8c9c-4b0a04c9c487 user@brain:~$ sudo swapon /swapfile |
次に、Swap設定を永続化するために、
/etc/fstabファイルを編集して、次の行を追加します。
/swapfile none swap sw 0 0
キーのバインドに癖があるので、以下を参考にしてください。
Enter 決定
ESC 「調べる」ボタン
: 記号+シフト+H
= 記号+F
/ 記号+-
viiの保存と終了 シフト+ZZ
|
1 2 3 4 |
user@brain:~$ sudo vi /etc/fstab user@brain:~$ cat /etc/fstab # UNCONFIGURED FSTAB FOR BASE SYSTEM /swapfile none swap sw 0 0 |
では、freeコマンドでSwapの状態を確認します。
Swap領域が確保されていますね。
|
1 2 3 4 5 |
user@brain:~$ free total used free shared buff/cache available Mem: 118352 49632 18560 512 49992 63040 Swap: 2097148 0 2097148 |
最後に再起動して、再度freeコマンドでSwapが継続して確保されていることを確認出来たら作業完了です。一部スワップしていることも確認できます。
|
1 2 3 4 5 6 7 8 |
user@brain:~$ sudo shutdown -r now <再起動> user@brain:~$ free total used free shared buff/cache available Mem: 118352 42684 5892 204 69776 70476 Swap: 2097148 7424 2089724 |
これでアプリを動かすベースまで完了しました。
今後WinCE化やアプリのインストール、Brainux上のアプリ等を試していきたいです。