2012年05月13日

[linux]fedora 16 to 17 アップグレード

自分のブログからの転載
--------

先月末位にfedora 17のβがリリースされた。
もうそろそろ、fedora 17本リリースされるだろう。fedoraは過去2バージョンしか保証されない(リポジトリがなくなるかもしれない)ので、ベータ出たら一応アップグレードはしてる。
どうせ個人使用だし。

2012/5/13時点は、
#uname -r
3.3.4-4.fc17.x86_64
kernel は、たぶんfedora 16の最新版とメジャーバージョンは同じ、、はず。

非力なノートに入れてるF16が、最近無線LAN周りでエラー吐くようになった。
調べてみるとカーネルの問題みたいなので、ものは試しで入れることに。
うまくいけばサーバ用にも適用しようと。

いままでfedoraのアップグレードは何回かやってきてる
・f11→f12は、初体験でgnomeからやって(runlevel=5でやって)固まり結局いれなおし
・f12→f13は、サーバ側のccidのバグなのか何なのかでテレビ見れなくなってヒヤ汗
・f14→f15は、成功するもののアップグレードのgnome3に戸惑いまくり
・f15→f16は、kernel3で不安になって結局アップグレードではなく新規インスコ
と、さしてや難しくないアップグレードにはなんか恵まれない

今回
ノート 32bit
途中までうまくいったものの仕上げでrunlevel=2にするのを忘れてフリーズ。
中途半端でやったのでインスコ失敗。gnome3を捨てCentOS6に移行

デスクトップ 64bit
ノートの失敗を踏まえてこちらは成功。

----

f17は、アップグレードは難しい(単純にfedora-release / yum upgradeじゃできない)。
そもそものファイルシステム構成を変更してアップグレードの必要がある。
カーネルが2系→3系になった、fedora15 -> 16より多分インパクトあると思う。

基本的には
Upgrading Fedora using yum fedora 16 to 17
ここにすべては集約されてます。
(以下、例によって自己責任で)

前準備:
(筆者は、fedora 16 -> 17のアップグレード中に(rpm -Uhv fedora-release | yum upgrade の後にやって成功しました。以下手順の6. から開始して、失敗して1. に戻った。)やって、特に問題なくできました。が、多分前もってやった方がスジとしては正しいんだろうと思う。)

まずは、Fedora 16 -> Fedora 17 の欄を参考にして、まずはファイルシステムを移行する必要があります。
(この作業は慎重にやってください。たぶん、失敗したら起動しなくなると思います)

こここでの記載によると、fedora 15で導入された systemd という、/etc/init.d/xxx に変わる各サービスの起動方法の変更を本格採用するらしい。
例:sshdだったら
過去:/etc/init.d/sshd restart
今後:/bin/systed start sshd.service
/etc/systemd/system 以下にスクリプト(のショートカットがある)ので、これを参照するようになる。

それと関係して(と言ってるけどホント?)、ファイルシステムが大きく変わる。
具体的には以下のパスがこんな風になる。
/bin → /usr/bin
/sbin → /usr/sbin
/lib → /usr/lib
/lib64 → /usr/lib64

これをやらないと、fedora 17にはできません。

もちろん、ファイルを手動マージなんてしたら多分怖いので、参考のファイルシステム変更方法が書いてある。
dracut パッケージを使う
(これは今でも入ってて、カーネル起動時とかに使ってるはず。これのインスコの失敗で、過去アップグレードに失敗したことがある)

ちなみに以下をやると、fedora 16のままにはできない。
ファイルシステム変更したら即fedora 17にしないといけないので注意。


1. 次回起動時に、file systemの変更をしてくれるようにと依頼する。
# dracut -H --force --add convertfs

2. カーネル起動時のパラメータの修正
 /etc/grub2.cfg を修正する。

- remove “ro” (read only)
- append “rw” (read write) to let dracut mount your root filesystem writeable
- remove “rhgb” (Red Hat graphical boot) to disable the graphical bootsplash
- append “rd.info” to get a more verbose output from dracut
- append “rd.convertfs” to enable the /usr-move conversion script in dracut
- append “enforcing=0” to disable SELinux enforcement


とあるので、以下の"linux "で始まる文(要するにgrubメニューの一番上(もしくはカスタムカーネルにしてるならその行を探して))以下のように変更。

linux /boot/vmlinuz-3.X.X-XX.fc16.x86_64 root=UUID=6e966b10-b03a-4a9c-8df3-c35e2744b3ae ro rd.md=0 rd.lvm=0 rd.dm=0 quiet rhgb rd.luks=0 LANG=ja_JP.UTF-8 KEYTABLE=jp106

