goo blog サービス終了のお知らせ 

ttt

getttyent

Windows 8.1 ・・・おかわり

2015-04-11 23:59:59 | デジタル・インターネット

先月のことですが、あれ、これって安い?

と思って、衝動買い

Windows 8.1 64bit DSP版

といっても、買っただけで、放置したまんまですけど・・・

まだXPのPCがあるんですけどね・・・

めんどくさくって・・・

1年くらい前にも1本買ったんですが、そっちは仮想マシンで動かしてみたものの、なぜか、再アクティベーションしろ、みたいなことになってしまって、あとで考えようって思ってから、すっかり忘れて放置中。

 


FreeBSDをdisklessでiSCSIブートさせたいな

2015-04-02 22:59:44 | デジタル・インターネット

ちょっと前の話。
これまでFreeBSD 9.xで使っていたマシンを、そろそろFreeBSD 10.xにしようと思ったけど、バージョンアップしたら動かなくなった、みたいなことになると困ります。

というわけで、FreeBSD 10をdisklessブートさせて、問題なく動作するか確かめてから、バージョンアップしようかな、ということにしました。

ファイルシステムをNFSで用意して、FreeBSDをdisklessでブートするのは、

https://www.freebsd.org/doc/handbook/network-diskless.html
Diskless Operation with PXE

にて説明してあることを、てきと~にはしょりながらやって、けっこう、かんたんにできてしまいます。

どうせなら、ファイルシステムをNFSではなくiSCSIにできたらいいんじゃね~?と思いまして、ちょっとやってみました。

ファイルシステムがNFSだと、chflagsができないので、freebsd-updateするとエラーになっちゃうんです・・・

root@HOST:~ # freebsd-update  --debug install
Installing updates...install: rename: ///lib/INS@VZw2 to ///lib/libc.so.7: Operation not permitted
install: rename: ///sbin/INS@XLr3 to ///sbin/init: Operation not permitted
install: rename: ///usr/lib32/INS@LIyh to ///usr/lib32/libc.so.7: Operation not permitted
 done.

だからiSCSIなら、普通のHDDと同じようにできますよね?、というわけです。

FreeBSD iSCSI bootとかでネット検索すると、iSCSIブートできるようにするコードを開発している人がおられるのですが、FreeBSD 9と書いてあったので、10だとどうなる???そもそも、そういうのは公式にサポートして欲しいな~、とか思いまして、今回はそちらはパス。

とりあえず、root filesystemをNFSとしてsingle user modeで起動して、
iscsid
とやってiSCSIしてみると、/var/run/iscsid.pid が作成できなくてエラー終了するので
iscsid -P /dev/null
としてみると、これならうまくいく
iscsictl -Aa
で、あー、iSCSIで見えました。

そこで、
mount -o rw,union /dev/gpt/rootFS /
したら(/dev/gpt/rootFS はiSCSIで見えるパーティション)、うまくいったように見えたのですが、viを起動したときkernel panic。
union FSてば、だめな子?

次のアイデア。

mount /dev/gpt/rootFS /mnt
mount_nullfs /dev /mnt/dev

chroot /mnt /bin/sh

sh /etc/rc
すると、/をmountしようとしてエラー終了する。

う~ん、/をrwマウントするタイミングで、まったく別のファイルシステムをマウントすることって、不可能なんですかね?

/etc/fstabで、/ の行はコメントアウト。もうマウントされているから不要だし、それがあるとエラーになるので。

sh /etc/rc
したらできた。

さて、どうやってマルチユーザーモードに移行するのだ?

・・・とか考えている間に、かってにリブートしていた。
kernel panicしていた。

mount_nullfsがいけないらしい。devfsをmountすればOK
こんな感じ
--------------
iscsid -P /dev/null
iscsictl -Aa
sleep 3
mount /dev/gpt/rootFS /mnt
mount -t devfs devfs /mnt/dev
swapon /dev/gpt/swapP

chroot /mnt /bin/sh
--------------

