2017年08月06日

システムディスクの回復に使用できるディスクが見つかりません (0x80042414)の原因

一日悩んだので、同じ症状にハマった人用にメモを残しておきます。

事象でgoogle先生を検索すると、大抵は元のHDDよりSSDのが小さいからだ、
パーテンションを小さくしてからバックアップを取り直すとよい。 っていうのにあたると思います。
これは事実で同じエラーが出ます。
しかし私の場合は、元が120GBから360GBへの換装だったので、該当しません。
ドライブのエラーもありませんし原因は別でした。

原因

リストア先のディスクがシステムディスクとして認識されておらず
別のバスに接続されているデータドライブをシステムディスクだと認識されていたために
リストア対象から除外されているので当該のメッセージに至っていた。


何を言っているのか順番に説明します。
まず私のPCにはSSD(システム)、SSD(BF4用)、HDD(データドライブ)、USB-HDD(バックアップ用)と
4機接続されています。今回はSSD(システム)の換装なので、リストア時にSSD(BF4用)、データHDDは
リストア対象から除外するように選択しました。(USB-HDDはバックアップ格納場所なので自動除外)
そしてリストア実行すると、表題のメッセージがでます。
理由はSSD(BF4用)にリストアをしようとしているが、除外されている、という状態に陥っていました。
事象の確認のために一旦リストアをキャンセルし、コマンドプロンプトを開きます。
(システム回復メニューから、コマンドプロンプト)

(1)diskpart を実行します。
(2)list disk と入力します。

搭載されているディスク一覧が出力されます。換装しようとしているSSDがディスク何番と認識されているか
確認してください。

(3)select disk=system と入力します。

windows がシステムディスクだと認識している番号が表示されます。
換装しようとしているSSDのディスク番号以外が表示された場合は、同じ事象です。

対応方法

換装しようとしているディスクの起動順序を上げて、システムディスクと認識させましょう
マザーボードによって操作は異なるので、お使いのマザーのマニュアルを参照して変更します。
(BOOTメニューのHARDDRIVE BBS Priority のようなところです)

BIOSを変更し、再起動後、再びdiskpartからシステムディスクを確認し
換装対象のSSDがシステムディスクと認識されていればOKです。
あとは通常のリストア操作で大丈夫です。

市販のPCの場合はディスクは1機のことが多いので、こういうレア事象には至らないのかもですね。

こちらのyoutubeに大変助けられました。

posted by koteitan at 13:39| Comment(0) | その他備忘録 | このブログの読者になる | 更新情報をチェックする

2017年08月04日

シェルスクリプトのデバッグ

めちゃくちゃいい情報をみつけた。
これは素晴らしい。

超ウィザード級ハッカーのたのしみ
異常時にちゃんと止まるシェルスクリプト

kshでも使えそうです。\(^o^)/


posted by koteitan at 17:00| Comment(0) | プログラム全般 | このブログの読者になる | 更新情報をチェックする

2017年07月31日

Windows7をUSBHDDドライブからリストアする時の注意点

結論 HDDはUSB2.0ポートに挿しなおしておこう

USB3.0だとドライバを読ませなくてはダメなので、MBのメーカーからダウンロードしてきたりDVDに書き込んだりとか
めんどくさいので。(´・ω・`)

ちゃんとシステムイメージを含むWindowsBackUpを取っているなら、

(1)修復メディアからブート
(2)システムイメージで修復
(3)対象ドライブを選ぶ(データディスクなどは破損していない場合などは除外すると早い)

破損したわけじゃなく、Cドライブの容量がいっぱいいっぱいなので、
SSDを換装しただけですけどね(120GBから480GB)

一時ファイルとかをCのユーザー領域とかに作るソフト多いもんなー・・。

posted by koteitan at 16:34| Comment(0) | TrackBack(0) | その他備忘録 | このブログの読者になる | 更新情報をチェックする

bashでfindでループで

kshだと以下はちゃんと動く

hoge=0
find aaaa | while read f
do
   let hoge=hoge+1
done

if ($hoge -ne 0];
then
  echo "not zero!"
fi

bash ではこう書かないとだめ(パイプの先が別プロセスになるから)
hoge=0
while read f
do
   let hoge=hoge+1
done < <(find aaa)

if ($hoge -ne 0];
then
  echo "not zero!"
fi

aixばっかりやってるとあきまへんなぁ。(´・ω・`)

参考

posted by koteitan at 16:25| Comment(0) | TrackBack(0) | その他備忘録 | このブログの読者になる | 更新情報をチェックする

2017年07月26日

ISO規格覚えられん・・・(´・ω・`)

語呂合わせとかないものかなぁ・・。
中身は覚えられても、番号がきつい。

【ISO/IEC 17788】  クラウドコンピューティングの概要と用語を規定した国際規格
【ISO/IEC 24759】  暗号モジュールの試験要求事項
【ISO/IEC 27036-4】サプライヤリレーションシップの情報セキュリティ−第4部:クラウドサービスのセキュリティの指針
【ISO 22313】      事業継続マネジメントシステム−手引き

【ISO 26000】 SR(社会的責任)、CSR(企業の社会責任)に関する規格
JIS Q 15001     個人情報保護マネジメント(Pマーク認証基準)
JIS Q 27001  譲歩セキュリティマネジメントシステム(ISMS認証基準)

ほかにもまだまだあるんだよなぁ・・。
posted by koteitan at 17:02| Comment(0) | TrackBack(0) | セキュリティ | このブログの読者になる | 更新情報をチェックする

2017年06月29日

grep 小技メモ

grep -n --text -A 30 -B 1 -E "A|B|C|D" * | grep -E "E|F"

-n 行番号表示
--text ええからテキストと思え
-A 30 ヒットした位置から30行後ろまで表示
-B 1 ヒットした位置から1行前まで表示
-E 正規表現


python なりなんなりでscript書けばいいだけなんだけども。( ´∀`)
まぁ、そこまでじゃないなら楽なほうがいいかと。
posted by koteitan at 14:41| Comment(0) | TrackBack(0) | その他備忘録 | このブログの読者になる | 更新情報をチェックする

