2021-11-03

Tinker Board 2 Kernel再コンパイル方法

はじめに

デフォルトのTinker Board 2 用Tinker OSはnftableのmasqueradeとnatに対応していない。
使えるようになるにはkernelの再コンパイルが必要となる。今回、コンパイル&稼働することができたので、公開する。

必要なもの:

  1. debian9
  2. ソース(https://github.com/TinkerBoard2/kernel)
  3. クロスコンパイラ(http://releases.linaro.org/components/toolchain/binaries/6.3-2017.05/aarch64-linux-gnu/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu.tar.xz)
手順:
1. コンパイル環境の準備(OS)
debian9なのはgccのデフォルトがver6だからである。LinuxKernelはgcc10とかには対応していないので、debian9を用意しよう。個人的はdockerがおすすめ。
そしてaptコマンドでコンパイルに必要なアプリをどんどんインストールしよう。

2. Kernelソースの取得
TinkerBoard2のLinuxKernelソースをgithubから取得しよう。gitコマンドでも良いけど、
githubからのzipダウンロードもおすすめ。

3. クロスコンパイラのダウンロード
TinkerBoard2のフォーラムによると、linaroのクロスコンパイラを使うらしい。
おとなしくダウンロードして解凍しよう。
$ tar -Jxvf gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu.tar.xz
4.コマンドを実行する。
# Kernelのオプションをtinker2固有の設定にしてくれる。
$ make ARCH=arm64  CROSS_COMPILE=/root/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-  tinker2_defconfig 

# ユーザーが設定する部分。
# CONFIG_NFT_MASQやCONFIG_NFT_CHAIN_ROUTE_IPV4を有効にしよう。
$ make ARCH=arm64  CROSS_COMPILE=/root/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-  menuconfig

# Kernelのコンパイル
$ make ARCH=arm64  CROSS_COMPILE=/root/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu- -j4 rk3399-tinker_board_2.img
※コンパイルのとき、コンパイルに必要なアプリがなく。エラーになるかもしれない。エラーを読んで必要なファイルをどんどんインストールしよう。
※うまくコンパイルができていれば、「boot.img」が作られる。

5.カーネルをSDカードへ書き込む。
「boot.img」をSDカードのパーティーション4番目に直接書き込む。
 $ sudo dd if=boot.img  of=/dev/mmcblk0p4
※TinkerBoard2が稼働中でも書き込み可能

6. TinkerBoard2をリブートする。
dmegや、zcat /proc/config.gz
などで想定通り設定(コンパイル)されていることを確認してみてください。

備考:
※ TinkerBoard2をルーター化してみたかった。なお、TinkerBoard2のルーター化は成功しました。
※ ここに書いてある内容を参考にした。
https://tinker-board.asus.com/forum/index.php?/topic/14991-kernel-build-error-wlan-wireless-and-net-modules/

2021-11-02

Chromebook + USB DAC

結論

「HDは」動く。ただし、Urtra-HDさせるには制限があり、再生側のアプリケーションがChromebookに対応している必要がある。

構成

  1. Chromebook
    ASUS Chromebook Detachable CM3
  2. USB-Cハブ
    Anker PowerExpand 8-in-1 USB-C PD 10Gbps
  3. USB-DAC
    iFi audio ZEN DAC Signature V2

説明

音源

今回の音源はChromebook。Chromebookで良い音が聞きたかった。 最近のものだったら、外部ディスプレイも繋げられるし、キーボードやマウスも繋げられる。 ただし,殆どのアプリはChromebookのUrtra-HDに対応していない。

USB-Cハブ

充電しながら音を流したいのだったら買いましょう。 USB-A(メス)のコネクタも付いていることですし。

USB-DAC

つなぎ先が、スピーカーだったのでコレにした。専用のACアダプターがついているせいか、値段はお高め。

2020-06-28

花札(こいこい)

... えー
<div style="overflow: scroll;">
(svgを貼り付ける)
</div>
でうまくいきます。

花札はローカルルールが多いので、ルールを確認する。ルールを確認する。裏向きの札を1枚ずつめくり、月の早いほうが初回の親となります。親を決める親が"子の手札(裏向け)→場(表向け)→親の手札(裏向け)"の順に2枚ずつ配っていき、各手札8枚、場に8枚(手八の場八)の状態にします。残りは山札として裏を向けて積んでおきます札を配る手札の役(手役)が成立?yesくっつき(同じ月が2枚ずつ4組ある)手四(同じ月が4枚ある)6点をもらって、次のプレイに移る手札から1枚取り出して場に出す同じ札種(同じ月、植物)の札が場札にある?yesno2枚は自分が獲得した札となり、自分の脇に置く場札に加える山札をめくって場に出す同じ札種(同じ月、植物)の札が場札にある?yesno2枚は自分が獲得した札となり、自分の脇に置く場札に加える手札がある?no役が成立した?noコイコイを宣言するyes得点を計算する12回戦した?no親を決め直す合計得点を計算する

2020-05-25

Yubikey5を使ってみた。

はじめに

「テレワーク」と「リモートワーク」だの急に言われ始めた昨今、社内の機密情報を
どのように安全にとどけるのか、重要になると考えた。
たとえば、給与明細は、どのように送り、どのように受け取ればよいだろうか。
重要な書類はどのようにチェックをすればよいだろうか?

もちろんお金周りも文章もすでに電子化対応済みだ。
だがこれまでは、最終的には紙と捺印がつかわれてきた。システムの構築は間に合わない。
突如として「テレワーク」時代は始まってしまった。既存の技術で なんとかできないだろうか。

そんなとき、YubiKeyなる、デバイスがあることを初めて知った。 YubiKeyは救世主になるか?調べてみた。

結論

救世主にはならない。YubiKeyはアーリアダプター的デバイスではないだろうか。
普及にはまだまだかかるだろうし、現時点で一般層に使ってもらうのは かなり難しいという感触を得た。
... せっかく調べたので、Yubikeyの使い方(一部)を記載していく。
大雑把にしか記載はしていないが、興味のある方は参考にしてほしい。

Yubikeyについて

Yubikeyは歴史あるデバイスのようで、「Yubikey5」というシリーズ名になっている。 2020年で購入できるのも「Yubikey5」。
コネクタの形状や出来ることが、ラインナップで分かれている。
https://yubikey.yubion.com/yubikey_lineup.html

さらに、ファームのバージョンで出来ることが増えていくのだが、セキュリティ対策のため、ファームのアップデートははできない。
https://support.yubico.com/support/solutions/articles/15000006434-upgrading-yubikey-firmware

購入するときはラインナップをしっかり確認し、 使用するときはファームバージョンを念のため確認しよう。

Yubikey5-NFCが使える対象者

  • gpg、ssh-keygen、opensslが使える人。
  • パッケージマネージャが使える人
    (Homebrew、Chocolatey、apt、yum, pacman ... )
  • 技術の探求者
YubiKeyを使いこなすには、HPからダウンロードしてもよいのだけど、それなりにパッケージが必要になるので、 パッケージマネージャを使うほうがいいだろう。
公式ツールのyubikey-managerなどもパッケージマネージャでインストール可能の他、 openscなどといった聞き慣れないツールもパッケージマネージャからインストール出来る。

設定中や検証中、Yubikeyからキーが取れないときもあるかもしれない。(キーとして認識しない時がある)そのときはYubiKeyを何度か挿し直してみたり、次のどちらかのコマンドを実行しgpg-agentの再起動をしてみよう。
$ gpg-connect-agent /bye
$ gpgconf --kill gpg-agnet

YubiKey5-NFCでできること。(一例です)

  • OpenPGPを使うとき、サイン、暗号解除するとき(秘密鍵を使用するとき)にデバイスを挿して、PINを入力してつかう。
  • SSH接続するときに、デバイスを挿して、PINを入力して使う。
  • (その他、「ログインするとき、デバイスを挿し、PINを入力してログインする」、OTP、FIDO2など機能豊富らしい)

YubiKey5-NFC + OpenPGP

  • 最近のファームからECC暗号が使えるようになった。
  • デバイスの設定にはひたすらgpgコマンドを使う。
    --card-statusや--card-editオプションが何かと思ったらこのためだった。
    このようなデバイスは「smartcard」と言うらしい。
  • イメージ的には、デバイスに秘密鍵を登録し、秘密鍵をつかうアクションをするときに、デバイスを挿し、PINを入力する。
  • PINには、PINとPUKの2種類あるが、PINは普通に使用するときに入力する。PUKは秘密鍵をデバイスに登録するときに使用する。
  • macの場合は、PINを入力する画面が文字化けするかもしれない。その時はpinentry-ttyとかに変えたほうがいいかもしれない。
  • デバイスには、秘密プライマリキーを入れることも出来るし、秘密サブキーを入れることも出来る。両方入れることも可能。つまりプライマリキー用にも出来るし、サブキー用にもできる。
  • 他のデバイスで使えるようにするには以下のようにする。
  1. デバイスを設定したPCでパブリックキーをエクスポートする。
  2. 他のPCでパブリックキーをインポートする。
  3. $ gpg --card-status
    する。
  4. gpg -Kで認識できるようになる。
次の状態が、ローカル上にマスター秘密鍵が無い状態。
sec#
次の状態が、ローカル上にサブキー秘密鍵が無い状態。
ssb>

パブリックキーがなくなるとデバイスとの同期ができなくなってしまうようだ。道理で「パブリックキーを鍵サーバーに登録する」という手順説明の中にあるわけだ。

YubiKey5-NFC + SSH

gpgとsshを連携させることもできるが、PIVのスロットを使うことも出来る。 使うスロットは9aのようだ。 openscが必要になる。
  • PublicKeyを取り出すには、Generateしたあと、
    $ pkcs15-tool --read-ssh-key 1
    または、Exportしたファイルに対して
    $ openssl x509 -in foo.pem -noout -pubkey | ssh-keygen -i -m pkcs8 -f /dev/stdin
    することで変換できる。
  • クライアント側の使用方法は複雑だ。
    $ ssh -I /usr/local/lib/opensc-pkcs11.so foo@example.com
    Windowsだったら、「「putty-cac」に含まれている「Pageant」」と「「putty」「teraterm」」「MinGWやCygwinだったらさらにssh-pageantが必要」という恐ろしいレベルだ。ssh-pageantを使うときにはこのような感じでキーの登録が必要だ。(ssh-agentの知識もいるということか...)
    $ eval $(/usr/bin/ssh-pageant -r -a "/tmp/.ssh-pageant-$USERNAME")
    $ ssh-add -L

おわりに

一般的に普及するのは難しいという感触だが、みんなが使ってくれないとこのようなデバイスは普及しないと思う。gpgとsshのことしか記載していないが、参考になれば幸いだ。

2015-10-05

自作PCを作る(2015年版)

コンピュータの世界はいまだに日進月歩。
 PCを今年(2015年)組み立てたので参考までに公開します。


  •  CPU: intel i7-6700K
  •  マザーボード:GIGABYTE GA-Z170X-GAMING3
  •  メモリー:CFD PANRAM W4U2133PS-8G (DDR4 PC4-17000 8GB × 2)
  •  GPU:ALSA GTS970 


この組み合わせで一番困るのは、マザーボードメモリー表記とマニュアルに齟齬(表記ミス)があることでした。

デュアルチャンネルメモリにするには、2つメモリーをセットしなければなりません。
マニュアルによると、[#1-#2], [#3-#4]の組み合となります。そして、同じ色のソケットに取り付けるようにとあります。

メーカのHPによればボード上では、CPUに近い方から、
#4 黒
#2 赤
#3 黒
#1 赤

らしいのですが、 実際は以下のようになっており、
[CPUに近い方]
#1 黒
#2 赤
#3 黒
#4 赤

結局のところ、[#3-#4]に(試していませんが、#1-#2に)装着するとデュアルと認識されます。
なお、[#4-#2]の組み合では片方のメモリが認識されなくなるようでした。

(ヒヤリとする動作なので、あまり推敲していないのですが一旦ここまでで公開します)

2014-04-26

ChefをWindowsで使ってみる

まだ実験中。 今のところ追加のgemが必要なのがわかっている。
gem install win32-process windows-pr ruby-wmi