pingでDUP!って出る件

macからRaspberry PI(FreeBSD 12)にpingする。

$ ping -c4 192.168.1.9
PING 192.168.1.9 (192.168.1.9): 56 data bytes
64 bytes from 192.168.1.9: icmp_seq=0 ttl=64 time=7.090 ms
64 bytes from 192.168.1.9: icmp_seq=0 ttl=64 time=7.110 ms (DUP!)
64 bytes from 192.168.1.9: icmp_seq=0 ttl=64 time=7.113 ms (DUP!)
64 bytes from 192.168.1.9: icmp_seq=0 ttl=64 time=7.116 ms (DUP!)
64 bytes from 192.168.1.9: icmp_seq=0 ttl=64 time=7.119 ms (DUP!)
64 bytes from 192.168.1.9: icmp_seq=1 ttl=64 time=12.260 ms
64 bytes from 192.168.1.9: icmp_seq=1 ttl=64 time=12.514 ms (DUP!)
64 bytes from 192.168.1.9: icmp_seq=1 ttl=64 time=12.521 ms (DUP!)
64 bytes from 192.168.1.9: icmp_seq=1 ttl=64 time=12.523 ms (DUP!)
64 bytes from 192.168.1.9: icmp_seq=1 ttl=64 time=12.525 ms (DUP!)
64 bytes from 192.168.1.9: icmp_seq=2 ttl=64 time=7.955 ms
64 bytes from 192.168.1.9: icmp_seq=2 ttl=64 time=7.967 ms (DUP!)
64 bytes from 192.168.1.9: icmp_seq=2 ttl=64 time=7.970 ms (DUP!)
64 bytes from 192.168.1.9: icmp_seq=2 ttl=64 time=7.976 ms (DUP!)
64 bytes from 192.168.1.9: icmp_seq=2 ttl=64 time=7.978 ms (DUP!)
64 bytes from 192.168.1.9: icmp_seq=3 ttl=64 time=5.988 ms

--- 192.168.1.9 ping statistics ---
4 packets transmitted, 4 packets received, +12 duplicates, 0.0% packet loss
round-trip min/avg/max/stddev = 5.988/8.983/12.525/2.404 ms

mactcpdump

$ sudo tcpdump -i en0 -p -n icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on en0, link-type EN10MB (Ethernet), capture size 262144 bytes
22:18:20.565875 IP 192.168.1.12 > 192.168.1.9: ICMP echo request, id 17157, seq 0, length 64
22:18:20.572882 IP 192.168.1.9 > 192.168.1.12: ICMP echo reply, id 17157, seq 0, length 64
22:18:20.572895 IP 192.168.1.9 > 192.168.1.12: ICMP echo reply, id 17157, seq 0, length 64
22:18:20.572898 IP 192.168.1.9 > 192.168.1.12: ICMP echo reply, id 17157, seq 0, length 64
22:18:20.572900 IP 192.168.1.9 > 192.168.1.12: ICMP echo reply, id 17157, seq 0, length 64
22:18:20.572902 IP 192.168.1.9 > 192.168.1.12: ICMP echo reply, id 17157, seq 0, length 64

Raspberry PIのtcmdump

# tcpdump -i ue0 -p -n  icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ue0, link-type EN10MB (Ethernet), capture size 262144 bytes
22:18:20.570596 IP 192.168.1.12 > 192.168.1.9: ICMP echo request, id 17157, seq 0, length 64
22:18:20.572422 IP 192.168.1.12 > 192.168.1.9: ICMP echo request, id 17157, seq 0, length 64
22:18:20.572991 IP 192.168.1.12 > 192.168.1.9: ICMP echo request, id 17157, seq 0, length 64
22:18:20.573462 IP 192.168.1.12 > 192.168.1.9: ICMP echo request, id 17157, seq 0, length 64
22:18:20.573923 IP 192.168.1.12 > 192.168.1.9: ICMP echo request, id 17157, seq 0, length 64
22:18:20.574099 IP 192.168.1.9 > 192.168.1.12: ICMP echo reply, id 17157, seq 0, length 64
22:18:20.574122 IP 192.168.1.9 > 192.168.1.12: ICMP echo reply, id 17157, seq 0, length 64
22:18:20.574133 IP 192.168.1.9 > 192.168.1.12: ICMP echo reply, id 17157, seq 0, length 64
22:18:20.574141 IP 192.168.1.9 > 192.168.1.12: ICMP echo reply, id 17157, seq 0, length 64
22:18:20.574149 IP 192.168.1.9 > 192.168.1.12: ICMP echo reply, id 17157, seq 0, length 64

