の形で呼ぶ。
//
// anchor_idはフレームを使う場合最低限各フレームごとに設定。お互い他のフレームを書換えたときにへんな干渉をさけるため。
// その他ページの種別毎などで変えてもよいが、あまり小分けにするとcookieが増える。
// 同じanchor_idで保存されるcookieは1セットのみ。でも単独ページ表示のサイトなら概ねこれで充分。
anchor_id = "anc_main";
noanchor = false; // bodyにanchorをしかけたときなど場合によって一時無効にするためのフラグ。
// アンカーの記憶。
function anchor_save(object_id, page_id) {
if(noanchor) { anchor_erase(); return; }
get_scroll();
setcookie(anchor_id+"_pid", page_id, 0);
setcookie(anchor_id+"_st", scroll_top, 0);
setcookie(anchor_id+"_sl", scroll_left, 0);
if(object_id) {
object_top = scroll_top + get_object_top(object_id);
object_left = scroll_left + get_object_left(object_id);
setcookie(anchor_id+"_oid", object_id, 0);
setcookie(anchor_id+"_ot", object_top, 0);
setcookie(anchor_id+"_ol", object_left, 0);
} else {
setcookie(anchor_id+"_oid", "", -1);
setcookie(anchor_id+"_ot", "", -1);
setcookie(anchor_id+"_ol", "", -1);
}
}
// アンカーの適用。
function anchor_apply(page_id) {
if((saved_page_id = getcookie(anchor_id+"_pid")) && page_id != saved_page_id) { return; }
get_scroll();
if((anchor_st = getcookie(anchor_id+"_st")) != "" && (anchor_sl = getcookie(anchor_id+"_sl")) != "") {
anchor_st = parseInt(anchor_st);
anchor_sl = parseInt(anchor_sl);
} else {
anchor_st = scroll_top;
anchor_sl = scroll_left;
}
if((object_id = getcookie(anchor_id+"_oid"))
&& (anchor_ot = getcookie(anchor_id+"_ot")) != ""
&& (anchor_ol = getcookie(anchor_id+"_ol")) != "") {
offset_top = (scroll_top + get_object_top(object_id)) - parseInt(anchor_ot);
offset_left = (scroll_left + get_object_left(object_id)) - parseInt(anchor_ol);
} else {
offset_top = offset_left = 0;
}
window.scrollTo(anchor_sl + offset_left, anchor_st + offset_top);
}
// アンカー消去。あえてとっておく必要がなければanchor_apply()後すぐ消去が望ましい。
function anchor_erase() {
setcookie(anchor_id+"_pid", "", -1);
setcookie(anchor_id+"_st", "", -1);
setcookie(anchor_id+"_sl", "", -1);
setcookie(anchor_id+"_oid", "", -1);
setcookie(anchor_id+"_ot", "", -1);
setcookie(anchor_id+"_ol", "", -1);
}
//-->
改造・修理
|
|
Panasonic CN-H500WD (strada)
標題のものを入手したが、HDDからカッチャンカッチャン...
...というわけで修理してみることにした。
|
分解
|
HDDの救出
次にHDDを救出してみる。 いつものようにATAロック。 そこで、 zu /p という呪文で解除。 こんなときにXPとFDDは役に立つ。 持っててよかったぁ~。 あとは ddrescue -d -r 1 --no-scrape 元 先 でデータを救出。(1時間半かかった) ちなみにどうでもいい話。 このナビにはAK4353というDACが積まれていた。 時間持て余してたら部品見てた。
|
|
あーぁ...
HDDを載せ替えても「HDDが異常です 20」との表示が... こりゃだめかなぁ... (続く...かな?)
|
2日目
ここからはほとんど写真がありません。 夢中になると忘れちゃうんです(^^; 昨日そのままddで突っ込んだイメージが悪いのかと思い、もう一度試してみることに。 実は60GB HDDからddrescueで救出したイメージをそのまま40GBのHDDに書き込んでいたので、そこをチェック。 PCに繋いでgparted起動した直後、あれま! パーティションが途中までしかできていませんでした。 ...というわけでgpartedでカキカキ...(MSVを14GBに削った) で、反映の間にちょっと別のPCのところに行こうとした時、解体中のカーナビに足を引っ掛けてフラットケーブルを損傷してしまったのでそこを修正。(引き裂かれていた) そしてddイメージをループバックにマウントし、ファイルをコピー。 このときMSV領域は入りきらなかったのでコピーせず。 のんびり待ってコピー終了、umountしてカーナビにセット。 そして起動してみると... 再起動ループ。 一瞬地図が表示されるが、すぐにブラックアウトして再起動してしまう。 もちろん設定メニューを開く間もない。 失敗...か? もう一度HDDを取り出す。 最後の手段として、MSV領域に空のAUDIOフォルダとシステムファイルらしきデータベースをコピー。 すると...すんなり起動。 やったぁ!と思ってもやはり1分ほどで再起動。 ここまでの余裕があるなら、と設定メニューから初期化を10回ぐらいしてみた。 すると電源が落ちなくなった。 ...と、いうことで出来上がり。(日付は変わって午前一時、ひさしぶりにこの時間まで起きた) ちなみに外付けSSDはこうやって金属の板で挟むと転送速度が上がることに気づいた。
|
3日目
なんか動作が不安定だなと思っていたら、今日は起動しなかった。(同じ20のエラー)
...というわけでさっそく修理開始~
|
パーティションについて
とりあえず何回も試行するうえでわかったことをメモ。 - 論理パーティション内のパーティションが(5つのパーティションをまとめたところ)TFAT以外のドライブ名の場合->エラー23(TFATとして認識できない、マウント不可)
- 前二つのプライマリーパーティションのドライブ名が空以外の場合->エラー23(マウント不可)
- パーティション4 HDDVER.TXTがV 11.10.04.01.11M以外の場合->再起動ループもしくはエラー20
- 最初のパーティションに__TFAT_HIDDEN_ROOT_DIR__以外のフォルダがある場合->エラー20
- パーティション2のNATフォルダがない場合->エラー20
|
イメージの修正
...というわけでイメージの修正。 sudo losetup -Pf ./path/to/navidiskddfile sudo gparted /dev/loopbackAddress sudo losetup -d /dev/loopbackAddress sudo dd if=/path/to/navidiskddfile of=/dev/HDDpath status=progress ...これで起動するといいけど。->HDDが異常です エラー24ってなった。 まだ謎があるみたい。 gpartedで調べたら割り切れなかった1MBがあったので隣のパーティション(最終パーティション)と一緒にしてみた...けどこれでもダメ。 その後、windows側でそれぞれのパーティションを作り直してファイルを入れると、エラー20。 そしてパーティション2を書き換えるとエラー24。 その後パーティション2を作り直すとエラー36。 |
|
4日目
ついに4日目になった。 朝起動してみるとエラー24に逆戻り。 調べてみると後ろから3つのパーティションそれぞれにLBAフラグが立っていたのでそれを修正。 ...でもダメだった。(エラー24) でも、この段階で起動にだいぶ時間がかかるようになった。 これが壊れた印じゃないといいけど。 この時点で ...なのかなぁ... 残りは最初と最後になった... その後、chkdskしてもダメ。 全部作り直してもダメ。 八方塞がりとなった。
|
エラー20の正体
ふとHDDの接点に緑錆が出ていることに気が付いて接点を洗浄してみた。 するとエラー20->エラー24に。
えぇー?!
エラー20ってHDDが読めなかったってこと?!
...というわけでバーティションを全削除してやり直してみる。
|
そうこうしているうちに...
とある方法で取り寄せたものが届きました。 こっちでそのまま試してみるとエラー23。(あたりまえ) というわけで書き直してみる。 ...エラー23。 と、ここでクラスタサイズのことを思い出してみる。
|
クラスタサイズまとめ
左から順番に、 1: 種類 : FAT アロケーション ユニット サイズ : 4096 フラグ: 00000000 2: 種類 : FAT32 アロケーション ユニット サイズ : 64K フラグ: 00000000 3: 種類 : FAT32 アロケーション ユニット サイズ : 64K フラグ: 00000000 4: 種類 : FAT32 アロケーション ユニット サイズ : 16K フラグ: 00000000 5: 種類 : FAT32 アロケーション ユニット サイズ : 4096 フラグ: 00000000 6: 種類 : FAT32 アロケーション ユニット サイズ : 16K フラグ: 00000000 7: 種類 : FAT アロケーション ユニット サイズ : 4096 フラグ: 00000000 となっていた。
|
作戦会議
...ここまでで分かったことメモ - 元のHDDはクラッシュしてて、一部データが消えてる可能性あり
- 元のHDDはパーティション2つはプライマリ、あとは論理
- エラー20はシステムからHDDを認識できないもの
- エラー23はマウントできないもの
- エラー24、36は謎
- 60GBのddイメージをコピーして40GBのディスクに無理やり入れると起動はする、1度でも電源を落とすとエラー20
このとき無理やり入れた部分に少し手を加えないといけない - LBAフラグは関係ない
- 予約済み容量(2MBytes)の謎
- FATとFAT32も関係ない
かなぁ...
|
損傷
分解を重ねているうちにあちこち不調が。
まずフラットケーブル。 留め具の黒いロックが折れたり効かなくなったり。 全部で二か所。 頑張ってテープでおさえている。 ケーブル自体も亀裂が全部で3か所ほど入っている。
次にフロントカバー 何回もの脱着でパチンと留める場所がおかしくなってきている。 見栄えにもかかわるので慎重にしてたのに...
|
一時撤退
...というわけで一時撤退。 一週間ほど作戦を練ることに。
(つづく...かな?)
|
2025/2/23
作戦がまとまってきた。 1)2日目の手順を再実行 2)その際、MSV領域を最初からすべてコピー 3)パーティションは同じWindows(Windows 10)で作る。 (実はこのカーナビWindows CE 5.0ベースのWindows Automotive 5.0が入ってるっぽい) ...ってなわけで ここの手順を再実行することに。 3まで試したら、エラー24。 なんか見覚えが... ちなみにハードディスクは立ち上がった後大きいファイルを読む音(ジー)が鳴ってからエラー24...ってことはHドライブなのか...? これは初めて。
|
2025/2/25
ふと思いついた。 「ソフトウェアアップデートをしてみては?」 ...ということでアップデート開始...としたいところだけど「バージョンアップの必要はありません」と出てきた。 ならばとひとつ上のCN-H510Dのファームウェアをリネームして入れてみることを思いついた。(CN-R500Dも同じか?)->そんなうまい話があるわけもなく。惨敗。 ...と、その前にHDDの状態を確認。 すると、一番最初のドライブに「NMLOG[数字]」というログファイルが。 というわけで解析。 そして、GINI.EXEがSTEP0_2で固まっていることを発見! 一気に進んだか...? ちなみにフォーマットは、 ...となっていた。 ログから見えたのはマウントがうまく行っていることとGINI.EXEがSTEP0_2でエラー出したことぐらい... ちなみに別の用途でNAVI.EXEもあるらしい。 最初の2MB分を読み出してみた。 これ書き込んでも...ダメ。
|
|
|