サーバを移行したあと、メールを使うユーザを追加した際に
受信サーバにアクセスできない というエラーが帰って来た。
原因が分かったので、忘れないうちに残す
dovcotの制御が原因だった。
ユーザを作成
useradd -m [ユーザ名]
passwd [ユーザ名]
2回入力して作成する。
var/spool/mail/[ユーザ名]
このファイルのパーミッションを660(恐らくデフォルト)から600に変える
こうしないと、応答に答えてくれない仕様の用だ。
以前の設定は、
660でも問題なく動いており、
応答もしてくれているようなので、
これに気づかずに悩んでしまった。
2016/09/22
2016/09/06
サーバ移転で詰まったこと php関連
WEBサーバを移転した際に、嵌ってしまった原因を列挙しておく。
次回の更新が何年後か分からないが、忘備録
PHPのこと
/etc/php.ini
phpが稼働したら、
info.phpファイルを作り、設定確認
infophp();
?>
memory_limit (メモリ使用量の上限)
post_max_size (POSTデータの最大サイズ ※1回のアップロードファイルすべての合計サイズ)
↑今回、これを確認せず、8MBの壁にぶち当たり嵌った・・。
upload_max_filesize (1ファイルあたりの最大アップロードサイズ)
この辺の数値が小さいと、画面が白いままになったり、
IF関数等で正しく動かない。
反映は
# systemctl restart httpd.service
Postfixのこと
設定されているサイズを確認
# postconf | grep size_limit
body_checks_size_limit = 51200
bounce_size_limit = 50000
header_size_limit = 102400
postconf: warning: /etc/postfix/main.cf: unused parameter: mtp_sasl_security_options=
mailbox_size_limit = 此処をでかくする 例えば1GB 1073741824
message_size_limit = 此処を↑は小さくする 例えば100MB 104857600
反映は
# systemctl restart postfix.service
phpで作ったメールフォームで嵌った。
次回の更新が何年後か分からないが、忘備録
PHPのこと
/etc/php.ini
phpが稼働したら、
info.phpファイルを作り、設定確認
infophp();
?>
memory_limit (メモリ使用量の上限)
post_max_size (POSTデータの最大サイズ ※1回のアップロードファイルすべての合計サイズ)
↑今回、これを確認せず、8MBの壁にぶち当たり嵌った・・。
upload_max_filesize (1ファイルあたりの最大アップロードサイズ)
この辺の数値が小さいと、画面が白いままになったり、
IF関数等で正しく動かない。
反映は
# systemctl restart httpd.service
Postfixのこと
設定されているサイズを確認
# postconf | grep size_limit
body_checks_size_limit = 51200
bounce_size_limit = 50000
header_size_limit = 102400
postconf: warning: /etc/postfix/main.cf: unused parameter: mtp_sasl_security_options=
mailbox_size_limit = 此処をでかくする 例えば1GB 1073741824
message_size_limit = 此処を↑は小さくする 例えば100MB 104857600
反映は
# systemctl restart postfix.service
phpで作ったメールフォームで嵌った。
2016/08/09
postfixの設定など
社員用にPHPプログラム運用兼ファイルサーバを設置している。
いままでは、ローカルなメールの遣り取りだけで済んでいたのだが
どうしても、外部のメールサーバを経由して外部ユーザにメールを送らないといけなくなった。
ローカルの設定は結構いい加減にやっており、
外部にメールを送ろうとすると、rejectされてしまう。
CentOS7.x はpostfixが推奨されているので、設定することにした。
はじめに
postfixが動いているか?確認
# systemctl status postfix.service
今回は、phpが絡むので、設定する。
/etc/php.ini
L980位の
[mail function]
SMTP = localhost
smtp_port = 25
sendmail_from = なんかそれなに名前を付けておく。
※SMTP認証を使うときは、もう少し追記があるらしい。(今回はいらない)
# systemctl restart httpd.service
PHPの設定有効
つづいてpostfixの設定
前のかなりラフなものをちゃんとする。
/etc/postfix/main.cf
L60
mail_owner = postfix 別のユーザに変更するときは、書き換える(今回不要)
myhostname = mail.xxx.co.jp 等
mydomain = xxx.co.jp 等
inet_interfaces = localhost 受信設定。受信しないので、localhostで良いが、ルータ等でセキュア環境にしてあるならば、allでもOKと思われる。
inet_protocols = ipv4 おまじない。ipv6をkillしている際は、記載しないと動かないらしい。
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain ←註
mynetworks = XXX.XXX.XXX.0/24, 127.0.0.0/8 許容するネットワークの範囲を記載
mydestination に $mydomain を記載する際の注意
内部用のサーバから外部用のサーバにリレーする際に、
内部的には固定IP割り当てて、ルータで締めて、トンネル作って、そのアドレスを許容すればいいのだが、そこから外部に送る際、最近のレンタルサーバ等は、domainがいい加減だと、rejectしてくる。
そこで、$mydomainには、送信する際に問い合わせを受けても問題ないdomainを記載しておくのだが、mydestination に $mydomain を安易に書き加えると、外部サーバと内部サーバに同一の
アカウントがいる場合は、そのユーザに関しては、ローカルサーバ内にメールを送ってしまい。
本来の$mydomain に送るべきものが全く送れない状態になってしまうので、
注意が必要。
外部サーバを使ってメールを送信するような内部サーバのpostfixの設定で、
よほど特殊(たとえば内部で擬似的に運用する等の)な環境でない限り、
記載する際は注意が必要。
※SMTP認証を使う場合は、この辺も有効にする。
# In the case of SMTP, specify a domain, host, host:port, [host]:port,
# [address] or [address]:port; the form [host] turns off MX lookups.
#
# If you're connected via UUCP, see also the default_transport parameter.
#
#relayhost = $mydomain
#relayhost = [gateway.my.domain]
#relayhost = [mailserver.isp.tld]
#relayhost = uucphost
#relayhost = [an.ip.add.ress]
その他はそのままで大丈夫と思われる。
# systemctl restart postfix.service
再起動
# systemctl status postfix.service
エラーが無いか確認する。
この設定で、問題なく中継が出来た。
今後Gmailやその他のメールサーバと絡めたりしたいときには、
SMTP認証が必要になる。(今は止めておく)
いままでは、ローカルなメールの遣り取りだけで済んでいたのだが
どうしても、外部のメールサーバを経由して外部ユーザにメールを送らないといけなくなった。
ローカルの設定は結構いい加減にやっており、
外部にメールを送ろうとすると、rejectされてしまう。
CentOS7.x はpostfixが推奨されているので、設定することにした。
はじめに
postfixが動いているか?確認
# systemctl status postfix.service
今回は、phpが絡むので、設定する。
/etc/php.ini
L980位の
[mail function]
SMTP = localhost
smtp_port = 25
sendmail_from = なんかそれなに名前を付けておく。
※SMTP認証を使うときは、もう少し追記があるらしい。(今回はいらない)
# systemctl restart httpd.service
PHPの設定有効
つづいてpostfixの設定
前のかなりラフなものをちゃんとする。
/etc/postfix/main.cf
L60
mail_owner = postfix 別のユーザに変更するときは、書き換える(今回不要)
myhostname = mail.xxx.co.jp 等
mydomain = xxx.co.jp 等
inet_interfaces = localhost 受信設定。受信しないので、localhostで良いが、ルータ等でセキュア環境にしてあるならば、allでもOKと思われる。
inet_protocols = ipv4 おまじない。ipv6をkillしている際は、記載しないと動かないらしい。
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain ←註
mynetworks = XXX.XXX.XXX.0/24, 127.0.0.0/8 許容するネットワークの範囲を記載
mydestination に $mydomain を記載する際の注意
内部用のサーバから外部用のサーバにリレーする際に、
内部的には固定IP割り当てて、ルータで締めて、トンネル作って、そのアドレスを許容すればいいのだが、そこから外部に送る際、最近のレンタルサーバ等は、domainがいい加減だと、rejectしてくる。
そこで、$mydomainには、送信する際に問い合わせを受けても問題ないdomainを記載しておくのだが、mydestination に $mydomain を安易に書き加えると、外部サーバと内部サーバに同一の
アカウントがいる場合は、そのユーザに関しては、ローカルサーバ内にメールを送ってしまい。
本来の$mydomain に送るべきものが全く送れない状態になってしまうので、
注意が必要。
外部サーバを使ってメールを送信するような内部サーバのpostfixの設定で、
よほど特殊(たとえば内部で擬似的に運用する等の)な環境でない限り、
記載する際は注意が必要。
※SMTP認証を使う場合は、この辺も有効にする。
# In the case of SMTP, specify a domain, host, host:port, [host]:port,
# [address] or [address]:port; the form [host] turns off MX lookups.
#
# If you're connected via UUCP, see also the default_transport parameter.
#
#relayhost = $mydomain
#relayhost = [gateway.my.domain]
#relayhost = [mailserver.isp.tld]
#relayhost = uucphost
#relayhost = [an.ip.add.ress]
その他はそのままで大丈夫と思われる。
# systemctl restart postfix.service
再起動
# systemctl status postfix.service
エラーが無いか確認する。
この設定で、問題なく中継が出来た。
今後Gmailやその他のメールサーバと絡めたりしたいときには、
SMTP認証が必要になる。(今は止めておく)
2016/07/08
PHP 複数行を持つ標準入力の配列化
複数行を持つ標準入力の配列化 <?php $input = trim(fgets(STDIN)); while ($input){ $array[] = $input; $input = trim(fgets(STDIN)); } これで、$arrayに標準出力の複数行で書かれたものを 配列に出来る。 一列づつ検証をする場合は、 while($input=fgets(STDIN)){ for ($i = 1; $i <= $input-1 ; $i++) { この中で検証する; } このように処理すれば良い。 スキルアップの為、codeIQとかで勉強を始めたが、 標準入力の取り扱い方が良くわからずに困っておった。 プログラム自体は掛けるのだが、 標準入力の配列化が出来ず、解けない問題があったので、 いろいろ調べた結果 こうなった。
2016/06/27
javascipt datePicker 営業日の制御
打ち合わせ希望日をカレンダーで選択してもらってフォームで予約を入れてもらう。 このような制御が必要になった。 当初<input type="date">で良いかな? と思ったが、ユーザがPC:スマホで7対3位で、まだまだPCが有利なので、 datepickerを使うことにした。 その際に、 ・土日は選択させない。 ・4営業日以降しか選択できない。 という条件を付けたい。 土日は選択させない事は先人の知恵で問題なく解決。 問題は、4営業日以降の縛り datepickerの変数だけでは処理できなかったので、 起算点を今日にして、今日の曜日を取得し、 datepikcerのオプション minDate で制御した。 以下ソース。 <HEAD> <META HTTP-EQUIV=Content-Type CONTENT=text/html;CHARSET=UTF-8> <TITLE>アポどり用フォーム</TITLE> <!-- jQuery--> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> <!-- jQuery-UI --> <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1/jquery-ui.min.js"></script> <!-- jQuery-UI-datepicker --> <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1/i18n/jquery.ui.datepicker-ja.min.js\"></script> <link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1/themes/redmond/jquery-ui.css\" > <script> <!-- 今日の曜日を抽出--> var dateObj = new Date() ; var weekDayList = [0,1,2,3,4,5,6] ; var todayWeekDay = weekDayList[ dateObj.getDay() ] ; <!--datepicker 定義--> $(function(){ // Datepicker の呼び出し $( "#datepicker" ).datepicker({onClose: function(dateText, inst) { //プラン番号の取得 //日付オブジェクトの作成 var date = new Date(dateText); var weekDay = parseInt(date.getDay()); var check = false; if(weekDay > 0 && weekDay < 6){ check = true; } if(!check){ alert("この日は選択できません"); $( "#datepicker" ).val(''); } }}); //判別4(木曜)、5(金曜)は+6day それ以外は+4dayでOK if(todayWeekDay == 4 || todayWeekDay == 5){ $( "#datepicker" ).datepicker( "option", 'minDate', "+6d" ); $( "#datepicker" ).datepicker( "option", 'maxDate', "2m" ); } else{ $( "#datepicker" ).datepicker( "option", 'minDate', "+4d" ); $( "#datepicker" ).datepicker( "option", 'maxDate', "2m" ); } } ); </script> </HEAD> <BODY> <FORM ACTION="mail.php" METHOD="POST" ENCTYPE="application/x-www-form-urlencoded" > <input type="text" name="date1" class="form_text-small\" id="datepicker" readonly="readonly"> </FORM> こんな感じで実装すればよい。 $( "#datepicker" ).datepicker( "option", 'minDate', "+4d" ); $( "#datepicker" ).datepicker( "option", 'maxDate', "2m" ); 肝はこの部分。
2016/05/24
CentOS7 ssh2_connectを実装する
正規の方法でインストールを試みるが、
#pecl install ssh2
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/msql.so' - /usr/lib64/php/modules/msql.so: cannot open shared object file: No
such file or directory in Unknown on line 0
PHP Warning: Module 'mbstring' already loaded in Unknown on line 0
PHP Warning: Module 'pgsql' already loaded in Unknown on line 0
Failed to download pecl/ssh2 within preferred state "stable", latest release is version 0.12, stability "beta", use "channel://pecl.php.net/ssh2-0.12" to install install failed
エラー
ネイティブな解説ページが有ったので、
参考にしながら実装までのオボエガキ
先ずは、yumを最新にする。
# yum update
# yum install make gcc libssh2 php-deve
# pecl install -f ssh2
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/msql.so' - /usr/lib64/php/modules/msql.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning: Module 'mbstring' already loaded in Unknown on line 0
PHP Warning: Module 'pgsql' already loaded in Unknown on line 0
WARNING: failed to download pecl.php.net/ssh2 within preferred state "stable", will instead download version 0.12, stability "beta"
WARNING: channel "pecl.php.net" has updated its protocols, use "pecl channel-update pecl.php.net" to update
downloading ssh2-0.12.tgz ...
Starting to download ssh2-0.12.tgz (26,223 bytes)
.........done: 26,223 bytes
6 source files, building
running: phpize
Configuring for:
PHP Api Version: 20100412
Zend Module Api No: 20100525
Zend Extension Api No: 220100525
libssh2 prefix? [autodetect] : ←ここはブランクのまま エンターした。
Build process completed successfully
Installing '/usr/lib64/php/modules/ssh2.so'
install ok: channel://pecl.php.net/ssh2-0.12
configuration option "php_ini" is not set to php.ini location
You should add "extension=ssh2.so" to php.ini
となるので、
# echo "extension=ssh2.so" > /etc/php.d/ssh2.ini
httpdを再起動させる。
# systemctl restart httpd.service
# php -m | grep ssh2
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/msql.so' - /usr/lib64/php/modules/msql.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning: Module 'mbstring' already loaded in Unknown on line 0
PHP Warning: Module 'pgsql' already loaded in Unknown on line 0
ssh2
phpinfo() で確認すると
となり、実装完了。
実装方法
<?php
$connection = ssh2_connect('アドレス', 22);
ssh2_auth_password($connection, 'ログインユーザ名', 'ログインパスワード');
ssh2_scp_send($connection, '../転送元ファイル', '転送先ディレクトリ/転送するファイル', 0644);
?>
#pecl install ssh2
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/msql.so' - /usr/lib64/php/modules/msql.so: cannot open shared object file: No
such file or directory in Unknown on line 0
PHP Warning: Module 'mbstring' already loaded in Unknown on line 0
PHP Warning: Module 'pgsql' already loaded in Unknown on line 0
Failed to download pecl/ssh2 within preferred state "stable", latest release is version 0.12, stability "beta", use "channel://pecl.php.net/ssh2-0.12" to install install failed
エラー
ネイティブな解説ページが有ったので、
参考にしながら実装までのオボエガキ
先ずは、yumを最新にする。
# yum update
# yum install make gcc libssh2 php-deve
# pecl install -f ssh2
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/msql.so' - /usr/lib64/php/modules/msql.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning: Module 'mbstring' already loaded in Unknown on line 0
PHP Warning: Module 'pgsql' already loaded in Unknown on line 0
WARNING: failed to download pecl.php.net/ssh2 within preferred state "stable", will instead download version 0.12, stability "beta"
WARNING: channel "pecl.php.net" has updated its protocols, use "pecl channel-update pecl.php.net" to update
downloading ssh2-0.12.tgz ...
Starting to download ssh2-0.12.tgz (26,223 bytes)
.........done: 26,223 bytes
6 source files, building
running: phpize
Configuring for:
PHP Api Version: 20100412
Zend Module Api No: 20100525
Zend Extension Api No: 220100525
libssh2 prefix? [autodetect] : ←ここはブランクのまま エンターした。
Build process completed successfully
Installing '/usr/lib64/php/modules/ssh2.so'
install ok: channel://pecl.php.net/ssh2-0.12
configuration option "php_ini" is not set to php.ini location
You should add "extension=ssh2.so" to php.ini
となるので、
# echo "extension=ssh2.so" > /etc/php.d/ssh2.ini
httpdを再起動させる。
# systemctl restart httpd.service
# php -m | grep ssh2
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/msql.so' - /usr/lib64/php/modules/msql.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning: Module 'mbstring' already loaded in Unknown on line 0
PHP Warning: Module 'pgsql' already loaded in Unknown on line 0
ssh2
phpinfo() で確認すると
ssh2
SSH2 support | enabled |
---|---|
extension version | 0.12 |
libssh2 version | 1.4.3 |
banner | SSH-2.0-libssh2_1.4.3 |
となり、実装完了。
実装方法
<?php
$connection = ssh2_connect('アドレス', 22);
ssh2_auth_password($connection, 'ログインユーザ名', 'ログインパスワード');
ssh2_scp_send($connection, '../転送元ファイル', '転送先ディレクトリ/転送するファイル', 0644);
?>
2016/05/23
phpexcelとlibreofficeのcuiを使ってPDFを作成する
かなりphpexcelの恩恵を受けているが、やはりpdfに加工したい事がある。
guiでせっせと作るのも良いのだが、
ボタン一つで作成させたい。
そこで、エクセルをpdfに変換するものをいろいろ探したところ、
libreofficeのCUIを使うのが一番崩れないようだ。
早速だが、CUIの環境を構築
#yum install libreoffice libreoffice-langpack-ja
早速コマンドを投げてみる。
libreoffice --nologo --nofirststartwizard --convert-to pdf /var/www/html/pdf/000001.xlsx
エラーが返ってきた。
/usr/lib64/libreoffice/program/soffice.bin X11 error: Can't open display:
Set DISPLAY environment variable, use -display option
or check permissions of your X-Server
(See "man X" resp. "man xhost" for details)
https://help.libreoffice.org/Common/Starting_the_Software_With_Parameters/ja
調べてみると、
オプションで --headless を付けないと、ユーザーインタフェースが動いてしまい、NGらしい。
そこで、追加でオプションを実装。
#yum install libreoffice-headless
libreoffice --headless --nologo --nofirststartwizard --convert-to pdf /var/www/html/excel/pdf/00001.xlsx
convert /var/www/html/excel/pdf/00001.xlsx -> /home/<>/00001.pdf using calc_pdf_Export
変換できた。
線種や文字化けはなさそう。
サイズが大きいと、ページを跨いでしまうようなので、余白の設定等で、そこをなんとかできれば、
十分使えそう。
guiでせっせと作るのも良いのだが、
ボタン一つで作成させたい。
そこで、エクセルをpdfに変換するものをいろいろ探したところ、
libreofficeのCUIを使うのが一番崩れないようだ。
早速だが、CUIの環境を構築
#yum install libreoffice libreoffice-langpack-ja
早速コマンドを投げてみる。
libreoffice --nologo --nofirststartwizard --convert-to pdf /var/www/html/pdf/000001.xlsx
エラーが返ってきた。
/usr/lib64/libreoffice/program/soffice.bin X11 error: Can't open display:
Set DISPLAY environment variable, use -display option
or check permissions of your X-Server
(See "man X" resp. "man xhost" for details)
https://help.libreoffice.org/Common/Starting_the_Software_With_Parameters/ja
調べてみると、
オプションで --headless を付けないと、ユーザーインタフェースが動いてしまい、NGらしい。
そこで、追加でオプションを実装。
#yum install libreoffice-headless
libreoffice --headless --nologo --nofirststartwizard --convert-to pdf /var/www/html/excel/pdf/00001.xlsx
convert /var/www/html/excel/pdf/00001.xlsx -> /home/<
変換できた。
線種や文字化けはなさそう。
サイズが大きいと、ページを跨いでしまうようなので、余白の設定等で、そこをなんとかできれば、
十分使えそう。
2016/02/04
SSD 換装時のMBR問題 Windows7
HDDドライブが怪しくなってきたので、SSDに換装をしたが、
HDDが1TBに対し、SSDが240GBであったため、
ディスク丸ごとクローンが使えなかった。
元のパーティションを
EaseUE Partition Master で200GB位にまで小さくしてから
EaseUE Todo BackUp Free でパーティションクローンを作った。
EaseUEさんへのリンク
http://jp.easeus.com/partition-manager-software/free.html
EaseUS Todo Backup Freeの日本語公式ページ
http://jp.easeus.com/backup-software/free.html
システムクローンだと、換装後が面倒な予感がしたため、
非推奨のようだが、パーティションのクローンを作った。
free版なので、コピー先のパーティションをActiveに出来なかった。
恐らく駄目であろうと思いつつ、
SSDに付け替えて、BIOSを変更し、起動を掛けると、
bootLoaderが無いので起動できないとエラーが起きる。
しょうがないので、元のHDDに戻し、Windows修復ディスクを作成。
コントロール パネル→システムとセキュリティ→バックアップと復元
→システム修復ディスクの作成 で起動ディスクを作成する。
BIOSで DVD→SSDにして、ディスクから起動。
先ずは、スタートアップ修復を試すが、駄目。
続いて、コマンドプロンプトから
>bootsect /nt60 sys /mbr [ent]
でwindwos7用のブートストラップローダを書き込こもうとするが、
パーティションがアクティブでないので、書けないとエラーが返ってきた。
diskをactiveにしたいので、diskpaetコマンドを使う。
>DISKPART [ent]
・ディスクのリスト表示
DISKPART> list disk
ディスク 状態 サイズ 空き ダイナ GPT
### ミック
------------ ------------- ------- ------- --- ---
ディスク 0 オンライン 200 GB 1024 KB
・ディスクを選択する。
DISKPART> select disk 0 [ent]
ディスク 0 が選択されました。
・パーティションのリスト表示
DISKPART> list partition [ent]
Partition ### Type Size Offset
------------- ------------------ ------- -------
Partition 1 プライマリ 200GB 31 KB
・パーティションを選択
DISKPART> select partition 1 [ent]
パーティション 1 が選択されました。
・activeにする
DISKPART> active [ent]
DiskPart は現在のパーティションをアクティブとしてマークしました。
DISKPART> exit [ent]
>bootsect /nt60 sys /mbr [ent]
ブートストラップローダを書き込んでくれるので、一旦再起動する。
>exit [ent]
これで再行動掛ける。
SSDからブートすると
BOOTMGR is missing というエラーが吐き出される。
BOOTMGR is missingが出るので、PBR(パーティションの先頭セクタ)は
生き返った。
恐らく、アクティブパーティションの設定がオカシイ。論理フォーマットが駄目なようだ。
再度システム修復ディスクから立ち上げて、
スタートアップ修復で起動可能になった。
>bootrec /fixboot
>bootrec /fixmbr
コマンドだと駄目だった。
HDDが1TBに対し、SSDが240GBであったため、
ディスク丸ごとクローンが使えなかった。
元のパーティションを
EaseUE Partition Master で200GB位にまで小さくしてから
EaseUE Todo BackUp Free でパーティションクローンを作った。
EaseUEさんへのリンク
http://jp.easeus.com/partition-manager-software/free.html
EaseUS Todo Backup Freeの日本語公式ページ
http://jp.easeus.com/backup-software/free.html
システムクローンだと、換装後が面倒な予感がしたため、
非推奨のようだが、パーティションのクローンを作った。
free版なので、コピー先のパーティションをActiveに出来なかった。
恐らく駄目であろうと思いつつ、
SSDに付け替えて、BIOSを変更し、起動を掛けると、
bootLoaderが無いので起動できないとエラーが起きる。
しょうがないので、元のHDDに戻し、Windows修復ディスクを作成。
コントロール パネル→システムとセキュリティ→バックアップと復元
→システム修復ディスクの作成 で起動ディスクを作成する。
BIOSで DVD→SSDにして、ディスクから起動。
先ずは、スタートアップ修復を試すが、駄目。
続いて、コマンドプロンプトから
>bootsect /nt60 sys /mbr [ent]
でwindwos7用のブートストラップローダを書き込こもうとするが、
パーティションがアクティブでないので、書けないとエラーが返ってきた。
diskをactiveにしたいので、diskpaetコマンドを使う。
>DISKPART [ent]
・ディスクのリスト表示
DISKPART> list disk
ディスク 状態 サイズ 空き ダイナ GPT
### ミック
------------ ------------- ------- ------- --- ---
ディスク 0 オンライン 200 GB 1024 KB
・ディスクを選択する。
DISKPART> select disk 0 [ent]
ディスク 0 が選択されました。
・パーティションのリスト表示
DISKPART> list partition [ent]
Partition ### Type Size Offset
------------- ------------------ ------- -------
Partition 1 プライマリ 200GB 31 KB
・パーティションを選択
DISKPART> select partition 1 [ent]
パーティション 1 が選択されました。
・activeにする
DISKPART> active [ent]
DiskPart は現在のパーティションをアクティブとしてマークしました。
DISKPART> exit [ent]
>bootsect /nt60 sys /mbr [ent]
ブートストラップローダを書き込んでくれるので、一旦再起動する。
>exit [ent]
これで再行動掛ける。
SSDからブートすると
BOOTMGR is missing というエラーが吐き出される。
BOOTMGR is missingが出るので、PBR(パーティションの先頭セクタ)は
生き返った。
恐らく、アクティブパーティションの設定がオカシイ。論理フォーマットが駄目なようだ。
再度システム修復ディスクから立ち上げて、
スタートアップ修復で起動可能になった。
>bootrec /fixboot
>bootrec /fixmbr
コマンドだと駄目だった。
2016/01/05
pdfに日付のフッターを付ける。(Pdftkを使ってなるべく軽くやる。)
以前、pdftkでスタンプを作ったが、
同じ原理で、タイムスタンプを押したいという話になった。
itextを使うといった手法もあるようだが、
費用が掛からず、なるべく動作が軽い方向で検討してみる。
過去の財産を有効活用するため、
フッターに日付を持ったpdfを作成してみる。
いきなりPDFは作成できないので、
psファイルを一旦作成し、それをPDFに変換することにする。
a2psがデフォルトでインストールされていないので、
# yum install a2ps
なるべく重たくしないように、一回だけ改行した text.txtを作成し、footer.psに変換
コマンドは
$ a2ps text.txt -B -R --borders=no --footer=`date +%Y-%m-%d-%H:%M` -o footer.ps
オプションの補足
-B フレームを消す。
-R 用紙を縦にする。
--borders=no 外枠を消す。
--footer=`date +%Y-%m-%d-%H:%M` フッターに2015-01-01-01:01のタイムスタンプ
-o ファイル形式で出力する。
続いて、pdfに変換
$ ps2pdf footer.ps footer.pdf
以上。
これをcron等で、5分おき程度に作成させておけば、良い。
オプションを調べるのに凄く時間を消費したので、メモしておく。
同じ原理で、タイムスタンプを押したいという話になった。
itextを使うといった手法もあるようだが、
費用が掛からず、なるべく動作が軽い方向で検討してみる。
過去の財産を有効活用するため、
フッターに日付を持ったpdfを作成してみる。
いきなりPDFは作成できないので、
psファイルを一旦作成し、それをPDFに変換することにする。
a2psがデフォルトでインストールされていないので、
# yum install a2ps
なるべく重たくしないように、一回だけ改行した text.txtを作成し、footer.psに変換
コマンドは
$ a2ps text.txt -B -R --borders=no --footer=`date +%Y-%m-%d-%H:%M` -o footer.ps
オプションの補足
-B フレームを消す。
-R 用紙を縦にする。
--borders=no 外枠を消す。
--footer=`date +%Y-%m-%d-%H:%M` フッターに2015-01-01-01:01のタイムスタンプ
-o ファイル形式で出力する。
続いて、pdfに変換
$ ps2pdf footer.ps footer.pdf
以上。
これをcron等で、5分おき程度に作成させておけば、良い。
オプションを調べるのに凄く時間を消費したので、メモしておく。
登録:
投稿 (Atom)