macのVirtuaalBox上のFreeBSDからのpingDUPにならない。 なんでー?

NanoPi NEO2でFreeBSDを動かすメモ(NEO2用のu-bootを使う)

これまでの経緯とか

以前はu-bootを同じCPU(Allwinner H5)のボードのものをつかっていた。

rixwwd.hatenablog.jp

u-bootにはNanoPi NEO2用の設定があるため、今回はそれを使うようにした。

github.com

まずはportsの準備

portsnap fetch
portsnap extract

NanoPi NEO2用のu-boot

# インストール時間節約のためにpkgで入るやつはあらかじめinstallしておく。(依存関係はfreshportsとかで見ておいた。)
pkg install -n gsed swig30 dtc u-boot-tools arm-none-eabi-gcc bison gmake python27 aarch64-none-elf-gcc

cd /usr/ports/sysutils
git clone https://github.com/rixwwd/u-boot-nanopi-neo2.git
cd u-boot-nanopi-neo2
make clean install

NanoPi NEO2用のcrochet

githubからcloneしてくる。

cd
git clone https://github.com/rixwwd/crochet.git
git checkout -b nanopineo2 origin/nanopineo2

必要に応じでconfig.shなどで設定を変更した後に、

cd ~/crochet
/bin/sh ./crochet.sh -c config.sh -v

設定はboard/NanoPi-NEO2/overlayに置いてもいいし、イメージができたあとなら、mdconfigでイメージをマウントして編集でもOK。 sshとか、DHCPとか忘れがち。 このやり方だとrootしかユーザがいないし、ssh有効になってないし、rootのパスワードは未設定。

Raspberry PiをRead onlyなSDカードで運用するためNanoBSDのめも

NanoBSDの仕組み

/etc/disklessが存在すると、/etc/rc.initdisklessが動く。 /conf/base, /conf/defaultは設定ファイルのデフォルトを置いておく。 rc.initdisklessは、/conf/base, /conf/defaultの順で上書きしていく。

特殊なファイル

  • md_size
    • そのディレクトリをtmpfsにすろときのサイズの指定。512バイトで1ブロックのときのブロック数で指定。10240なら5MB。
  • remount
    • そのディレクトリに別のファイシステムをマウントする。ファイルの中にマウントの指定をする。mount -o ro /dev/mmcsd0s2dみたいに。

crochetのNanoBSD

  • etcは5MBのtmpfs。内容はデフォルトにSDカードの設定用パーティションの内容で上書く。
  • varは16MBのtmpfs。
  • /conf/baseは、もとの/var, /etcのコピー。

実際の構成

  • /conf/base/etc/md_size
    • /etcのサイズ
  • /conf/base/var/md_size
    • /varのサイズ
  • /conf/default/etc/remount
    • /conf/default/etcに対し、設定用のパーティションmmcsd0s2dをマウントするときのmountコマンド。

動きは以下のようになる。

  1. /conf/default/etc/remoutにより、/conf/default/etcは/cfg(mmcsd0s2d)と同じ内容になる。
  2. rc.initdisklessにより/conf/default/etcは/etcにコピーされる。コピーといってもbaseに対する上書きになる。上書きではなく削除したいときは、.removeなファイル名にする。
  3. rc.initdisklassにより/conf/default/varは/varにコピーされる。コピーといってもbaseに対する上書きになる。上書きではなく削除したいときは、.removeなファイル名にする。