linux /boot/vmlinuz-3.3.4-4.fc17.x86_64 root=UUID=6e966b10-b03a-4a9c-8df3-c35e2744b3ae rorw rd.md=0 rd.lvm=0 rd.dm=0 rd.luks=0 LANG=ja_JP.UTF-8 KEYTABLE=jp106 rd.info rd.convertfs enforcing=0

要するに
・グラフィカルの起動をやめて
・カーネルの起動を読み書き可能にして
・dracutにパラメータを与えて
・selinuxを無効化する。
(グラフィカルの起動云々は別にしても、まぁ、一度失敗したら起動しなさそうな感じなので、十分な気を遣うこと)

3. 恐る恐る再起動
# reboot

起動時に、dracutがファイルシステムの移行をしてくれる。
/bin -> /usr/bin
に移行したりする旨が出てくる。
エラーがなく終了して、起動すればOK。
心配なら↓のコマンドを打って(カーネル起動メッセージ)、エラー出てなければOK。
# dmesg | grep dracut

(この先は慎重にやってください)
4. カーネルパラメータを戻す。
 →これをやらないと、次回起動時にまたdracutによりファイルシステム移行が走るので多分ぐちゃぐちゃになると思う。絶対やること。

2. でやったうちの、
- append “rd.info” to get a more verbose output from dracut
- append “rd.convertfs” to enable the /usr-move conversion script in dracut

これは消さないとダメ。他はどっちでもいいと思う。

linux /boot/vmlinuz-X.X.X-X.fc16.x86_64 root=UUID=6e966b10-b03a-4a9c-8df3-c35e2744b3ae rorw rd.md=0 rd.lvm=0 rd.dm=0 rd.luks=0 LANG=ja_JP.UTF-8 KEYTABLE=jp106 rd.info rd.convertfs enforcing=0

5. ファイルシステムの確認
/bin/
//sbin/
/lib
/lib64
とかがシンボリックリンクになってれば、無事成功。
ただし、fedora 17へのアップグレード(以下6. )をやらないで起動すると多分起動しない。

6. fedora 16 -> 17へのアップグレード
 ファイルシステム変更して、再起動する前にやることを強く推奨。
  1. から順にやってきた場合は、前もって、fedora-release-17xx.rpmはとってきておいた方がよいです。


6-1. 本体バージョンアップ
# rpm -Uhv fedora-release-17(取ってきたやつ).rpm
# rpm -Uhv fedora-release-rawhide(取ってきたやつ).rpm
 fedora-release-17
 fedora-release-rawhide
 は、技研とかから取ってきてください。

6-2. ランレベルの変更
普通は起動時にctrl + alt + F2 で変更できる
(みたいだけど、私はなんか無理だったので、/etc/inittabを参考にシンボリックリンクを変更した。)
※runlevel=5とかでやると今回は固まった。リモートsshか、ランレベル2でやることを強く推奨します。


6-3. ファイルアップグレード
コンソールから以下を打つ。
# yum update yum
# yum --releasever=17 disableplugin=presto --skip-broken distro-sync
だいたいβはリポジトリまとまってないので、--skip-broken をつける

※ファイルシステムを変更してない場合、
rpmlib(X-CheckUnifiedSystemdir)is needed by filesystem-3-2.fc17.x86_64
rpmlib(X-CheckUnifiedSystemdir) is needed by setup-2.8.48-1.fc17.noarch
と出ると思うので、この場合は1. からファイルシステムを変えて、再度実行すればできます。(私はその方法でうまくいきました。)

一応これで、fedora 16 -> 17(64bit)は成功。
# cat /etc/redhat-release
Fedora release 17 (Beefy Miracle)
# uname -r
3.3.4-4.fc17.x86_64
で、OK。

#起動画面は 花火が上がってる。和風な感じがしたのは私だけだろうか。

もちろんfedora 17がもうすぐリリースされるのでそれ待ってもいいかもしれません。
が、ファイルシステムの移行は必須です。
個人的には、大きなリスクを追ってまで、無理にすることもないような気はします。

fedoraは15くらいから(たぶんUbuntuも11.04くらいから(?))gnome3の採用 -> kernel3 の採用 -> /usr/以下のファイルシステムの移行、などあまりにも急進的なことやってるので、無理にアップグレードしないでCentOSに移行してしまうのも一つの手です

posted by MCのひとたち at 17:32| Comment(0) | TrackBack(0) | アーキテクト
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス: [必須入力]

ホームページアドレス: [必須入力]

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/55823141
※言及リンクのないトラックバックは受信されません。

この記事へのトラックバック