Linuxユーザの立場から、役立つ情報や困ったときの解決方法を分かりやすく、かつ簡潔に記事にまとめています。主に、Ubuntu 8.04(→9.04)やCentOS 5.2(→5.3)で確認したことですが、他のディストリビューションでも応用できると思います。内容は(1)設定ファイルの書き方(2)役立つソフトウェア紹介やインストール方法(3)便利なコマンドの使い方や活用例(4)困ったときの解決方法です。このページの末尾にキーワード別で記事を分類してあります。また、真上の「ブログ検索」フォームからブログ内の記事を検索できます。

2009年3月24日火曜日

内臓CDドライブのない古いラップトップに最近のLinuxを入れるには このエントリーを含むはてなブックマーク

内臓CDドライブのない古いラップトップに最近のLinuxを入れるのは難しいらしい。そこで少し色々調べた結果をまとめてみる。

事情

古いパソコンでは外付けのCDあるいはDVDドライブ、USBなどから起動できない場合が多い。だから、内臓CDドライブのない古いラップトップにLinuxをインストールするときは、FDから起動してインストールすることになる。しかし、kernel2.6では、ブートイメージが大きくてFDに入りきらないため、FDからのインストールが利用できない。

どうするか?

例えば、Windowsが既にインストールされていたら、wubiというexe形式のインストーラでubuntuをインストールできる。ただ、ubuntu以外のディストリビューションではこういった方法はできない(おそらく)。

勧められないけれど、他の方法もある。まずHDDを取り出して、比較的最近のラップトップに入れてインストールする。この方法だとハードウェア構成が異なるから、元のPCにHDDを戻したら起動できなくなるとか、いくつかのデバイスが使えなくなるとか、うまくいかない場合があるらしい。

さらに別の方法は、既にLinuxがHDDにインストールされている場合に使える方法。例えば 、旧バージョンのLinuxがインストールされている場合を想定してみる(旧バージョンのものだと古いPCにもインストールできる場合がある)。そして、インストールしたいバージョンのインストールイメージvmLinuz, Initrd.imgをリポジトリから取ってくる。それらを/bootディレクトリに配置する。ブートローダにgrubを使っているならば、次のように起動時のパラメータで先ほど配置したイメージを指定するように設定ファイル/boot/grub/menu.lstを編集する(bootが別パーティションの場合)。

title CentOS (適当に名前をつける)
        root (hd0,0)
        kernel /vmlinuz ro root=LABEL=/1 rhgb quiet
        initrd /initrd.img

これで再起動すればインストーラが起動する。後は、ネットワークからインストールするとか、手持ちのDVDなどからインストールすれば良い。

参考サイト

2009年3月21日土曜日

システムの情報を取得する。 このエントリーを含むはてなブックマーク

本記事では、カーネルのバージョンなどシステムの情報を取得するコマンドunameを説明する。

書式

$ uname [オプション]

オプション

オプションは以下の通り

-a,--all
すべての情報を表示する。
-s,--kernel-name
カーネル名を表示する。
-n,--nodename
ネットワークノードのホスト名を表示する。
-r, --kernel-release
カーネルリリースを表示する。
-v, --kernel-version
カーネルバージョンを表示する。
-m, --machine
マシーンハードウェア名を表示する。
-p, --proseccor
プロセッサタイプまたはunknownを表示する。
-i, --hardware-platform
ハードウェアプラットフォームたまはunknownを表示する。
-o, --operating-system
オペレーティングシステムを表示する。
--help
unameのヘルプを表示する。
--version
unameのバージョンを表示する。

2009年3月9日月曜日

あるディレクトリ以下に対して何々する方法 このエントリーを含むはてなブックマーク

本記事では、指定したディレクトリとその子ディレクトリ以下に存在する、とあるファイルたちに対して同じ操作をするための方法をまとめる。

状況説明

どのような状況でこういった操作が必要となるか?例えば、手持ちのjpegファイルを別の場所にひとまとめにする場合である。次のような状況だとちょっと作業が大変そうに思われる。

基点になるディレクトリとして~/picturesを使っていて、その下に種類や撮影場所ごとにディレクトリを作成してjpegファイルを格納してある場合。さらに、テキストファイルなど別の種類のファイルも格納してある場合。

解決法

簡単に解決する方法としてファイルグラブを使う方法が考えられる。~/picturesの下にあるディレクトリの深さが高々2個ならば次のようにたった1行のコマンドで十分である。

