の形で呼ぶ。
//
// 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);
}
//-->
倉金家ホームページ
趣味の部屋/サーバー構築メモ その4
2020年7月末、アップデートがありいつものように# yum updateを実行したらものの見事に起動しなくなってしまった。幸いにも同じ現象で起動しなくなり早速対処法をアップしてくださった方がいて、おかげて回復することができました。ありがとうございます。 こんなことはもうないとは思いますが念の為記録しておきます。 |
|
|
見事に起動しなくなる。
7月末、Centos7サーバーのyumさんよりアップデートのお知らせメールがきた。 いつものように # yum update したが、その中にgrub2があった。 grub2というのはCentOS7サーバーの起動に使っているブートローダーで、ずっと昔アップデートで起動しなくなった記憶が一瞬頭をよぎったが、そのままアップデートをやってしまった。 (一週間ほど待って問題なさそうかネットで調べてからやればよかった。)
そして再起動すると、起動メニューがでない。 BIOSからWindows10は起動できるが、CentOSはBIOSからも起動できない。ブートローダーが完全におかしくなっており、重症。
他のことで忙しいこともありしばらく放置。そのうち対処法がネットに上がってくるだろう。
|
対処法が見つかった?
一週間以上たってネットで調べてみるとやはり同じ現象で起動しなくなり、対処法を見つけて公開してくださっているサイトを見つけた。 https://4thsight.xyz/20175 なんともありがたいことだ。
さっそくやってみると細かいところは少しちがうが基本的にこのやりかたで対処ができた。 やったことは以下のとおり。
CentOS7インストールディスクをレスキューモードで起動する。 このとき chroot /mnt/sysimage でもとのシステムにつながるオプション(Continue)を選んでおく。
上記サイトの情報ではインターネット接続の設定は接続情報のセットからやればよいようだったが、私の場合はその前の接続デバイスの登録からやらなくてはならなかった。おそらくルーターのセットとのからみで起動時にどこまで自動的にセットされるかが異なるのであろう。
# nmcli device でデバイス名を確認。私の場合は"eno1"を使う。 eno1を接続デバイスとして登録する。 # nmcli connection add type ethernet ifname eno1 con-name eno1
接続情報をセットする。値はルーターとの整合で。 # nmcli connection modify eno1 ipv4.method manual ipv4.addresses "192.168.0.70/24 192.168.0.1" ... 使ったレスキューディスクのnmcliのバージョンが古いと見えてipv4.gatewayは使えなかった。
nameserverを登録。ただしchrootのあと再度やらなくてはならなかったのでここでやるのは意味があったのかよくわからない。 # echo "nameserver 192.168.0.1" >/etc/resolv.conf ...ルーターのdns機能を使用。
# nmcli connection up eno1 ... 接続。
|
元の(起動しなくなった)システムに切り換える。 # chroot /mnt/sysimage
ここでyumを試してみたらミラーサイトにつながらなかったので調べたらnameserverを再セットしなくてはならないようだ。... 私の場合nameserverは自分でリゾルバを建ててそれを使っていた。 # echo "nameserver 192.168.0.1" >/etc/resolv.conf
ひとまず不具合パッケージをダウングレード。 # yum downgrade shim\* grub2\* mokutil うまくダウングレードできたようだ。再起動をかけたら無事起動。よかったよかった。
変更した/etc/resolv.confなどを元に戻し、だめだったgrub2等は不具合を修正したパッケージになっているようなのでアップデート。もしかするといったんダウングレードせずに直にアップデートしてもよかったのかもしれない。 # yum update grub2はじめその他いろいろアップデートされた。
... OK! めでたしめでたし。
|
4thsight.xyzさん、ありがとうございました。
|
|
|