събота, ноември 07, 2009

Синхронизация на часа с Windows и Linux

Ако ползвате Windows и Linux на една и съща машина сте забелязали един интересен проблем. Часа постоянно се мени и за това си има много добро обяснение. И windows и linux (в моя случай Ubuntu) си синхронизират времето чрез NTP сървъри, но windows задава върху часовника на BIOS-а времето в конкретната часова зона, а Linux гринуичко време и съответно маха или добавя часове за да покаже на потребителя локалното му време.
(btw, това е само предположение на база наблюденията ми, нямам идея дали наистина прави точно това)

Това е лесно обяснимо, Linux изоснови е предвиден като многопотребителска операционна система и по този начин е много по-лесно да показваш текущото време на различни потребители в различни часовия пояси. При Windows нямам идея как е решен този проблем и дали въобще е решен. Може би се разчита на идеята, че Win потребителите не работят на един компютър от ралични зони. :)

Та ...
Това е малко дразнещо. Ако имате и двете операционни системи и ви се налага да работите често и с двете, още повече.

Едно от възможните решения е да ги накарате и двете да се синхронизират при пускане.
Ubuntu по подразбиране прави точно това, но ако все пак не това не работи при вас или не ползвате Ubuntu варианта е да се направи cron, който трябва да изпълнява :

ntpdate ntp.ubuntu.com

Спокойно, няма да ви се разсърдят, че им ползвате ntp сървъра дори да не ползвате Ubuntu.
Под Windows нещата стоят по подобен начин. Просто направете един .bat файл, който съдържа
w32tm /resync

и кажете на системата да го пуска при зареждане (най-лесно ще ви е да го drag-нете в AutoRun на start менюто).

Общо взето се получава така, че когато се зареждат и Windows-а и Linux-а и двете ще ОС ще "питат" сървърите си "Колко е часа" и ще си го нагласят както си му е реда.

Ако ви се чете повечко за NTP (интересно е) може да започнете от тук - http://en.wikipedia.org/wiki/Network_Time_Protocol