Merge pull request #6 from brain-hackers/lint

Install and enable linters
This commit is contained in:
Takumi Sueda 2022-01-12 22:30:41 +09:00 committed by GitHub
commit 54087984b4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
19 changed files with 3364 additions and 211 deletions

3
.gitignore vendored
View File

@ -4,3 +4,6 @@ _site
Gemfile.lock
.DS_Store
.idea
env
node_modules
package-lock.json

17
.markdownlint.json Normal file
View File

@ -0,0 +1,17 @@
{
"no-inline-html": {
"allowed_elements": [
"img"
]
},
"blanks-around-headings": {
"lines_above": 2,
"lines_below": 1
},
"no-multiple-blanks": {
"maximum": 2
},
"single-title": false,
"line-length": false,
"commands-show-output": false
}

12
.textlintrc Normal file
View File

@ -0,0 +1,12 @@
{
"rules": {
"preset-japanese": {
"sentence-length": false,
},
"prh": {
"rulePaths": [
"prh_rules/wiki.yml"
]
}
}
}

View File

@ -1,27 +1,4 @@
# Minimal Mistakes remote theme starter
# wiki.brainux.org
Click [**Use this template**](https://github.com/mmistakes/mm-github-pages-starter/generate) button above for the quickest method of getting started with the [Minimal Mistakes Jekyll theme](https://github.com/mmistakes/minimal-mistakes).
[How to edit](https://wiki.brainux.org/meta/meta-how-to-edit-wiki/)
Contains basic configuration to get you a site with:
- Sample posts.
- Sample top navigation.
- Sample author sidebar with social links.
- Sample footer links.
- Paginated home page.
- Archive pages for posts grouped by year, category, and tag.
- Sample about page.
- Sample 404 page.
- Site wide search.
Replace sample content with your own and [configure as necessary](https://mmistakes.github.io/minimal-mistakes/docs/configuration/).
---
## Troubleshooting
If you have a question about using Jekyll, start a discussion on the [Jekyll Forum](https://talk.jekyllrb.com/) or [StackOverflow](https://stackoverflow.com/questions/tagged/jekyll). Other resources:
- [Ruby 101](https://jekyllrb.com/docs/ruby-101/)
- [Setting up a Jekyll site with GitHub Pages](https://jekyllrb.com/docs/github-pages/)
- [Configuring GitHub Metadata](https://github.com/jekyll/github-metadata/blob/master/docs/configuration.md#configuration) to work properly when developing locally and avoid `No GitHub API authentication could be found. Some fields may be missing or have incorrect data.` warnings.

View File

@ -42,6 +42,7 @@ exclude:
- Gemfile
- Gemfile.lock
- node_modules
- '*/node_modules'
- vendor/bundle/
- vendor/cache/
- vendor/gems/

View File

@ -11,15 +11,16 @@ excerpt: ""
<img src="/assets/images/happy.png">
# はじめに
このページでは、SHARP Brain で Linux を動かす試みから生まれた Linux ディストリビューション **Brainux** を手軽に起動する方法をご紹介します。
# 始めに
Linux ディストリビューションは、2つの大きな要素としてカーネルとそれ以外のソフトウェアの組み合わせでできています。Brain の場合はカーネルを起動するブートローダーも SD カード上に必要なため、正確にはカーネル・ソフトウェア・ブートローダーのセットが必要になります。
このページでは、SHARP Brain で Linux を動かす試みから生まれた Linux ディストリビューション **Brainux** を手軽に起動する方法を紹介します。
リポジトリ [buildbrain](https://github.com/brain-hackers/buildbrain) では、Raspberry Pi と同様に SD カードに書き込むだけで起動可能にした SD イメージを公開しています。ちなみにカーネル・ソフトウェア・ブートローダーはどれも自力で準備することもできます。くわしくは本 Wiki の対応するページを参照してください
Linux ディストリビューションは、カーネルとそれ以外のソフトウェアの組み合わせです。Brain の場合はカーネルを起動するブートローダも SD カード上に必要なため、正確にはカーネル・ソフトウェア・ブートローダのセットが必要になります
質問がある場合や開発に参加したい場合は、まず [Brain Hackers の Discord](https://github.com/brain-hackers/README) に参加して頂き、「雑談」チャンネルでお気軽にご質問ください。
リポジトリ [buildbrain](https://github.com/brain-hackers/buildbrain) では、Raspberry Pi と同様に SD カードに書き込むだけで起動可能にした SD イメージを公開しています。ちなみにカーネル・ソフトウェア・ブートローダはどれも自力で準備することもできます。詳しくは本 Wiki の対応するページを参照してください。
質問がある場合や開発に参加したい場合は、まず [Brain Hackers の Discord](https://github.com/brain-hackers/README) に参加していただき、「雑談」チャンネルでお気軽にご質問ください。
# 対応している機種
@ -48,7 +49,7 @@ Linux ディストリビューションは、2つの大きな要素としてカ
# SD カードに書き込む
書き込むソフトは Windows / macOS / Linux のどれをお使いの場合でも利用可能な balenaEtcher がおすすめです。[公式サイト](https://www.balena.io/etcher/)にアクセスしてダウンロードしてください。
書き込むソフトは Windows / macOS / Linux のどれをお使いの場合でも利用可能な balenaEtcher がおめです。[公式サイト](https://www.balena.io/etcher/)にアクセスしてダウンロードしてください。
macOS もしくは Linux をお使いの場合は、ZIP を展開して取り出した .img ファイルを `dd` コマンドでそのまま書くことも可能です。
@ -61,38 +62,38 @@ macOS もしくは Linux をお使いの場合は、ZIP を展開して取り出
2. "Flash from file" をクリックし、ダウンロードした ZIP ファイルを選択します
- 展開する必要はありません
- 展開する必要はありません
<img src="/assets/images/etcher1.png" width=500px>
<img src="/assets/images/etcher1.png" width=300px>
<img src="/assets/images/etcher2.png" width=500px>
<img src="/assets/images/etcher2.png" width=300px>
3. "Select target" をクリックして書き込み先を選択します
- 正しい SD カードを選択しているか慎重に確認してください
- 4GB 以上の SD カードであればなんでも使用可能です
- SD カードの性能がシステムの使用感に直結するため高速な SD カードを使用することをおすすめします
- 画像では 8GB の SD カードを選択しています
- 正しい SD カードを選択しているか慎重に確認してください
- 4GB 以上の SD カードであればなんでも使用可能です
- SD カードの性能がシステムの使用感に直結するため高速な SD カードを使用することをおめします
- 画像では 8GB の SD カードを選択しています
<img src="/assets/images/etcher3.png" width=500px>
<img src="/assets/images/etcher3.png" width=300px>
<img src="/assets/images/etcher4.png" width=500px>
<img src="/assets/images/etcher4.png" width=300px>
4. "Flash!" をクリックして書き込みます
- 改めて正しい SD カードが選択されているか確認した上で書き込んでください
- 書き込みには管理者権限が必要なため管理者パスワードを入力します
- あらためて正しい SD カードが選択されているか確認したうえで書き込んでください
- 書き込みには管理者権限が必要なため管理者パスワードを入力します
<img src="/assets/images/etcher5.png" width=500px>
<img src="/assets/images/etcher5.png" width=300px>
<img src="/assets/images/etcher6.png" width=500px>
<img src="/assets/images/etcher6.png" width=300px>
<img src="/assets/images/etcher7.png" width=500px>
<img src="/assets/images/etcher7.png" width=300px>
5. 完成!
<img src="/assets/images/etcher8.png" width=500px>
<img src="/assets/images/etcher8.png" width=300px>
## dd を使う場合
@ -102,8 +103,8 @@ macOS もしくは Linux をお使いの場合は、`dd` コマンドでも書
### macOS の場合
- macOS では `/dev/disk*` に書き込むと非常に遅いため `/dev/rdisk*` を使用します
- どのディスクが SD カードかはディスクユーティリティを使用して確認します
- macOS では `/dev/disk*` に書き込むと非常に遅いため `/dev/rdisk*` を使用します
- どのディスクが SD カードかはディスクユーティリティを使用して確認します
以下に実行例を示します。バージョン番号は適宜読み替えてください。
@ -129,22 +130,23 @@ sudo dd if=~/Downloads/sdimage-2021-02-21-162410.img of=/dev/sdc bs=10M
書き込み終わった SD カードを Brain に挿入し、リセットボタンを押します。Brain のロゴが表示されたあと U-Boot が起動し、すぐ後に Linux が起動します。
本体の内蔵キーボードに対応している機種では、ログインシェルが表示されたらユーザー名とパスワードともに `root` でログインできます。非対応の機種では、電源供給が可能なタイプの OTG ケーブルを使用してキーボードをぐと操作できます。
本体の内蔵キーボードに対応している機種では、ログインシェルが表示されたらユーザー名とパスワードともに `root` でログインできます。非対応の機種では、電源供給が可能なタイプの OTG ケーブルを使用してキーボードをつなぐと操作できます。
# 内蔵ハードウェア
Brain における Linux の動作はまだ初期段階であり、一部のハードウェアしか利用できません。
## キーボード (Sx1, Sx2)
キーが非常に少ない Brain のキーボードで必要な記号を打つため、キーボードの使用方法は特殊になっています。キートップに記載されたキー以外の文字は、すべて「記号」キーと「シフト」キーを組み合わせて入力します。
Shift キー・Ctrl キー・Alt キーは現実のキーボードに近い配置として以下のように対応させています。
- Shift → 「シフト」
- Ctrl → ページアップキー(《 を横に倒した記号のキー)
- Alt → 「文字切り替え」キー
- Shift → 「シフト」
- Ctrl → ページアップキー(《 を横に倒した記号のキー)
- Alt → 「文字切り替え」キー
キーと入力される文字のマップを以下に示します。

View File

@ -10,6 +10,7 @@ excerpt: ""
# 動作環境
- Debian 10 (Buster)
- Ubuntu 20.04 LTS
@ -17,6 +18,7 @@ excerpt: ""
# 依存関係のインストール
以下のコマンドで依存関係をインストールします。
```sh
@ -25,14 +27,16 @@ sudo apt install build-essential bison flex libncurses5-dev gcc-arm-linux-gnueab
# Gitリポジトリのクローン
以下のコマンドでGitリポジトリをクローンして、必要なファイルをダウンロードします。長い時間がかかるので、時間のあるときに行いましょう。
```
```sh
git clone --recursive https://github.com/brain-hackers/buildbrain.git
```
# Linuxのビルド
1. `cd buildbrain``buildbrain` ディレクトリに入ります。
2. `make ldefconfig` を実行して、 `.config` ファイルを作成します。
@ -41,6 +45,7 @@ git clone --recursive https://github.com/brain-hackers/buildbrain.git
# Brainuxのビルド
Linuxのカーネルの準備ができたら、カーネルの上で動くアプリケーションを用意して、Linuxディストリビューションを完成させます。
1. バックグラウンドで `make aptcache` を実行します。
@ -51,22 +56,23 @@ Linuxのカーネルの準備ができたら、カーネルの上で動くアプ
## パッケージの追加方法 (任意)
追加で欲しいパッケージを `./tools/setup_debian.sh` の51行目あたりに追記します。
追加でほしいパッケージを `./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
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 カードへのコピー](/linux/linux-copy-sd-card/)に続く…

View File

@ -9,20 +9,24 @@ excerpt: ""
---
# 注意!
# 注意
***この手順を実行すると、SDカードの内容が消去されます。必ずバックアップをしてから実行しましょう。***
# 前提
- [U-Boot のビルド](/u-boot/u-boot-build/)にてU-Bootをビルドしていること
- [Linux のビルド](/linux/linux-build/)にてLinuxをビルドしていること
# パーティションを区切る
先頭に100MBくらいのFAT32のパーティションを作り、残りをext4のパーティションにします。
## GPartedのインストール
以下のコマンドで GParted をインストールします。
```sh
@ -31,16 +35,19 @@ sudo apt install gparted
## パーティションを作成する
LinuxをインストールするSDカードをPCに挿入してGPartedを起動します。
### GPartedの起動
![GParted起動画面](/assets/images/Launch-GParted.png)
GPartedの右上のメニューからSDカードを選びます。容量で選ぶとわかりやすいです。
### パーティションの削除
![パーティションの削除](/assets/images/partition-delete.png)
***この手順を実行すると、SDカードの内容が消去されます。必ずバックアップをしてから実行しましょう。***
@ -49,6 +56,7 @@ GPartedの右上のメニューからSDカードを選びます。容量で選
### パーティションの作成
まず、FAT32のパーティションを作成します。 "未割り当て" のパーティションを右クリックして "新規" をクリックします。
![新規パーティションの作成のダイアログ](/assets/images/create-partition-fat32.png)
@ -69,12 +77,11 @@ GPartedの右上のメニューからSDカードを選びます。容量で選
# 必要なファイルをコピーする
1. `buildbrain`ディレクトリの中からファイルをコピーします
- `linux-brain/arch/arm/boot/zImage`
- `linux-brain/arch/arm/boot/dts/imx28-[機種名].dts`
1. `buildbrain`ディレクトリの中から以下ファイルをSDカードのFAT32パーティションへコピーします
これらをSDカードのFAT32のパーティションへコピーします。
- `linux-brain/arch/arm/boot/zImage`
- `linux-brain/arch/arm/boot/dts/imx28-[機種名].dts`
2. ターミナルを起動して `cd buildbrain``buildbrain` ディレクトリに入ります

View File

@ -11,13 +11,14 @@ excerpt: Brain 特有の Xorg の設定について
# Brain 特有の Xorg の設定について
PW-Sx7 までは SoC に GPU が載っておらず、framebuffer (fbdev) のみが利用可能です。つまり、お手元の Linux マシンで Xorg が GPU と通信するときに使う仕組み (DRM, DRI) は利用できません。設定ファイルに fbdev を使用するよう明示的に書くことで Xorg が動かせます。
PW-Sx7 までは SoC に GPU が載っておらず、framebuffer (fbdev) のみが利用可能です。つまり、お手元の Linux マシンで Xorg が GPU と通信するときに使うしくみ (DRM, DRI) は利用できません。設定ファイルに fbdev を使用するよう明示的に書くことで Xorg が動かせます。
# xorg.conf
設定ファイル xorg.conf の内容を以下に示します。vi か nano を使って以下の内容を `/etc/X11/xorg.conf` に書き込んでください。
<!-- markdownlint-disable fenced-code-language -->
```
Section "Device"
Identifier "device"
@ -28,6 +29,7 @@ Section "Screen"
Device "device"
EndSection
```
<!-- markdownlint-enable fenced-code-language -->
# 起こし方

View File

@ -39,7 +39,7 @@ $ cd wiki.brainux.org
$ bundle install
```
ビルドとプレビューができることを確認します。下記のように `bundle exec jekyll serve` を実行すると localhost:4000 でサーバ
ビルドとプレビューができることを確認します。下記のように `bundle exec jekyll serve` を実行すると localhost:4000 でサーバが
起動している旨のメッセージが出るので、メッセージが見え次第ブラウザで `localhost:4000` を開いてプレビューできます。
```sh
@ -58,73 +58,123 @@ Configuration file: /Users/takumi/dev/brain/wiki.brainux.org/_config.yml
Server running... press ctrl-c to stop.
````
次に、Textlintとmarkdownlintを使うためにNode.jsとパッケージをインストールします。
```sh
$ cd wiki.brainux.org
$ npm install
```
Node.jsのインストール方法とバージョンは動けば何でも良いです。まずはパッケージマネージャーでインストールしたNode.jsを使ってみて、うまく行かなければnodeenvnodenvではないを使う以下の方法を試してください。nodeenvでインストールした場合は、毎回envをactivateするのを忘れないでください。
```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. ページを追加・削除する
- 新たにブランチを作成する
- 後で Pull Request として提出するため、`master` ブランチには直接コミットしないでください
- `_posts` ディレクトリにある他のファイルを参考にして md ファイルを追加します
- 例: `2038-1-19-doomsday.md`
- 記事内容を記述します
- ひととおり追加と削除が終わったら `pull -r`, commit, push します
- 新たにブランチを作成する
- 後で Pull Request として提出するため、`master` ブランチには直接コミットしないでください
- `_posts` ディレクトリにあるほかのファイルを参考にして md ファイルを追加します
- 例: `2038-1-19-doomsday.md`
- 記事内容を記述します
- `npm textlint``npm mdlint` を実行し、エラーが出ないことを確認します
- もし誤検知があった場合はルールを修正するかレビュアーと相談してください
- エラー箇所をどうしても押し通したい場合はそこだけlintを無効化するよう記述してレビュアーに説明してください
- 一通り追加と削除が終わったら `pull -r`, commit, push します
## 1. b. ページを編集する
- 記事内容を記述します
- ひととおり編集が終わったら `pull -r`, commit, push します
- 記事内容を記述します
- `npm textlint``npm mdlint` を実行し、エラーが出ないことを確認します
- もし誤検知があった場合はルールを修正するかレビュアーと相談してください
- エラー箇所をどうしても押し通したい場合はそこだけlintを無効化するよう記述してレビュアーに説明してください
- 一通り編集が終わったら `pull -r`, commit, push します
## 2. 変更を提出する・レビューを受ける・マージしてもらう
文章に対するどのような変更も、必ずドキュメント編集権限のあるメンバー最低1人にレビューを依頼します。
このレビューに通ると変更がマージされ、公開されます。
文章に対するどのような変更も、必ずPull Requestを提出してドキュメント編集権限のあるメンバー最低1人にレビューを依頼します。
このレビューに通ると変更がマージされ、公開されます。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)を参照してください。
2021年12月現在、編集権限のあるメンバーは以下の通りです。
- @puhitaku
- @tka3320
- @puhitaku
- @tka3320
注意GitHub の Brain Hackers organization のメンバーでない人はレビューを依頼できないので、
Discord にてメンバー追加依頼をしてメンバになってから Pull Request を提出しましょう。
Discord にてメンバー追加依頼をしてメンバになってから Pull Request を提出しましょう。
# ファイル名のルール
Wiki のページを生成している Jekyll は、md ファイルの名前から記事の日付や URL を生成します。以下のすべての条件を満たすようにしましょう。
- `YYYY-MM-DD-{英字とハイフンでできたタイトル}.md` の形式にする
- URL が冗長になるので日本語は使わない
- `YYYY-MM-DD-{英字とハイフンでできたタイトル}.md` の形式にする
- URL が冗長になるので日本語は使わない
# 記述ルール
Wiki の体裁について以下にルールを列挙します。コミットの前にこれらに従っているかチェックしてください。Textlint はまだありません。
Wiki の体裁に関するルールを列挙します。コミットの前に従っているかチェックしてください。一部のルールはTextlintやmarkdownlintを使って機械的に調べたり修正できます。
## 文体
基本的には、技術文書のルールと同一です。
基本的には、技術文書のルールと同一です。助詞の使いすぎや表記ゆれはtextlintでチェックできますが、機械的に検知できる範囲は限られているためよく心得ておいてください。
### 「ですます」と「だ・である」は統一する
Linterによるチェック: **なし**
Wiki 全体で「ですます」の形で統一します。
### 依頼する時はできるだけ「します」で締める
Linterによるチェック: **なし**
「〇〇してください」は長いので、「します」で極力統一します。不自然に映る場合は「してください」や「しましょう」を使っても OK です。この文書でも実際にどちらも使用しています。
### 繰り返しや冗長な表現をなくす
Linterによるチェック: textlint部分的
冗長な表現を組み込んでしまうことは多いので、極限まで削ります。
「など」「いろいろ」「といった」「〇〇することができます」は使いがちですので特に気をつけましょう。
「など」「いろいろ」「といった」「〇〇できます」は使いがちですので特に気をけましょう。
:x: 悪い例: このコマンドを使えば、Linux を起動することなどが可能です。
:o: 良い例: このコマンドで、Linux を起動できます。
### カッコは基本的に使わない
### 括弧は基本的に使わない
Linterによるチェック: **なし**
どうしても必要な場合は、名詞の別名や補足といった1〜2単語で済む体言を入れるだけにします。
:x: 悪い例: Linux マシンUbuntu か Debian が入っていることが望ましい)を用意します。
@ -133,34 +183,47 @@ Wiki 全体で「ですます」の形で統一します。
### 箇条書きには句読点を入れない
Linterによるチェック: **なし**
箇条書きは段落を表現する道具ではありません。よって、内容が極力短くなるようにしつつ、句読点を置かないようにします。
### 感情を排除する
Linterによるチェック: **なし**
極力スムーズに読める文章になるには、感情的表現を取り除く事が必須です。
文章は技術文書(レポート)のような無味乾燥なものにし、感情は Discord で共有しましょう。
### コードブロックや画像と文章の関わりを示す
Linterによるチェック: **なし**
「以下にコマンド例を示します」などのように、文章と以下に連なる要素を関連付けます。
## Markdown
Markdown はリッチなレンダリングがなくとも読めるシンタックスが特徴です。これを念頭に置いて、以下のルールに従ってください。
一部はmarkdownlintによって違反を検知できます。ここにない細かなルールはmarkdownlintの指示に従ってください。
### 必ずプレビューして確認する
ブラウザで文書を編集すると、コミット前に文書を HTML にレンダーするプレビューが利用可能です。ミスがないか確認してからコミットしましょう。
ローカルのコンソールやエディタで書く場合も、Markdown をプレビューできる環境を用意して確認してからコミットしましょう。
### 改行コードは LF に統一する
Windows で特に気をつけましょう。Git は[コミット時に改行コードを LF のみに強制](https://qiita.com/uggds/items/00a1974ec4f115616580)できます。
Windows で特に気を付けましょう。Git は[コミット時に改行コードを LF のみに強制](https://qiita.com/uggds/items/00a1974ec4f115616580)できます。
`git config`
```
```sh
git config --global core.autocrlf input
```
@ -168,24 +231,30 @@ git config --global core.autocrlf input
### 適切な空行を入れる
Linterによるチェック: あり
以下の箇所には1行空行を入れます。
- 段落と段落の間
- プレーンテキストとプレーンテキスト以外の要素の間
- 節タイトル
- 箇条書き
- テーブル
- 図
- コードブロック
- 引用
- 段落と段落の間
- プレーンテキストとプレーンテキスト以外の要素の間
- 節タイトル
- 箇条書き
- テーブル
- 図
- コードブロック
- 引用
以下の箇所には2行空行を入れます。
- 節と節の間
- 節と節の間
### 適切な空白を入れる
プレーンテキスト以外の要素の前後に適切な空白がないと表示がおかしくなるケースがあります。この文書は GitHub での表示に限られるため空白がなくても大丈夫ですが、エディタでのシンタックスハイライトが上手くいかなくなることがありますので気をつけましょう。
Linterによるチェック: **なし**
プレーンテキスト以外の要素の前後には適切な空白を入れ、表示がおかしくなるリスクを減らしましょう。この文書はWikiでの表示に限られるため空白を欠いても大丈夫ですが、エディタでのシンタックスハイライトに失敗することがありますので気を付けましょう。
:x: 悪い例1: `1.あいうえお`
@ -197,11 +266,14 @@ git config --global core.autocrlf input
### コードスパンとコードブロックを使い分ける
Linterによるチェック: **なし**
コードスパンとは、`` `ident` ``のように行の中に等幅で文字を入れるスパン要素を指します。
コードブロックとは
```
```sh
echo foo
```
@ -219,6 +291,9 @@ ls -l
### 明示的改行はバックスラッシュで行う
Linterによるチェック: **なし**
この節でいう明示的改行とは Hard line breaks のことで、空行による段落区切りや単一の LF による Soft line break ではなく確実に改行を入れることを指します。必要でない限りは使わないことが望ましいです。
明示的な改行の入れ方には行末にスペース2つを入れる方法とバックスラッシュを入れる方法がありまず。前者は通常不可視な上に意味合いがわかりづらいため、バックスラッシュを使用します。

View File

@ -25,58 +25,58 @@ excerpt: Brainux が自分の電子辞書にどれくらい対応しているか
|キーボードの世代|対応済|説明|
|:--|:-:|:--|
|3桁世代||SoC が直接キーマトリクスを読む|
|4桁世代, Sx1 〜 Sx2|:white_check_mark:|MPU がキーマトリクスを読み SoC に I²C で送信|
|Sx3 〜 Sx7||SoC が直接キーマトリクスを読む|
|3桁世代||SoC が直接キーマトリクスを読む|
|4桁世代, Sx1 〜 Sx2|:white_check_mark:|MPU がキーマトリクスを読み SoC に I²C で送信|
|Sx3 〜 Sx7||SoC が直接キーマトリクスを読む|
|x1|詳細不明||
# 画面開閉検知
- 開閉イベントの伝達はキーイベントと同じ経路を辿
- キーボードの実装に依存する
- 開閉イベントの伝達はキーイベントと同じ経路をたど
- キーボードの実装に依存する
|キーボードの世代|対応済|説明|
|:--|:-:|:--|
|3桁世代||SoC が直接キーマトリクスを読む|
|4桁世代, Sx1 〜 Sx2||MPU がキーマトリクスを読み SoC に I²C で送信|
|Sx3 〜 Sx7||SoC が直接キーマトリクスを読む|
|3桁世代||SoC が直接キーマトリクスを読む|
|4桁世代, Sx1 〜 Sx2||MPU がキーマトリクスを読み SoC に I²C で送信|
|Sx3 〜 Sx7||SoC が直接キーマトリクスを読む|
|x1||詳細不明||
# 音
- Brain に内蔵されているスマートアンプには大きく分けて Yamaha 系と Rohm 系がある
- 録音も再生も2021年2月23日現在解析中で非対応
- Brain に内蔵されているスマートアンプには大きく分けて Yamaha 系と Rohm 系がある
- 録音と再生は2021年2月23日現在解析中で非対応
# タッチパネル
- 2021年2月23日現在反応はするが位置がおかしい
- 世代によるハードウェアの差分は不明
- 2021年2月23日現在反応はするが位置がおかしい
- 世代によるハードウェアの差分は不明
# 電源コントローラ
# 電源コントローラ
- 2021年2月23日現在未対応のため充電状態の表示などは一切不可
- 2021年2月23日現在未対応のため充電状態の表示などは一切不可
# cpufreq
- CPU のクロック制御は2021年2月23日現在なし
- CPU のクロック制御は2021年2月23日現在なし
# eMMC への Linux インストール
- 研究中
- 研究中
# Wi-Fi
Wi-Fi の接続は複数の手法が提案されていて、現在検証中。
- SDIO Wi-Fi チップ
- USB ドングル
- SDIO Wi-Fi チップ
- USB ドングル
# LCD

View File

@ -11,14 +11,14 @@ excerpt: 動作可否が確認されたケーブルの一覧
# 使える USB OTG ケーブル一覧
Brainux の初期状態では、USB コントローラはホストとして動作するようになっています。OTG ケーブルを使用すると好きなデバイスを接続することができます。Brain 自身は VBUS (5V) を供給する能力はないので、電源が別途供給可能な 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)
- [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)
- [Easi-Cable](https://amz.run/4KqD)

View File

@ -11,31 +11,31 @@ excerpt: ""
# スワップの作成を推奨します
Brain の DRAM は 128MB しかないので、簡単にメモリが食いつぶされます。この時、スワップがないと OOM Killer により重要なプロセスが終了される危険性があるため、スワップを作成することをおすすめします。
Brain の DRAM は 128MB しかないので、簡単にメモリが食いつぶされます。OOM Killer により重要なプロセスを終了される危険があるため、スワップを作成することをお勧めします。
2021年2月23日現在のリリースではまだスワップ領域を標準で設定していません。Brain Hackers では将来のリリースで標準でスワップを設定することを検討しています。
2021年2月23日現在のリリースではまだスワップ領域を標準で設定していません。Brain Hackers では将来のリリースで最初からスワップを設定することを検討しています。
# 作成方法
1. 以下のコマンドを実行して、スワップのための領域を確保します
今回の例では、256MBこれ以上を推奨の領域を確保しています。の容量にしたい場合は適宜 `bs``count` の値を変えてください。
今回の例では、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

@ -11,29 +11,35 @@ excerpt: タッチパネルのキャリブレーションBrainux に同梱さ
---
# 事前に
Xorgの設定ファイル ( xorg.conf )を設定していない場合は、下記のWikiを参照して設定してください。
[Xorg](/linux/linux-xorg/)
# 必要なパッケージのインストール
```
```sh
apt install xserver-xorg-input-evdev xinput-calibrator
```
を実行して、必要なパッケージをインストールします。
# Xorgとopenboxの起動
```
```sh
Xorg &
```
```
openbox-session &
```
を実行して、Xorgとopenboxを起動します。
# タッチパネル補正ツールの起動
```
```sh
xinput_calibrator
```
@ -41,10 +47,12 @@ 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
@ -59,19 +67,21 @@ xinput_calibrator
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"
@ -80,17 +90,18 @@ xinput_calibratorの出力に従って、`/etc/X11/xorg.conf.d/99-calibration.co
EndSection
```
# Xorgの再起動
```
```sh
pkill Xorg
```
```
Xorg &
```
```
openbox-session &
```
でXorgを再起動します。
# 完成
![ちゃんとタッチした場所にカーソルが来ています](/assets/images/calibrator-done.gif)

View File

@ -11,56 +11,46 @@ excerpt: PC と USB ケーブル1本で接続できる便利な仕組みとそ
---
# USB Gadget とは?
コンピュータがあたかも USB デバイスであるかのように振る舞う仕組みです。
コンピュータがあたかも USB デバイスであるかのように振る舞うしくみです。
# Why USB Gadget?
インターネットに接続可能なパソコンに USB で Brain を接続するだけで Brain からインターネットに出たり、パソコンと Brain で双方向に SSH したりできるようになります。電池切れの心配もありません。
インターネットに接続可能なPCと Brain を接続するだけで Brain からインターネットに出たり、PCと Brain で双方向に SSH したりできます。電池切れの心配もありません。
# USB コントローラの動作モードを変更する
# USB コントローラの動作モードを変更する
初期状態では Brain の USB コントローラはホストとして動作するため、このままではデバイスになることができません。
2022年1月8日現在ではまだありませんが、コントローラの動作モードを簡単に切り替えるスクリプトを用意する予定です。
初期状態では 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
```
## コピペ用
1〜3の手順をまとめると以下のようになります。
```
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
```
4. 設定を書き換えます
```
```sh
nano dts
```
@ -70,98 +60,108 @@ dtc -I dtb -O dts /boot/imx28-pwsh{機種名の数字}.dtb > dts 2> /dev/null
```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";
};
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
g=/sys/kernel/config/usb_gadget/eth
mkdir ${g}
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}/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/
mkdir ${g}/configs/c.1
ln -s ${g}/functions/rndis.rn0 ${g}/configs/c.1/
echo "ci_hdrc.0" > ${g}/UDC
echo "ci_hdrc.0" > ${g}/UDC
sleep 1
ifconfig usb0 up
sleep 1
dhclient
```
ifconfig usb0 up
sleep 1
dhclient
```
2. スクリプトに実行属性を付けます
ここではスクリプト名を `gadget.sh` としています。1. で保存した名前に置き換えてください。
```
$ chmod +x gadget.sh
```sh
chmod +x gadget.sh
```
3. 実行します
次回起動時からはこのスクリプトを都度実行します。
```
$ ./gadget.sh
```sh
./gadget.sh
```
# パソコン側の対応作業
# PC側の対応作業
Windows / Mac / Linux すべてで利用可能です。(注: 2021年2月23日現在、上記スクリプトでは Windows と macOS で認識しないことを確認しており、修正予定です)
パソコンを通してインターネットに出るために、ネットワーク接続の共有設定が必要になります。OS ごとに設定方法は異なりますので、別途設定してください。
PCを通してインターネットへ出るために、ネットワーク接続の共有設定が必要になります。OS ごとに設定方法は異なりますので、別途設定してください。

View File

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

View File

@ -10,6 +10,7 @@ excerpt: ""
# 動作環境
- Debian 10 (Buster)
- Ubuntu 20.04 LTS
@ -17,10 +18,12 @@ excerpt: ""
# 環境の構築
[Linux のビルド](/linux/linux-build/)の頁で既に構築している場合は飛ばします。
[Linux のビルド](/linux/linux-build/)の頁ですでに構築している場合は飛ばします。
## 依存関係のインストール
以下のコマンドで依存関係をインストールしてください。
```sh
@ -29,20 +32,22 @@ sudo apt install build-essential bison flex libncurses5-dev gcc-arm-linux-gnueab
## 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`
- PW-Sx1のとき `make udefconfig-sh1`
- PW-Sx5のとき `make udefconfig-sh5`
3. `make ubuild` を実行して `u-boot.sb` を生成します

15
package.json Normal file
View File

@ -0,0 +1,15 @@
{
"name": "wiki-brainux-org",
"devDependencies": {
"markdownlint": "^0.25.0",
"markdownlint-cli": "^0.30.0",
"textlint": "^11.9.0",
"textlint-rule-preset-japanese": "^6.0.1",
"textlint-rule-prh": "^5.3.0"
},
"scripts": {
"textlint": "textlint '_posts/*'",
"textlint-fix": "textlint --fix '_posts/*'",
"mdlint": "./node_modules/markdownlint-cli/markdownlint.js _posts"
}
}

3020
prh_rules/wiki.yml Normal file

File diff suppressed because it is too large Load Diff