mksandboxで/etcをコピーできなかった問題

前回こんなこと言ってたけど、理由がわかった。

なお何故かsbox/etcの作成でしばらく止まったと思ったらエラーが盛大に出る。メッセージを見るにどうもディレクトリがループしているようだが何のことかはわからん。このPC固有の問題?

mksandbox環境でpkgsrcをビルドする - steletoのブログ

結論から言ってしまうと、「mksandboxで指定する作成先ディレクトリは 絶対パス でなければならない 」というもの。

mksandboxでは/etcをコピーするとき、次の行を実行する。

*)      (cd /etc; $paxprog -rwpe . $sandbox/etc) ;;

このとき作成先ディレクトリ($sandbox)が前回のように相対パス "sbox" のみ与えられた場合、paxのコピー元とコピー先はこう解釈される。

  • コピー元: . (= /etc)
  • コピー先: sbox/etc (= /etc/sbox/etc)

元々意図していたコピー先は /home/oreore/sbox/etc だったつもりであっても、実際は全然関係ない /etc/sbox/etc になる。それどころかコピー先がコピー元に含まれるということで、結果 /etc/sbox/etc/sbox/etc/sbox/... と無限ループになる、というオチ。しかもやらかした時点で /etc の下に無限ループしたファイルが作成されてしまうので、このあと cp で手動コピーさせてもパスが深過ぎてコピーできないエラーが発生する、という二段オチまである。

ということで、冒頭で伸べた通り作成先ディレクトリを絶対パス "/home/oreore/sbox" とすると、次のようにエラーも出ず一瞬で作成される。

$ sudo mksandbox --pkgsrc=/home/oreore/pkgsrc --src=/home/oreore/work/netbsd/src --without-xsrc /home/oreore/sbox
WARNING: LOCALPATCHES directory does not exist - ignoring
Copying the kernel
Checking package hierarchy in /usr/pkg and package database in /var/db/pkg exist
Make and populate /home/oreore/sbox/dev
Make and populate /home/oreore/sbox/etc
Make empty dirs upon which to mount the null mounts
Making /tmp in /home/oreore/sbox
Making /var/games in /home/oreore/sbox
Making /var/run in /home/oreore/sbox
Making /var/log in /home/oreore/sbox
Making /var/spool/lock in /home/oreore/sbox
Making /var/run/utmp in /home/oreore/sbox
Making /var/run/utmpx in /home/oreore/sbox
Making /var/log/wtmp in /home/oreore/sbox
Making /var/log/wtmpx in /home/oreore/sbox
Making /var/log/lastlog in /home/oreore/sbox
Making /var/log/lastlogx in /home/oreore/sbox
Mount /home/oreore/work/netbsd/src from /home/oreore/sbox
Mount /home/oreore/pkgsrc from /home/oreore/sbox
Mounting /home/oreore/pkgsrc/packages and /home/oreore/pkgsrc/distfiles from /home/oreore/sbox
Sandbox creation is now complete

mksandbox環境でpkgsrcをビルドする

以前はcurrentを更新した後はpkgを一旦全部消してスクリプトで必要なものをビルドするという運用をしていたけど、それだと数日マシンが使えないのでpkgtools/mksandboxで必要なパッケージを作成してしまおうという試み。

手元の環境はこんな感じ。見てのとおりpkgsrcやsrcを/home配下に構築していたので、ビルドも一般ユーザー権限で回せるように少々こねくり回す羽目になったけど、たぶんこれroot権限でブン回すんなら不要そうな気がする。そもそもmksandbox自体がroot前提なのかも。

  • pkgsrc は /home/oreore/pkgsrc
  • src は /home/oreore/work/netbsd/src
  • xsrc はナシ
  • sandbox作成先ディレクトリは /home/oreore/sbox

まずはmksandboxでsboxディレクトリを作成する。なお何故かsbox/etcの作成でしばらく止まったと思ったらエラーが盛大に出る。メッセージを見るにどうもディレクトリがループしているようだが何のことかはわからん。このPC固有の問題? (追記)作成先ディレクトリの指定の仕方に問題があった。詳細は mksandboxで/etcをコピーできなかった問題 - steletoのブログ を参照。(追記ここまで)

$ sudo mksandbox --pkgsrc=/home/oreore/pkgsrc --src=/home/oreore/work/netbsd/src --without-xsrc sbox

