link もっと前
   2019年 8月 21日 -
      2019年 8月 12日  
link もっと後

link 未来から過去へ表示(*)
link 過去から未来へ表示

日々

link permalink

RockPro64 とアナログオーディオ - その 1 - linux-next のドライバ

RockPro64 で Rockchip の公開している Linux(以降、Rockchip Linux)ではヘッドフォン出力できるのに、linux-next だとできないのはどうして?と思って調べていたところ、悲しいことがわかりました……。

RockPro64 は Everest ES8316 という DAC を搭載しています。ドライバは sound/soc/codecs/es8316.c です。なんとこのドライバはですね、Rockchip Linux に実装されているドライバ(Rockchip の人が書いた)と、linux-next のドライバ(Everest の人が Upstream した)が全然違う実装になっています。

ES8316 のドライバが全く違うお陰で、Rockchip Linux から devicetree を持ってきてもウンともスンとも言わないのです。まさか ES8316 のドライバ実装が全く違なんて想像していませんでした。どうしてこんなことに……。

しばらく戦ってみましたが、linux-next の ES8316 ドライバの動きは良くわかりませんでした。clocks プロパティにダミーの 12MHz クロックを指定すると、とりあえずドライバは文句を言わなくなるものの、肝心の音は鳴りません。

残念ながら RK3399 側の問題(例えば MCLK が出力されていないなど)なのか、ES8316 側の問題なのか切り分けができていません。

各端子に来ている信号をオシロスコープで見れば、原因の切り分けができるのはわかっていますが、RockPro64 はプローブを当てることなど考慮して作っておらず、端子に名前が書いてないし、非常に細かいです。変にプローブを当てるとショートさせてしまいそうです。

[編集者: すずき]
[更新: 2019年 9月 8日 12:51]
link 編集する

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link permalink

スマホ買い換え

スマホを買い替えました。Zenfone 6 が出るとか出ないとか言われているなか、あえて型落ちの Zenfone 4 を買いました。Amazon で 32,000円でした。

高性能処理が必要なゲームなどはしませんし、CPU/GPU ともに最高性能のいわゆるハイエンド機種は不要です。ハイエンド機は値段も高いですし……。

CPU/GPU はそこそこで電池持ちが良く、メモリが多くて動作が快適な、いわゆるミドルハイと呼ばれる機種が欲しいのですが、世の中的に人気がないらしく、作ってくれるメーカーはどんどん減っています。

最初は Zenfone 5 の購入を検討していましたが、ASUS も Zenfone 5 からミドルハイ(Snapdragon 66x クラス)の機種を出さなくなったようで、購入したい機種がありませんでした。

そんななか、Zenfone 4 は Snapdragon 660 と 6GB RAM 搭載で、ドンピシャの機種でした。もう今後、このタイプのミドルハイ機種は出ないかもしれないですねえ。

おお SIM カードよ、大きさが違うとは情けない

今日 Zenfone 4 が家に届いたのですが、SIM カードが nano-SIM しか対応していませんでした。

現在使っている Zenfone 3 Deluxe 5.5 (ZS550KL) は micro-SIM なので、そのまま差し替えという訳にはいきません。困ったなあ。

ドコモショップに行かないと nano-SIM は手に入らないようです。ドコモショップは行きたくないんだけど、今回ばかりは仕方ないか……。

メモ: 技術系の話は Facebook から転記しておくことにした。

[編集者: すずき]
[更新: 2019年 8月 25日 22:13]
link 編集する

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link permalink

独自の apt サーバー - その 4 - まとめ

まとめです。

ディレクトリ構成、設定ファイル

ディレクトリ構成は下記のとおりです。Docker のパッケージサーバーを参考リンク)にしています。