mmcsd0s2dの内容

  • /etcのレイアウトそのまま。(コピーだからね。)
  • etc/localは、/usr/local/etcの中身。crochetでビルド時に、/usr/local/etcは/etc/localにコピーして、/usr/local/etcは/etc/localへのリンボリックリンクにしている。

/etc/rc.conf - root_rw_mount=NO - /はRead Onlyでマウント - entropy_file=NO - 乱数のエントロピーのキャッシュは使わない

細かい動きは、/etc/rc.initdisklessを読む。NanoBSDって/etc/rc.initdisklessをうまく利用してるだけ。

Mattermostの統合機能、APIメモ

やったこと

mattermostで何ができるのか調べてみた。

できること

  • 内向きのウェブフック
    • POSTすると指定したチャンネルに投稿できる。
  • 外向きのウェブフック
    • 特定の単語にマッチするときに、指定したURLにHTTP POSTする。
  • スラッシュコマンド
    • スラッシュコマンドを入力すると、指定したURLにHTTP POST/GETする。
  • API
    • mattermostのWeb API。ユーザー、チーム、チャンネル等の新規作成、更新、削除等ができる。

誰が使えるの?

機能 システム管理者 チーム管理者 メンバー
内向きのウェブフック 設定次第で可
外向きのウェブフック 設定次第で可
スラッシュコマンド 設定次第で可
API

「設定次第で可」は、「統合機能の管理を管理者のみに制限する」設定を無効にする。

APIの認証方法

  • /api/v4/users/loginにIDとパスワードをPOST
    • POSTとするとAPIアクセス用のトークンが返ってくる。それを使ってAPIを使う。
  • パーソナルアクセストークンを使う
    • APIにアクセスするときに、パーソナルアクセストークンを付与する。
    • 「パーソナルアクセストークンを有効にする」を有効にして、ユーザーごとにトークンを発行する。

ウェブフック、スラッシュコマンドを使うときは、config.jsonAllowedUntrustedInternalConnectionsにアクセスを許可するIPアドレスの範囲を指定する。192.168.56.0/24みたいに。

JenkinsのビルドをDockerコンテナで実行する

やること

Spring Bootで作ったアプリケーションのビルド&テストを、Jenkinsを使ってDockerコンテナ内で実行する。

方法

  • コンテナのイメージはopenjdk:8-jdk-alpineを使った。
  • Jenkinsfileの書き方は、agentにanyを指定するか、dockerを指定するかでコンテナ内で実行するかしないかがかわる。
  • mavenをコンテナに入れるの面倒なのでSpring Initlizr で作った時から入っている、mvnwを使う。
  • Junitの結果のグラフがなぜか表示されなかったけど、Wikiのコメントに回避策が書いてあった。一応動いた。 https://wiki.jenkins.io/display/JENKINS/JUnit+graph
  • maven-surefire-pluginのバージョンは2.20にしないとテストの実行が失敗する。

以下のようなJenkinsfileを作る。

pipeline {
    agent {
        docker {
            image 'openjdk:8-jdk-alpine'
        }
    }
    stages {
        stage('Checkout') {
            steps {
                checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[url: 'http://192.168.56.6:8081/gitbucket/git/root/dockertest.git']]])
            }
        }
        stage('Build') {
            steps {
                sh './mvnw clean compile'
            }
        }
        stage('Test') {
            steps {
                sh './mvnw test'
                
            }
        }
        stage('Recoding Result') {
            steps {
                //junit '**/surefire-reports/*.xml'
                step([$class: 'JUnitResultArchiver', testResults: '**/surefire-reports/*.xml' ])
            }
        }
    }
}

実行結果