ということは
上記を/etc/rc.iscsiboot とかにしておいて、
/sbin/initが、最初にそれを実行し、
/sbin/initが、chrootしてしまえばいいのでは?
・・・という気がしてきました。

というわけで、/sbin/initのソースコードを見ますか。

このあたり使えそう。というか、それっぽいコードが書かれている!

    if (kenv(KENV_GET, "init_script", kenv_value, sizeof(kenv_value)) > 0) {
        state_func_t next_transition;

        if ((next_transition = run_script(kenv_value)) != 0)
            initial_transition = (state_t) next_transition;
    }

    if (kenv(KENV_GET, "init_chroot", kenv_value, sizeof(kenv_value)) > 0) {
        if (chdir(kenv_value) != 0 || chroot(".") != 0)
            warning("Can't chroot to %s: %m", kenv_value);


https://wiki.freebsd.org/AvgLiveCD

を読んでみたら、なんとなく、できました。

NFS rootとなる場所に、とりあえず、init_iscsiというファイル名で、こんなファイルを作っておく。

#!/bin/sh -vx
PATH=/sbin:/bin:/usr/sbin:/usr/bin

iscsid -P /dev/null
iscsictl -Aa
sleep 5
mount /dev/gpt/rootFS /mnt
mount -t devfs devfs /mnt/dev
swapon /dev/gpt/swapP

echo "init_iscsi done"
exit 0


同じくNFS rootとなる場所の/boot/loader.confにて、

init_script="/init_iscsi"
init_chroot="/mnt"

と書いておく。

これで、なんとなく動きました。

というわけで、こんな、ヘンテコなことをすれば、なんちゃってiSCSIブートができる!!
 ・・・う~ん、でも、最初にNFSを使ってるじゃん

1. 最初、ルートファイルシステムをNFSでマウントしてブートさせておいてから
2. iSCSIなファイルシステムをマウント
3. iSCSIなファイルシステムにchrootして、そこでinitを実行

問題点は、
freebsd-update install
したとき
iscsi側のファイルは置き換わるが、
NFS root側の
/sbin/init
が置き換わらない、ってこと。

/boot以下のファイルも、ブートローダでNFSなところを読みに行ってしまうので、portsでインストールしたものがあっても、反映されない。

うーん、MFSを使う方法が良さそうです。

そういえば、Linuxって、initramfsうんたら、でブートさせてるんですよね。

そんな感じのこと、FreeBSDでもできると思うのですが・・・
昔のFreeBSDのインストーラって、MFSをつかってましたよね。あれ、どうやるんだったけかな。

あとで考えよう


emacs-24でsymbol's definition is void cl-macroexpand-all

2015-03-31 23:59:59 | デジタル・インターネット

2ヶ月くらい前、php-mode.elか何かでトラブったことの、自分用メモ。

emacs-24で、symbol's definition is void cl-macroexpand-allというのが出た。

ネット検索したら、まったく同じ話がでてた。

http://emacs.stackexchange.com/questions/2864/symbols-function-definition-is-void-cl-macroexpand-all-when-trying-to-instal

(require 'cl)
を入れておけばいいそうだ。

ふ~ん。

ところで、最近の人はEmacsを使わないそうだ。そうですか。そうですか。


(pkgsrc) ipythonとかmatplotlibとか

2015-03-27 23:59:59 | デジタル・インターネット

ちょっと前から、pythonを始めました

いや、ほんと、恥ずかしいくらいに、よくわかっていません。

ipythonが便利だっていうので、ipythonをインストールしたり、matplotlibがいいというのでインストールしてみたり。

ん~、グラフ、表示されないんですけど???

こうするみたいです。

% ipython --matplotlib=gtk
Python 2.7.8 (default, Oct 30 2014, 15:27:24)
Type "copyright", "credits" or "license" for more information.

IPython 2.0.0 -- An enhanced Interactive Python.
?         -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help      -> Python's own help system.
object?   -> Details about 'object', use 'object??' for extra details.
Gtk-Message: Failed to load module "canberra-gtk-module"
Gtk-Message: Failed to load module "gnomesegvhandler"

または

% python
import matplotlib
matplotlib.use('GTK')

とか。

matplotlib.use("GTKAgg") がいいみたいですが、よくわかりません

pkgsrcで、py-qt4をインストールしたら
% ipython --matplotlib=qt
% python
import matplotlib
matplotlib.use("QT4Agg")
もできるようになりました。

よくわかんないけど、まあ結果オーライ

 


(FreeBSD) pkg: Cannot solve problem using SAT solver:

2015-03-25 23:59:59 | デジタル・インターネット

FreeBSD 10から、pkgというパッケージ管理システムが全面的に導入され、また、portsじゃなくて、バイナリパッケージでも、けっこう使い物になるじゃん!
という感じになりました。

それでもやっぱり、portsを使って、ビルドオプションを変更してインストールしたいソフトウェアがあります。

というわけで、たいていはpkgでバイナリパッケージを使ってインストールやアップデートをするけど、ごく一部だけは、portsを使って、portmasterしてました。

しばらくの間は、なんとなくテキトーに手動でやりくりしていたのですが、pkg lockというコマンドを知りました。

マニュアル読めよ・・・RTFM

これはいい!と思ったのですが、pkg installとかしたとき

・・・省略・・・
apr-1.5.1.1.5.4 is locked and may not be modified
Checking integrity... done (1 conflicting)
pkg: Cannot solve problem using SAT solver:
cannot install package ja-libreoffice, remove it from request? [Y/n]:

だめじゃん、pkgコマンド、使えないじゃん。なにそれ、「Cannot solve problem using SAT solver」ってのは・・・

それにしても、SAT solverなんて、使ってたんですね、へー

 


(FreeBSD) ZFS: i/o error - all block copies unavailable

2015-03-24 23:59:59 | デジタル・インターネット

先月のことでしたか。悪夢のようなトラブル。

24時間運用しているとあるサーバの電源を落として、その後、電源オン。

ZFS: i/o error - all block copies unavailable
ZFS: i/o error - all block copies unavailable

Can't find /boot/zfsloader

FreeBSD/x86 boot
Default: zroot/ほにゃらら:/boot/kernel/kernel
boot:
ZFS: i/o error - all block copies unavailable

・・・は???

ブートしませんでした。

これ、全部ZFSだけにしてしまったマシンです。

別のサーバの力を借りて、disklessでブートさせてみました。

zpool import ほにゃらら すると、ちゃんとZFSなファイルシステムが見えてます。ZFSが壊れているってわけではないようです。

ただ、ブートしなくなっただけ。

ブートローダが壊れた?と思って

gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ほげ
うんぬん

とかやって、ブートローダを書き込んでみたけどだめ。

うーん、困った。

さらにネット検索して、解決方法を探る。

https://forums.freebsd.org/threads/zfs-i-o-error-all-block-copies-unavailable-after-upgrading-after-make-installkerne.26073/

/bootをコピーするとなおる、という話がでている
藁をもすがるつもりで、

mv /boot /boot-
mkdir /boot
cd /boot-
tar cf - . | tar xvf - -C /boot/

えい!

ブートしました。

えー!?

なぜなんでしょね

まだZFSには怖いところが残っているのか…

 


FreeBSDのbhyveがけっこう使い物になる!

2015-03-23 23:59:59 | デジタル・インターネット

とあるPC serverで、ZFSを使いたくってFreeBSDで動かしていたのですが、ZFSとファイルサーバだけじゃ暇しているので、仮想マシンでもうごかしましょ、ってことでVirtualBox。

ところが、なぜか、妙に動きが遅い。数秒動いて、数秒固まる、って感じ。固まっている間はCPUがブンブン回ってる。

これまで、けっこうVirtualBoxを使ってきているのですが、これは初めての現象。なんだこりゃ・・・、ということで、いつか直るだろうと思い、見なかったことにしていました

なんですが、ふと、bhyveのことを思い出して、

http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/virtualization-host-bhyve.html

を見ながら、やってみました。

このドキュメントですが、bridgeとかtapとか、ちょっとハードルが高いかもしれませんが、1~2回、試行錯誤しつつ、なんとか動きました。

いや、なんとか、といいますか、いったん覚えてしまえば、けっこー、あっさりと動いてしまいます。

というわけで、Ubuntu Server 14.04 LTSとかCentoS 7とかも、えっ?こんなにカンタンなの?というくらいに、何個も仮想マシンを立ち上げてしまいました。

 VMwareとかVirtualboxとかと比べると、bhyveは、舞台裏がそのまんますべて表に見えてしまっている、ってかんじで、中身むき出しの仮想化ソリューション、ってゆーかんじです。

今のところは、わかっている人だけ使って下さい、という感じでしょうか。

 


PHP Fatal error: Call to undefined function http_redirect()

2015-01-29 23:59:59 | デジタル・インターネット

先日のこと。

昔書いたPHPのコードを、ひさしぶりに実行しようとして、動かん!

httpdのエラーログを見ると

PHP Fatal error:  Call to undefined function http_redirect()

と出てる。

pecl-httpが有効になっていないのかな?

と思い、php -i したり、phpinfo()を実行してみると、有効になっている。

おかしいな~ということで、FreeBSDなのでportsにて、make patchして、ソースコードを眺めたり、strings http.soとかやってみると、http_redirectがどこにも無いような感じ。

うーん、どうなってんの?

わかりました。

以前はpecl-http-1.7.6だったのが、いつのまにか、pecl-http-2.1.4に変わってました。

でもって、バージョン1系とバージョン2系は、もうまったくの別物、っていうくらい変わってるようです。

というわけで、portsのディレクトリを見てみると、www/pecl-http1 なるものがあったので、そっちに入れ替えました。

これで解決。

あとで気がついたのですが、ports/UPDATINGにも、そういうことが書いてありました。

なんだかなーもー

 

 


(Windows7) Cドライブを、壊れたSSDからHDDへコピーしたけど、正常に起動しなかった

2014-11-28 23:59:59 | デジタル・インターネット

自分用メモ

SSDのプチフリがひどい~、もうだめだSSDをやめてHDDに戻ろう!

と思ったら、どうやらSSDが壊れてたっぽい、の件のつづき。

FreeBSDでddコマンドで、SSDにあったCドライブのパーティションを、まるごとHDDへコピーした。

そもそも、HDDのCドライブにあったパーティションをSSDにコピーしたものなので、パーティションサイズも、きっかり同じ。

そして、SSDを外して、HDDで起動。

ログオンしてみると、なんか感じがおかしい。

あれれ?

「このWindowsのコピーは正規品ではありません」

・・・そんなばかな 

エクスプローラーもでない。

うーん。

おっ、タスクマネージャーは出せたぞ。

いろいろいじってたら、どうやらCドライブになるべきドライブが、Hドライブになってしまっているようだ。

あ~、つい先日あった

(Windows) ログオンすると、すぐにログオフしてしまう

と同じ現象じゃないですか。

これはレジストリを書き換えれば直るはず。

regeditを実行・・・

・・・できませんね

Cドライブが無い状態では、コマンドの実行とかできないんでしょうね。

うーん。

おや、コマンドプロンプトは出せたぞ。まー、何もできないけど、たしかにHドライブだ。

この問題を直すには、「レジストリを不用意に書き換えてWindowsが正常に起動しなくなった場合のレジストリの修正方法」と同じでいいみたい。

ネット検索してやってみました。

Windows7を起動するときに、F8キーを連打(?)して、「スタートアップ修復」(?)とかいうので立ち上げる。

すると、HDDではなく、RAMディスクみたいなやつで、Windowsが起動してくる。

そのWindowsでregeditを実行。

そこで見えているレジストリは、別のWindowsなので、そこを見てもしかたない。

メニューコマンドの「ハイプの読み込み」で、HDD上にあるレジストリのファイルを読み込む。このときに、読み込み場所を指定しろ、って言われるけど、適当でいいらしい。

レジストリのファイルはいくつかあるらしいけど、今回はここのSYSTEMが該当する。

あとは、MountedDevicesのところを、この前と同様に書き換え。

「ハイプのアンロード」をすると、HDDに書き戻されるらしい。

そして、再起動。

直りました

 


SSD、壊れた

2014-11-19 23:59:59 | デジタル・インターネット

自宅で一番よく使うPCのシステム用のHDDをSSDに交換して、快適になった~と思ってから、1年ちょっと経過したころ。

WebブラウザのFirefoxを使っているとき、とくにGoogleマップを表示させたりとか、Thunderbirdを立ち上げたあととか、妙に動作が遅い、いや、反応がなくなる、という現象が起きることに気がつき、

う~ん、これが「ぷちフリ」ってやつですか

と思ってたのですが、直す方法もわからないので(ファームウェアもすでに最新バージョンだった)、そのままだましだまし使い続けること、さらに1年ちょっと。

先日、とうとうたまりかねて、SSDやめて、HDDにもどす!

ということで、ネットワークブートでFreeBSDを立ち上げて、ddでコピー。

すると!

(ada2:ahcich5:0:0:0): READ_FPDMA_QUEUED. ACB: 60 40 00 7e 1b 40 04 00 00 00 00 00
(ada2:ahcich5:0:0:0): CAM status: ATA Status Error
(ada2:ahcich5:0:0:0): ATA status: 41 (DRDY ERR), error: 40 (UNC )
(ada2:ahcich5:0:0:0): RES: 41 40 00 7e 1b 00 04 00 00 40 00
(ada2:ahcich5:0:0:0): Retrying command
(ada2:ahcich5:0:0:0): READ_FPDMA_QUEUED. ACB: 60 40 00 7e 1b 40 04 00 00 00 00 00
(ada2:ahcich5:0:0:0): CAM status: ATA Status Error
(ada2:ahcich5:0:0:0): ATA status: 41 (DRDY ERR), error: 40 (UNC )
(ada2:ahcich5:0:0:0): RES: 41 40 00 7e 1b 00 04 00 00 40 00
(ada2:ahcich5:0:0:0): Retrying command
(ada2:ahcich5:0:0:0): READ_FPDMA_QUEUED. ACB: 60 40 00 7e 1b 40 04 00 00 00 00 00
(ada2:ahcich5:0:0:0): CAM status: ATA Status Error
(ada2:ahcich5:0:0:0): ATA status: 41 (DRDY ERR), error: 40 (UNC )
(ada2:ahcich5:0:0:0): RES: 41 40 00 7e 1b 00 04 00 00 40 00
(ada2:ahcich5:0:0:0): Retrying command
(ada2:ahcich5:0:0:0): READ_FPDMA_QUEUED. ACB: 60 40 00 7e 1b 40 04 00 00 00 00 00
(ada2:ahcich5:0:0:0): CAM status: ATA Status Error
(ada2:ahcich5:0:0:0): ATA status: 41 (DRDY ERR), error: 40 (UNC )
(ada2:ahcich5:0:0:0): RES: 41 40 00 7e 1b 00 04 00 00 40 00
(ada2:ahcich5:0:0:0): Retrying command
(ada2:ahcich5:0:0:0): READ_FPDMA_QUEUED. ACB: 60 40 00 7e 1b 40 04 00 00 00 00 00
(ada2:ahcich5:0:0:0): CAM status: ATA Status Error
(ada2:ahcich5:0:0:0): ATA status: 41 (DRDY ERR), error: 40 (UNC )
(ada2:ahcich5:0:0:0): RES: 41 40 00 7e 1b 00 04 00 00 40 00
(ada2:ahcich5:0:0:0): Error 5, Retries exhausted

SSDで、エラーでてるじゃん・・・

ぷちフリじゃなくて、障害だったんですか?!

Windows7では何もエラーはでてませんでしたけど。