ubuntu8.04にアップグレードしてみた

今日かねてから気になっていたubuntu8.04にアップグレードしてみました。まわりの人が「アップグレードしたらグラフィックボードが認識されなくて表示がおかしくなった」「結局ディスクからインストールにした」とけっこう言ってたので、あえてアップグレードにトライしてみました。
アップデートマネージャからアップグレードを開始、そんなに時間もかからずダウンロードから再起動まで完了。ところが、なんと起動してみたらローグラフィックモード…。やっぱりグラボが認識されないという噂はホントでした。さらに始末の悪いことに制限付きドライバも何故か存在しませんでした…。

というわけで、7.10で苦労したnvidiaのドライバを再びインストールすることに。(前回のファイル削除しなくてよかった〜)

まずはnVIDIAのサイトからドライバをダウンロード。
http://www.nvidia.com/page/home.html
ちなみに今回はnVIDIA GeForce 8600 GTなので8 series → GeForce 8600GTを選択。NVIDIA-Linux-x86-169.12.-kg1.runファイルをホームフォルダに置きました。

  • 必要なパッケージのインストール
$ sudo apt-get install build-essential linux-source 
linux-headers-`uname-r` xserver-xorg-dev
  • ドライバのインストール

Xが起動していてはインストールができないため、まずXを停止してからインストールを行う。

# まず、[Ctrl]+[Alt]+[F2]を同時に押してテキストモードへ移行し、ログイン

$ sudo /etc/init.d/gdm stop    # GDMをストップしてXを停止
$ sudo sh NVIDIA-Linux-x86-169.12.pkg1.run    #インストールの開始


インストールの行程がすべて英語なので、わからない人はポジティブな選択をすればOK(Accept、Yes、OKなど)。
インストールの最後にxorg.confを書き換えるかを聞いてくるのでYesを選択。
(ちなみに、このケースでは前に一度インストールを行っているため、途中でシンボリックリンクがどうのというエラーメッセージが出ましたが、とりあえず強引に完了。)

  • 既存のnVIDIAモジュールを無効化
$ sudo vi /etc/default/linux-restricted-modules-common

# 以下に書き換え
DISABLED_MODULES = "nv nvidia_new"
  • lrm-videoの修正
$ sudo vi /etc/modprobe.d/lrm-video

# すべての行をコメントアウト

# Make nvidia/nvidia_legacy and fglrx use /sbin/lrm-video to load
# install fglrx /sbin/lrm-video fglrx $CMDLINE_OPTS
# install nvidia /sbin/lrm-video nvidia $CMDLINE_OPTS
# install nvidia_legacy /sbin/lrm-video nvidia_legacy $CMDLINE_OPTS
# install nvidia_new /sbin/lrm-video nvidia_new $CMDLINE_OPTS
  • 再起動
$ sudo reboot


起動後、解像度が800×600になっていたのを、nvidia-settingsから1600×1050に変更。これで解像度はうまく元に戻りました。
ですが、他にもいろいろと細かいところでバグを発見。

  • 終了ボタンの位置が微妙に変。
  • firefoxが急に落ちる(3.0b5だからか?)
  • firefoxのアイコンがなくなっている。

とりあえず暇があったら解決してみます。

JavaScriptの復習

  • JavaScriptで関数(オブジェクト)を宣言する。
var hello1 = function() {
    alert("Hello, World !!");
}

var function hello2() {
    alert("Hello, World !!");
}

hello1();    // Hello, World !!
hello2();    // Hello, World !!

このような簡易版もあります。

var hello3 = { name: "Me", age: 22 };

alert(hello3.name);    // Me
alert(hello3.age);     // 22
  • 関数オブジェクトの生成(あんまり使ったことないけど)
var hello4 = new function() {
    alert(Hello, World !!");
}

//Hello, World !!

javascriptではnewすると生成されたオブジェクトの戻り値を返すので、関数を呼び出さなくてもalertが実行されます。

MACアドレスとIPアドレス


今日から勉強・趣味に関わらず、読んでる本や頑張ってることを書いていきます。今サーバの構築をやっているということで、先輩から勧められた本を読んでます。ネットワークのエキスパートには不評みたいですが、素人の自分にはなかなか分かりやすくていい本です。


今のところ、OSI参照モデルでいうネットワーク層を勉強してます。この辺までは分かってるつもりだったんですが、今まで曖昧にしてた部分がたくさんあることに気づきました…。とりあえずなぜ送信先のコンピュータの特定にMACアドレスIPアドレスの両方が必要なのかやっと分かりました。


例えば、はてなに何かリクエストを送ろうとする場合、データのやり取りをしようにも初めて接続する場合には相手先のMACアドレスが分かりません…。でも「www.hatena.ne.jp」というアドレスは分かってます。DNSでIPに変換すると「221.186.146.27」になります。IPはいわば住所みたいなもんですから、これではてなのサーバが世界中のネットワークの中のどこに存在するかを知ることができます。あとははてなのネットワークに対して「MACアドレス教えて」というメッセージを送ればいいわけです。


ということだったわけで。だいぶ簡単に書きましたが…
だから極端な話、2台のコンピュータでネットワークを構築するときにはMACアドレスだけでもOKなんです。


次はあんまり自信のないトランスポート層です。頑張ります。