HTML サーバーのルートディレクトリ、ディレクトリ構成
linux
|-- conf
|   |-- apt_generate_debian_buster.conf
|   `-- apt_release_debian_buster.conf
`-- debian
    |-- dists
    |   `-- buster
    |       |-- InRelease
    |       |-- Release
    |       |-- Release.gpg
    |       |-- packages-amd64.db
    |       |-- pool
    |       |   `-- stable
    |       |       `-- amd64
    |       |           |-- containerd.io_1.2.6-3_amd64.deb
    |       |           |-- docker-ce-cli_19.03.1~3-0~debian-buster_amd64.deb
    |       |           `-- docker-ce_19.03.1~3-0~debian-buster_amd64.deb
    |       `-- stable
    |           |-- Contents-amd64
    |           |-- Contents-amd64.bz2
    |           |-- Contents-amd64.gz
    |           `-- binary-amd64
    |               |-- Packages
    |               |-- Packages.bz2
    |               `-- Packages.gz
    `-- gpg
        `-- public.key

10 directories, 16 files

パッケージの情報ファイルを作成する apt-ftparchive の設定ファイルは 2種類あり、下記のとおりです。

apt_generate_debian_buster.conf

Dir::ArchiveDir ".";
Dir::CacheDir   "dists/buster";
Default::Packages::Compress   ". gzip bzip2";
Default::Packages::Extensions ".deb";
Default::Sources::Compress    ". gzip bzip2";
Default::Contents::Compress   ". gzip bzip2";
Default::FileMode             0644;
TreeDefault::Directory        "dists/buster/pool/stable/stable/amd64";
TreeDefault::Packages         "dists/buster/stable/binary-amd64/Packages";

Tree "dists/buster" {
    Sections "stable";
    Architectures "amd64";
};

BinDirectory "dists/buster/stable/binary-amd64" {
    Packages "dists/buster/stable/binary-amd64/Packages";
    Contents "dists/buster/stable/Contents-amd64";
};
apt_release_debian_buster.conf

APT::FTPArchive::Release {
    Architectures "amd64";
    Components "stable";
    Label "Test Label";
    Origin "Test";
    Suite "buster";
};

Tree::Sections, Tree::Architectures に複数の値を指定したとき、他の設定をどのように書けばよいのか?についてはこれからの課題ですね。

apt-ftparchive の実行と署名

設定ファイルを作ったら apt-ftparchive コマンドを実行し、Release ファイルに署名します。

apt-ftparchive を実行、Release ファイルに署名

export TARGET=debian
export DIST=buster
export SECT=stable
export ARCH=amd64
mkdir -p /var/www/linux/${TARGET}/dists/${DIST}/${SECT}/binary-${ARCH}
mkdir -p /var/www/linux/${TARGET}/dists/${DIST}/pool/${SECT}/${ARCH}


# *.deb ファイルをコピーする(モジュールによってコピー元は違うと思うので、これは一例)
# cp *.deb /var/www/linux/${TARGET}/dists/${DIST}/pool/${SECT}/${ARCH}


# Packages, Contents ファイルを作る
# linux/debian の下で apt-ftparchive を実行しないと *.deb が見つからないといわれる

cd /var/www/linux/${TARGET}
find . -name "Contents-*" -or -name "Contents-*.*" | xargs rm -f
find . -name "Packages" -or -name "Packages.*" -or -name "packages-*" | xargs rm -f
find . -name Release -or -name Release.gpg -or -name InRelease | xargs rm -f
apt-ftparchive generate ../conf/apt_generate_${TARGET}_${DIST}.conf


# Release ファイルを作る
# linux/debian/dists/buster の下で apt-ftparchive を実行しないと、
# 後ほど apt-get を実行した際にパッケージが見つからないといわれる

cd /var/www/linux/${TARGET}/dists/${DIST}
apt-ftparchive release -c=../../../conf/apt_release_${TARGET}_${DIST}.conf . > Release


# GnuPG で Release ファイルに署名

echo -n "abcd1234" | gpg --batch --passphrase-fd 0 --pinentry-mode loopback --clearsign -o InRelease Release
echo -n "abcd1234" | gpg --batch --passphrase-fd 0 --pinentry-mode loopback -abs -o Release.gpg Release
chmod 644 Release InRelease Release.gpg

GnuPG の鍵ファイルの作成と、apt への登録方法については、その 3 をご参照ください。

[編集者: すずき]
[更新: 2019年 9月 1日 04:22]
link 編集する

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link permalink

独自の apt サーバー - その 3 - apt の信頼システム

Packages には各 Debian パッケージのハッシュ値が記述されていて、悪意ある者が Debian パッケージを改変しても検知できるようになっています。Release には Packages のハッシュ値が記述されていて、Packages を改変されても検知できるようになっています。

Release の改変に対しては、サーバーの作成者が署名を付け、Release が作成時から改変されていないことを保証します。

パッケージ(*.deb) <--(ハッシュ値)-- Packages <--(ハッシュ値)-- Release <--(署名)-- InRelease もしくは Release.gpg

保証の関係を図示すると上記のとおりです。前回の apt-get update のエラーメッセージは InRelease もしくは Release.gpg が存在しない、もしくは、あっても信頼できない署名だと言って怒っているのです。

秘密鍵、公開鍵の作成

最初から apt-get に信頼されている鍵は公式サーバーが使っている鍵ですが、当然ながら私は知りません。ですので、

  • 秘密鍵、公開鍵を作成
  • 自作した鍵を apt に信用してもらう
  • 自作した鍵で Release ファイルに署名

という手順を取ります。

自分用の秘密鍵、公開鍵を作成
# gpg --gen-key

gpg (GnuPG) 2.2.12; Copyright (C) 2018 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Note: Use "gpg --full-generate-key" for a full featured key generation dialog.

GnuPG needs to construct a user ID to identify your key.

Real name:
...

名前やメールアドレスを聞かれるので適宜答えてください。途中でパスフレーズを聞かれます。今回はテストなので、名前は Test User、パスフレーズは abcd1234 にしました。

自作した鍵を apt に信用してもらう

自作した鍵を apt に信用してもらうには、公開鍵(秘密鍵ではありません)を apt の信頼済み鍵束に登録します。

自分用の公開鍵をエクスポートし apt に登録
# gpg --list-keys

/root/.gnupg/pubring.kbx
------------------------
pub   rsa3072 2019-08-11 [SC] [expires: 2021-08-10]
      A24D479395FF7F2B4A787D29439D445DCA4AF8F6      ★この ID を指定する
uid           [ultimate] Test User
sub   rsa3072 2019-08-11 [E] [expires: 2021-08-10]


# mkdir /var/www/linux/debian/gpg
# gpg --export A24D479395FF7F2B4A787D29439D445DCA4AF8F6 > /var/www/linux/debian/gpg/public.key


# curl http://192.168.1.1/linux/debian/gpg/public.key | apt-key add -

# apt-key list

/etc/apt/trusted.gpg
--------------------
pub   rsa3072 2019-08-11 [SC] [expires: 2021-08-10]
      A24D 4793 95FF 7F2B 4A78  7D29 439D 445D CA4A F8F6    ★自作の鍵が追加された
uid           [ unknown] Test User
sub   rsa3072 2019-08-11 [E] [expires: 2021-08-10]

/etc/apt/trusted.gpg.d/debian-archive-buster-automatic.gpg
----------------------------------------------------------
pub   rsa4096 2019-04-14 [SC] [expires: 2027-04-12]
      80D1 5823 B7FD 1561 F9F7  BCDD DC30 D7C2 3CBB ABEE
uid           [ unknown] Debian Archive Automatic Signing Key (10/buster) <ftpmaster@debian.org>
sub   rsa4096 2019-04-14 [S] [expires: 2027-04-12]

/etc/apt/trusted.gpg.d/debian-archive-buster-security-automatic.gpg
-------------------------------------------------------------------
pub   rsa4096 2019-04-14 [SC] [expires: 2027-04-12]
      5E61 B217 265D A980 7A23  C5FF 4DFA B270 CAA9 6DFA
uid           [ unknown] Debian Security Archive Automatic Signing Key (10/buster) <ftpmaster@debian.org>
sub   rsa4096 2019-04-14 [S] [expires: 2027-04-12]

...

自分で作った鍵ペアのうち、公開鍵を gpg --export でファイルにエクスポートし、HTTP サーバーに配置します。公開鍵ファイルを apt-key add で信頼済みの鍵束に追加します。

今回作成した鍵はテストが終わったら不要なので apt-key del ’キーID’ で削除してください。apt-key list で出てきたキー ID をコピペすれば良いです(スペースもそのまま入れて OK)。

自作した鍵で Release ファイルに署名する

最後に Release ファイルに署名します。Release ファイルの署名には 2種類あって、署名を Release ファイルと一緒に書く InRelease ファイルと、署名だけを別に書く Release.gpg ファイルがあります。

InRelease だけ作成すれば機能するようですが、とりあえず両方の作り方を紹介しておきます。

Release の署名を作成する

### GnuPG で Release ファイルに署名

# echo -n "abcd1234" | gpg --batch --passphrase-fd 0 --pinentry-mode loopback --clearsign -o InRelease Release
# echo -n "abcd1234" | gpg --batch --passphrase-fd 0 --pinentry-mode loopback -abs -o Release.gpg Release
# chmod 644 Release InRelease Release.gpg

署名が完了したら apt-get update してみましょう。

Release の署名を作成する
# apt-get update

Get:1 http://192.168.1.1/linux/debian buster InRelease [3941 B]
Hit:2 http://ftp.jp.debian.org/debian testing InRelease
Get:3 http://192.168.1.1/linux/debian buster/stable amd64 Packages [1752 B]
Get:4 http://192.168.1.1/linux/debian buster/stable amd64 Contents (deb) [1242 B]
Fetched 6935 B in 0s (25.7 kB/s)                               
Reading package lists... Done

うまくいきました。apt-get install docker-ce を実行すると、、、

apt-get を実行
# apt-get install docker-ce

Reading package lists... Done
Building dependency tree
Reading state information... Done
Package docker-ce is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
However the following packages replace it:
  docker-ce-cli

E: Package 'docker-ce' has no installation candidate

どうやら依存関係を無視して Docker のパッケージを 1つしか登録しなかったため、依存関係のエラーが出てしまったようです。

他のパッケージ(docker-ce_cli, container.io)もダウンロードしましょう。pool/stable/amd64 の下に追加し、apt-ftparchive と署名をやり直します。

依存するパッケージを追加
linux
|-- conf
|   |-- apt_generate_debian_buster.conf
|   `-- apt_release_debian_buster.conf
`-- debian
    |-- dists
    |   `-- buster
    |       |-- InRelease
    |       |-- Release
    |       |-- Release.gpg
    |       |-- packages-amd64.db
    |       |-- pool
    |       |   `-- stable
    |       |       `-- amd64
    |       |           |-- containerd.io_1.2.6-3_amd64.deb
    |       |           |-- docker-ce-cli_19.03.1~3-0~debian-buster_amd64.deb
    |       |           `-- docker-ce_19.03.1~3-0~debian-buster_amd64.deb
    |       `-- stable
    |           |-- Contents-amd64
    |           |-- Contents-amd64.bz2
    |           |-- Contents-amd64.gz
    |           `-- binary-amd64
    |               |-- Packages
    |               |-- Packages.bz2
    |               `-- Packages.gz
    `-- gpg
        `-- public.key