実行するとこんな感じ。

Started by user admin
Obtained Jenkinsfile from git http://192.168.56.6:8081/gitbucket/git/root/dockertest.git
Running in Durability level: MAX_SURVIVABILITY
[Pipeline] node
Running on Jenkins in /var/lib/jenkins/workspace/dockertest-docker
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Declarative: Checkout SCM)
[Pipeline] checkout
 > git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
 > git config remote.origin.url http://192.168.56.6:8081/gitbucket/git/root/dockertest.git # timeout=10
Fetching upstream changes from http://192.168.56.6:8081/gitbucket/git/root/dockertest.git
 > git --version # timeout=10
 > git fetch --tags --progress http://192.168.56.6:8081/gitbucket/git/root/dockertest.git +refs/heads/*:refs/remotes/origin/*
 > git rev-parse refs/remotes/origin/master^{commit} # timeout=10
 > git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=10
Checking out Revision f97c7cff726cad83d24b041e4f44be49b479e536 (refs/remotes/origin/master)
 > git config core.sparsecheckout # timeout=10
 > git checkout -f f97c7cff726cad83d24b041e4f44be49b479e536
Commit message: "Change stage name."
 > git rev-list --no-walk cbf8bf399f9563d46fe2cae73eba0ea99cd4457d # timeout=10
[Pipeline] }
[Pipeline] // stage
[Pipeline] withEnv
[Pipeline] {
[Pipeline] sh
[dockertest-docker] Running shell script
+ docker inspect -f . openjdk:8-jdk-alpine
.
[Pipeline] withDockerContainer
Jenkins does not seem to be running inside a container
$ docker run -t -d -u 985:979 -w /var/lib/jenkins/workspace/dockertest-docker -v /var/lib/jenkins/workspace/dockertest-docker:/var/lib/jenkins/workspace/dockertest-docker:rw,z -v /var/lib/jenkins/workspace/dockertest-docker@tmp:/var/lib/jenkins/workspace/dockertest-docker@tmp:rw,z -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** openjdk:8-jdk-alpine cat
$ docker top 364938fc3805b25ed0bc7097881d2a4fb592d7799e6afe694fec2d4b4481f74e -eo pid,comm
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Checkout)
[Pipeline] checkout
 > git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
 > git config remote.origin.url http://192.168.56.6:8081/gitbucket/git/root/dockertest.git # timeout=10
Fetching upstream changes from http://192.168.56.6:8081/gitbucket/git/root/dockertest.git
 > git --version # timeout=10
 > git fetch --tags --progress http://192.168.56.6:8081/gitbucket/git/root/dockertest.git +refs/heads/*:refs/remotes/origin/*
 > git rev-parse refs/remotes/origin/master^{commit} # timeout=10
 > git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=10
Checking out Revision f97c7cff726cad83d24b041e4f44be49b479e536 (refs/remotes/origin/master)
 > git config core.sparsecheckout # timeout=10
 > git checkout -f f97c7cff726cad83d24b041e4f44be49b479e536