2017年06月28日

相性問題なのか・・?

最近コンタクトレンズに変えたのだけれども、
ジョンソン・アンド・ジョンソンのワンデーアキュビューなら、快適だったんだけど、
経済的じゃないので、ボシュロムの2Weekに変えたら、もう焦点が合わない合わない (;´Д`)
3ヶ月もこのままは辛いなぁ・・。

ぼやけてしょうがないので、仕事が辛すぎる。
各メーカー1枚ずつお試しキットとかあればいいのにな。


posted by koteitan at 14:55| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

TOMCAT port あれこれ


(1)複数ポートで待ち受けるには

 confにあるserver.xmlを開き、<service>のタグ部分を増やせばOK。
 もともとある8080を参考に、各種ポートが重複しないようにすること。
 サービス名やエンジン名も注意する。
 各サービス毎に稼動するアプリケーションを変更したい場合(これが目的で分けると思う)
 <Host>タグのappBaseを変更すること。
 変更した名前のディレクトリを作成して、そこにモジュールを配置すればめでたくポートでアプリを
 分けられる。(1つのマネージャで複数Serviceを、みたいなのはできないっぽい。そこまで凝ったことを
 したいならWebSphereでどうぞか。)
 
 こんな感じですかね
   <Service name="Catalina">
 
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
    <Engine name="Catalina" defaultHost="localhost">
      <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
             resourceName="UserDatabase"/>
      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">
      </Host>
    </Engine>
  </Service>

  <Service name="Catalina2">
 
    <Connector port="8081" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8444" />
    <Connector port="8010" protocol="AJP/1.3" redirectPort="8444" />
    <Engine name="Catalina2" defaultHost="localhost">
      <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
             resourceName="UserDatabase"/>
      <Host name="localhost"  appBase="webapps2"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">
      </Host>
    </Engine>
  </Service>

 ポート番号を80などのwell known なものにしたときは、実行ユーザーによっては
 権限のエラーになる。
 この場合、rootで起動させるか、iptablesでポートフォワードさせて、
 <Connector>にproxyPort="80"を設定する
 
 
(2)不要ポート

 ajpが要らない場合は、コメント化しておくとポートの節約になる。

(3)shutdownポート

 デフォルトでは8005が停止ポートになっており、
 ここに"SHUTDOWN"の文字を送り込むと、tomcatが停止する。
 
 例
 echo "SHUTDOWN" | nc localhost 8005
 
 デフォルトではlocalhostのみにバインドされているが、
 認証もへったくれもないので、ちょっと気持ち悪い。
 
 対策としては、
 
 (1)ポートを変える -> スキャンされたら意味ない
 (2)停止用文字を変更する ->shutdown="SHUTDOWN"をshutdown="ICANFLY"のように推測されないものに変更する
 (3)ポート自体を無効化する ->port="-1" ただしshutdown.shが使えなくなる(killするしかなくなる)
 
 どれもこれも一長一短なので、FWやiptableなども組み合わせて守るべきなんでしょうね。
 
 
posted by koteitan at 14:44| Comment(0) | TrackBack(0) | その他備忘録 | このブログの読者になる | 更新情報をチェックする

2017年06月02日

並列処理とマルチコアと

CPUが余っているじゃないか! なんで使わないんだ!

と激高されましても、、、(;´Д`) アムダールの法則いうものがありましてね、 並列化できるような問題でなければいくらマルチコアでも意味ないんすよ。。。

1 ( 1 p ) + p n {1} over {(1-p)+ {p} over {n} }
くわしくはwikiでもどうぞかな。

これ、応用情報とかに出るやつやんね。 んで、最近のアーキテクトだとキャッシュメモリの速さとかメモリバンドの問題で、 必ずしもこうはならない、みたいな感じ。

mathML初めてつかってみたがいい感じですな。
posted by koteitan at 11:39| Comment(0) | TrackBack(0) | 情報処理 | このブログの読者になる | 更新情報をチェックする

2017年05月29日

文字列の結合の細かい話

ご存知のように、Javaで文字列を結合する時には ”+”演算子でできる。
こんな風に書ける、ということね。

        String s3=s1+s2;
これはコンパイル時に、StringBuilder.appendに書き換えられるわけなんだが、
こんな風に。

   4:    astore_2
   5:    new    #3; //class java/lang/StringBuilder
   8:    dup
   9:    invokespecial    #4; //Method java/lang/StringBuilder."<init>":()V
   12:    aload_1
   13:    invokevirtual    #5; //Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
   16:    aload_2
   17:    invokevirtual    #5; //Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
   20:    invokevirtual    #6; //Method java/lang/StringBuilder.toString:()Ljava/lang/String;
   23:    astore_3


これはJDK1.5以上での話で、もーっと化石なバージョンだと、これは
StringBuffer.appendになる。
StringBufferはMTセーフであるが、Builderはセーフじゃない。

まぁ、こんなテンポラリな短命オブジェクトがMTセーフである必要はないやな。

posted by koteitan at 17:37| Comment(0) | TrackBack(0) | Java | このブログの読者になる | 更新情報をチェックする