$ mv ~/pictures/{,*/,*/*/}*.jpeg ~/tmp

上のコマンドの意味は、「~/picture/*.jpeg, ~/picture/*/*.jpeg, ~/picture/*/*/*.jpegを~/tmpに移動せよ」である。しかし、あらかじめディレクトリの深さの上限が分かっていない場合や調べるのが面倒な場合はどうすれば良いだろうか?私はファイルグラブで解決する方法は知らないのだが、findコマンドを使えばこれまたたった1行のコマンドで十分である。

$ find ~/picture -name '*.jpeg' -print0 | xargs -0 mv {} ~/tmp

findコマンドの詳細は本サイトの記事「findコマンドでファイルを探す」をご参照ください。このコマンドの意味は、「~/.picture以下に対して、jpegという拡張子を持ったすべてのファイルに対して、それらを~/tmpに移動させよ」である。

思ったこと

上の説明でファイルグラブによる良い方法を知らないと言ったことに関して。ネットで調べてみると「UNIXの部屋 コマンド検索: ファイルグロブ」というサイトで本記事と似たような説明があるが、ディレクトリの深さが任意の場合の方法が書かれていない。ファイルグラブによるうまい解決方法はないのだろうか?それとも、あまり知られていないだけだろうか?

/etc/hosts.allowでのサブネットマスクについて このエントリーを含むはてなブックマーク

本記事では、/etc/hosts.allowでのサブネットマスクの指定の仕方について注意事項をまとめる。

hosts.allowとは

/etc/hosts.allowは、ローカルホストへのアクセス制御を規程する設定ファイルで、/etc/hosts.denyと対になるものである。通常、/etc/hosts.denyですべてのホストからのアクセスを拒否して、/etc/hosts.allowに許可するホストを個別的に記述することが多い(設定の詳細は、本記事「SSHサーバの設定」のセキュリティの設定(Tcp wrappersを用いたアクセス制限)という節にまとめている。)。

サブネットマスクの指定方法

サブネットマスクは、ipアドレスのネットワーク部の長さを表すもので、192.168.0.0〜192.168.255.255の範囲のipアドレスは192.168.0.0/16というように表される。ちなみに、2進数で表すと次のようになる。

11000000.10101000.00000000.00000000 から 11000000.10101000.11111111.11111111 まで

16は先頭から16ビット目までがネットワーク部であることを表していて、この表記によってそのネットワークに属するすべてのホストを表すことができる。

本題の/etc/hosts.allowでのサブネットマスクの指定だが、例えばsshサービスにアクセスできるホストのipを制限する場合には次のように書けば良いのかと勘違いしていたが、間違いであることに気づいたのでメモしておく。

ssh : 192.168.0.0/16 <---誤り(と思う) 

centosで、$man hosts.allowとして確認してみたら、アクセス制御で実装されているパターンについて書かれていた。ネットマスクを使う場合:

An expression of the form ‘n.n.n.n/m.m.m.m´ is interpreted as a ‘net/mask´ pair. An IPv4 host address is matched if ‘net´ is equal to the bitwise AND of the address and the ‘mask´. For example, the net/mask pattern ‘131.155.72.0/255.255.254.0´ matches every address in the range ‘131.155.72.0´ through ‘131.155.73.255´.

ssh : 192.168.0.0/255.255.0.0

あるいは、もっと簡単な書き方もできる。

ssh : 192.168.

A string that ends with a ‘.´ character. A host address is matched if its first numeric fields match the given string. For example, the pattern ‘131.155.´ matches the address of (almost) every host on the Eindhoven University network (131.155.x.x).

2009年3月8日日曜日

yum.cronでエラー このエントリーを含むはてなブックマーク

cronでyumによる自動アップデートをさせるときに

Error: Cannot retrieve repository metadata (repomd.xml) for repository: base. Please verify its path and try again

というエラーが出てうまく動かないので、その原因を調べて解決策をまとめる。

私の環境ではプロキシ経由でインターネットに接続しているのだが、 cronによって定期的に実行されるスクリプト/etc/cron.daily/yum.cronは、~/.bashrcで設定しているプロキシを読み込んでいないらしい。なので、/etc/yum.cronに直接次の行を挿入する

proxy=プロキシサーバ

キーワード

キーワード別に記事を分類してあります。クリックすると各キーワードに該当する記事たちが表示されます。

過去の記事

筆者について

自分の写真
趣味はコンピュータ、音楽、写真などです。