Commit message: "Change stage name."
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Build)
[Pipeline] sh
[dockertest-docker] Running shell script
+ ./mvnw clean compile
/var/lib/jenkins/workspace/dockertest-docker
[INFO] Scanning for projects...
[INFO] 
[INFO] -----------------------< com.example:dockertest >-----------------------
[INFO] Building dockertest 0.0.1-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- maven-clean-plugin:3.0.0:clean (default-clean) @ dockertest ---
[INFO] Deleting /var/lib/jenkins/workspace/dockertest-docker/target
[INFO] 
[INFO] --- maven-resources-plugin:3.0.2:resources (default-resources) @ dockertest ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 1 resource
[INFO] Copying 0 resource
[INFO] 
[INFO] --- maven-compiler-plugin:3.7.0:compile (default-compile) @ dockertest ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 2 source files to /var/lib/jenkins/workspace/dockertest-docker/target/classes
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.787 s
[INFO] Finished at: 2018-08-26T11:35:58Z
[INFO] ------------------------------------------------------------------------
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Test)
[Pipeline] sh
[dockertest-docker] Running shell script
+ ./mvnw test
/var/lib/jenkins/workspace/dockertest-docker
[INFO] Scanning for projects...
[INFO] 
[INFO] -----------------------< com.example:dockertest >-----------------------
[INFO] Building dockertest 0.0.1-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- maven-resources-plugin:3.0.2:resources (default-resources) @ dockertest ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 1 resource
[INFO] Copying 0 resource
[INFO] 
[INFO] --- maven-compiler-plugin:3.7.0:compile (default-compile) @ dockertest ---
[INFO] Nothing to compile - all classes are up to date
[INFO] 
[INFO] --- maven-resources-plugin:3.0.2:testResources (default-testResources) @ dockertest ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /var/lib/jenkins/workspace/dockertest-docker/src/test/resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.7.0:testCompile (default-testCompile) @ dockertest ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 2 source files to /var/lib/jenkins/workspace/dockertest-docker/target/test-classes
[INFO] 
[INFO] --- maven-surefire-plugin:2.20:test (default-test) @ dockertest ---
[INFO] 
[INFO] -------------------------------------------------------
[INFO]  T E S T S
[INFO] -------------------------------------------------------
[INFO] Running com.example.dockertest.web.HelloControllerTest

〜長いので省略〜

[INFO] 
[INFO] Results:
[INFO] 
[INFO] Tests run: 2, Failures: 0, Errors: 0, Skipped: 0
[INFO] 
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 9.830 s
[INFO] Finished at: 2018-08-26T11:36:10Z
[INFO] ------------------------------------------------------------------------
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Recoding Result)
[Pipeline] step
Recording test results
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
$ docker stop --time=1 364938fc3805b25ed0bc7097881d2a4fb592d7799e6afe694fec2d4b4481f74e
$ docker rm -f 364938fc3805b25ed0bc7097881d2a4fb592d7799e6afe694fec2d4b4481f74e
[Pipeline] // withDockerContainer
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS

FreeBSDのRaspbery PI用イメージを1GBのSDカード用に変換する

やること

FreeBSDのRaspbery PI用イメージを1GBのSDカード用に変換する。 配布されているイメージは1GBなのだが、手元にあったSDカードは953MBとちょっと足りない。 そのため、実際のSDカードのサイズに合わせる。

方法

SDカードと同じサイズのファイルを作成する。 それに公式イメージの内容をdump&restoreする。

macでイメージを作成する。

dd if=/dev/disk2 of=sd.img bs=1m

dump & restore

コピー先の準備

mdconfig -x 63 -y 255 -f sd.img
gpart create -s MBR md0
gpart add -t '\!12'  -a 63 -s 64m md0
gpart set -a active -i 1 md0
newfs_msdos -L MSDOSBOOT -F 16 /dev/md0s1
gpart add -t freebsd md0
gpart create -s BSD md0s2
gpart add -t freebsd-ufs md0s2
newfs -U md0s2a
Tunefs -L roots /dev/md0s2a
mount /dev/md0s2a /var/tmp/sd

コピー

mdconfig -f FreeBSD-11.2-RELEASE-arm-armv6-RPI-B.img
echo '/dev/md1s2a         /var/tmp/src          ufs     rw      1       0' >> /etc/fstab
mount /var/tmp/src /dev/md1s2a
dump -0 -h 0 -f - /media | restore -x -f - -v
sync
umount /var/tmp/src
umount /var/tmp/sd

起動用パーティションもコピー