10 directories, 16 files

以上のようなディレクトリ構成になるはずです。もう一度 apt-get install docker-ce してみましょう。

再び apt-get を実行
# apt-get install docker-ce

Reading package lists... Done
Building dependency tree 
Reading state information... Done
The following additional packages will be installed:
  aufs-dkms aufs-tools cgroupfs-mount containerd.io docker-ce-cli
Suggested packages:
  aufs-dev
The following NEW packages will be installed:
  aufs-dkms aufs-tools cgroupfs-mount containerd.io docker-ce docker-ce-cli
0 upgraded, 6 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/88.0 MB of archives.
After this operation, 390 MB of additional disk space will be used.
Do you want to continue? [Y/n]

Selecting previously unselected package aufs-dkms.
(Reading database ... 325385 files and directories currently installed.)
Preparing to unpack .../0-aufs-dkms_4.19+20190211-1_all.deb ...
Unpacking aufs-dkms (4.19+20190211-1) ...
Selecting previously unselected package aufs-tools.
Preparing to unpack .../1-aufs-tools_1%3a4.14+20190211-1_amd64.deb ...
Unpacking aufs-tools (1:4.14+20190211-1) ...
Selecting previously unselected package cgroupfs-mount.
Preparing to unpack .../2-cgroupfs-mount_1.4_all.deb ...
Unpacking cgroupfs-mount (1.4) ...
Selecting previously unselected package containerd.io.
Preparing to unpack .../3-containerd.io_1.2.6-3_amd64.deb ...
Unpacking containerd.io (1.2.6-3) ...
Selecting previously unselected package docker-ce-cli.
Preparing to unpack .../4-docker-ce-cli_5%3a19.03.1~3-0~debian-buster_amd64.deb ...
Unpacking docker-ce-cli (5:19.03.1~3-0~debian-buster) ...
Selecting previously unselected package docker-ce.
Preparing to unpack .../5-docker-ce_5%3a19.03.1~3-0~debian-buster_amd64.deb ...
Unpacking docker-ce (5:19.03.1~3-0~debian-buster) ...
Setting up aufs-tools (1:4.14+20190211-1) ...
Setting up containerd.io (1.2.6-3) ...
Created symlink /etc/systemd/system/multi-user.target.wants/containerd.service -> /lib/systemd/system/containerd.service.
Setting up docker-ce-cli (5:19.03.1~3-0~debian-buster) ...
Setting up aufs-dkms (4.19+20190211-1) ...
Loading new aufs-4.19+20190211 DKMS files...
Building for 4.19.0-5-amd64
Building initial module for 4.19.0-5-amd64
Done.

