
Ubuntu日本語フォーラム

ログインしていません。
すでに多くの方がお気付きのように、「 Ubuntu-8.10 」 のLive-CDでは時刻がグリニッジ標準時で示されています。
従って、それをUSBメモリにC&Pしただけの 「 Ubuntu 8.10 on USB Memory 」 では、当然時刻が9時間遅れる
ことになります。
一方、従来のようにHDDにLive-CDの内容を解凍してインストールする場合は、インストーラの求めに従って時刻を
設定することができるため、この問題は起こりません。
以前のversionsでは起こらなかった不具合が 「 Ubuntu-8.10 」 では何故出現したのでしょうか。
それは、initramdisk (initrd.gz) の中の local-time ( timezone ) の設定に関わる複数のファイルがかなり変更
されたからです。 長くなりますが、以下に 「 Ubuntu-8.04.1 」 から 「 Ubuntu-8.10 」 への変更点を列挙します。
<< local-time 設定に関わる主な変更点 >>
1. ファイル init
for x in $(cat /proc/cmdline); do
case $x in
init=*)
init=${x#init=}
;;
・・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・・
break=*)
break=${x#break=}
;;
break)
break=premount
;;
tz=*)
TZ=${x#tz=}
;;
utc=*)
utc=${x#utc=}
;;
utc)
utc=y
;;
esac
done
↓↓↓
for x in $(cat /proc/cmdline); do
case $x in
init=*)
init=${x#init=}
;;
・・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・・
break=*)
break=${x#break=}
;;
break)
break=premount
;;
blacklist=*)
blacklist=${x#blacklist=}
;;
esac
done
ここでは、tz=*) から utc) までの紫色の kernelオプション(起動オプション)が削除されています。
つまり、起動オプションに 「 tz=Asia/Tokyo utc=no 」 と付け加えても全く無意味です。
2. ファイル /scripts/casper-bottom/02timezone
case $1 in
# get pre-requisites
prereqs)
prereqs
exit 0
;;
esac
log_begin_msg "$DESCRIPTION"
tzfile=/root/etc/timezone
ltfile=/root/etc/localtime
・・・・・・・・・・・・・・・・・・・・
( この間 25行省略 )
・・・・・・・・・・・・・・・・・・・・
chroot /root debconf-communicate -fnoninteractive ubiquity > /dev/null <<EOF
set clock-setup/utc true
fset clock-setup/utc seen true
EOF
fi
↓↓↓
case $1 in
# get pre-requisites
prereqs)
prereqs
exit 0
;;
esac
cp -f /root/usr/share/zoneinfo/UTC /root/etc/localtime
ここでは、紫色の35行が削除され、新たな青色の1行になってしまいました。
この青色の1行がLive-CDの時刻を一律グリニッジ標準時に固定している元凶です。
<< 変更の意味と対策 >>
これまでのversionsでは起動オプションに 「 tz=[area]/[city] utc=no 」 と付け加えればlocal-timeを指定
できたのですが、「 Ubuntu-8.10 」 ではそれらのオプションが削除されたので、一律グリニッジ標準時に固定
されているのです。
HDDにLive-CDの内容を解凍してインストールする場合に問題がなければ、残りはできるだけ簡略化しようとする
意図が働いているかもしれません。 実際、動きの遅いLive-CDでUbuntuを体験するというより、USBメモリを含め
てインストール用に使うのが主流であるとすれば、それも1つの見識と考えられます。
上述のようにLive-CDでは無理ですが、「 Ubuntu 8.10 on USB Memory 」 では簡単にlocal-timeを設定
できます。 geditでファイル /etc/init.d/rc.local を開き、最下段に下の1行を書き加えて保存します。
こうすれば、再起動時から日本標準時になります。
$ sudo gedit /etc/init.d/rc.local
cp -f /usr/share/zoneinfo/Japan /etc/localtime
この対策の意味は、ファイル /scripts/casper-bottom/02timezone によって起動の度に上書きされるファイル
/etc/localtime を起動の最後の段階でさらにファイル Japan で上書きし直すことです。
initramdisk (initrd.gz) そのものを編集するのでは手間が掛かり過ぎます。
お詫び :
日本標準時に設定するコマンドを
$ sudo echo "cp -f /usr/share/zoneinfo/Japan /etc/localtime" >> /etc/init.d/rc.local
と記載しておりましたが、これでは Permission denied と断られます。
上のようにgeditで編集する必要があります。 お詫びして訂正させて頂きます。 ( 11月24日記 )
.
最後の編集者: moz (2008-11-25 09:29:28)
オフライン
素晴らしい記事なので、「Make USB Startup Disk」 の使用法と「ブートCD」
http://forum.ubuntulinux.jp/viewtopic.php?id=3203
と合わせてスティッキーにしては如何でしょうか?=)
最後の編集者: hide (2008-11-23 22:10:56)
オフライン
試してみたところ、Windows側の時間がずれるようになってしまいました。
時間だけなので大した問題ではないのですが、
何か解決策があるようでしたら教えていただけませんでしょうか。
sdさん、この方法はHDDにLiveCDの内容を解凍してインストールした場合に適用できません。
その場合は、initramdisk (initrd.gz) の中のファイル /scripts/casper-bottom/02timezone などが存在せず、local-time
( timezone ) の設定法が全く異なります。
やはり、 Ubuntu 8.10 の時刻表示が+9時間になる に相談されるのが良いでしょう。
当方はそのような経験がないのですが、なお検討してみます。
.
最後の編集者: moz (2008-11-30 01:32:50)
オフライン
mozさん
自己解決しました。
時刻を手動で合わせてから/etc/init.d/rc.localの編集をしてしまった為、
今度は9時間進むようになってしまい、さらに、
/etc/default/rcSでUTC=noにしたりと
色々いじっていたせいでおかしくなってしまったようです。
/etc/default/rcSを元に戻し、
時間が9時間遅れている状態(インストール直後の状態)に戻してから
/etc/init.d/rc.localを編集したところ
正しい時間が表示され、Windows側にも影響は出ませんでした。
お手数おかけしてすみませんでした。