mount -t msdosfs /dev/md0s1 /var/tmp/sd
mount -t msdosfs /dev/md1s1 /var/tmp/src
cp -pRv /var/tmp/src/* /var/tmp/sd/.
sync
umount /var/tmp/src
umount /var/tmp/sd

mdconfig -d -u 0
mdconfig -d -u 1

NanoPi NEO2でFreeBSDを動かすメモ

やること

NanoPi NEO2でFreeBSDを無理やり動かしてみた。

ソースのチェックアウト

SubversionFreeBSDソースコードをチェックアウトする。

cd /usr
svnlite co svn://svn.freebsd.org/base/head src

NTPD用ユーザー作成

20180719にntpdは専用のユーザーで動かすようになったらしいので、ユーザーを作っておく。

pw groupadd -g 123 -n ntpd
pw useradd -n ntpd -u 123 -g ntpd -s /usr/sbin/nologin -w none

u-boot

nanopi用のu-bootがなかったため、NanoPi NEO2と同じAllwinner H5を使っているorange Pi Pc2用u-bootをportsからインストールする。

cd /usr/ports/sysutils/u-boot-orangepi-pc2
make install

NanoPi NEO2用Crochetでビルド

NanoPi NEO2用にCrochetをカスタマイズした。それをgithubから持ってくる。

github.com

mkdir ~/nanopineo2
cd ~/nanopineo2
git clone https://github.com/rixwwd/crochet.git
cd crochet
git checkout nanopi-neo2

ビルドオプションなどをつけたい場合は、

./crochet.sh -c config.sh

特に何も気にしない場合は、

./crochet.sh -b nanopi-neo2

ビルド完了まで待つ。(結構かかる)

SDに書き込む

crochetのwordにFreeBSD-aarch64-12.0-GENERIC-336857-nanopi-neo2.imgのようにSDカードのイメージができる。 いつも通りddで書き込んで完了。

dmesg

KDB: debugger backends: ddb
KDB: current backend: ddb
Copyright (c) 1992-2018 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
    The Regents of the University of California. All rights reserved.
FreeBSD is a registered trademark of The FreeBSD Foundation.
FreeBSD 12.0-CURRENT #0 r336857: Sun Jul 29 16:50:21 JST 2018
    root@freebsd-vbox:/root/nanopineo2/crochet/work/obj/usr/src/arm64.aarch64/sys/GENERIC arm64
FreeBSD clang version 6.0.1 (tags/RELEASE_601/final 335540) (based on LLVM 6.0.1)
WARNING: WITNESS option enabled, expect reduced performance.
VT: init without driver.
Starting CPU 1 (1)
Starting CPU 2 (2)
Starting CPU 3 (3)
FreeBSD/SMP: Multiprocessor System Detected: 4 CPUs
random: unblocking device.
random: entropy device external interface
MAP 47fff000 mode 2 pages 1
MAP 48003000 mode 2 pages 1
MAP 58f16000 mode 2 pages 1
MAP 5dfb8000 mode 2 pages 1
kbd0 at kbdmux0
ofwbus0: <Open Firmware Device Tree>
ofw_clkbus0: <OFW clocks bus> on ofwbus0
clk_fixed0: <Fixed clock> on ofw_clkbus0
clk_fixed1: <Fixed clock> on ofw_clkbus0
clk_fixed2: <Fixed factor clock> on ofw_clkbus0
simplebus0: <Flattened device tree simple bus> on ofwbus0
ccu_h3ng0: <Allwinner H3/H5 Clock Control Unit NG> mem 0x1c20000-0x1c203ff on simplebus0
regfix0: <Fixed Regulator> on simplebus0
psci0: <ARM Power State Co-ordination Interface Driver> on ofwbus0
gic0: <ARM Generic Interrupt Controller> mem 0x1c81000-0x1c81fff,0x1c82000-0x1c82fff,0x1c84000-0x1c85fff,0x1c86000-0x1c87fff irq 28 on simplebus0
gic0: pn 0x2, arch 0x2, rev 0x1, implementer 0x43b irqs 224
gpio0: <Allwinner GPIO/Pinmux controller> mem 0x1c20800-0x1c20bff irq 17,18,19 on simplebus0
gpiobus0: <OFW GPIO bus> on gpio0
gpio1: <Allwinner GPIO/Pinmux controller> mem 0x1f02c00-0x1f02fff irq 32 on simplebus0
gpio1: Could not find clock at offset 0 (19)
device_attach: gpio1 attach returned 6
gpio1: <Allwinner GPIO/Pinmux controller> mem 0x1f02c00-0x1f02fff irq 32 on simplebus0
gpio1: Could not find clock at offset 0 (19)
device_attach: gpio1 attach returned 6
generic_timer0: <ARMv8 Generic Timer> irq 0,1,2,3 on ofwbus0
Timecounter "ARM MPCore Timecounter" frequency 24000000 Hz quality 1000
Event timer "ARM MPCore Eventtimer" frequency 24000000 Hz quality 1000
rtc0: <Allwinner RTC> mem 0x1f00000-0x1f00053 irq 29,30 on simplebus0
rtc0: registered as a time-of-day clock, resolution 1.000000s
gpio1: <Allwinner GPIO/Pinmux controller> mem 0x1f02c00-0x1f02fff irq 32 on simplebus0
gpio1: Could not find clock at offset 0 (19)
device_attach: gpio1 attach returned 6
awusbphy0: <Allwinner USB PHY> mem 0x1c19400-0x1c1942b,0x1c1a800-0x1c1a803,0x1c1b800-0x1c1b803,0x1c1c800-0x1c1c803,0x1c1d800-0x1c1d803 on simplebus0
gpio1: <Allwinner GPIO/Pinmux controller> mem 0x1f02c00-0x1f02fff irq 32 on simplebus0
gpio1: Could not find clock at offset 0 (19)
device_attach: gpio1 attach returned 6
cpulist0: <Open Firmware CPU Group> on ofwbus0
cpu0: <Open Firmware CPU> on cpulist0
cpu1: <Open Firmware CPU> on cpulist0
cpu2: <Open Firmware CPU> on cpulist0
cpu3: <Open Firmware CPU> on cpulist0
syscon_generic0: <syscon> mem 0x1c00000-0x1c00fff on simplebus0
aw_mmc0: <Allwinner Integrated MMC/SD controller> mem 0x1c0f000-0x1c0ffff irq 5 on simplebus0
mmc0: <MMC/SD bus> on aw_mmc0
ehci0: <Allwinner Integrated USB 2.0 controller> mem 0x1c1a000-0x1c1a0ff irq 9 on simplebus0
usbus0: EHCI version 1.0
usbus0 on ehci0
ohci0: <Generic OHCI Controller> mem 0x1c1a400-0x1c1a4ff irq 10 on simplebus0
usbus1 on ohci0
ehci1: <Allwinner Integrated USB 2.0 controller> mem 0x1c1b000-0x1c1b0ff irq 11 on simplebus0
usbus2: EHCI version 1.0
usbus2 on ehci1
ohci1: <Generic OHCI Controller> mem 0x1c1b400-0x1c1b4ff irq 12 on simplebus0
usbus3 on ohci1
gpioc0: <GPIO controller> on gpio0
aw_wdog0: <Allwinner A31 Watchdog> mem 0x1c20ca0-0x1c20cbf irq 22 on simplebus0
uart0: <16750 or compatible> mem 0x1c28000-0x1c283ff irq 23 on simplebus0
uart0: console (115384,n,8,1)
awg0: <Allwinner Gigabit Ethernet> mem 0x1c30000-0x1c3ffff irq 27 on simplebus0
miibus0: <MII bus> on awg0
rgephy0: <RTL8169S/8110S/8211 1000BASE-T media interface> PHY 0 on miibus0
rgephy0:  none, 10baseT, 10baseT-FDX, 10baseT-FDX-flow, 100baseTX, 100baseTX-FDX, 100baseTX-FDX-flow, 1000baseT, 1000baseT-master, 1000baseT-FDX, 1000baseT-FDX-master, 1000baseT-FDX-flow, 1000baseT-FDX-flow-master, auto, auto-flow
rgephy1: <RTL8169S/8110S/8211 1000BASE-T media interface> PHY 7 on miibus0
rgephy1:  none, 10baseT, 10baseT-FDX, 10baseT-FDX-flow, 100baseTX, 100baseTX-FDX, 100baseTX-FDX-flow, 1000baseT, 1000baseT-master, 1000baseT-FDX, 1000baseT-FDX-master, 1000baseT-FDX-flow, 1000baseT-FDX-flow-master, auto, auto-flow
awg0: Ethernet address: f2:00:xx:xx:xx:xx
gpio1: <Allwinner GPIO/Pinmux controller> mem 0x1f02c00-0x1f02fff irq 32 on simplebus0
gpio1: Could not find clock at offset 0 (19)
device_attach: gpio1 attach returned 6
cryptosoft0: <software crypto>
Timecounters tick every 1.000 msec
usbus0: 480Mbps High Speed USB v2.0
usbus1: 12Mbps Full Speed USB v1.0
usbus2: 480Mbps High Speed USB v2.0
usbus3: 12Mbps Full Speed USB v1.0
ugen1.1: <Generic OHCI root HUB> at usbus1
uhub0: <Generic OHCI root HUB, class 9/0, rev 1.00/1.00, addr 1> on usbus1
ugen0.1: <Allwinner EHCI root HUB> at usbus0
uhub1: <Allwinner EHCI root HUB, class 9/0, rev 2.00/1.00, addr 1> on usbus0
ugen2.1: <Allwinner EHCI root HUB> at usbus2
uhub2: <Allwinner EHCI root HUB, class 9/0, rev 2.00/1.00, addr 1> on usbus2
ugen3.1: <Generic OHCI root HUB> at usbus3
uhub3: <Generic OHCI root HUB, class 9/0, rev 1.00/1.00, addr 1> on usbus3
mmcsd0: 15GB <SDHC SA16G 2.7 SN 27258937 MFG 05/2017 by 2 TM> at mmc0 50.0MHz/4bit/32768-block
Release APs...done
CPU  0: ARM Cortex-A53 r0p4mmc0: Trying to mount root from ufs:/dev/mmcsd0s2a [rw,noatime]...
 affinity:ACMD42 failed, RESULT: 4
  0mmc0: 
Card at relative address 4660 failed to set bus width
 Instruction Set Attributes 0 = <AES+PMULL,SHA1,SHA2,CRC32>
 Instruction Set Attributes 1 = <>
         Processor Features 0 = <AdvSIMD,Float,EL3 32,EL2 32,EL1 32,EL0 32>
         Processor Features 1 = <0>
      Memory Model Features 0 = <4k Granule,64k Granule,MixedEndian,S/NS Mem,16bit ASID,1TB PA>
      Memory Model Features 1 = <>
      Memory Model Features 2 = <32b CCIDX,48b VA>
             Debug Features 0 = <2 CTX Breakpoints,4 Watchpoints,6 Breakpoints,PMUv3,Debug v8>
             Debug Features 1 = <0>
         Auxiliary Features 0 = <0>
         Auxiliary Features 1 = <0>
CPU  1: ARM Cortex-A53 r0p4 affinity:  1
CPU  2: ARM Cortex-A53 r0p4 affinity:  2
CPU  3: ARM Cortex-A53 r0p4 affinity:  3
WARNING: WITNESS option enabled, expect reduced performance.
uhub0: 1 port with 1 removable, self powered
uhub3: 1 port with 1 removable, self powered
uhub1: 1 port with 1 removable, self powered
uhub2: 1 port with 1 removable, self powered
lo0: link state changed to UP
awg0: link state changed to DOWN
awg0: link state changed to UP