WARNING: LOCALPATCHES directory does not exist - ignoring
Copying the kernel
Checking package hierarchy in /usr/pkg and package database in /var/db/pkg exist
Make and populate sbox/dev
Make and populate sbox/etc
pax: Cannot create sbox/etc/./sbox/etc/sbox/etc/(以下延々とsbox/etc/を繰り返す)/sbox/etc/hoge (File name too long)
(...略...)
Make empty dirs upon which to mount the null mounts
Making /tmp in sbox
Making /var/games in sbox
(...略...)
Mount /home/oreore/pkgsrc from sbox
Mounting /home/oreore/pkgsrc/packages and /home/oreore/pkgsrc/distfiles from sbox
Sandbox creation is now complete

ということでよくわからんエラーのせいでsbox/etcディレクトリ下がほぼ空っぽなので、cpで全部コピー。やっぱり同じようなエラーメッセージは出るけどコピーできてるから気にしない。

$ sudo cp -rf /etc/* sbox/etc/

一般ユーザーでビルドさせるとinstallでsu → /rootが無いのでエラー、というオチになるようなので /root を作成。

$ sudo mkdir sbox/root

自前のpkgsrcビルドスクリプトが /home/oreore/work にあるので、sandbox環境から見えるようにnullfsでmount。

$ mkdir /home/oreore/sbox/home/oreore/work
$ sudo mount -t null /home/oreore/work /home/star/sbox/home/oreore/work

これで作成したsandbox環境のmount/umountは/home/oreore/sbox/sandboxに引数でmount / umount を渡す。mksandboxで作成と同時にmountされるので特に理由がなければ気にしなくて良い。

$ sudo sbox/sandbox mount 
$ sudo sbox/sandbox umount

sandbox環境に入るには引数にchrootを渡す。chrootした時点ではrootになっているのでoreoreにスイッチ。

$ sudo sbox/sandbox chroot
# su oreore

後は普通にビルド。

なお、ほとんどnullfsで構成されたchrootとはいえやっぱりそれなりにディスク容量は消費する。というか足りないのでビルドのたびにmake clean-dependsしたり distfiles を消したり packages をサーバーにscpで移動させたりと涙ぐましいことをせざるを得なくなってたりする。

電池交換2018

4年2ヶ月ぶりの交換。よく考えたら時計本体はもう18〜19年モノになる。

これの電池を電器屋へ買いに行ったら目的の『SR920SW』のすぐ近くに『SR920W』というのがあって、はてこの2つの違いは何だろうと思ったらmaxellさんが解説してた。

SR○○○Wという品名の電池は、バックライトやストップウォッチ、アラーム機能などが付いた多機能(デジタル)時計に適しているハイレートタイプ(重い負荷用)です。
SR○○○SWという品名の電池は、時計の針だけを動かすアナログ時計に適したローレートタイプ(軽い負荷用)となります。

「酸化銀電池」よくあるご質問

同じ酸化銀電池でも特性が異なると。マンガン電池の赤黒みたいなもんかねーと思いつつこれ書きながら調べたらWikipediaにまんま載ってた。材料レベルで違うんならそりゃ型番分けるわと納得。

  • 記号なし/W 電解液に水酸化カリウムを使用し、重負荷で短時間の使用を考慮したものである。デジタル機器や防犯ブザー、LEDライトなど比較的大電流放電を必要とするものに向いている。
  • SW 電解液に水酸化ナトリウムを使用し、軽負荷で長時間の使用を考慮したものである。アナログ時計や測定器、バックアップ用に最適である。

酸化銀電池 - Wikipedia

KiCad 5.0.0動いた


9分9厘PLISTだからいいものの40000行越えのパッチとか意味わからんな…

大きく変わったのはライブラリで、Download Librariesの通り4.0系は "footprints" と" library" の2本立てだったのが、5.0系では "footprints"・"packages3d"・"symbols"の3本柱になったこと。pkgsrcでもそれぞれ別々のパッケージ扱いしていたので、”cad/kicad-lib" を削除し "cad/kicad-package3d" と "cad/kicad-symbols" として分割。あとは KiCad Licenses を見たらライブラリ系はCC-BY-SA 4.0らしいのでそちらに変更。

KiCad本体はboost 1.68での破壊的変更なところをバッチリ踏み抜いてエラーを吐いていた箇所があったので、本家から”Fix build error with Boost 1.68." の #include 部分だけ適用。というかキミこの前もcmake 3.11で非互換なところですっ転んでた気がするんだがそういう趣味でもあるのかね。あとライセンスもGPL3らしい。

なお現状pkgsrcに無いためビルドオプションで無効にしたのがこいつら。無効にしたことで何の機能が使えなくなったのかは知らん(ぉぃ

  • "-DKICAD_SPICE=OFF" : ngspiceの共有ライブラリが必要らしい
  • "-DKICAD_USE_OCE=OFF" : wip/opencascade ?
  • "-DKICAD_SCRIPTING_WXPYTHON=OFF" : "x11/py-wxWidgets" で試したら「古いわボケ」って怒られた

(2018/11/28追記)

"-DKICAD_SCRIPTING=OFF -DKICAD_SCRIPTING_MODULES=OFF" を入れておかないとSWIG3を要求してコケてしまうのでこいつらもビルドオプションに追加。SWIG3自体は devel/swig3 にはあるんだけど、なぜか devel/swig や devel/swig2 と違って buildlink3.mk が無いという謎。

今日のGR-PEACH

実に8ヶ月ぶりにシリアルの初期化部分をデータシート通りに書きなおしたら "rza1uart0: console" が出るように。

↓前回

ただし ”root device: ” の後に

  • 適当なキー(”a”とか)を押すと、その文字を表示してフリーズ
  • ENTERのみ "use one of: ddb halt reboot" となった後に再度 "root device: " になるけど、14回ENTER繰り返したところでpanic

となるんで入力回りがまだ怪しい感じがする。

U-Boot 2015.01-00076-gc83df16e6b-dirty (Jul 06 2017 - 01:45:26)

I2C:   ready
DRAM:  10 MiB
Using default environment

In:    serial
Out:   serial
Err:   serial
                      SPI Flash Memory Map
                ------------------------------------
                         Start      Size     SPI
                u-boot:  0x00000000 0x080000 0
                   env:  0x00080000 0x040000 0
                    DT:  0x000C0000 0x040000 0
                Kernel:  0x00100000 0x050000 0
                Rootfs:  0x00600000 0x0A0000 0
Net:   sh_eth
=> bootp 192.168.0.5:netbsd.bin
sh_eth Waiting for PHY auto negotiation to complete.. done
sh_eth: 100Base/Full
BOOTP broadcast 1
BOOTP broadcast 2
DHCP client bound to address 192.168.0.8 (620 ms)
Using sh_eth device
TFTP from server 192.168.0.5; our IP address is 192.168.0.8
Filename 'netbsd.bin'.
Load address: 0x20000000
Loading: #################################################################
         #################################################################
         #################################################################
         ####################################
         2.8 MiB/s
done
Bytes transferred = 3378388 (338cd4 hex)
=> go 0x20000000
## Starting application at 0x20000000 ...
  PC=0x20000024
  SP=0x208afdb0
CPSR=0x600001d3
<cortex_init>@ABC12-</cortex_init>
<mmu_init_table></mmu_init_table>
<arm_cpuinit>FG01H1IJKLM</arm_cpuinit>
jump to start()

uboot arg = 0x1, 0x208b0e5c, 0x208b0e5c, 0x20000000

NetBSD/evbarm (EVBARM_BOARDTYPE) booting ...
initarm: Configuring system, CLIDR=1110000003 CTR=0x83338003
arm32_bootmem_init: memstart=0x20000000, memsize=0xa00000, kernelstart=0x20000000
arm32_bootmem_init: kernelend=0x20356000
arm32_bootmem_init: adding 853 free pages: [0x20356000..0x209fffff] (VA 0x80356000)
arm32_kernel_vm_init: 1 L2 pages are needed to map 0x38a000 kernel bytes
arm32_kernel_vm_init: allocating page tables for kerneladd_pages: adding pv 0x80339414 (pa 0x20356000, va 0x80356000, 1 pages) at tail
 vmadd_pages: appending pv 0x8033a390 (0x20358000..0x2035bfff) to 0x20356000..0x20357fff
add_pages: appending pv 0x803395c8 (0x2035c000..0x2035dfff) to 0x20356000..0x2035bfff
add_pages: appending pv 0x803395dc (0x2035e000..0x2035ffff) to 0x20356000..0x2035dfff
add_pages: appending pv 0x803395f0 (0x20360000..0x20361fff) to 0x20356000..0x2035ffff
add_pages: appending pv 0x80339604 (0x20362000..0x20363fff) to 0x20356000..0x20361fff
add_pages: appending pv 0x80339618 (0x20364000..0x20365fff) to 0x20356000..0x20363fff
add_pages: appending pv 0x8033962c (0x20366000..0x20367fff) to 0x20356000..0x20365fff
add_pages: appending pv 0x80339640 (0x20368000..0x20369fff) to 0x20356000..0x20367fff
add_pages: appending pv 0x80339654 (0x2036a000..0x2036bfff) to 0x20356000..0x20369fff
arm32_kernel_vm_init: allocating stacks
add_pages: appending pv 0x80339af0 (0x2036c000..0x2036dfff) to 0x20356000..0x2036bfff
add_pages: appending pv 0x80339adc (0x2036e000..0x2036ffff) to 0x20356000..0x2036dfff
add_pages: appending pv 0x80339ac8 (0x20370000..0x20371fff) to 0x20356000..0x2036ffff
add_pages: appending pv 0x80339ab4 (0x20372000..0x20373fff) to 0x20356000..0x20371fff
add_pages: appending pv 0x80339aa0 (0x20374000..0x20375fff) to 0x20356000..0x20373fff
add_pages: appending pv 0x80339b04 (0x20376000..0x20377fff) to 0x20356000..0x20375fff
add_pages: appending pv 0x80339458 (0x20378000..0x2037bfff) to 0x20356000..0x20377fff
Creating L1 page table at 0x20358000
arm32_kernel_vm_init: adding L2 pt (VA 0x80356000, PA 0x20356000) for VA 0x80000000 (kernel)
arm32_kernel_vm_init: adding L2 pt (VA 0x8035c000, PA 0x2035c000) for VA 0xc0000000 (vm)
arm32_kernel_vm_init: adding L2 pt (VA 0x8035e000, PA 0x2035e000) for VA 0xc0800000 (vm)
arm32_kernel_vm_init: adding L2 pt (VA 0x80360000, PA 0x20360000) for VA 0xc1000000 (vm)
arm32_kernel_vm_init: adding L2 pt (VA 0x80362000, PA 0x20362000) for VA 0xc1800000 (vm)
arm32_kernel_vm_init: adding L2 pt (VA 0x80364000, PA 0x20364000) for VA 0xc2000000 (vm)
arm32_kernel_vm_init: adding L2 pt (VA 0x80366000, PA 0x20366000) for VA 0xc2800000 (vm)
arm32_kernel_vm_init: adding L2 pt (VA 0x80368000, PA 0x20368000) for VA 0xc3000000 (vm)
arm32_kernel_vm_init: adding L2 pt (VA 0x8036a000, PA 0x2036a000) for VA 0xc3800000 (vm)
Mapping kernel
arm32_kernel_vm_init: adding chunk for kernel text 0x20000000..0x20267fff (VA 0x80000000)
add_pages: adding pv 0x80339400 (pa 0x20000000, va 0x80000000, 308 pages) before pa 0x20356000
arm32_kernel_vm_init: adding chunk for kernel data/bss 0x20268000..0x20355fff (VA 0x80268000)
add_pages: adding pv 0x803393ec (pa 0x20268000, va 0x80268000, 119 pages) before pa 0x20356000
Listing Chunks
arm32_kernel_vm_init: pv 0x80339400: chunk VA 0x80000000..0x80267fff (PA 0x20000000, prot 7, cache 1)
arm32_kernel_vm_init: pv 0x803393ec: chunk VA 0x80268000..0x80355fff (PA 0x20268000, prot 3, cache 1)
arm32_kernel_vm_init: pv 0x80339414: chunk VA 0x80356000..0x8037bfff (PA 0x20356000, prot 3, cache 1)

Mapping Chunks
arm32_kernel_vm_init: mapping chunk VA 0x80000000..0x80267fff (PA 0x20000000, prot 7, cache 1)
pmap_map_chunk: pa=0x20000000 va=0x80000000 size=0x268000 resid=0x268000 prot=0x7 cache=1
SSLLLLLLPPPP
arm32_kernel_vm_init: mapping chunk VA 0x80268000..0x80355fff (PA 0x20268000, prot 3, cache 1)
pmap_map_chunk: pa=0x20268000 va=0x80268000 size=0xee000 resid=0xee000 prot=0x3 cache=1
PPPPLLLLLLLLLLLLLLPPP
arm32_kernel_vm_init: mapping last chunk VA 0x80356000..0x8037bfff (PA 0x20356000, prot 3, cache 1)
pmap_map_chunk: pa=0x20356000 va=0x80356000 size=0x26000 resid=0x26000 prot=0x3 cache=1
PPPPPLPPPPPP
devmap: 18000000 -> 1fffffff @ f7000000
pmap_map_chunk: pa=0x18000000 va=0xf7000000 size=0x8000000 resid=0x8000000 prot=0x3 cache=0
sSsSsSsSsSsSsSsS
devmap: 3fe00000 -> 3fffffff @ ff000000
pmap_map_chunk: pa=0x3fe00000 va=0xff000000 size=0x200000 resid=0x200000 prot=0x3 cache=0
SS
devmap: e8000000 -> e82fffff @ ff200000
pmap_map_chunk: pa=0xe8000000 va=0xff200000 size=0x300000 resid=0x300000 prot=0x3 cache=0
SSS
devmap: fc000000 -> fc0fffff @ ff500000
pmap_map_chunk: pa=0xfc000000 va=0xff500000 size=0x100000 resid=0x100000 prot=0x3 cache=0
S
devmap: fcf00000 -> fcffffff @ ff600000
pmap_map_chunk: pa=0xfcf00000 va=0xff600000 size=0x100000 resid=0x100000 prot=0x3 cache=0
S
devmap: fff00000 -> ffffffff @ ff700000
pmap_map_chunk: pa=0xfff00000 va=0xff700000 size=0x100000 resid=0x100000 prot=0x3 cache=0
S
devmap: f0000000 -> f00fffff @ ff800000
pmap_map_chunk: pa=0xf0000000 va=0xff800000 size=0x100000 resid=0x100000 prot=0x3 cache=0
S
                             Physical              Virtual        Num
                       Starting    Ending    Starting    Ending   Pages
               SDRAM: 0x20000000 0x209fffff 0x80000000 0x809fffff 1280
        text section: 0x20000000 0x20267fff 0x80000000 0x80267fff 308
        data section: 0x202c0000 0x20338cd8 0x802c0000 0x80338cd8 61
         bss section: 0x20338cd8 0x20354d98 0x80338cd8 0x80354d98 15
   L1 page directory: 0x20358000 0x2035bfff 0x80358000 0x8035bfff 2
   ABT stack (CPU 0): 0x2036c000 0x2036dfff 0x8036c000 0x8036dfff 1
   FIQ stack (CPU 0): 0x2036e000 0x2036ffff 0x8036e000 0x8036ffff 1
   IRQ stack (CPU 0): 0x20370000 0x20371fff 0x80370000 0x80371fff 1
   UND stack (CPU 0): 0x20372000 0x20373fff 0x80372000 0x80373fff 1
  IDLE stack (CPU 0): 0x20374000 0x20375fff 0x80374000 0x80375fff 1
           SVC stack: 0x20376000 0x20377fff 0x80376000 0x80377fff 1
      Message Buffer: 0x20378000 0x2037bfff 0x80378000 0x8037bfff 2
         Free Memory: 0x2037c000 0x209fffff                       834
TTBR0=0x209fc05b TTBR1=0x209fc05b TTBCR=0x1 CONTEXTIDR=0
switching to new L1 page table @0x20358000... ttb (TTBCR=0x11 TTBR0=0x2035805b TTBR1=0x2035805b) OK
nfreeblocks = 1, free_pages = 834 (0x342)
bootstrap done.
vectors vbar=0x8000c860 0x8000c860
init subsystems: stacks vectors undefined page pmap_physload pmap kpm tlb0 locks l1pt cache(l1pt) specials pools [ Kernel symbol table m]
done.
Loaded initial symtab at 0x802cc000, strtab at 0x802f64d0, # entries 10812
Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
    2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017
    The NetBSD Foundation, Inc.  All rights reserved.
Copyright (c) 1982, 1986, 1989, 1991, 1993
    The Regents of the University of California.  All rights reserved.

NetBSD 8.99.1 (GRPEACH) #126: Sun Aug 19 01:46:47 JST 2018
        star@pavilion.local:/home/star/work/netbsd.rza1h/obj/evbarm/sys/arch/evbarm/compile/GRPEACH
total memory = 10240 KB
avail memory = 6424 KB
sysctl_createv: sysctl_create(machine_arch) returned 17
mainbus0 (root)
cpu0 at mainbus0 core 0: 400 MHz Cortex-A9 r3p0 (Cortex V7A core)
cpu0: DC enabled IC enabled WB disabled EABT branch prediction enabled
cpu0: 32KB/32B 4-way L1 VIPT Instruction cache
cpu0: 32KB/32B 4-way write-back-locking-C L1 PIPT Data cache
cpu0: 128KB/32B 8-way write-back-locking-line L2 PIPT Unified cache
vfp0 at cpu0: NEON MPE (VFP 3.0+), rounding, NaN propagation, denormals
armperiph0 at mainbus0
arml2cc0 at armperiph0: ARM PL310 r3p2 L2 Cache Controller (disabled)
arml2cc0: cache enabled
armgic0 at armperiph0: Generic Interrupt Controller, 32 sources (21 valid)
armgic0: 32 Priorities, 0 SPIs, 5 PPIs, 16 SGIs
a9tmr0 at armperiph0: A9 Global 64-bit Timer (200 MHz)
a9tmr0: interrupting on irq 27
a9wdt0 at armperiph0: A9 Watchdog Timer, default period is 12 seconds
axi0 at mainbus0: Advancd eXtensible Interface
rza1uart0 at axi0 addr 0xe8008000 intr 232
rza1uart0: console
boot device: <unknown>
root device: a

[NetBSD] GPD WinでeMMCがmountできなくなってた問題

この件。

なおdmesgはこんなかんじ。(これは調査中にメモしていた8.0_BETAのもの)

sdhc0 at acpi0 (SDHA, 80860F14-1): mem 0xa1a3a000-0xa1a3aff irq 45
sdhc0: SDHC 3.0, rev 16, SDMA, 200000 kHz, embedded slot, HS SDR50 DDR50 SDR104 HS200 1.8V, re-tuning mode 1 (128s timer), 512 byte blocks
sdmmc0 at sdhc0 slot 0
...
sdhc0: timeout waiting for mask 0x3 value 0 (state-0x1fff0a06)
sdhc0: command or data phase inhibited
sdhc0: tuning did not complete, using fixed sampling clock
sdmmc0: can't execute MMC tuning
sdmmc0: mem init failed
ld0 at sdmmc0 <0x15:0x0100:CGND3R:0x00:0x6a6eb830:0x000>
ld0: 59640 MB, 7603 cyl, 255 head, 63 sec, 512 bytes/sect x 122142720 sectors
sdhc0: auto_cmd12 error
sdhc0: data crc error
ld0d: error reading fsdn 0 of 0-2 (ld0 bn 0; cn 0 tn 0 sn 0), retrying
...

NetBSD 8.0がリリースされたしどうなったのかなーと思ったら8もcurrentもダメだったんでちょっと調べてみた。といってもどの時期から発生したのかもわからんしソースの見当もついていなかったので、人力二分探索で「ソース全コンパイルしてUEFIイメージを作成して起動させ、eMMC mountできるかどうか確認する」をひたすら繰り返してた。どなたでもできる簡単なお仕事です(白目)

んで範囲を絞り込みつつコミットログを調べていって最終的に見つかったのがコレ。

これの逆パッチをcurrentに適用させたところ、無事にeMMC mountできるようになった。めでたしめでたし。
……いやGPD Win的にはこれで良いんだけど、パッチとdmesgを見るに「tuningするとおかしくなった」ってことだからsdhcのチューニング(sdhc_execute_tuning1())がなんかマズいのか、チューニング失敗で "tuning did not complete, using fixed sampling clock" といいつつ返したEIOをsdmmcがなんか変に解釈しておかしくなったのか、とかいう気がしなくもない。そもそもtuning is 何って状態なので何が正しいのかも全くわからんのだが。

んで一通り調べてからSDMMC_DEBUGオプションの存在に気付いたので、有効にしてeMMC mount失敗する版のdmesgを取得してみたら何かdumpがでてきてビビった。gistに投げつけといたんで後はエライ人におまかせします(ぉぃ

ちなみにそのtuningとやら、sdhc以外だと amlogic_sdhc_execute_tuning()sunxi_mmc_execute_tuning() が固有で持っているので、こっちの人はshdc_execute_tuning1() の問題とは無縁なはず。sunxiのはこれで正規動作なのか手抜きなんか知らんけど。PineBookのemmcも不調という噂だけどアレsunxiみたいだしどうなんだろうか。