نمایش زمان‌های متفاوت در ویندوز و لینوکس

اگر سیستم‌عامل‌های Microsoft Widows و GNU/Linux را در کنار یک دیگر و به صورت dual boot نصب کرده باشید، یکی از مشکلاتی احتمالی و رایج این است که هر سیستم‌عامل، با وجود تنظیم یک منطقه‌ی زمانی یکسان، دو ساعت متفاوت را نمایش داده و هر کدام را که به درستی تنظیم کنید، تنظیم دیگری به هم می‌خورد. این اشکال به ویژه زمانی خود را بروز می‌دهد که دستگاه به اینترنت متّصل نبوده و سیستم‌عامل نمی‌تواند پس از اجرا، ساعت خود را با ساعت جهانی هم‌گام کند.

دو سیستم‌عامل، دو زمان متفاوت
دو سیستم‌عامل، دو زمان متفاوت


ریشه‌ی مشکل

رایانه‌ی شخصی شما، زمان فعلی را در سخت‌افزار خاصّی (تعبیه شده روی مادربورد) ذخیره و بروزرسانی می‌کند. حتّی زمانی که سیستم خاموش بوده و به برق متّصل نیست، باتری کوچکی وظیفه‌ی فعّال نگه داشتن این قطعه را جهت بروز نگه داشتن زمان به دوش می‌کشد. امّا تفسیر سیستم‌عامل‌های گوناگون از مقداری که در این ساعت ذخیره شده، متفاوت است. به طور پیش‌فرض، لینوکس این‌طور می‌پندارد که این زمان، همان ساعت هماهنگ جهانی (UTC) است؛ درحالی که ویندوز منطق دیگری را دنبال کرده و زمان ذخیره‌شده در سخت‌افزار را زمان محلّی (local) فرض می‌کند.

برای مثال اگر منطقه‌ی زمانی هر دو سیستم‌عامل را ساعت استاندارد ایران (IRST – GMT+3:30) تنظیم کنید و ساعت ذخیره شده در سخت‌افزار و هم‌چنین ساعت هماهنگ جهانی برابر ۰۱:۰۰ باشد، لینوکس با توجّه به موقعیت شما، آن مقدار را با ۳:۳۰ جمع کرده و آن‌چه به شما نمایش می‌دهد، ۰۴:۳۰ است. امّا ویندوز فرض می‌کند که زمان ذخیره شده همان زمان محلّی بوده و در نتیجه همان را بدون هیچ‌گونه تصحیحی نشان می‌دهد: ۰۱:۰۰

راه‌کارها

اگر سیستم شما به طور دائمی به اینترنت متّصل بوده و هر دو سیستم‌عامل نیز پس از بوت، تاریخ و ساخت خود را به صورت خودکار همگام‌سازی (sync) کنند، عملاً متوجّه مشکل یادشده نخواهید شد. امّا برای رفع اساسی مشکل، لازم است منطق یکی از دو سیستم‌عامل را تغییر دهیم تا تفسیرشان از زمان ذخیره‌شده را عوض کنند. یا باید لینوکس این زمان را زمان محلّی فرض کند و یا ویندوز آن را زمان ساعت هماهنگ جهانی. هر دو کار ممکن بوده و در قالب دو راهکار زیر ارائه شده‌اند، امّا توجّه داشته باشید که تنها باید یکی از راه‌کارها را دنبال نمایید و از انجام هردو باهم پرهیز نمایید. در غیر این صورت مشکل هم‌چنان سر جای خود باقی می‌ماند.

گزینه‌ی ۱: لینوکس زمان را محلّی فرض کند

این ساده‌ترین و بهترین گزینه است – ساده از این نظر که تنها و تنها با تایپ یک دستور در ترمینال امکان‌پذیر است (هم‌چنین بازگردانی آن به حالت پیشین نیز به همین سادگی انجام می‌گردد) و بهتر از این نظر که لینوکس معمولاً می‌تواند با این تغییر منطق کنار آمده و احتمالاً بدون اشکال خاصّی به کار ادامه دهد، درحالی که ویندوز ممکن است به مشکلاتی روبه‌رو شود و برخی از نرم‌افزارهای ثالث یا سرویس‌ها هم‌چنان زمان را محلّی فرض کنند.

در نسخه‌های نوین توزیع‌هایی چون Ubuntu ،Mint ،Debian ،Red Hat ،Fedora و... می‌توانید از فرمان timedatectl به شکل زیر استفاده نمایید:

timedatectl set-local-rtc 1 --adjust-system-clock

فرمان بدون هیچ خروجی‌ای اجرا می‌شود. برای مشاهده‌ی تنظیمات فعلی می‌توانید این دستور را اجرا کنید:

timedatectl

اگر در جلوی عبارت «RTC in local TZ» واژه‌ی «yes» درج شده باشد بدین معنیست که کار خود را به درستی انجام داده‌اید و هم‌اکنون ویندوز درحال تفسیر زمان ذخیره‌شده به عنوان زمان محلّی است.

هم‌چنین هر زمان که خواستید این تغییر را به حالت پیشین (تفسیر به عنوان ساعت هماهنگ جهانی) برگردانید، کافیست دستور قبلی را با یک تغییر کوچک، مجدّداً اجرا نمایید:

timedatectl set-local-rtc 0 --adjust-system-clock

گزینه‌ی ۲: ویندوز زمان را جهانی فرض کند

انجام این کار می‌تواند خلل‌هایی احتمالی در عملکرد ویندوز ایجاد نماید. امّا به هر حال اگر در انجام آن مصر هستید، نخست باید تنظیم خودکار زمان از طریق اینترنت را غیرفعّال نمایید. در ویندوز ۱۰ برای انجام این کار باید به Setting و قسمت Time & language رفته و گزینه‌ی «Set time automatically» را غیرفعّال کنید. در ویندوز ۷ نیز کافیست روی ساعت task bar راست‌کلیک کرده و Adjust date/time را انتخاب نمایید. سپس وارد تب Internet Time شده و پس از رفتن به بخش Change Setting، تیک کنار «Synchronize with an Internet time server» را برداشته و روی OK کلیک کنید.

حال باید تغییراتی را در رجیستری اعمال نمایید. منوی استارت را باز کرده و عبارت «regedit» را تایپ کنید. از شما دسترسی امنیتی خواسته شده که باید توسّط ادمین سیستم تأیید گردد.

حال وارد کلید زیر شوید:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation

روی «TimeZoneInformation» در پنل سمت چپ راست‌کلیک کرده و در قسمت New، مقدار «DWORD (32-bit)» را انتخاب نمایید.

نام آن را به «RealTimeIsUniversal» بگذارید (به کوچک و بزرگ بودن حروف نیز دقّت کنید).

RealTimeIsUniversal

اکنون روی آن دابل‌کلیک کرده و Value data را برابر 1 تنظیم و روی OK کلیک کنید.

حال کار شما تمام شده و می‌توانید Register Editor را ببنید. اکنون ویندوز نیز همانند لینوکس، زمان را به عنوان UTC جهانی تفسیر می‌کند.

جهت بازگردانی تغییرات به حالت نخستین نیز کافیست مراحل پیشین را تکرار کرده، به همین کلید برگردید و RealTimeIsUniversal را حذف کنید.


منبع: How-To Geek

https://www.howtogeek.com/323390/how-to-fix-windows-and-linux-showing-different-times-when-dual-booting/