...

以上のように apt-get もうまくいきました。良かった良かった。

[編集者: すずき]
[更新: 2019年 9月 1日 04:22]
link 編集する

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link もっと前
   2019年 8月 21日 -
      2019年 8月 12日  
link もっと後

管理用メニュー

link 記事を新規作成

合計:  counter total
本日:  counter today

link About www.katsuster.net
RDF ファイル RSS 1.0
QR コード QR コード

最終更新: 9/20 00:01

カレンダー

<2019>
<<<08>>>
----123
45678910
11121314151617
18192021222324
25262728293031

最近のコメント 5件

  • link 19年09月01日
    すずき 「私も正直びっくりです。間違って違う製品を...」
    (更新:09/04 23:39)
  • link 19年09月01日
    hdk 「車向けの製品の中でも、車載コンピューター...」
    (更新:09/02 23:20)
  • link 19年07月18日
    hdk 「あっ、AAMはマニュアルのオペレーション...」
    (更新:07/25 00:02)
  • link 19年07月18日
    すずき 「AAM(ASCII Adjust AX ...」
    (更新:07/24 22:22)
  • link 19年07月18日
    hdk 「加算減算は符号のありなしどちらも命令が同...」
    (更新:07/24 07:25)

最近の記事 3件

link もっとみる
  • link 19年09月18日
    すずき 「[linux-next が久しぶりに更新された] ここしばらく更新...」
    (更新:09/20 00:01)
  • link 19年09月17日
    すずき 「[今まで知らなかった make の挙動] シェルから make に...」
    (更新:09/19 02:27)
  • link 19年09月07日
    すずき 「[Sin 波の美しさ勝負] 最近 linux-next で Roc...」
    (更新:09/08 13:17)

こんてんつ

open/close wiki
open/close Java API

過去の日記

open/close 2002年
open/close 2003年
open/close 2004年
open/close 2005年
open/close 2006年
open/close 2007年
open/close 2008年
open/close 2009年
open/close 2010年
open/close 2011年
open/close 2012年
open/close 2013年
open/close 2014年
open/close 2015年
open/close 2016年
open/close 2017年
open/close 2018年
open/close 2019年
open/close 過去日記について

その他の情報

open/close アクセス統計
open/close サーバ一覧
open/close サイトの情報