mksandboxで/etcをコピーできなかった問題
前回こんなこと言ってたけど、理由がわかった。
なお何故かsbox/etcの作成でしばらく止まったと思ったらエラーが盛大に出る。メッセージを見るにどうもディレクトリがループしているようだが何のことかはわからん。このPC固有の問題?
結論から言ってしまうと、「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にまんま載ってた。材料レベルで違うんならそりゃ型番分けるわと納得。
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聞きに来た pic.twitter.com/1PXl05JOO2
— とんぬら@転職するか考え中 (@tristelo) 2018年1月2日
ただし ”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できなくなってた問題
この件。
GPD WinにUSBメモリから8.99.12を起動させてみたけど、どうも本体eMMCがうまくマウントできなくなってる模様。 pic.twitter.com/EjL0Ksn7l2
— とんぬら@転職するか考え中 (@tristelo) 2018年2月17日
なお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みたいだしどうなんだろうか。