Windows XPでのAFT対応ディスクの使用 [Windows]
現在、Windows のサブ環境として、Windows XP を Linux とマルチ・ブートできるようにしている。Windows 環境は MS Office 文書の編集くらいにしか使用しないため使用頻度が低く、その障害時用のサブ環境となると使用頻度はさらに低い。
しかし、Windows XP は Windows にしてはディスク使用量が少なく、動作も軽いため、今もインストールしたままにしている。
先日、この Windwows XP が使用するハードディスクに障害が発生し、ハードディスクの交換を行った。AFT 未対応のハードディスクから AFT 対応のハードディスクへの変更である。
そこで、AFT の機能を使用するため、Windows XP のブートセクタを 63 から 2048 に変更したところ、ブートできない状況となってしまった。
現在サポートされている Windows では問題とならないことではあるが、問題の解決に手間取ったため、備忘録として発生事象と対応方法をまとめてみた。
1. 発生事象
ハードディスクの交換後、Windows XP のブートセクタを 63 から 2048 に変更したところ、ブートできなくなった。
[エラーメッセージ] A disk read error occurred Press Ctrl + Alt + Delete to restart
・パーティションのサイズ(セクタ数)はハードディスクの交換前と同じである。
・Linux の GRUB から Windows XP をブートしている。
・パーティションの作成、ファイルシステム(NTFS)の作成は Linux 上で実施。
・バックアップ・データのリストアも Linux 上で実施。
2. 原因
C: ドライブ用のパーティションの PBR(Partition Boot Record) にブートセクタの位置情報が保存されており、この値がパーティションの開始セクタと一致していないためである。
3. 対処方法
下記の手順により、PBR の情報を修正する。
(1) 当該パーティションをフォーマットする(FS type: ntfs)。
# mkfs.ntfs /dev/sda1 または # mkfs.ntfs -f /dev/sda1
-f オプションを指定した場合には、下記のように動作する。
・ボリュームの 0 クリアをしない。
・セクタの異常の有無をチェックしない。
・このため、フォーマットに要する時間を短縮できる。
(2) 上記パーティションのフォーマット直後の PBR を保存する。
# dd if=/dev/sda1 of=/tmp/pbr.dat bs=512 count=1
(3) 上記パーティションにバックアップ・データをリストアする。
今回は、ntfsclone で取得したバックアップ・データを使用する。
(4) 上記パーティションの PBR の先頭 32 バイトを保存したデータで変更する。
# dd if=/tmp/pbr.dat of=/dev/sda1 bs=32 count=1
・PBR の先頭の 32 バイトには、下記のデータが含まれる。
Jump instruction (3 バイト)
OEM name (8 バイト)
BPB: BIOS Parameter Block の一部 (25 バイト中の 21 バイト)
・実際に修正が必要な項目は、下記の通りである。
BPB の Hidden Sectors (18-21 の 4 バイト) … ブートセクタの位置情報
LinuxでのWebカメラの使用 [Linux]
調査結果は、以下の通りである。
(尚、動作確認を行っていないため、購入は自己責任でお願いします。)
1. USB 接続でドライバーのイストールが不要な製品については、ほぼ Linux で使用できる。
このような製品の場合、ほとんどが UVC(USB Video Class) 仕様に対応した製品である。
2. UVC 仕様に対応した製品の場合には、Linux でも問題なく使用できる。
3. 下記の製品については、UVC 仕様に対応しており Linux で使用できる。
・ELECOM UCAM-C310FBBK (マイク内蔵) 参考価格: 2,170円(税込)/家電量販店 ・ロジクール C270 (マイク内蔵) 参考価格: 2,310円(税込)/家電量販店
KVM環境でのコピー・ペースト [Linux]
使用目的は、サーバー機能のテストのためである。
このため、ゲスト OS には X 関連のパッケージをインストールしない。
(KVM ホスト側には、X 関連のパッケージをインストールしている。)
[ソフトウェアのバージョン]
・OS: CentOS 7
・qemu-kvm-1.5.3-175.el7_9.3.x86_64
・virt-manager-1.5.0-7.el7.noarch
以下は、このような環境でのコピー・ペーストの実施方法についてまとめたものである。
1. ゲスト OS への接続に Serial Console を使用する場合
ウィンドウ間、およびウィンドウ内でのコピー・ペーストが可能である。
また、Serial Console で接続には、下記のいずれかの手順を実施する。
(1) Terminal Emulator での virsh の実行
# virsh console <domain-name>
(2) Terminal Emulator での virt-manager の実行
# virt-manager
・VM(ドメイン) を選択した状態で右クリックし、[Open] を選択する。
この時点では、Graphical Console が選択されている。
・メニューで、[View] -> [Text Consoles] -> [Serial 1] を選択する。
・表示された Serial Console の任意のポイントをクリックする。
(補足)
ゲスト OS での Serial Console の設定については、備考を参照。
2. ゲスト OS への接続に Graphical Console を使用する場合
コピー・ペーストはできない。
ただし、下記の手順により、ウィンドウ内でのコピー・ペーストが可能となる。
(1) gpm のインストール
# yum install gpm
下記の依存パッケージもインストールされる(CentOS 7 の場合)。
・SDL, gpm-libs, linuxconsoletools
(2) gpm の起動 (初回のみ)
# systemctl start gpm
CentOS 8とCentOS 7でのインストールと設定の違い [CentOS]
・CentOS 7 から CentOS 8 への公式なアップグレードの手順が存在しない。
・CentOS 8 のサポートは 2021-12-31 で終了する。
CentOS の運営形態が変わるためであり、CentOS 7 のサポート期限よりも短い。
今回、RHEL 8 の環境構築が必要となり、その準備として、CentOS 8.3.2011 のインストールを行い、CentOS 7 の場合との違いの確認を行った。
詳細は、以下の通りである。
1. インストール手順
基本的な手順は、CentOS 7 と同様である。
しかし、設定値に若干の違いがある。
(1) インストールソースの指定
CentOS 7 の場合とはディレクトリ構成が少々異なる。
[CentOS 8.3.2011 の場合] ftp//ftp.riken.jp/Linux/centos/8.3.2011/BaseOS/x86_64/os/ [CentOS 7.1.1503 の場合] ftp://ftp.riken.go.jp/Linux/centos/7.1.1503/os/x86_64/
2.インストール後の設定
CentOS 8 では、yum が dnf に変わっている。
しかし、yum は dnf にリンクされており、CentOS 8 でも yum を使用することができる。
(1) rsh、rsh-server のパッケージのインストール
CentOS 8 では、rsh、rsh-server パッケージは EPEL で提供されている。
よって、EPEL リポジトリの追加が必要となる。
# yum install epel-release # yum install rsh.x86_64 rsh-server.x86_64
(2) iptables のインストール
CentOS 8 では、iptables が nftables に変わっている。
しかし、下記の手順により、iptables の使用が可能である。
( cf. https://www.websec-room.com/2019/10/12/3164 )
(a) firewalld の無効化
# systemctl stop firewalld.service # systemctl mask firewalld.service # systemctl list-unit-files | grep firewalld (mask されたことを確認する。)
(b) iptables-services のインストール
# yum install iptables-services
(c) iptables の有効化
# systemctl start iptables.service # systemctl enable iptables.service # systemctl list-unit-files | grep iptables (有効化されたことを確認する。)
(3) VG 名の変更
特に指定しない場合、下記の名前で LVM のリソースが作成された。
CentOS 7 では、VG 名が異なったと思われる。
・PV: /dev/sda2 ・VG: cl_xxx (xxx はホスト名) ・LV: root、swap
VG 名が良くないため、下記の手順で変更する。
(a) バックアップ
作業の開始前に、念の為、システムのバックアップを行う。
(b) VG 名の変更
# vgrename cl_xxx centos
・vgrename は正常終了する。
・/ は古い VG 名を使用したパスでマウントされたままである。
(c) /etc/fstab の編集
cl_xxx の部分を centos に変更する。
(d) 再起動
# shutdown -r now
正常終了しないため、リセットする。
(e) 起動オプションの変更
[GRUB メニューの編集]
・ESC を押下し、GRUB メニューを表示する。
・GRUB のメニュー画面で e を押下し、編集モードにする。
・cl_xxx の部分を centos に変更する。
[起動]
・Ctrl + X でブートを実行する。
(f) GRUB の設定変更
[/etc/default/grub の編集]
・cl_xxx の部分を centos に変更する。
[/boot/grub2/grub.cfg の更新]
# grub2-mkconfig -o /boot/grub2/grub.cfg
(g) バックアップ・データの削除
VG 名の変更が完了した場合には、バックアップ・データを削除する。
GmailのPOP受信/SMTP送信 [misc]
詳細は、以下の通りである。
1. 共通の設定
(1) Gmail での設定
(a) セキュリティの設定画面の表示
・Gmail にログイン
・右上のアイコンをクリックし、[Google アカウントを管理] を選択
・一覧から [セキュリティ] を選択
(b) [2 段階認証プロセス] を無効化
無効化後は、パスワードの入力のみでの認証となる。
(c) [安全性の低いアプリのアクセス] を有効化
有効化後は、Google 以外のアプリからのアクセスが可能となる。
尚、アクセスがブロックされた場合には、その旨のメールを受信する。
2. POP 受信の設定
(1) Gmail での設定
(a) POP の設定画面の表示
・Gmail にログイン
・上部の歯車アイコンをクリック
・[すべての設定を表示] を選択
・[メール転送と POP/IMAP] の設定を選択
・[POP ダウンロード] を選択
(b) POP の有効化
[すべてのメールで POP を有効にする] を選択
(c) POP でダウンロードしたメールの処理
(例)
[Gmail のメールを削除する] を選択
(2) メールクライアントでの設定
・POP サーバー: pop.gmail.com ・ポート: 995(POP-3 over SSL) ・認証: 有 ユーザー名には Gmail のメールアドレスを設定
3. SMTP 送信の設定
(1) メールクライアントでの設定
・SMTP サーバー: smtp.gmail.com ・ポート: 587(STARTTLS) または 465(SSL) ・認証: 有 ユーザー名には Gmail のメールアドレスを設定 ・認証方式: PLAIN または LOGIN (CRAM-MD5 には未対応)
Gmailのフィルタでの条件指定(論理和/論理積/否定の使用) [misc]
今回、どうしても使用する必要があり、久しぶりに本格的に使用した。
ここで問題となったのが、フィルタの条件を指定する際の仕様が不明確な点である。
・各入力欄での論理和/論理積/否定の指定方法
・フィルタの一覧表示での {...} と (...) の違い
取り敢えず、説明がつくようになったため、備忘録としてまとめてみた。
詳細は、以下の通りである。
1. フィルタの条件の指定
(1) 特定の入力欄での指定
(a) [含まない] 以外の入力欄の場合
複数の条件を半角スペースで接続した場合には、論理積と解釈される。
AND で接続した場合と同じである。
作成される条件: (条件1 条件2) または (条件1 AND 条件2)
また、論理和としたい場合には、OR で接続する。
作成される条件: (条件1 OR 条件2)
(b) [含まない] の入力欄の場合
複数の条件を半角スペースで接続した場合には、論理和と解釈される。
OR で接続した場合と同じである。
さらに、この論理和を否定する条件指定となる。
(個々の条件の否定を AND で接続するとも言える。)
作成される条件: !{条件1 条件2} または !{条件1 OR 条件2}
また、論理積としたい場合には、AND で接続する。
この論理積を否定する条件指定となる。
(個々の条件の否定を OR で接続するとも言える。)
作成される条件: !{条件1 AND 条件2}
(2) 複数の入力欄での指定
各入力欄で指定した条件が AND で接続される。
(3) [含まない] 以外の入力欄での否定条件の指定
下記のような指定が可能である。
-(条件) (例) "From に @xxx.com を含まない" という条件の指定 ・[From] 欄での指定 -(@xxx.com) ・[含む] 欄での指定 -(from:@xxx.com)
また、論理和、論理積を否定する場合は、下記のように指定する。
-{条件1 条件2}、-{条件1 OR 条件2}、-{条件1 AND 条件2} -(条件1 条件2)、-(条件1 OR 条件2)、-(条件1 AND 条件2)
(4) [含む]、[含まない] の入力欄での検索対象の指定
・検索対象の指定がない場合、メール本文を含むすべてが検索対象となる。
・ヘッダー項目の指定がある場合、指定したヘッダー項目のみが検索対象となる。
(From 等の専用の入力欄での指定と同様である。)
・その他にも、ラベル(label:) やカテゴリ(category:) 等での指定が可能である。
(例) aaa@xxx.com ← メール本文を含むすべてが検索対象となる cc:aaa@xxx.com ← Cc のみが検索対象となる
2. フィルタの一覧表示
フィルタの一覧表示での () と {} の違いは、下記の通りと思われる。
・() の場合には、AND/OR の指定がなければ AND で接続される。 ・{} の場合には、AND/OR の指定がなければ OR で接続される。 ・いずれの場合も、AND/OR の指定があれば、指定された演算子で接続される。
3. フィルタの適用順序の変更
フィルタは、一覧の上から順に適用される。
また、フィルタの順序を変更する機能は、現在提供されていない。
このため、フィルタのエクスポート/インポートを使用して対応する。
実施手順は、下記の通りである。
・すべてのフィルタを選択し、エクスポートする。
・エクスポートしたファイル(XML ファイル) を編集し、順序を変更する。
(<entry>〜</entry> の単位で移動する。)
・既存のフィルタを削除する。
・編集後の XML ファイルを使用し、インポートする。
・インポートした内容でフィルタを作成する。
aptコマンドのハイライト表示の無効化 [Debian]
OS: Debian 10.7
apt 1.8.2.2
1. 発生事象
いつの間にか、apt コマンドでパッケージの検索や一覧表示が可能になっていた。
・apt search、apt list、等
・従来は、apt-chache search、dpkg -l、dpkg-query --show で行っていた。
しかし、パッケージの検索/一覧表示では、ハイライト表示により見づらくなることがある。
・実行結果の一部が緑色でハイライト表示される。
・使用している背景色を全く考慮しないため、非常に見づらいことがある。
(補足)
・ターミナル上で発生する。
・Emacs 上では、ハイライト表示は機能しない。
2. 対処方法
下記のオプションの指定により、ハイライト表示を無効化できる。
-o apt::color::highlight="^[[0m"
・^[ はバイナリ・コード(Ctrl + V の後に ESC キーを押下)である。
色を付けるエスケープ・シーケンスを指定する。
・| cat - を追加することでも、取り敢えず、色付けを無効化できる。
・/etc/apt/apt.conf.d/xxx へのオプション指定でも対応できると思われる。
RTCにlocaltimeを設定する場合の問題点への対応 [CentOS]
OS: CentOS 7.9
rsyslog-8.24.0-57.el7_9.x86_64
systemd-219-78.el7_9.2.x86_64
1. 発生事象
RTC に localtime を設定した場合、syslog で部分的に時間の逆行が発生する。
(RTC: real-time clock、ハードウェアクロックとも呼ばれる。)
・一部のログで 9 時間先の日時が出力される。
kernel、systemd、journald のログで発生する。
・デフォルト設定では、/var/log/messages で発生する。
(補足)
Windows とのマルチブートのため、RTC に localtime を設定している。
2. 原因
systemd が RTC への localtime の設定に完全には対応していないためである。
・systemd では、RTC への UTC の設定を推奨している。
cf. `timedateclt status`
・完全対応されるのを待っていたが、状況は変わっていない。
3. 対処方法
syslog の journald との連携を無効化する。
(systemd が導入される前の実行形態に戻す。)
実施手順は、下記の通りである。
(1) /etc/rsyslog.conf の編集
(a) imjournal モジュール、および関連機能を無効にする。
#$ModLoad imjournal # コメントにする $OmitLocalLogging off # on から off に変更する #$IMJournalStateFile imjournal.state # コメントにする
(b) imuxsock モジュールを有効にする。
$ModLoad imuxsock
(c) imklog モジュールを有効にする。
$ModLoad imklog
(2) /etc/rsyslog.d/listen.conf の編集
# diff listen.conf listen.conf.org 1c1 < #$SystemLogSocketName /run/systemd/journal/syslog --- > $SystemLogSocketName /run/systemd/journal/syslog
(3) 変更の反映
(a) rsyslog の再起動
# systemctl restart rsyslog # systemctl status rsyslog
(b) journald の再起動
# systemctl restart systemd-journald # systemctl status systemd-journald
(補足)
・初期設定では、imuxsock と imjournal が有効、imklog が無効である。
・この対応後も last コマンドでの、reboot の行の開始時刻は修正されない。
運用で対応する必要がある。
・Windows で RTC への UTC の設定に対応することもできる(レジストリの変更が必要)。
別の問題が発生するため、今回は採用しない。
(Windows の終了時にシステムクロックを RTC に反映できなくなる。)
4. 備考
(1) last コマンドの実行結果の補正
reboot ユーザーの行について、下記の補正を行う。
・ログイン時刻を -9(h) し、ログイン時間を +9(h) する。
(localtime を UTC と誤認識されているため。)
ClamAV 0.103.0のclamdscanの問題点への対応 [CentOS]
(EPEL のパッケージを使用)
以下は、この更新により発生した問題点とその対応を備忘録としてまとめたものである。
1. 発生事象
(1) 一般ユーザーでの clamdscan の実行で "Permission denied" が発生する。
/run/clamd.scan/clamd.sock: Permission denied
(2) root での clamdscan の実行で "Can't allocate memory ERROR" が発生する。
(a) エラーメッセージ
xxx.iso: Can't allocate memory ERROR
(b) clamdscan の終了ステータス
2
# 0: No virus found, 1: Virus(es) found, 2: An error occurred
(c) ログ
... Infected files: 0 Total errors: 1 ...
(補足)
・"Permission denied" については、当該ディレクトリが再作成されたためである。
・xxx.iso のファイル・サイズは、4GB を越える。
・ファイル・サイズの制限で除外され、これがエラーとされたものと思われる。
・更新前の clamd-0.102.4-1.el7.x86_64 では発生しない。
マルチブートしている Debian 10 (ClamAV 0.102.4) でも発生しない。
clamav-daemon 0.102.4+dfsg-0+deb10u1
clamdscan 0.102.4+dfsg-0+deb10u1
2. 対処方法
2-1. 上記 1. の (1) への対処対応
(1) /run/clamd.scan のパーミションの変更
# chmod 755 /run/clamd.scan
(2) /etc/tmpfiles.d/clamd.scan.conf の作成
# cat /etc/tmpfiles.d/clamd.scan.conf d /run/clamd.scan 0755 clamscan virusgroup -
(補足)
/usr/lib/tmpfiles.d/clamd.scan.conf の設定を変更するためである。
尚、当該ディレクトリを新規作成する場合の設定である。
2-2. 上記 1. の (2) への対処対応
下記のいずれかの手順を実施する。
(1) clamdscan の終了ステータスに着目しない場合
このエラーメッセージを無視し、Infected files: の値に着目する。
(2) clamdscan の終了ステータスに着目する場合
clamdscan を実行するスクリプトを作成し、終了ステータスを補正する。
スクリプトの処理概要は、下記の通りである。
# clamdscan clamdscan ... status=$? # discard file size error # - setting for ClamAV 0.103 case `clamd -V` in ClamAV\ 0.103.*) if [ $status = 2 ] && grep -q "^Infected files: 0" $log; then size_error=`grep -c "Can't allocate memory ERROR" $log` error_cnt=`grep "^Total errors:" $log | sed 's/.*: //'` if [ $size_error = "$error_cnt" ]; then status=0 fi fi ;; esac exit $status
(3) iso ファイルをチェック対象から除外する場合
/etc/clamd.d/scan.conf に下記の設定を追加する。
ExcludePath .*\.iso$
GPGの共通鍵での復号化で、CAST5アルゴリズムを使用できない (Debian 10) [Debian]
gnupg 2.2.12-1+deb10u1 (on Debian 10)
1. 発生事象
GPG の共通鍵での復号化で、CAST5 アルゴリズムを使用できない。
・Emacs において、CAST5 で暗号化されたファイルの参照(復号化)に失敗する。
・gpg コマンドの実行の場合、復号化できるが、エラーメッセージが出力される。
[エラーメッセージ]
gpg: WARNING: no command supplied. Trying to guess what you mean ... gpg: CAST5 encrypted data gpg: encrypted with 1 passphrase gpg: WARNING: message was not integrity protected gpg: Hint: If this message was created before the year 2003 it is likely that this message is legitimate. This is because back then integrity protection was not widely used. gpg: Use the option '--ignore-mdc-error' to decrypt anyway. gpg: decryption forced to fail!
(補足)
・Debian 10 の GPG では、アルゴリズムが未指定の場合、AES256 が使用される。
・CentOS 7 の GPG では、上記の問題は発生しない。
・gnupg2-2.0.22-5.el7_5.x86_64 を使用。
・暗号化では、アルゴリズムが未指定の場合、CAST5 が使用される。
・Debian 10 の file コマンドでは、使用されているアルゴリズムを確認できる。
2. 対処方法
下記の手順を実施する。
(1) 古いアルゴリズム(3DES、CAST5) での復号化を可能にする。
オプション・ファイル(~/.gnupg/gpg.conf) に下記の設定を追加する。
ignore-mdc-error
(2) 連携する全環境において、AES256 をアルゴリズムのデフォルト値にする。
オプション・ファイル(~/.gnupg/gpg.conf) に下記の設定を追加する。
cipher-algo AES256
3. 備考
(1) GPG が共通鍵方式で使用するアルゴリズムのデフォルト値
・gpg 2.2: AES256
・gpg 2.1: AES128
・gpg 1.0 および gpg 2.0: CAST5