
私のマシンには、Linux ディストリビューション (プライマリ) と Windows 7 (めったに使用しない) の 2 つの O/S があります。
両方の O/S は私のタイムゾーン (UTC+1) に設定されています。
BIOS での時間の設定方法に応じて、Windows では現在の時刻の 1 時間前、Linux では 1 時間後の時刻が表示されます。
なぜこのようなことが起こるのでしょうか?
Windows マシンは通常、インターネットから切断された状態で起動します。Linux マシンはインターネットに接続されているため、しばらくすると日付が修正されますが、再起動すると再び誤った構成になります。
編集: 重複していることが判明https://serverfault.com/questions/16107/why-does-ubuntu-9-04-reset-my-windows-clock
答え1
ここで影響している可能性がある問題がいくつか考えられます。
まず、片方では夏時間が有効になっているのに、もう片方では有効になっていないか、OS の 1 つが間違ったタイムゾーンに設定されている可能性があります。
Linux は、コンピュータのハードウェア クロックがローカルではなく UTC に設定されていると想定している可能性があり、Windows はローカルに設定されていると認識している可能性があります。UTC+1 または UTC-1 を使用している場合、その動作が見られる可能性があります。Linux は、ハードウェア クロックの値を読み込み、それをローカルに調整し、シャットダウン時にハードウェア クロックに書き込む前に UTC に戻している可能性があります。
答え2
Linux ディストリビューションは、BIOS クロックが UTC を使用していると想定しており、Windows インストールは、BIOS 時間がローカル時間であると想定しています。
デュアルブートのラップトップでの設定方法は次のとおりです。システム クロックに UTC ではなく localtime を使用するように Linux 側で変更します。まず、次のようにコマンドを実行して、Linux 側で時刻が適切に設定されるようにしますroot
。
date -s "2 feb 2016 18:05:15"
hwclock --hctosys --localtime
BIOS の日付/時刻設定をコンピュータにコピーし、ローカル時刻に設定する必要があります。BIOShwclock --systohc --localtime
の時刻を UTC ではなくローカル時刻に設定する必要があります。date
上記のコマンドで時刻を設定してから、hwclock --systohc --localtime を実行し、さらに hwclock --hctosys --localtime を実行して、/etc/adjtime のファイルの最後の行に 'UTC' ではなく 'LOCAL' と表示されていることを確認することをお勧めします。--hctosys --localtime
フラグを組み合わせると、プログラムでこれを実行できます。単独で実行することも可能ですdate
が、確認していません。
システム時刻が実際に現地時間で正確であることを確認します。日付設定文字列のフォーマット方法について心配する必要はありません。非常に柔軟性があります。他の有効な言い方の例:
date -s "2 feb 2016 6:05:15 PM"
date -s "february 2, 2016 6:11:30 PM"
date -s "Tue Feb 2 18:11:30 EST 2016"
(私は東部標準時間、GMT -5 にいます)
それでも問題が解決しない場合は、タイムゾーンを再度選択する必要があるかもしれません。Debian や Ubuntu などの派生製品では、sudo dpkg-reconfigure tzdata
ncurses インターフェイスでタイムゾーンを変更します。
それがない場合は、関連するタイムゾーン情報ファイルを探してみてください。私のインストールでは、これは です/usr/share/zoneinfo/America/Indiana/Indianapolis
。
見つけたら、それを以下にコピーします/etc/localtime
:
cp /usr/share/zoneinfo/America/Indiana/Indianapolis /etc/localtime
これを行った後、時刻が適切に設定されていることを確認しますdate
。設定されていない場合は、最初の 2 つのコマンド (date
およびhwclock
) を再度実行します。
Linux では、Linux で設定した時刻が Windows と適切に共有されるはずです。あるいは、Windows で UTC を使用するように設定することもできますが、これはより困難です。この方法はバージョンによって異なり、Windows は更新後にローカル時刻に戻ることが知られています。
特に頑固なコンピューターが 1 台ありました。hwclock
コンピューターが NTP を使用してインターネット経由で現在の時刻を取得していたため、すべての操作が上書きされてしまいました。タイム ゾーン設定は、NTP を完全に無効にせずにこの問題を解決する唯一の方法でした。
とにかく、これは私がこれまでに経験したことのすべてをまとめたものです。これらのうちの 1 つはほぼ確実に機能するでしょう。まずタイムゾーンに関するものを試し、その後、hwclock --systohc --localtime
BIOS クロックがローカル時間になっていることを確認するために、必ず試してください。