国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Linux > 正文

Debian下系統時間比正常時間快8小時的問題

2024-08-27 23:58:00
字體:
來源:轉載
供稿:網友

先說時區的配置,以前Debian有個好勝的時區配置工具,叫tzconfig,現在也沒有了,但配置時區倒也簡單,主要是兩個文件:

/etc/localtime

/etc/timezone

timezone這個文件是個文本,里面只需要寫一行自己的時區就行,我們這里就是上海,Asia/Shanghai(誰知道為什么不是北京呢?),localtime這個文件的類型不清楚,里面就寫了些timezone data,它可以從系統自帶時區文件那里拷貝,位置在:/usr/share/zoneinfo

從這個目錄下找到Shanghai拷貝到/etc下的localtime即可,有人說建個連接也可,這樣還可以保證系統數據有變化時不必再管。

設定了時區,還要確定Linux的時間方案。Linux支持UTC時間,Coordinated Universal Time,也就是世界協調時,也就是本初子午線上的時間,它和以前的格林威治標準時(GMT)的區別似乎是它是由多個原子鐘平均出來的。在 /etc/default/rcS這個文件中,設定了系統是否使用UTC,UTC=yes就是用。

計算機自己還有自己的時間,也就是硬件時間,hard clock,也就是存在BIOS里那個時間,關機也不會丟失。計算機啟動時,就要讀取這個時間。這個時間如果設定為UTC(GMT),也就是倫敦那地方的時間,就要在rcS文件中設定UTC=yes,反之則要設為no。

總之就是兩種正確的設置:

BIOS=本地時間,UTC=no

BIOS=UTC時間,UTC=yes

一般來講,BIOS里面都設定為當地時間,這是因為如果裝雙系統的話,Windows似乎不懂utc,就會出問題。這時UTC=no。

如果一切順利,到這時,進入Linux之后顯示的時間應該是正確的了。但不少人的機器,包括這回這臺640m,仍舊不正確,而是比正確時間再往前跑了8小時。這里的問題出在Linux讀取硬件時間上了。

Linux讀取這個硬件時間要用到hwclock這個命令:

hwclock --show :顯示硬件時間

hwclock --systohc :將系統時間寫入硬件

hwclock --hctosys :將硬件時間寫入系統時間

在出問題的時候,hwclock 這一組命令的運行通常是不能成功的,錯誤經常是這樣的:

select() to /dev/rtc to wait for clock tick timed out

也就是不能讀取/dev/rtc,也就是硬件時間。這又是因為某些機器的BIOS處理方式和Linux的rtc內核模塊之間出現了問題。

Linux又有3個這類模塊,rtc/genrtc/rtc_dev,似乎是一個比一個新,而debian通常自己用的是rtc這個老模塊;但 Dell/ibm/acer等等廠商現在都可能使用新的BIOS,這種BIOS和這個rtc就可能不對付。如果出現了上面那個timeout的問題,有兩種方法可以解決:

1, 給hwclock加參數,--directisa,也就是:

hwclock --directisa --show

如果運行成功,說明這個辦法可行。則把此參數添加為hwclock的缺省參數即可。在debian 4.0之后,可以直接在/etc/default/rcS中添加一行:

HWCLOCKPARS="--directisa“

而在4.0以前,可能只能在hwclock啟動腳本中添加,/etc/init.d/hwclock.sh,把里面的”/sbin/hwclock“ 全部替換為 ”/sbin/hwclock --directisa"。現在在debian sid中,這個腳本的第一行其實是HWCLOCKPARS=,也可以像rcS一樣添加參數了。

2, 換用其他內核rtc模塊,用如下方法測試哪個模塊好用:

  1. # modprobe rtc 
  2. # hwclock --show 
  3. # rmmod rtc 
  4. # modprobe genrtc 
  5. # hwclock --show 
  6. # rmmod genrtc 
  7. # modprobe rtc_dev 
  8. # hwclock --show 
  9. # rmmod rtc_dev 

沒有顯示time out的就是好用的了,然后可以在blacklist中阻止不好用的,在modules里面加上好用的那個。

用完這兩個方法,hwclock應該能直接工作了,也就是可以讀取硬件時間了,再配上utc設置正確,重啟之后時間就是對的了。

為了讓BIOS時間更準確,除了可以找個精確的時間源,比如CDMA手機或是GPS,靠自己的手指來精確設定BIOS時間之外,還可以用hwclock把準確的時間寫入BIOS,前一種方法細心點可以做到幾秒誤差,而后一種怎么也在1秒以下了。

安裝ntpdate這個包,它可以從時間服務器上讀取到正確的時間,精度還是很高的:

aptitude install ntpdate

ntpdate pool.ntp.org

此時系統時間就已經是ntp的時間了,相當精確,把它寫入硬件:

hwclock --systohc

這樣BIOS時間也就很準了,以后開機沒網絡,沒辦法運行ntpdate的時候也都是準的。

這里的關鍵有:bios時間,utc設定,rtc模塊,hwclock讀取,ntpdate對時。

在Debian的老bug里還看到因為系統有多個分區,比如/usr單獨分,fsck運行時會對時,并因此又造成快幾個小時的問題,不知道怎么處理的。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 漳州市| 平湖市| 汉川市| 波密县| 新蔡县| 环江| 灌南县| 江油市| 来安县| 昭通市| 夏邑县| 育儿| 永嘉县| 沅陵县| 彭山县| 南澳县| 开封县| 新建县| 嘉峪关市| 涞源县| 浏阳市| 禹州市| 噶尔县| 林州市| 凤山县| 张家港市| 平果县| 固安县| 吴江市| 东莞市| 会同县| 德化县| 静安区| 上高县| 望奎县| 彩票| 郎溪县| 会东县| 托克托县| 甘泉县| 宜城市|