2011/12/31(Sat)Fedora15 -> Fedora16 へのアップグレード
2011/12/31 19:45
ユーザも増えて情報量も増えてきた頃なのでアップデートしてみたのだが、その時のTipsやメモのまとめ。
アップデートって面倒?
普段サーバ機には電源ケーブルとLANケーブルしか刺さっていないが、今までアップデートの時はVGAケーブルとキーボードを接続してモニタリングしていた。サーバの置いてあるスペースなんて、普段立ち入らないから狭い隙間しかないので、この手間が結構大変。
というわけで、大きな問題が起こらない事を祈りつつ、LAN内からオンラインアップデートしてみました。*1
事前準備
とりあえずyumで最新にしておくことと、.rpm(save|new)という設定ファイルを適当にマージなり削除しておくことでしょうか。初めてpreupgradeを使う人は、 yum install preupgradeもお忘れ無く。
# yum update # find /etc -print | egrep "rpm(new|save)$"公式Wikiでは/全体を探してますが、だいたい/etcの下にしか設定ファイルは無いのでこれで十分です。
アップデート作業
preupgrade
いつものようにpreupgrade-cliコマンドを使ってやります。が、いつものLANG=ja_JP.UTF-8だと途中でエラーを起こして止まってしまうので*2、LANG=Cを付けるのがミソです
使い方は簡単で、第1引数に"Fedora xx (CODENAME)"と書くだけですが、引数無しで実行するとアップグレード可能なバージョンが列挙されるのでコピペすると良いでしょう。
これまで避けていたバージョン飛ばしアップデートですが、公式Wikiによると
Upgrade to current release directlyとのことなので、例えばFedora 14から16にいきなり上げても良いみたいです。
Preupgrade provides an upgrade directly to the latest version of Fedora. It is not necessary to upgrade to intermediate versions. For example, it is possible to go from Fedora 14 to Fedora 16 directly.
VNCオプションが便利
そしてその時、VNCオプションを与えて、サーバのIPアドレス情報をstaticに指定してやると、再起動後のパッケージインストール中の様子をVNCで見守る事ができちゃいます。
# LANG=C preupgrade-cli --vnc[=password] --ip=[IPADDR] --netmask=[NETMASK] --gateway=[IPADDR] --dns=[DNSSERVER] "Fedora 16 (Verne)"
どーせパッケージダウンロードは再起動前に行うので、ゲートウェイやDNSのアドレスはどうでも良いのですが、一応ね。あと、VNCパスワードは適当に1234等にすると"6文字以上で"と怒られたりしました。よしなにしましょう。
VNCオプションを付けていた場合、
The upgrade will start a VNC server on port 5901, requiring the given password.等と最後に表示されるので、サーバが再起動したのを見計らって先ほどのIPアドレスの5901番に接続すれば見えます。解像度はXGAでした。
ちなみに、この時sshなどは拒否されるので、実質制御は何も出来ないと考えた方がよさそうです。
サポートされないパッケージの削除
アップデートが終わったら、サポートされなくなったパッケージの削除を行っておきます。# package-cleanup --orphans
アップデートのベリファイ
repolistで正しいFedora 16のリポジトリが設定されている事を確認して、リポジトリと正しくバージョン同期が取れているかを確認。yum updateと違ってdistro-syncは、downgradeが必要な場合にはdowngradeを行ってくれる点が違うようです。
# yum repolist # yum distro-sync
Fedora 15から16になって注意する事
grub2
今回からGRUB->GRUB2に変更されたので、/boot/grub/menu.lstではなく/boot/grub2/grub.cfgに変更になってます。しかも、このファイルは動的に作られるらしく、GRUBの各種設定は/etc/default/grubに書くだとか、テンプレートは/etc/grub.d/にあるとか勝手が変わっていて、最後に、 grub2-mkconfig -o /boot/grub2/grub.cfgとする流儀のようです。
Windows Vista以後のNTLDR(+boot.ini)->BOOTMGRへの変更のように、テキストファイルのエントリを直接するスタイルから、プログラムを使って動的生成するスタイルにシフトしつつあるんですかね……。
個人的には、その互換OSが無いとブートエントリが編集できなくなるようなブートシステムは好みじゃないんですがねー。
systemd
Fedora 15からいくつかのサービスがservice, chkconfigコマンドで管理されるSysVからsystemdという新しい管理体系に変わりました。Fedora 14 -> Fedora 15の移行の時にもcrondが自動起動しなくなっていたり、困った事はいくつかあったのですが、Fedora 16になってさらに多くのシステムサービスがsystemdに移行したことで、自動起動しないアプリが多数ありました。ここは注意。
一つ一つ確認しておきましょう。
# systemctl -a | grep \.service | lv主に困ったのは
- httpd
- mysqld
- smb, nmb
# systemctl enable httpd.service # systemctl start httpd.serviceのように2つコマンドを打っておけば、自動起動の設定と即時起動できます
あと、SysV系のpostfixも何故か立ち上がってこなかったので、service postfix startしたり…
SysV系、減りましたな…
▼Fedora 15
$ chkconfig --list | cut -f1 Note: This output shows SysV services only and does not include native systemd services. SysV configuration data might be overridden by native systemd configuration. auditd cpuspeed dnsmasq hddtemp httpd ip6tables iptables irda mdmonitor multipathd named netconsole netfs network nfs nfslock pcscd psacct rpcbind rpcgssd rpcidmapd rpcsvcgssd rrdgraph saslauthd sendmail snmpd snmptrapd sshd svnserve wpa_supplicant ypbind▼Fedora 16
$ chkconfig --list | cut -f1 注記: この出力は SysV サービスのみであり、ネイティブな systemd のサービスは含まれていません。 systemd services. SysV 設定のデータはネイティブな systemd の設定によって上書きされます。 dc_client dc_server fetchmail ipmi named netconsole netfs network postfix rrdgraph svnserve※上記の結果は異なる筐体の出力です。