VolumioにNAS(samba)が登録出来ないなんて事が起きた
> + show advance options を開く.
> Mount flags の欄に,",sec=ntlm" を追加.
> これは mount.cifs のデフォルトのはずなのだが,なぜか明示的に指定しないと接続できない.
これが原因でした。下記の場所に書いてあった通りだけど一応メモ。
http://yjo-blog.blogspot.jp/2015/02/volumio-15-apt-get-upgrade-nas-mount.html
2016年4月2日土曜日
2014年9月29日月曜日
MicroServer N54LにESXiを入れる
NTT-Xのセールで数台購入していたMicroServer N54LにESXiを入れてみる。
とりあえずメモリ4GB/HDD500GBの無印構成のままいきます。
この機種はデフォルトは光学ドライブが無い&何かレールが要りそうな雰囲気だったのでインストーラの起動にはTrancesendの8GBのUSBメモリを使用。起動メモリの作成にはいろんなサイトに書かれているのと同様にUNetbootinを使用します。
まず、ここでハマりポイント1。2014/09/29現在フリーのESXiは5.5Update2が最新ですが、このバージョンを使用するとインストーラのブートの途中で止まってしまいました。原因は良く分かりませんがハードのチェックに引っかかってしまっている?誰か原因知っていたら教えて下さい。
と、そんなわけで5.5Update1を使用します。こちらは普通に起動できますが上記のツールを使用すると何やら上書きするかというメッセージが出るのでYesを押して上書きをしてください。(しないとこれまた起動に失敗するメモリが出来上がると思います。Update2では少なくともそうだった。)
これで作成したメモリを本体にさして起動をかけます。今回はそのUSBメモリをそのまま起動ディスクとして使う構成にしようと思うので蓋を開いてマザーにザクッとさしてそこから起動します。
起動そのものは出荷時の状態ではBIOS設定等をいじる必要も無く勝手にUSBメモリから起動すると思うのですが、ここでハマりポイント2。標準構成の4GBのままの場合はインストールプロセスの終盤でメモリサイズのチェックにひっかかるのでちょっとしたパッチを充てる必要があります。
インストーラを起動後、「Welcome to the VMware ESXi 5.5.0 Installation」と出てきたところで、
おもむろにALT+F1を押す。コンソールに落ちるのでID:root / PW:なし でログイン。
1105行目
を
に修正して、保存、終了。その後インストーラのプロセスを再起動します。
でプロセスIDを確認し
上記コマンドをうつと先ほどのWelcome画面にくるので、ライセンスに同意等をしインストール先を聞かれるのでインストーラを起動しているUSBメモリを選択します。
その後
これでインストールが始まります。暫く放置してインストール完了後リブートをすると勝手にUSBメモリから起動して使える状態になります。
その後の設定はクライアントから弄る事になりますが、今回はここまでで。
とりあえずメモリ4GB/HDD500GBの無印構成のままいきます。
この機種はデフォルトは光学ドライブが無い&何かレールが要りそうな雰囲気だったのでインストーラの起動にはTrancesendの8GBのUSBメモリを使用。起動メモリの作成にはいろんなサイトに書かれているのと同様にUNetbootinを使用します。
まず、ここでハマりポイント1。2014/09/29現在フリーのESXiは5.5Update2が最新ですが、このバージョンを使用するとインストーラのブートの途中で止まってしまいました。原因は良く分かりませんがハードのチェックに引っかかってしまっている?誰か原因知っていたら教えて下さい。
と、そんなわけで5.5Update1を使用します。こちらは普通に起動できますが上記のツールを使用すると何やら上書きするかというメッセージが出るのでYesを押して上書きをしてください。(しないとこれまた起動に失敗するメモリが出来上がると思います。Update2では少なくともそうだった。)
これで作成したメモリを本体にさして起動をかけます。今回はそのUSBメモリをそのまま起動ディスクとして使う構成にしようと思うので蓋を開いてマザーにザクッとさしてそこから起動します。
起動そのものは出荷時の状態ではBIOS設定等をいじる必要も無く勝手にUSBメモリから起動すると思うのですが、ここでハマりポイント2。標準構成の4GBのままの場合はインストールプロセスの終盤でメモリサイズのチェックにひっかかるのでちょっとしたパッチを充てる必要があります。
インストーラを起動後、「Welcome to the VMware ESXi 5.5.0 Installation」と出てきたところで、
おもむろにALT+F1を押す。コンソールに落ちるのでID:root / PW:なし でログイン。
# cd /usr/lib/vmware/weasel/util
# rm upgrade_precheck.pyc
# cp upgrade_precheck.py upgrade_precheck.py.old
# vi upgrader_precheck.py
1105行目
MEM_MIN_SIZE = (4 * 1024) * SIZE_MiB
を
MEM_MIN_SIZE = (1 * 1024) * SIZE_MiB
に修正して、保存、終了。その後インストーラのプロセスを再起動します。
# ps -c | grep weasel
でプロセスIDを確認し
# kill -9 'PID' ('PID'の部分は上記コマンドで確認したID。例えば"kill -9 35795"みたいな感じ)
上記コマンドをうつと先ほどのWelcome画面にくるので、ライセンスに同意等をしインストール先を聞かれるのでインストーラを起動しているUSBメモリを選択します。
その後
- キーボードは日本語キーボード(繋いでいるものに合わせて)
- ルートのパスワードは好きな物を
- インストールするかを聞かれるので指示に従う
これでインストールが始まります。暫く放置してインストール完了後リブートをすると勝手にUSBメモリから起動して使える状態になります。
その後の設定はクライアントから弄る事になりますが、今回はここまでで。
2014年3月6日木曜日
MessageBoxをプログラムから閉じたい
WPFではまってみたのでメモを(多分WinFormsでもWin32でも通じる話?)
◆やりたい事
MessageBox.Showしている時に割り込み処理をしたい。つまりMessageBoxをユーザー操作無しで閉じたい。
◆はまった背景
まず、普通のWindowをダイアログとして表示している場合はとても簡単。Closeしてやるだけです。が、MessageBox.Showは同期処理になっている上に元々Closeというメソッドも存在しません。
じゃー、どうすんのって話でちょっと考えてみた&調べてみた結果
1.カスタムMessageBoxを実装する
これが間違いないけど作るのも差し替えるのも面倒くさい(いや、それほどでもないか)
2.MessageBoxのcaptionを使ってFindWindow -> SendMessageでWM_CLOSEする
Win32なアプローチ・・・.NET的には美しくないけど基本的にこれしか無さそうです
◆さらにズブズブはまる
で、2番のアプローチで検討してみるという事でサクサクっと人様のコードをコピペしてみます。
こやつ(MessageBoxEx.Close("hoge");)を呼んでみると・・・閉じない!
~~ ここでしばらくハマる ~~
◆結論として
まぁ、結局何が問題だったのかというと今回対象となるアプリはMessageBoxを
・単にメッセージを表示
・YesNoで選択させる
という2つの使い方をしています。この後者が曲者だった様です。
というのもYesNoの二択の場合双方に対して処理が必要となる選択なのでただ閉じるという選択肢はユルサン!って事らしいのです。(良く見てみるとYesNoの時はクローズボタン押せなくなってマス)
OKCancelやYesNoCancelなどCancel(やっぱやーめた)という選択肢を与えてやると上記のWM_CLOSEで閉じられるようになるという話みたいです。
言われてみれば、あーなるほど!って話なんだけど分からないよねぇ・・・。
◆でもやっぱりYesNoのMessageBoxを使いたい!
んー、やっぱCancel入ってくると少し意味合い変わるし、OKCancelも違うし・・・。という訳でどうすべきかという話。
話は簡単。
ならNoを押せば良いじゃない
というわけで、こんなんなりました。
このコード「も」呼んであげればどちらでも閉められますな!
◆やりたい事
MessageBox.Showしている時に割り込み処理をしたい。つまりMessageBoxをユーザー操作無しで閉じたい。
◆はまった背景
まず、普通のWindowをダイアログとして表示している場合はとても簡単。Closeしてやるだけです。が、MessageBox.Showは同期処理になっている上に元々Closeというメソッドも存在しません。
じゃー、どうすんのって話でちょっと考えてみた&調べてみた結果
1.カスタムMessageBoxを実装する
これが間違いないけど作るのも差し替えるのも面倒くさい(いや、それほどでもないか)
2.MessageBoxのcaptionを使ってFindWindow -> SendMessageでWM_CLOSEする
Win32なアプローチ・・・.NET的には美しくないけど基本的にこれしか無さそうです
◆さらにズブズブはまる
で、2番のアプローチで検討してみるという事でサクサクっと人様のコードをコピペしてみます。
public class MessageBoxEx { private const int WM_CLOSE = 0x0010; [DllImport("user32.dll", SetLastError = true)] static extern IntPtr FindWindow(string lpClassName, string lpWindowName); [DllImport("user32.dll", EntryPoint = "SendMessage", CharSet = CharSet.Unicode)] internal static extern int SendMessage(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam); public static void Close(string caption) { IntPtr mbWnd = FindWindow(null, caption); if (mbWnd != IntPtr.Zero) { SendMessage(mbWnd, WM_CLOSE, IntPtr.Zero, IntPtr.Zero); } } }
こやつ(MessageBoxEx.Close("hoge");)を呼んでみると・・・閉じない!
~~ ここでしばらくハマる ~~
◆結論として
まぁ、結局何が問題だったのかというと今回対象となるアプリはMessageBoxを
・単にメッセージを表示
・YesNoで選択させる
という2つの使い方をしています。この後者が曲者だった様です。
というのもYesNoの二択の場合双方に対して処理が必要となる選択なのでただ閉じるという選択肢はユルサン!って事らしいのです。(良く見てみるとYesNoの時はクローズボタン押せなくなってマス)
OKCancelやYesNoCancelなどCancel(やっぱやーめた)という選択肢を与えてやると上記のWM_CLOSEで閉じられるようになるという話みたいです。
言われてみれば、あーなるほど!って話なんだけど分からないよねぇ・・・。
◆でもやっぱりYesNoのMessageBoxを使いたい!
んー、やっぱCancel入ってくると少し意味合い変わるし、OKCancelも違うし・・・。という訳でどうすべきかという話。
話は簡単。
ならNoを押せば良いじゃない
というわけで、こんなんなりました。
private const int WM_COMMAND = 0x00000111; private const int ID_NO = 7; SendMessage(mbWnd, WM_COMMAND, new IntPtr(ID_NO), IntPtr.Zero);
このコード「も」呼んであげればどちらでも閉められますな!
2013年7月16日火曜日
iTunesのファイルを外部ディスクに追い出す
現在自宅のメインマシンはMacBookAir(以下MBA)のみみたいな状況になっています。で、携帯はiPhone、タブレットはiPadという事で当然のことながらiTunesの管理はこのMBAを使う必要があります。
で、困ったことにこのMBAは世代が古いので外部ストレージへのアクセスは無線経由もしくはUSB2.0からでないと出来ません。内蔵SSDは128GBのモデルなのでちょっとしたデータを保存しておく分には問題ないですが写真やiTunesの様なメディアファイルはディスクを激しく消耗します。
(今頃ですが)そして最近気付いたのは・・・実はiTunesって外部ディスクにライブラリ(メディアデータ)を保存する設定を指定てもiPhoneとかのバックアップファイルは内蔵ディスク固定というゴミ仕様。iTunes立ち上げる時以外は不要のこのデータが何故内蔵ディスク固定なのか理解に苦しみますが、こういう抜けた所が多いのもAppleのソフトの特徴なので致し方ないところですか・・・。
で、まぁ要はリンク張っちまえば外部ディスクに逃がせるだろって話でサクサクっとどかしてしまいます。移動してリンク貼るだけ。簡単。
今回は外部ディスクのiTunesのフォルダにまとめちゃいましたが保存先はお好みで。また、ディスクを換えてパスが変わる場合はリンクを貼り直すためにリンクを消してから二行目のリンク貼る処理をすれば良いです。
なんか40GBも空いたよ! 1/3もディスク専有していたとかマジで罪な仕様ですな。MBAのコンセプト考えるとこういうアプリが存在自体ちょっと信じられませんな。まぁ、マーフィーの法則通り気付いたらまた残量0に近づくんですけどね・・・。
で、困ったことにこのMBAは世代が古いので外部ストレージへのアクセスは無線経由もしくはUSB2.0からでないと出来ません。内蔵SSDは128GBのモデルなのでちょっとしたデータを保存しておく分には問題ないですが写真やiTunesの様なメディアファイルはディスクを激しく消耗します。
(今頃ですが)そして最近気付いたのは・・・実はiTunesって外部ディスクにライブラリ(メディアデータ)を保存する設定を指定てもiPhoneとかのバックアップファイルは内蔵ディスク固定というゴミ仕様。iTunes立ち上げる時以外は不要のこのデータが何故内蔵ディスク固定なのか理解に苦しみますが、こういう抜けた所が多いのもAppleのソフトの特徴なので致し方ないところですか・・・。
で、まぁ要はリンク張っちまえば外部ディスクに逃がせるだろって話でサクサクっとどかしてしまいます。移動してリンク貼るだけ。簡単。
$ mv /Users/<ユーザー名>/Library/Application\ Support/MobileSync /Volumes/<外部HDD名>/iTunes/MobileSync/
$ ln -s /Volumes/<外部HDD名>/iTunes/MobileSync/ /Users/<ユーザー名>/Library/Application\ Support/MobileSync
今回は外部ディスクのiTunesのフォルダにまとめちゃいましたが保存先はお好みで。また、ディスクを換えてパスが変わる場合はリンクを貼り直すためにリンクを消してから二行目のリンク貼る処理をすれば良いです。
$ rm /Users/<ユーザー名>/Library/Application\ Support/MobileSync
$ ln -s /Volumes/<外部HDD名>/iTunes/MobileSync/ /Users/<ユーザー名>/Library/Application\ Support/MobileSync
なんか40GBも空いたよ! 1/3もディスク専有していたとかマジで罪な仕様ですな。MBAのコンセプト考えるとこういうアプリが存在自体ちょっと信じられませんな。まぁ、マーフィーの法則通り気付いたらまた残量0に近づくんですけどね・・・。
以上忘備録でした。
2013年7月12日金曜日
Solarisでのユーザー追加
で、Solarisネタを続ける。
いっぱいあるillumosの中から
この2つをチョイス。が、VMware PlayerだとOmniOSはインストールが先に進んでくれないのでXStreamOSを入れてみます。同じインストーラっぽいけどこっちはちゃんと先に進んですんなりインストールが完了しましたとさ。
で、Solarisの事は全く分からない人なので
ユーザー追加するのどうやるんだろ!?
適当にコマンドを叩いてみる
エラーになるやん・・・
エラーになりますん・・・
どうしてー!?
http://d.hatena.ne.jp/yohei-a/20081231/1230693019
どうもこういう話みたいです。
ユーザー追加のコマンドあるし、ユーザーディレクトリを作成するオプションもあるのに不思議だねぇ・・・。
一応ちょっとここの書きこみ通りだとダメだったんで補足
なんかファイルが変わっているみたいね
とりあえず今日はこれで満足なのであった・・・。
いっぱいあるillumosの中から
- OmniOS ・・・ サーバー用の最小限の構成。こういうの好き。
- XStreamOS ・・・ クラウド、Webの開発用
この2つをチョイス。が、VMware PlayerだとOmniOSはインストールが先に進んでくれないのでXStreamOSを入れてみます。同じインストーラっぽいけどこっちはちゃんと先に進んですんなりインストールが完了しましたとさ。
で、Solarisの事は全く分からない人なので
ユーザー追加するのどうやるんだろ!?
適当にコマンドを叩いてみる
# useradd -m hoge
エラーになるやん・・・
# useradd hoge
# mkdir /home/hoge
エラーになりますん・・・
どうしてー!?
http://d.hatena.ne.jp/yohei-a/20081231/1230693019
どうもこういう話みたいです。
ユーザー追加のコマンドあるし、ユーザーディレクトリを作成するオプションもあるのに不思議だねぇ・・・。
一応ちょっとここの書きこみ通りだとダメだったんで補足
# useradd hoge
# mkdir -p /export/home/users/hoge
# chown hoge:other /export/home/users/hoge
# vi /etc/auto_home+auto_home
hoge localhost:/export/home/users/hoge <-- 追記
なんかファイルが変わっているみたいね
とりあえず今日はこれで満足なのであった・・・。
OpenSolarisの末裔達
ちょっと脱線してSolarisに手を出してみたよという話。
まず、一般人にはJavaで有名なSUN Microsystemsという会社があってSolarisというOSがありました。最近ストレージ系で標準になりつつあるzfsというファイルシステムはここ由来ですね。
とりあえずストレージサーバを自前で組むならSolarisを入れるのが鉄板と聞いています。で、そのSolarisの最新は11でExpress版というフリーっぽい物もある様です(ちゃんとライセンス調べてないけど一応ダウンロード出来てVMwareでも動くのは確認した)
まぁ、今回の話は全然それには関係無くて・・・w
そのSolarisという市販OSにはOpenSolarisというオープンソース版がありました。これはSUNが提供していたものなわけですが・・・そのSUNがOracleに買われた事によりOpenSolarisは終焉を迎えます。元々OpenSolaris自体もアクティブな感じではなかったのですが止めを刺してくれました。ホントろくなことしないな、この会社は。
で、ここで血脈が絶たれていたと思っていたのですが、実はまだ生き残っている事が判明。とりあえずこんな感じみたいです。
いっぱいありすぎだよママン・・・。
とりあえずZFSを使用しようとするとLinuxのfuseとかは除くとSolaris、FreeBSD(とその派生)位しか選択肢が無いという印象だったんですがこちらも選択肢としてはアリかも??問題はillumosカーネルがどれだけ安定しているかなんですけどね。
まず、一般人にはJavaで有名なSUN Microsystemsという会社があってSolarisというOSがありました。最近ストレージ系で標準になりつつあるzfsというファイルシステムはここ由来ですね。
とりあえずストレージサーバを自前で組むならSolarisを入れるのが鉄板と聞いています。で、そのSolarisの最新は11でExpress版というフリーっぽい物もある様です(ちゃんとライセンス調べてないけど一応ダウンロード出来てVMwareでも動くのは確認した)
まぁ、今回の話は全然それには関係無くて・・・w
そのSolarisという市販OSにはOpenSolarisというオープンソース版がありました。これはSUNが提供していたものなわけですが・・・そのSUNがOracleに買われた事によりOpenSolarisは終焉を迎えます。元々OpenSolaris自体もアクティブな感じではなかったのですが止めを刺してくれました。ホントろくなことしないな、この会社は。
で、ここで血脈が絶たれていたと思っていたのですが、実はまだ生き残っている事が判明。とりあえずこんな感じみたいです。
いっぱいありすぎだよママン・・・。
とりあえずZFSを使用しようとするとLinuxのfuseとかは除くとSolaris、FreeBSD(とその派生)位しか選択肢が無いという印象だったんですがこちらも選択肢としてはアリかも??問題はillumosカーネルがどれだけ安定しているかなんですけどね。
VMware上のlinuxでカーネルの再構築 その3 もう少し煮つめてみよう編
Hyper-V用のカーネルを作る話をもう少し続けてみます。
どうもパッケージ名に関してはこんな感じで良さそう
これで「linux-image-3.10.0-hyperv_0.2_amd64.deb」という名前の物がはかれます。参考にしたページは古いのかこのオプションがどちらかしか入っておらず、--revisionの方は数字からスタートじゃないとおこられるし、--append-to-versionだけつけるとなんかバージョン番号の所にも同じ文字が入ってしまって長い名前が生成されてしまうという状況で前回のPOSTにはこの辺のオプションを含めていませんでした。やっぱり情報の鮮度って重要ですな・・・。
その2で作ったカーネルが何故期待した動きにならないのかという点。
まず、CONFIG_MEMORY_HOTPLUGがオンになっていないのではないかという指摘。確認確認・・・。入ってないじゃんorz これが無いとMemory Hot-addがちゃんと動かないのかな?
とりあえず下記の場所で設定出来る模様。
その他忘れ物達
大事な物忘れていましたなorz
あとdpkg -iで入れた時に/bootにinitrd.img-3.10.0-hypervが存在しない場合は以下の2ステップが必要でした。
まぁ、ここまでしてみたけどhot-addに関しては動いていない感じ。さらにいくつかデーモン動かして様子を見てみるとなんかネットワークが死亡する現象が。ダメだなぁこれは。
一応素のDebian7.1のカーネルだと動的メモリ拡張は動かないけど安定度という意味では普通に動いている様に見えるのでこちらの設定+Hyper-V関連というのも作ってみました。
結果・・・
すげーでかくなったw
でも結局安定せず同じように死んでしまいますorz
さてどうしたものかなぁ。
あ、ちなみにmemory hot-addに関してはHyper-V 2012 R2からじゃないと動かないんだ疑惑も出ていますがVMware上にHyper-Vサーバを構築という無茶をしてみた感じ動きは変わらずという感じ。さてはて・・・。
どうもパッケージ名に関してはこんな感じで良さそう
$ time sudo make-kpkg --revision=0.2 --append-to-version=-hyperv kernel_image
これで「linux-image-3.10.0-hyperv_0.2_amd64.deb」という名前の物がはかれます。参考にしたページは古いのかこのオプションがどちらかしか入っておらず、--revisionの方は数字からスタートじゃないとおこられるし、--append-to-versionだけつけるとなんかバージョン番号の所にも同じ文字が入ってしまって長い名前が生成されてしまうという状況で前回のPOSTにはこの辺のオプションを含めていませんでした。やっぱり情報の鮮度って重要ですな・・・。
<閑話休題>
その2で作ったカーネルが何故期待した動きにならないのかという点。
まず、CONFIG_MEMORY_HOTPLUGがオンになっていないのではないかという指摘。確認確認・・・。入ってないじゃんorz これが無いとMemory Hot-addがちゃんと動かないのかな?
とりあえず下記の場所で設定出来る模様。
Processor type and features --->
[*] Allow for memory hot-add
[*] Allow for memory hot-remove
その他忘れ物達
Device Drivers --->
SCSI device support --->
[*] SCSI low-level drivers --->
<M> Microsoft Hyper-V virtual storage driver
大事な物忘れていましたなorz
あとdpkg -iで入れた時に/bootにinitrd.img-3.10.0-hypervが存在しない場合は以下の2ステップが必要でした。
$sudo depmod3.10.0-hyperv
$ sudo mkinitramfs -o /boot/initrd.img-3.10.0-hyperv3.10.0-hyperv
$ sudo update-grub
まぁ、ここまでしてみたけどhot-addに関しては動いていない感じ。さらにいくつかデーモン動かして様子を見てみるとなんかネットワークが死亡する現象が。ダメだなぁこれは。
一応素のDebian7.1のカーネルだと動的メモリ拡張は動かないけど安定度という意味では普通に動いている様に見えるのでこちらの設定+Hyper-V関連というのも作ってみました。
結果・・・
-rw-r--r-- 1 root root 4994468 Jul 8 14:31 linux-image-3.10.0-hyperv_0.3_amd64.deb
-rw-r--r-- 1 root root 31629920 Jul 12 14:37 linux-image-3.10.0-hyperv_0.4_amd64.deb
すげーでかくなったw
でも結局安定せず同じように死んでしまいますorz
さてどうしたものかなぁ。
あ、ちなみにmemory hot-addに関してはHyper-V 2012 R2からじゃないと動かないんだ疑惑も出ていますがVMware上にHyper-Vサーバを構築という無茶をしてみた感じ動きは変わらずという感じ。さてはて・・・。
登録:
投稿 (Atom)
