Move all posts into collections and update Liquid templates

This commit is contained in:
Takumi Sueda
2022-12-12 22:13:06 +09:00
parent dd5047c282
commit 9927d52aeb
21 changed files with 156 additions and 99 deletions

View File

@@ -0,0 +1,245 @@
---
title: 初めての方へ ─ とりあえず動かす
categories:
- For Beginners
tags:
- For Beginners
- 沼の入り口
excerpt: ""
---
<img src="/assets/images/happy.png">
# 始めに
このページでは、SHARP Brain で Linux を動かす試みから生まれた Linux ディストリビューション **Brainux** を手軽に起動する方法を紹介します。
Linux ディストリビューションは、カーネルとそれ以外のソフトウェアの組み合わせです。Brain の場合はカーネルを起動するブートローダも SD カード上に必要なため、正確にはカーネル・ソフトウェア・ブートローダのセットが必要になります。
リポジトリ [buildbrain](https://github.com/brain-hackers/buildbrain) では、Raspberry Pi と同様に SD カードに書き込むだけで起動可能にした SD イメージを公開しています。ちなみにカーネル・ソフトウェア・ブートローダはどれも自力で準備することもできます。詳しくは本 Wiki の対応するページを参照してください。
質問がある場合や開発に参加したい場合は、まず [Brain Hackers の Discord](https://github.com/brain-hackers/README) に参加していただき、「雑談」チャンネルでお気軽にご質問ください。
# 対応している機種
2021年2月21日現在、対応している機種とハードウェアは以下の通りです。省略のため、PW-SH1 や PW-SJ1 のような同世代の機種は特記すべき差がない限りは "Sx1" のように省略形で記載します。
内蔵ハードウェアの対応状況や使い方については[内蔵ハードウェア](#内蔵ハードウェア)をご覧ください。キーマップもそちらに掲載しています。
|機種 |Linux 起動 |キーボード |注釈|
|:-----|:----------------:|:----------------:|:---|
|PW-ACxxx, GCxxx, TC980||||
|PW-G4000, G5000, G5100, A7000, A9000||||
|PW-G4200, G5200 ~ 5300, A7200 ~ 7400, A9100 ~ 9300|:white_check_mark:|:white_check_mark:||
|GX500, GX300|:white_check_mark:|:white_check_mark:|画面が非常に暗くなる|
|PW-Sx1|:white_check_mark:|:white_check_mark:||
|PW-Sx2|:white_check_mark:|:white_check_mark:||
|PW-Sx3|:white_check_mark:|:white_check_mark:||
|PW-Sx4|:white_check_mark:|:white_check_mark:||
|PW-Sx5|:white_check_mark:|:white_check_mark:||
|PW-Sx6|:white_check_mark:|:white_check_mark:||
|PW-Sx7|:white_check_mark:|:white_check_mark:||
|PW-HC4 ~ 6, H7700 ~ H9100|:white_check_mark:|:white_check_mark:||
|PW-SR1 ~ 3|:white_check_mark:|:white_check_mark:||
|PW-AA1 ~ 2|:white_check_mark:|:white_check_mark:||
|PW-AJ1 ~ 2|:white_check_mark:|:white_check_mark:||
|PW-x1, x2, ESxxxx, SR4||||
# SD カードのイメージをダウンロードする
[brain-hackers/buildbrain のリリースページ](https://github.com/brain-hackers/buildbrain/releases)にアクセスし、最新リリースの配布物の中から `sdimage-*.zip` と名のついた ZIP ファイルをダウンロードします。`*` には最新リリースのバージョン名が入ります。
# SD カードに書き込む
書き込むソフトは Windows / macOS / Linux のどれをお使いの場合でも利用可能な balenaEtcher がお勧めです。[公式サイト](https://www.balena.io/etcher/)にアクセスしてダウンロードしてください。
macOS もしくは Linux をお使いの場合は、ZIP を展開して取り出した .img ファイルを `dd` コマンドでそのまま書くことも可能です。
## balenaEtcher を使う場合
今回は macOS で balenaEtcher を使用した際の画像で説明します。どの OS でも同様にして書き込めます。
1. balenaEtcher を起動します
2. "Flash from file" をクリックし、ダウンロードした ZIP ファイルを選択します
- 展開する必要はありません
<img src="/assets/images/etcher1.png" width=300px>
<img src="/assets/images/etcher2.png" width=300px>
3. "Select target" をクリックして書き込み先を選択します
- 正しい SD カードを選択しているか慎重に確認してください
- 4GB 以上の SD カードであればなんでも使用可能です
- SD カードの性能がシステムの使用感に直結するため高速な SD カードを使用することをお勧めします
- 画像では 8GB の SD カードを選択しています
<img src="/assets/images/etcher3.png" width=300px>
<img src="/assets/images/etcher4.png" width=300px>
4. "Flash!" をクリックして書き込みます
- あらためて正しい SD カードが選択されているか確認したうえで書き込んでください
- 書き込みには管理者権限が必要なため管理者パスワードを入力します
<img src="/assets/images/etcher5.png" width=300px>
<img src="/assets/images/etcher6.png" width=300px>
<img src="/assets/images/etcher7.png" width=300px>
5. 完成!\
<img src="/assets/images/etcher8.png" width=300px>
## dd を使う場合
macOS もしくは Linux をお使いの場合は、`dd` コマンドでも書き込むことができます。以下にコマンド例を示します。
### macOS の場合
- macOS では `/dev/disk*` に書き込むと非常に遅いため `/dev/rdisk*` を使用します
- どのディスクが SD カードかはディスクユーティリティを使用して確認します
以下に実行例を示します。バージョン番号は適宜読み替えてください。
```sh
cd ~/Downloads
unzip sdimage-2021-02-21-162410.zip
sudo dd if=~/Downloads/sdimage-2021-02-21-162410.img of=/dev/rdisk4 bs=10M
```
### Linux の場合
以下に実行例を示します。バージョン番号は適宜読み替えてください。
```sh
cd ~/Downloads
unzip sdimage-2021-02-21-162410.zip
sudo dd if=~/Downloads/sdimage-2021-02-21-162410.img of=/dev/sdc bs=10M
```
# 実機で起動する
書き込み終わった SD カードを Brain に挿入して Linux を起動しましょう。起動には2つの方法があります。
- アプリメニューからの起動
- SD カードからの直接起動
## アプリメニューからの起動
Windows CE 起動後に "Launch Linux" を追加アプリメニューで選択すると Linux が起動します。
## SD カードからの直接起動
Windows CE の起動シーケンスに割り込み Linux を直接起動する方法です。後述の問題によりこの方法は標準で無効になっています。有効化するには、以下の手順に従ってください。
1. SD カードの先頭パーティション(ボリューム名が `boot` のパーティション)を開きます
2. `nk` ディレクトリの中にあるファイルをパーティションのルートディレクトリにすべてコピーします
3. SD カードを取り外し実機に差し込みます
4. リセットボタンを押して再起動し Linux が自動で起動することを確認します
直接起動には下記の問題があります。これらを回避したい場合はアプリメニューからの直接起動を使用してください。
- クロック周波数が半減する(修正予定)
- 一部の機種で使えない: PW-G4200, G5200, A7200, A7300, A9200, GX300, GX500
# ログイン
本体の内蔵キーボードに対応している機種では、ログインシェルが表示されたらユーザー名 `user` パスワード `brain` でログインできます。非対応の機種では、電源供給が可能なタイプの OTG ケーブルを使用してキーボードをつなぐと操作できます。root ユーザーは無効になっているのでご注意ください。
# 内蔵ハードウェア
Brain における Linux の動作はまだ初期段階であり、一部のハードウェアしか利用できません。
## キーボード
キーが非常に少ない Brain のキーボードで必要な記号を打つため、キーボードの使用方法は特殊になっています。キートップに記載されたキー以外の文字は、すべて「記号」キーと「シフト」キーを組み合わせて入力します。
Shift キー・Ctrl キー・Alt キーは現実のキーボードに近い配置で対応させています。古い機種は Space キーがないため「Sジャンプ」キーに割り当てています。
### Gxxxx, Axxxx の場合
|特殊キー|対応するキー|備考|
|:-:|:-:|:-:|
|Shift|機能||
|Ctrl|音声||
|Alt|前見出||
|Space|Sジャンプ||
|記号|次見出||
### Sx1 ~ Sx3, HC4 ~ HC6, SR1 の場合
|特殊キー|対応するキー|備考|
|:-:|:-:|:-:|
|Shift|シフト||
|Ctrl|ページアップ|`《` を横に倒した記号|
|Alt|文字切り替え||
|記号|記号||
### Sx4, H7700, SR2 の場合
|特殊キー|対応するキー|備考|
|:-:|:-:|:-:|
|Shift|シフト||
|Ctrl|音声||
|Alt|ページアップ|`《` を横に倒した記号|
|記号|記号||
### Sx5 ~ Sx7, H7800 ~ H9100, AAx, AJx, SR3 の場合
|特殊キー|対応するキー|備考|
|:-:|:-:|:-:|
|Shift|シフト||
|Ctrl|ページアップ|`《` を横に倒した記号|
|Alt|音声||
|記号|記号||
## キーマップ
キーと入力される文字のマップを以下に示します。
<img src="/assets/images/keymap.png" width=640px>
## 電源を切る
リセットボタンを利用して強制的に電源を切るなどの方法で、正常にシャットダウンしなかった場合、SD カード内のデータを破壊する場合があります。
Brainux を正しく終了し電源を切るためには、次のコマンドを入力します。
```sh
sudo shutdown -h now
# こちらでも OK
sudo poweroff
```
また、電源ボタンには一般的な PC の電源ボタンと同じ動作が割り当てられているため、押すとシャットダウンできます。
シャットダウンした後、リセットボタンを押すと Windows CE を起動できます。
# その他
|Q|A|
|:-|:-|
|ファイルシステムを SD カードいっぱいまで拡張したい。|[brain-config](/linux/brain-config/) を使います。|

View File

@@ -0,0 +1,97 @@
---
title: ハードウェア対応状況とロードマップ
categories:
- Linux
- U-Boot
tags:
- Linux
- U-Boot
- 周辺機器
- 沼の入り口
excerpt: Brainux が自分の電子辞書にどれくらい対応しているかチェックしたい人はこちら
---
# Linux のブート
|キーボードの世代|対応済|説明|
|:--|:-:|:--|
|3桁世代, G4000, G5000, G5100, A7000, A9000||TOSHIBA TMPA910CRAXBG|
|4桁世代, Sx1 〜 Sx7|:white_check_mark:|NXP i.MX283|
|x1||NXP i.MX7|
# キーボード
|キーボードの世代|対応済|説明|
|:--|:-:|:--|
|3桁世代||SoC が直接キーマトリックスを読む|
|4桁世代, Sx1 〜 Sx2|:white_check_mark:|MPU がキーマトリックスを読み SoC に I²C で送信|
|Sx3 〜 Sx7|:white_check_mark:|SoC が直接キーマトリックスを読む|
|x1||詳細不明||
# 画面開閉検知
- 開閉イベントの伝達はキーイベントと同じ経路をたどる
- キーボードの実装に依存する
|キーボードの世代|対応済|説明|
|:--|:-:|:--|
|3桁世代||SoC が直接キーマトリックスを読む|
|4桁世代, Sx1 〜 Sx2||MPU がキーマトリックスを読み SoC に I²C で送信|
|Sx3 〜 Sx7||SoC が直接キーマトリックスを読む|
|x1||詳細不明||
# 音
- Brain に内蔵されているスマートアンプには大きく分けて Yamaha 系と Rohm 系がある
- 録音と再生は2021年2月23日現在解析中で非対応
# タッチパネル
- 2021年2月23日現在反応はするが位置がおかしい
- 世代によるハードウェアの差分は不明
# 電源コントローラ
- 2021年2月23日現在未対応のため充電状態の表示などは一切不可
# cpufreq
- CPU のクロック制御は2021年2月23日現在なし
# eMMC への Linux インストール
- 研究中
# Wi-Fi
Wi-Fi の接続は複数の手法が提案されていて、現在検証中。
- SDIO Wi-Fi チップ
- USB ドングル
# LCD
一部については実装が完了。ただし、DMA を使用しない非効率な実装になっているため、改善が必要。
|世代|対応済み|
|:--|:-:|
|3桁世代||
|4桁世代||
|Sx1 〜 Sx7|:white_check_mark:|
|x1||
# Brainux のリリース
当面は Development リリースや Stable リリースのような区分は設けず、[brain-hackers/buildbrain](https://github.com/brain-hackers/buildbrain) リポジトリのタグを直接バージョンとする。リリース間隔やスケジューリングも行わない。

View File

@@ -0,0 +1,94 @@
---
title: SD カードへのコピー
categories:
- Linux
tags:
- Linux
- 自力ビルド
excerpt: ""
---
# 注意
***この手順を実行すると、SD カードの内容が消去されます。必ずバックアップをしてから実行しましょう。***
# 前提
- [U-Boot のビルド](/u-boot/u-boot-build/)にてU-Bootをビルドしていること
- [Linux のビルド](/linux/linux-build/)にてLinuxをビルドしていること
# パーティションを区切る
先頭に 100MB くらいの FAT32 のパーティションを作り、残りを ext4 のパーティションにします。
## GPartedのインストール
以下のコマンドで GParted をインストールします。
```sh
sudo apt install gparted
```
## パーティションを作成する
Linux をインストールする SD カードを PC に挿入して GParted を起動します。
### GParted の起動
![GParted起動画面](/assets/images/Launch-GParted.png)
GPartedの右上のメニューから SD カード を選びます。容量で選ぶとわかりやすいです。
### パーティションの削除
![パーティションの削除](/assets/images/partition-delete.png)
***この手順を実行すると、SD カードの内容が消去されます。必ずバックアップをしてから実行しましょう。***
パーティションを右クリックしたあと "削除" をクリックしてパーティションを削除します。
### パーティションの作成
まず、FAT32 のパーティションを作成します。 "未割り当て" のパーティションを右クリックして "新規" をクリックします。
![新規パーティションの作成のダイアログ](/assets/images/create-partition-fat32.png)
上図のようなダイアログが表示されたら
- 新しいサイズ: 100MiB 程度
- ファイルシステム: fat32
に設定して "追加" をクリックし、パーティションを作成します。
次に、ext4のパーティションを作成します。
- 新しいサイズ: 残りの容量いっぱいまで
- ファイルシステム: ext4
に設定して "追加" をクリックし、パーティションを作成します。
# 必要なファイルをコピーする
1. `buildbrain`ディレクトリの中から以下ファイルをSDカードのFAT32パーティションへコピーします
- `linux-brain/arch/arm/boot/zImage`
- `linux-brain/arch/arm/boot/dts/imx28-[機種名].dts`
2. ターミナルを起動して `cd buildbrain``buildbrain` ディレクトリに入ります
以下のコマンドを実行します。
```sh
sudo cp -ar ./brainux/* /SDカードの/2つ目の/パーティション/
```
`/SDカードの/2つ目の/パーティション/` は適宜読み替えてください。

View File

@@ -0,0 +1,78 @@
---
title: Linux のビルド
categories:
- Linux
tags:
- Linux
- 自力ビルド
excerpt: ""
---
# 動作環境
- Debian 10 (Buster)
- Ubuntu 20.04 LTS
本項では上記のいずれかを使用していることを前提で記述します。
# 依存関係のインストール
以下のコマンドで依存関係をインストールします。
```sh
sudo apt install build-essential bison flex libncurses5-dev gcc-arm-linux-gnueabi gcc-arm-linux-gnueabihf libssl-dev bc lzop qemu-user-static debootstrap kpartx
```
# Gitリポジトリのクローン
以下のコマンドでGitリポジトリをクローンして、必要なファイルをダウンロードします。長い時間がかかるので、時間のあるときに行いましょう。
```sh
git clone --recursive https://github.com/brain-hackers/buildbrain.git
```
# Linuxのビルド
1. `cd buildbrain``buildbrain` ディレクトリに入ります。
2. `make ldefconfig` を実行して、 `.config` ファイルを作成します。
3. `make lbuild` を実行してLinuxをビルドします。
# Brainuxのビルド
Linuxのカーネルの準備ができたら、カーネルの上で動くアプリケーションを用意して、Linuxディストリビューションを完成させます。
1. バックグラウンドで `make aptcache` を実行します。
- 新しいウィンドウでターミナルを開き、 `make aptcache` を実行してそのままにしておきます。
2. `make brainux` を実行します。長い時間がかかるので、時間のあるときに行いましょう。
## パッケージの追加方法 (任意)
追加でほしいパッケージを `./tools/setup_debian.sh` の51行目あたりに追記します。
実際に追記した例を以下に示します。
```diff
42 apt install -y dialog sudo \
43 libjpeg-dev libfreetype6 libfreetype6-dev zlib1g-dev \
44 xserver-xorg xserver-xorg-video-fbdev xserver-xorg-dev xorg-dev x11-apps \
45 openbox obconf obmenu \
46 weston xwayland \
47 bash tmux vim htop \
48 midori pcmanfm lxterminal xterm gnome-terminal fonts-noto-cjk \
49 dbus udev build-essential flex bison pkg-config autotools-dev libtool autoconf automake \
50 python3 python3-dev python3-setuptools python3-wheel python3-pip python3-smbus \
51 resolvconf net-tools ssh openssh-client avahi-daemon
+ 52 apt install -y fbterm uim-fep uim-mozc
```
[SD カードへのコピー](/build/copy-sd-card/)に続く…

View File

@@ -0,0 +1,59 @@
---
title: U-Boot のビルド
categories:
- U-Boot
tags:
- U-Boot
- 自力ビルド
excerpt: ""
---
# 動作環境
- Debian 10 (Buster)
- Ubuntu 20.04 LTS
本項では上記のいずれかを使用していることを前提で記述します。
# 環境の構築
[Linux のビルド](/linux/linux-build/)の頁ですでに構築している場合は飛ばします。
## 依存関係のインストール
以下のコマンドで依存関係をインストールしてください。
```sh
sudo apt install build-essential bison flex libncurses5-dev gcc-arm-linux-gnueabi debootstrap qemu-user-static
```
## Git リポジトリのクローン
Git リポジトリをクローンして、必要なファイルをダウンロードします。長い時間がかかるので、時間のある時に行いましょう。
```sh
git clone --recursive https://github.com/brain-hackers/buildbrain.git
```
# U-Boot のビルドと nk.bin の作成
1. `cd buildbrain``buildbrain` ディレクトリに入ります
2. `make udefconfig-sh*` を実行して、 `.config` ファイルを作成します
- PW-Sx1 のとき: `make udefconfig-sh1`
- PW-Sx5 のとき: `make udefconfig-sh5`
3. `make ubuild` を実行して `u-boot.sb` を生成します
4. `make nkbin-maker` を実行します
5. `make nk.bin` を実行します
[Linux のビルド](/build/linux/)に続く…

View File

@@ -0,0 +1,30 @@
---
title: brain-config
categories:
- Linux
tags:
- Linux
---
Raspberry Pi OS で馴染み深い raspi-config コマンドをベースとした brain-config コマンドが Brainux にも用意されています。
# 起動方法
`brain-config` コマンドを `sudo` 付きで起動します。
```shell-session
$ sudo brain-config
```
# ルートファイルシステムを拡張する
上下左右キーと Enter キー(決定キー)を使って以下の手順に従って操作します。
1. "Advanced Options" を選択します
2. "Expand Filesystem" を選択します
3. しばらくすると "Root partition has been resized. ..." と表示されるので "Ok" を選択します
4. "Back" を押しトップメニューに戻ります
5. "Finish" を選択すると再起動が促されるため再起動します
6. 再起動したら容量が増えていることを `lsblk` コマンドを使って確認します

View File

@@ -0,0 +1,85 @@
---
title: パッケージ一覧
categories:
- Linux
tags:
- Linux
toc: false
---
Brainux では、debootstrap で生成した rootfs に加えて以下のパッケージをインストールしています。
[comment]: 以下に tools\package_list.py で出力したパッケージ一覧を貼り付けてください。
|パッケージ名|
|:-|
|locales|
|dialog|
|sudo|
|libjpeg-dev|
|libfreetype6|
|libfreetype6-dev|
|zlib1g-dev|
|xserver-xorg|
|xserver-xorg-video-fbdev|
|xserver-xorg-dev|
|xserver-xorg-input-evdev|
|xinput-calibrator|
|xorg-dev|
|x11-apps|
|xinit|
|jwm|
|weston|
|xwayland|
|bash|
|tmux|
|vim|
|htop|
|midori|
|pcmanfm|
|lxterminal|
|xterm|
|gnome-terminal|
|fbterm|
|uim-fep|
|uim-anthy|
|fonts-noto-cjk|
|dbus|
|udev|
|alsa-utils|
|usbutils|
|iw|
|fake-hwclock|
|build-essential|
|flex|
|bison|
|pkg-config|
|autotools-dev|
|libtool|
|autoconf|
|automake|
|device-tree-compiler|
|python3|
|python3-dev|
|python3-setuptools|
|python3-wheel|
|python3-pip|
|python3-smbus|
|resolvconf|
|net-tools|
|ssh|
|openssh-client|
|avahi-daemon|
|curl|
|wget|
|git|
|network-manager|
|zip|
|neofetch|
|sl|
|python3-numpy|
|ipython3|
|netsurf-gtk|
|fcitx-anthy|
|libpam0g-dev|
|libxcb-xkb-dev|

View File

@@ -0,0 +1,15 @@
---
title: Xorg
categories:
- Linux
tags:
- Linux
- GUI
excerpt: Xorg について
---
# GUI の利用方法
Brainux バージョン 2021-03-22-233911 以降は Xorg と jwm が標準でインストールされています。ログイン画面にて jwm 等の好きな DE を選びログインしてください。

View File

@@ -0,0 +1,344 @@
---
title: Wiki の編集方法とルール
categories:
- Meta
tags:
- Wiki
- メンバー向け
excerpt: ""
---
# 準備
GitHub にログインした状態で Wiki を clone します。
```sh
$ git clone git@github.com:brain-hackers/wiki.brainux.org.git
```
2022年5月15日現在、Ubuntu 22.04 LTS では以下のコマンドで Ruby 3.0 がインストールされます。 お使いのディストリビューション標準のパッケージマネージャーで Ruby がインストールできない場合、 rbenv を使うなどして適宜最新バージョンをインストールしてください。
```sh
$ sudo apt install ruby-full
```
Rubyがインストールできたら、`ruby -v` コマンドで Ruby が実行されることを確認します。Ubuntu 22.04 LTS では以下のように出力されます。
```sh
$ ruby -v
ruby 3.0.2p107 (2021-07-07 revision 0db68f0233) [x86_64-linux-gnu]
```
次に手元でのビルドに必要な依存関係をインストールします。
```sh
$ cd wiki.brainux.org
$ sudo gem install bundler
$ bundle install
```
ビルドとプレビューができることを確認します。下記のように `make serve` を実行すると localhost:4000 でサーバが
起動している旨のメッセージが出るので、メッセージが見え次第ブラウザで `localhost:4000` を開いてプレビューできます。
```sh
$ make serve
Configuration file: /Users/takumi/dev/brain/wiki.brainux.org/_config.yml
Source: /Users/takumi/dev/brain/wiki.brainux.org
Destination: /Users/takumi/dev/brain/wiki.brainux.org/_site
Incremental build: disabled. Enable with --incremental
Generating...
Remote Theme: Using theme mmistakes/minimal-mistakes
Jekyll Feed: Generating feed for posts
GitHub Metadata: No GitHub API authentication could be found. Some fields may be missing or have incorrect data.
done in 53.672 seconds.
Auto-regeneration: enabled for '/Users/takumi/dev/brain/wiki.brainux.org'
Server address: http://127.0.0.1:4000
Server running... press ctrl-c to stop.
````
次に、textlint と markdownlint を使うために Node.js とパッケージをインストールします。
```sh
$ cd wiki.brainux.org
$ npm install
```
Node.js のインストールの方法は問いませんが、不具合を減らすために、LTS を利用することをお勧めします。なお、2022年5月12日現在の LTS バージョンは [v16](https://nodejs.org/en/about/releases/) です。
また、Node.js のバージョン管理の1つの選択肢として、nodeenv を利用することも可能です。nodeenv を利用する場合は、毎回 env を activate することを忘れないでください。以下に、nodeenv を pip でインストールし、利用する例を示します。
```sh
$ pip install nodeenv
$ nodeenv -n 16.13.2 env
$ source ./env/bin/activate
(env) $ npm install
```
textlint を動かして、正常に lint されるか試します。`npm run textlint-fix` で発動する自動修正は、誤検知も意図せず修正してしまう可能性があるため事前によくチェックしてから実行してください。
```sh
$ npm run textlint
$ npm run textlint-fix # お好みで
```
markdownlint を動かして、正常に lint されるか試します。
```sh
$ npm run mdlint
```
# 各種操作
## 1. a. ページを追加・削除する
- master ブランチを pull して最新の本文を取得します
- 新たにブランチを作成します
- 後で Pull Request として提出するため、`master` ブランチには直接コミットしないでください
- `_posts` ディレクトリにあるほかのファイルを参考にして md ファイルを追加します
- 例: `2038-1-19-doomsday.md`
- 記事内容を記述します
- `npm run textlint``npm run mdlint` を実行し、エラーが出ないことを確認します
- もし誤検知があった場合はルールを修正するかレビュアーと相談してください
- エラー箇所をどうしても押し通したい場合はそこだけ lint を無効化するよう記述してレビュアーに説明してください
- 一通り追加と削除が終わったら `pull -r`, commit, push します
## 1. b. ページを編集する
- 記事内容を記述します
- `npm run textlint``npm run mdlint` を実行し、エラーが出ないことを確認します
- もし誤検知があった場合はルールを修正するかレビュアーと相談してください
- エラー箇所をどうしても押し通したい場合はそこだけ lint を無効化するよう記述してレビュアーに説明してください
- 一通り編集が終わったら `pull -r`, commit, push します
## 2. 変更を提出する・レビューを受ける・マージしてもらう
文章に対するどのような変更も、Pull Request (PR) を提出して編集権限のあるメンバーからレビューを受けます。PR のレビュアーは自動で割り当てられます。
PR 提出前に、作業中のブランチが master ブランチの最新コミットから分岐しているか**必ず**チェックしてください。さもなくば、後で面倒な対処が必要となりレビュアーに迷惑がかかります。
不明確な場合は、以下のようにして最新コミットから分岐するように rebase してください。Conflict が発生した場合は適宜解決してください。
```sh
git checkout master
git pull
git checkout {作業中のブランチ}
git rebase master
```
PR のレビューに通ると変更がマージされ、公開されます。PR のタイトルや文章は丁寧に記述しましょう。詳細は Scrapbox の[超説明・開発フロー](https://scrapbox.io/brain-hackers/%E8%B6%85%E8%AA%AC%E6%98%8E%E3%83%BB%E9%96%8B%E7%99%BA%E3%83%95%E3%83%AD%E3%83%BC)を参照してください。
2022年5月現在、編集権限のあるメンバーは以下の通りです。
- @puhitaku
- @tka3320
- @Sasakura-ayato
- @Codex340
注意! GitHub の Brain Hackers organization のメンバーでない人はレビューを依頼できないので、
Discord にてメンバー追加依頼をしてメンバーになってから Pull Request を提出しましょう。
# ファイル名のルール
Wiki のページを生成している Jekyll は、md ファイルの名前から記事の日付や URL を生成します。以下のすべての条件を満たすようにしましょう。
- `YYYY-MM-DD-{英字とハイフンでできたタイトル}.md` の形式にする
- URL が冗長になるので日本語は使わない
# 記述ルール
Wiki の体裁に関するルールを列挙します。コミットの前に従っているかチェックしてください。一部のルールは textlint や markdownlint を使って機械的に調べたり修正できます。
## 文体
基本的には、技術文書のルールと同一です。助詞の使いすぎや表記ゆれは textlint でチェックできますが、機械的に検知できる範囲は限られているためよく心得ておいてください。
### 「ですます」と「だ・である」は統一する
Linter によるチェック: **なし**
Wiki 全体で「ですます」の形で統一します。
### 依頼する時はできるだけ「します」で締める
Linter によるチェック: **なし**
「〇〇してください」は長いので、「します」で極力統一します。不自然に映る場合は「してください」や「しましょう」を使っても OK です。この文書でも実際にどちらも使用しています。
### 繰り返しや冗長な表現をなくす
Linter によるチェック: textlint部分的
冗長な表現を組み込んでしまうことは多いので、極限まで削ります。
「など」「いろいろ」「といった」「〇〇できます」は使いがちですので特に気を付けましょう。
:x: 悪い例: このコマンドを使えば、Linux を起動することなどが可能です。
:o: 良い例: このコマンドで、Linux を起動できます。
### 括弧は基本的に使わない
Linter によるチェック: **なし**
どうしても必要な場合は、名詞の別名や補足といった1〜2単語で済む体言を入れるだけにします。
:x: 悪い例: Linux マシンUbuntu か Debian が入っていることが望ましい)を用意します。
:o: 良い例: Ubuntu か Debian がインストールされた Linux マシンを用意します。
### 箇条書きには句読点を入れない
Linter によるチェック: **なし**
箇条書きは段落を表現する道具ではありません。よって、内容が極力短くなるようにしつつ、句読点を置かないようにします。
### 感情を排除する
Linter によるチェック: **なし**
極力スムーズに読める文章になるには、感情的表現を取り除く事が必須です。
文章は技術文書(レポート)のような無味乾燥なものにし、感情は Discord で共有しましょう。
### コードブロックや画像と文章の関わりを示す
Linter によるチェック: **なし**
「以下にコマンド例を示します」などのように、文章と以下に連なる要素を関連付けます。
## Markdown
Markdown はリッチなレンダリングがなくとも読めるシンタックスが特徴です。これを念頭に置いて、以下のルールに従ってください。
一部は markdownlint によって違反を検知できます。ここにない細かなルールは markdownlint の指示に従ってください。
### 必ずプレビューして確認する
ブラウザで文書を編集すると、コミット前に文書を HTML にレンダーするプレビューが利用可能です。ミスがないか確認してからコミットしましょう。
ローカルのコンソールやエディタで書く場合も、Markdown をプレビューできる環境を用意して確認してからコミットしましょう。
### 改行コードは LF に統一する
Windows で特に気を付けましょう。Git は[コミット時に改行コードを LF のみに強制](https://qiita.com/uggds/items/00a1974ec4f115616580)できます。
`git config`
```sh
git config --global core.autocrlf input
```
と設定すると、コミット時に Unix style でコミットできます。
### 適切な空行を入れる
Linter によるチェック: あり
以下の箇所には1行空行を入れます。
- 段落と段落の間
- プレーンテキストとプレーンテキスト以外の要素の間
- 節タイトル
- 箇条書き
- テーブル
-
- コードブロック
- 引用
以下の箇所には2行空行を入れます。
- 節と節の間
### 適切な空白を入れる
Linter によるチェック: **なし**
プレーンテキスト以外の要素の前後には適切な空白を入れ、表示がおかしくなるリスクを減らしましょう。この文書は Wiki での表示に限られるため空白を欠いても大丈夫ですが、エディタでのシンタックスハイライトに失敗することがありますので気を付けましょう。
:x: 悪い例1: `1.あいうえお`
:o: 良い例1: `1. あいうえお`
:x: 悪い例2: `` このコマンドには`-a`という引数を渡します。 ``
:o: 良い例2: `` このコマンドには `-a` という引数を渡します。 ``
### コードスパンとコードブロックを使い分ける
Linter によるチェック: **なし**
コードスパンとは、`` `ident` ``のように行の中に等幅で文字を入れるスパン要素を指します。
コードブロックとは
```sh
echo foo
```
のように新しい段落で等幅に文字を入れるブロック要素を指します。
コードスパンはコードの識別子や短いコマンドの例示に使い、コードブロックは複数行のプログラムや長いコマンドの例示に使用します。
例1: `ls` コマンドには `-l` というオプションがあります。
例2: `ls` コマンドでファイルの詳細情報を表示するには、以下のように実行します。
```sh
ls -l
```
### 明示的改行はバックスラッシュで行う
Linter によるチェック: **なし**
この節でいう明示的改行とは Hard line breaks のことで、空行による段落区切りや単一の LF による Soft line break ではなく確実に改行を入れることを指します。必要でない限りは使わないことが望ましいです。
明示的な改行の入れ方には行末にスペース2つを入れる方法とバックスラッシュを入れる方法がありまず。前者は通常不可視な上に意味合いがわかりづらいため、バックスラッシュを使用します。
# 一部ページの特殊な操作
「パッケージ一覧」を更新する際は、Python スクリプトを利用します。
まず、これを実行する場合は、以下のようにして依存関係をインストールします。
```sh
pip3 install -r ./tools/requirements.txt
```
次に、テーブルを生成します。
```sh
python3 ./tools/package_list.py
```
また、出力した結果を以下のようにしてクリップボードに直接コピーすることもできます。
```sh
# Ubuntu
python3 ./tools/package_list.py | xsel -ib
# macOS
python3 ./tools/package_list.py | pbcopy
```

24
collections/_tips/otg.md Normal file
View File

@@ -0,0 +1,24 @@
---
title: OTG ケーブル
categories:
- Tips
tags:
- 周辺機器
- USB
excerpt: 動作可否が確認されたケーブルの一覧
---
# 使える USB OTG ケーブル一覧
Brainux の初期状態では、USB コントローラはホストとして動作するようになっています。OTG ケーブルを使用すると好きなデバイスを接続できます。Brain 自身は VBUS (5V) を供給する能力はないので、電源が別途供給可能な OTG ケーブルを使用する必要があります。
- [RouteR RUH-OTGU4](https://amz.run/4Kue)
- [AINEX USB-120R](https://www.sengoku.co.jp/mod/sgk_cart/detail.php?code=EEHD-5EHA)
- [CY 90度左右角度付きMicro USB 2.0 OTGホストアダプター](https://amz.run/4LXg)
# 使えない USB OTG ケーブル一覧
- [Easi-Cable](https://amz.run/4KqD)

41
collections/_tips/swap.md Normal file
View File

@@ -0,0 +1,41 @@
---
title: Swap 領域
categories:
- Tips
- Linux
tags:
- Linux
excerpt: ""
---
# スワップの作成を推奨します
Brain の DRAM は 128MB しかないので、簡単にメモリが食いつぶされます。OOM Killer により重要なプロセスを終了される危険があるため、スワップを作成することをお勧めします。
2021年2月23日現在のリリースではまだスワップ領域を標準で設定していません。Brain Hackers では将来のリリースで最初からスワップを設定することを検討しています。
# 作成方法
1. 以下のコマンドを実行して、スワップのための領域を確保します
今回の例では、256MBこれ以上を推奨の領域を確保しています。ほかの容量にしたい場合は適宜 `bs``count` の値を変えてください。
```sh
dd if=/dev/zero of=/swapfile bs=1M count=256
chmod 0600 /swapfile
```
2. スワップ領域を初期化します
```sh
mkswap /swapfile
```
3. スワップ領域を有効にします
```sh
swapon /swapfile
```

View File

@@ -0,0 +1,100 @@
---
title: タッチパネル
categories:
- Tips
- Linux
tags:
- Linux
- GUI
- 周辺機器
excerpt: タッチパネルのキャリブレーションBrainux に同梱されているため手動インストールは不要)
---
# 必要なパッケージのインストール
```sh
apt install xserver-xorg-input-evdev xinput-calibrator
```
を実行して、必要なパッケージをインストールします。
# Xorgとopenboxの起動
```sh
Xorg &
openbox-session &
```
を実行して、Xorgとopenboxを起動します。
# タッチパネル補正ツールの起動
```sh
xinput_calibrator
```
画面上に補正画面が表示されます。
![xinput-calibratorの画面](/assets/images/xinput-calibrator.png)
# 補正する
画面上の 赤い十字 を**丁寧に** 4回タッチすると、補正用の設定項目が端末に出力されます。
```plaintext
Setting calibration data: 0, 4095, 0, 4095
Calibrating EVDEV driver for "mxs-lradc-ts" id=6
current calibration values (from XInput): min_x=0, max_x=4095 and min_y=0, max_y=4095
Doing dynamic recalibration:
Setting calibration data: 147, 3618, 3826, 350
--> Making the calibration permanent <--
copy the snippet below into '/etc/X11/xorg.conf.d/99-calibration.conf' (/usr/share/X11/xorg.conf.d/ in some distro's)
Section "InputClass"
Identifier "calibration"
MatchProduct "mxs-lradc-ts"
Option "Calibration" "147 3618 3826 350"
Option "SwapAxes" "0"
EndSection
```
# 設定ファイルを作成・保存する
`/etc/X11/xorg.conf.d`を作成します。
```sh
mkdir /etx/X11/xorg.conf.d
```
xinput_calibratorの出力に従って、`/etc/X11/xorg.conf.d/99-calibration.conf`
`Section "InputClass"` から `EndSection`までの行を nano や vi を用いて書き出します。
```plaintext
Section "InputClass"
Identifier "calibration"
MatchProduct "mxs-lradc-ts"
Option "Calibration" "147 3618 3826 350"
Option "SwapAxes" "0"
EndSection
```
# Xorgの再起動
```sh
pkill Xorg
Xorg &
openbox-session &
```
でXorgを再起動します。
# 完成
![ちゃんとタッチした場所にカーソルが来ています](/assets/images/calibrator-done.gif)

View File

@@ -0,0 +1,167 @@
---
title: USB Ethernet Gadget
categories:
- Tips
- Linux
tags:
- Linux
- USB
- 周辺機器
excerpt: PC と USB ケーブル1本で接続できる便利な仕組みとその導入方法
---
# USB Gadget とは?
コンピュータがあたかも USB デバイスであるかのように振る舞うしくみです。
# Why USB Gadget?
インターネットに接続可能なPCと Brain を接続するだけで Brain からインターネットに出たり、PCと Brain で双方向に SSH したりできます。電池切れの心配もありません。
# USB コントローラの動作モードを変更する
初期状態では Brain の USB コントローラはホストとして動作するため、このままではデバイスになることができません。
2022年1月8日現在ではまだありませんが、コントローラの動作モードを簡単に切り替えるスクリプトを用意する予定です。
手動で変更するには、以下の手順に従ってください。
1. SDカードの第1パーティションを`/boot`にマウントします
```sh
sudo mount /dev/mmcblk1p1 /boot
```
2. 元のdtsをバックアップします
{機種名の数字}は適宜置き換えてください。(例:PW-SH5→imx28-pwsh5.dtb
```sh
sudo cp /boot/imx28-pwsh{機種名の数字}.dtb /boot/imx28-pwsh{機種名の数字}.dtb.orig
```
3. dtbファイルをテキスト形式に変換します
```sh
dtc -I dtb -O dts /boot/imx28-pwsh{機種名の数字}.dtb > dts 2> /dev/null
```
4. 設定を書き換えます
```sh
nano dts
```
`usb@80080000`ノードの中から`dr_mode = "host"`の箇所を探し、`dr_mode = "peripheral"`に書き換えます。スペルに注意しましょう。
書き換え後は以下のようになります。
```diff
ahb@80080000 {
usb0: usb@80080000 {
pinctrl-names = "default";
pinctrl-0 = <&usb0_id_pins_a>;
vbus-supply = <&reg_usb0_vbus>;
- dr_mode = "host";
+ dr_mode = "peripheral";
status = "okay";
};
};
```
書き換えられたら保存してエディタを終了します。`Ctrl+O`の次に`Enter`を押して保存して、`Ctrl+X`で終了します。
5. 編集したものをバイナリ形式に変換します
```sh
dtc -I dts -O dtb dts > dtb 2> /dev/null
```
```sh
sudo mv dtb /boot/imx28-pwsh{機種名の数字}.dtb
```
6. SDカードの第1パーティションアンマウントします
```sh
sudo umount /boot
```
7. 再起動します
```sh
sudo reboot
```
## コピペ用
1〜3の手順をまとめると以下のようになります。
```sh
sudo mount /dev/mmcblk1p1 /boot
sudo cp /boot/imx28-pwsh{機種名の数字}.dtb /boot/imx28-pwsh{機種名の数字}.dtb.orig
dtc -I dtb -O dts /boot/imx28-pwsh{機種名の数字}.dtb > dts 2> /dev/null
```
5〜7の手順をまとめると以下のようになります。
```sh
dtc -I dts -O dtb dts > dtb 2> /dev/null
sudo mv dtb /boot/imx28-pwsh{機種名の数字}.dtb
sudo umount /boot
sudo reboot
```
# Brain に Ethernet Gadget を喋らせる
1. 以下のスクリプトを vi や nano でホームディレクトリに保存します
```sh
#!/bin/sh
g=/sys/kernel/config/usb_gadget/eth
mkdir ${g}
mkdir ${g}/functions/rndis.rn0
echo "8a:15:8b:44:3a:02" > ${g}/functions/rndis.rn0/dev_addr
echo "8a:15:8b:44:3a:01" > ${g}/functions/rndis.rn0/host_addr
mkdir ${g}/configs/c.1
ln -s ${g}/functions/rndis.rn0 ${g}/configs/c.1/
echo "ci_hdrc.0" > ${g}/UDC
sleep 1
ifconfig usb0 up
sleep 1
dhclient
```
2. スクリプトに実行属性を付けます
ここではスクリプト名を `gadget.sh` としています。1. で保存した名前に置き換えてください。
```sh
chmod +x gadget.sh
```
3. 実行します
次回起動時からはこのスクリプトを都度実行します。
```sh
./gadget.sh
```
# PC側の対応作業
Windows / Mac / Linux すべてで利用可能です。(注: 2021年2月23日現在、上記スクリプトでは Windows と macOS で認識しないことを確認しており、修正予定です)
PCを通してインターネットへ出るために、ネットワーク接続の共有設定が必要になります。OS ごとに設定方法は異なりますので、別途設定してください。

View File

@@ -0,0 +1,44 @@
---
title: Web ブラウザ
categories:
- Tips
- Linux
tags:
- Linux
- GUI
excerpt: Brainux で利用可能な Web ブラウザについて
---
# グラフィカルブラウザ
**グラフィカルブラウザを使うのは困難です!** PW-Sx7 までの Brain が搭載している SoC は初代 Raspberry Pi のクロック周波数の約半分の速度で動作し、メモリ容量も半分以下の 128MB しかありません。つまり、インターネットブラウジングは非現実的です。たとえば、[極めて高速に表示されることで有名な著名人のサイト](http://abehiroshi.la.coocan.jp/)の表示に実測15秒ほどかかります。また、Twitter は表示不可能です。
## NetSurf
バージョン 2022-05-17-020127 にて Web ブラウザに NetSurf を追加しました。以下のコマンドを実行すると NetSurf が起動します。
```sh
netsurf &
```
## Midori
代表的な軽量なブラウザの選択肢に Midori があります。Brainux にはプリインストールされています。Xorg が起動している状態で、以下のコマンドを実行すると Midori が起動します。
```sh
DISPLAY=:0 midori
```
## Surf
[`surf`](https://surf.suckless.org/) も動作することを確認していますが、Midori と速度はほとんど変わりません。
# テキストブラウザ
Lynx や w3m はスムーズに動作します。現実的なスピードで Web サイトを閲覧するにはこれらをお勧めします。

View File

@@ -0,0 +1,13 @@
---
title: EBOOT を介した起動
categories:
- U-Boot
tags:
- U-Boot
- EBOOT
- Windows CE
# excerpt: "記事が書けたらこの行をアンコメントして記入してください"
---
Under Construction

View File

@@ -0,0 +1,11 @@
---
title: USB Recovery を介した起動
categories:
- U-Boot
tags:
- U-Boot
# excerpt: "記事が書けたらこの行をアンコメントして記入してください"
---
Under Construction