「LinuxHowTos」の編集履歴(バックアップ)一覧はこちら
「LinuxHowTos」(2010/11/27 (土) 11:16:25) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
主にDebian/GNU Linux (etch以降)を前提としたHOWTO/FAQ集
**リンク
大抵のことは以下のサイトで調べられる。
-[[Debian公式サイト(日本語版)>>http://www.jp.debian.org/]]
-[[Debian JP Project>>http://www.debian.or.jp/]]
-[[日本のLinux情報>>http://www.linux.or.jp/]]
-[[Linux Japanese FAQ Project>>http://www.linux.or.jp/JF/]]
-[[Linux Japanese Man Project>>http://www.linux.or.jp/JM/]]
-[[@IT Linux Tips>>http://www.atmarkit.co.jp/flinux/rensai/linuxtips/tipsindex.html]]
-[[ITpro>http://itpro.nikkeibp.co.jp/oss/index.html]]
**書籍
有用な書籍
-[[Corbet, Kroah-Hartman, Rubini著, 山崎 他,訳,「Linuxデバイスドライバ 第3版」,オライリージャパン>>http://www.amazon.co.jp/dp/4873112532/]]
**目次
#contents(fromhere=true)
**ソフトウェアをインストールする
同じソフトウェアでもDebianやFedoraなどのディストリビューションによって使用している(依存している)ライブラリのバージョンが異なることがままあるので、Windows XP/Vistaのように実行可能ファイル(.exeファイル)をディスクにコピーするだけではインストールはできない。
以下、難易度の低い順にインストール方法を示す。
***synapticを使ってインストールする
***aptitudeを使ってインストールする
***apt-getを使ってインストールする
***dpkgを使ってインストールする
+Web、CD、DVDなどからdebパッケージを入手する(debパッケージはファイル名の最後が.deb)。
+次のコマンドを実行する(package.debは入手したパッケージのファイル名)
dpkg -i package.deb
***ソースファイルからコンパイルしてインストール
パッケージがない場合、この方法をとる。
GPLの下で配布されているフリーソフトウェアの
典型的なインストール手順は次のようになる。
1. gcc, make, automake, autoconfをインストールしておく。これらはコンパイルのために必要になる。
2. 開発プロジェクトのWeb/FTPサイトからソースファイルを入手する。たいてい、tar.gz形式や、tar.bz2形式で圧縮されたソースファイル一式が公開されている。
3. 圧縮されているソースファイルを展開する
-tar.gzファイルの場合
tar xzf source.tar.gz
-tar.bz2ファイルの場合
tar xjf source.tar.bz2
4. 展開したソースファイルがあるディレクトリに移動して、configureスクリプトを実行する
./configure
コンパイルしようとしているソフトウェアが依存しているライブラリがインストールされていない場合、configureが警告メッセージを表示するので、そのライブラリをインストールする。
5. configureが成功すればMakefileが生成されているので、makeを実行する
make
6. 管理者ユーザとして、コンパイルしたソフトウェアのインストールを行う
su
make install
**インストールしたパッケージの設定のための情報を探す
+確実な情報源は、パッケージ自体に含まれているドキュメントである。パッケージ名をxxxxとすると、そのドキュメントは次のディレクトリにある。
/usr/share/doc/xxxx/
**カーネルのバージョンを調べる
unameコマンドを実行する
uname -a
**ディストリビューションのバージョンを調べる
/etc/issueの内容を表示する。
cat /etc/issue
**実行中のプログラムの一覧を表示する
次のようにpsコマンドを実行する
ps ax
**実行中のプログラムが使用しているメモリの量を調べる
-topコマンドを実行する
top
-procファイルシステムを利用する
+psコマンドを使って、調査対象のプロセスIDを調べる
ps | grep program_name
+見つかったプロセスIDをxxxxとすると、次のコマンドでメモリの使用量を表示できる。
cat /proc/xxxx/status
**GRUBからWindowsを起動する(手動)
元々WindowsがインストールされていたPC上で,Windowsの起動の設定をせずにGRUBをインストールしてしまった場合の対処.
1. PCを起動する
2. GRUBの画面が表示されたら'C'キーを押す
3. 以下のコマンドを入力する.
root (hd0,0)
chainloader +1
boot
ただし"(hd0,0)"の部分はWindowsがインストールされているパーティションに応じて変更する.
**デバイスドライバを探して、インストールする
***前提知識
Linuxにおけるデバイスドライバは次の二つの形態をとる
-カーネルに組み込まれたデバイスドライバ
-ローダブル・カーネル・モジュール(loadable kernel module)として存在するデバイスドライバ
デバイスドライバを新規に追加しようとする場合,後者の形態のデバイスドライバを用いるほうが簡便である.ただし,前提としてそのデバイスドライバがインストール済みのカーネルに対応している必要がある.
ローダブル・カーネル・モジュールのディスク上での実体は".ko"で終わる名前を持つファイルである.これらのファイルは,次のディレクトリに存在する.
/lib/modules/<kernel_ver>/kernel/
ここで<kernel_ver>はマシンのアーキテクチャ名を含むカーネルのリリース名である.例えば,カーネルのバージョンが2.6.22-2で,CPUがPentium2系列のCPUの場合,リリース名は2.6.22-2-686のようになる.利用中のカーネルのリリース名を調べるには次のようにunameコマンドを実行する.
uname -r
***手順
0.rootユーザとして作業すること.
1.使おうとしているデバイスのベンダIDとプロダクトIDを調べる。ベンダIDとプロダクトIDとは次のような番号であり、たいてい16進数で表現される。
:ベンダID (Vendor ID)|デバイスの製造会社(または販売会社)名を一意に区別する番号
:プロダクトID (Product ID)|デバイスを一意に区別する番号
PCIデバイスの場合、次のコマンドを実行する
lspci -nn
lspciの出力例
00:00.0 Host bridge [0600]: Intel Corporation 82852/82855 GM/GME/PM/GMV Processor to I/O Controller [8086:3580] (rev 02)
00:00.1 System peripheral [0880]: Intel Corporation 82852/82855 GM/GME/PM/GMV Processor to I/O Controller [8086:3584] (rev 02)
00:00.3 System peripheral [0880]: Intel Corporation 82852/82855 GM/GME/PM/GMV Processor to I/O Controller [8086:3585] (rev 02)
00:01.0 PCI bridge [0604]: Intel Corporation 82852/82855 GM/GME/PM/GMV Processor to AGP Controller [8086:3581] (rev 02)
00:02.0 VGA compatible controller [0300]: Intel Corporation 82852/855GM Integrated Graphics Device [8086:3582] (rev 02)
00:02.1 Display controller [0380]: Intel Corporation 82852/855GM Integrated Graphics Device [8086:3582] (rev 02)
00:1d.0 USB Controller [0c03]: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 [8086:24c2] (rev 03)
<中略>
02:01.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ [10ec:8139] (rev 10)
<以下略>
上記出力中の"[xxxx:yyyy]"の左側がベンダID,右側がプロダクトIDを示す.例えば,第5行のグラフィクスカードの記述からはIntelのベンダIDが8086であり,このグラフィクスカードのプロダクトIDが3582であることが読み取れる.
USBデバイスの場合、次のコマンドを実行する
lsusb
lsusbの出力例
Bus 002 Device 005: ID 046d:08b2 Logitech, Inc. QuickCam Pro 4000
Bus 002 Device 004: ID 03eb:3301 Atmel Corp. at43301 4-port Hub
Bus 002 Device 003: ID 056e:000d Elecom Co., Ltd
Bus 002 Device 001: ID 0000:0000
Bus 001 Device 001: ID 0000:0000
上記出力中の各行の"ID xxxx:yyyy"の":"の左側がベンダID、右側がプロダクトIDを示す。例えば,第1行のカメラについての記述からは,LogitechのベンダIDが046d,QuickCam Pro 4000(USBカメラ)のプロダクトIDが08b2であることが読み取れる.
2. Googleなどで,上記のデバイス名やベンダID,プロダクトIDをキーワードとして検索を行い,ドライバの開発プロジェクトのWebサイトを探す.
関連リンク
- [[lspciのmanページ>>http://linux.die.net/man/8/lspci]]
- [[lsusbのmanページ>>http://linux.die.net/man/8/lsusb]]
**ディストリビューションのアップデートにおける依存性の問題を解決する
***sarge --> etch におけるpasswdとdebianutilsの依存性問題
問題: sargeではpasswdパッケージに所属していた'/usr/bin/add-shell'が
etchではdebianutilsパッケージに移った。passwdをアップデートするには
依存関係上,debianutilsを先にアップデートする必要がある。ところが,
debianutilsをアップデートしようとすると,その状態でのpasswdパッケージ
の'/usr/bin/add-shell'を上書きすることができず,アップデートできない。
解決方法: passwdパッケージのみを依存関係を無視して先にインストールする。
具体的には
1. aptによりダウンロードされたpasswdパッケージをホームディレクトリにコピーする
cp /var/cache/apt/archives/passwd_1%3a4.1.1-6_i386.deb ~/
2. 依存性を無視して新しいpasswdパッケージを強制的にインストールする
dpkg --force-all -i passwd_1%3a4.1.1-66_i386.deb
3. 改めてdebianutilsパッケージをアップデートする
aptitude install debianutils
または
aptitude dist-upgrade
**ログアウトしても停止されないようにプログラムを実行する
setsid ./program
**小技
***画像に縁を追加して所定のサイズにする
ImageMagickのconvertコマンドを使うと次のとおり.
convert original.png -gravity NorthWest -extent 512x512 padded.png
original.pngが元画像, "-gravity NorthWest"は加工後の画像中での元画像の配置を指定,
"-extent 512x512"は加工後のサイズを指定.
***ファイルのヘッダを16進数+ASCII文字として表示する
head -c 64 test.swf | od -tx1z
***特定のファイルだけを除外してtarアーカイブを作る
findで指定パターンにマッチするファイルだけを除いたリストを作り標準出力ストリームに出力.
パイプと"-T -"オプションにより,そのリストを標準入力ストリームからtarに読み込ませる.
find /var/spool/ml/ -not -type d -not -regex ".*spool/[0-9]+" |tar cjf backup`date -Id`.tar.bz2 -T -
***特定のファイルだけを除外してディレクトリ中の全ファイルのサイズの総計を求める
find -not -type d -not -regex ".*tmp/.*" -printf "%k\n"|awk "BEGIN{sum=0} /.*/{sum += \$1} END{ print sum}"
主にDebian/GNU Linux (etch以降)を前提としたHOWTO/FAQ集
**リンク
大抵のことは以下のサイトで調べられる。
-[[Debian公式サイト(日本語版)>>http://www.jp.debian.org/]]
-[[Debian JP Project>>http://www.debian.or.jp/]]
-[[日本のLinux情報>>http://www.linux.or.jp/]]
-[[Linux Japanese FAQ Project>>http://www.linux.or.jp/JF/]]
-[[Linux Japanese Man Project>>http://www.linux.or.jp/JM/]]
-[[@IT Linux Tips>>http://www.atmarkit.co.jp/flinux/rensai/linuxtips/tipsindex.html]]
-[[ITpro>http://itpro.nikkeibp.co.jp/oss/index.html]]
**書籍
有用な書籍
-[[Corbet, Kroah-Hartman, Rubini著, 山崎 他,訳,「Linuxデバイスドライバ 第3版」,オライリージャパン>>http://www.amazon.co.jp/dp/4873112532/]]
**目次
#contents(fromhere=true)
**ソフトウェアをインストールする
同じソフトウェアでもDebianやFedoraなどのディストリビューションによって使用している(依存している)ライブラリのバージョンが異なることがままあるので、Windows XP/Vistaのように実行可能ファイル(.exeファイル)をディスクにコピーするだけではインストールはできない。
以下、難易度の低い順にインストール方法を示す。
***synapticを使ってインストールする
***aptitudeを使ってインストールする
***apt-getを使ってインストールする
***dpkgを使ってインストールする
+Web、CD、DVDなどからdebパッケージを入手する(debパッケージはファイル名の最後が.deb)。
+次のコマンドを実行する(package.debは入手したパッケージのファイル名)
dpkg -i package.deb
***ソースファイルからコンパイルしてインストール
パッケージがない場合、この方法をとる。
GPLの下で配布されているフリーソフトウェアの
典型的なインストール手順は次のようになる。
1. gcc, make, automake, autoconfをインストールしておく。これらはコンパイルのために必要になる。
2. 開発プロジェクトのWeb/FTPサイトからソースファイルを入手する。たいてい、tar.gz形式や、tar.bz2形式で圧縮されたソースファイル一式が公開されている。
3. 圧縮されているソースファイルを展開する
-tar.gzファイルの場合
tar xzf source.tar.gz
-tar.bz2ファイルの場合
tar xjf source.tar.bz2
4. 展開したソースファイルがあるディレクトリに移動して、configureスクリプトを実行する
./configure
コンパイルしようとしているソフトウェアが依存しているライブラリがインストールされていない場合、configureが警告メッセージを表示するので、そのライブラリをインストールする。
5. configureが成功すればMakefileが生成されているので、makeを実行する
make
6. 管理者ユーザとして、コンパイルしたソフトウェアのインストールを行う
su
make install
**インストールしたパッケージの設定のための情報を探す
+確実な情報源は、パッケージ自体に含まれているドキュメントである。パッケージ名をxxxxとすると、そのドキュメントは次のディレクトリにある。
/usr/share/doc/xxxx/
**カーネルのバージョンを調べる
unameコマンドを実行する
uname -a
**ディストリビューションのバージョンを調べる
/etc/issueの内容を表示する。
cat /etc/issue
**実行中のプログラムの一覧を表示する
次のようにpsコマンドを実行する
ps ax
**実行中のプログラムが使用しているメモリの量を調べる
-topコマンドを実行する
top
-procファイルシステムを利用する
+psコマンドを使って、調査対象のプロセスIDを調べる
ps | grep program_name
+見つかったプロセスIDをxxxxとすると、次のコマンドでメモリの使用量を表示できる。
cat /proc/xxxx/status
**GRUBからWindowsを起動する(手動)
元々WindowsがインストールされていたPC上で,Windowsの起動の設定をせずにGRUBをインストールしてしまった場合の対処.
1. PCを起動する
2. GRUBの画面が表示されたら'C'キーを押す
3. 以下のコマンドを入力する.
root (hd0,0)
chainloader +1
boot
ただし"(hd0,0)"の部分はWindowsがインストールされているパーティションに応じて変更する.
**デバイスドライバを探して、インストールする
***前提知識
Linuxにおけるデバイスドライバは次の二つの形態をとる
-カーネルに組み込まれたデバイスドライバ
-ローダブル・カーネル・モジュール(loadable kernel module)として存在するデバイスドライバ
デバイスドライバを新規に追加しようとする場合,後者の形態のデバイスドライバを用いるほうが簡便である.ただし,前提としてそのデバイスドライバがインストール済みのカーネルに対応している必要がある.
ローダブル・カーネル・モジュールのディスク上での実体は".ko"で終わる名前を持つファイルである.これらのファイルは,次のディレクトリに存在する.
/lib/modules/<kernel_ver>/kernel/
ここで<kernel_ver>はマシンのアーキテクチャ名を含むカーネルのリリース名である.例えば,カーネルのバージョンが2.6.22-2で,CPUがPentium2系列のCPUの場合,リリース名は2.6.22-2-686のようになる.利用中のカーネルのリリース名を調べるには次のようにunameコマンドを実行する.
uname -r
***手順
0.rootユーザとして作業すること.
1.使おうとしているデバイスのベンダIDとプロダクトIDを調べる。ベンダIDとプロダクトIDとは次のような番号であり、たいてい16進数で表現される。
:ベンダID (Vendor ID)|デバイスの製造会社(または販売会社)名を一意に区別する番号
:プロダクトID (Product ID)|デバイスを一意に区別する番号
PCIデバイスの場合、次のコマンドを実行する
lspci -nn
lspciの出力例
00:00.0 Host bridge [0600]: Intel Corporation 82852/82855 GM/GME/PM/GMV Processor to I/O Controller [8086:3580] (rev 02)
00:00.1 System peripheral [0880]: Intel Corporation 82852/82855 GM/GME/PM/GMV Processor to I/O Controller [8086:3584] (rev 02)
00:00.3 System peripheral [0880]: Intel Corporation 82852/82855 GM/GME/PM/GMV Processor to I/O Controller [8086:3585] (rev 02)
00:01.0 PCI bridge [0604]: Intel Corporation 82852/82855 GM/GME/PM/GMV Processor to AGP Controller [8086:3581] (rev 02)
00:02.0 VGA compatible controller [0300]: Intel Corporation 82852/855GM Integrated Graphics Device [8086:3582] (rev 02)
00:02.1 Display controller [0380]: Intel Corporation 82852/855GM Integrated Graphics Device [8086:3582] (rev 02)
00:1d.0 USB Controller [0c03]: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 [8086:24c2] (rev 03)
<中略>
02:01.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ [10ec:8139] (rev 10)
<以下略>
上記出力中の"[xxxx:yyyy]"の左側がベンダID,右側がプロダクトIDを示す.例えば,第5行のグラフィクスカードの記述からはIntelのベンダIDが8086であり,このグラフィクスカードのプロダクトIDが3582であることが読み取れる.
USBデバイスの場合、次のコマンドを実行する
lsusb
lsusbの出力例
Bus 002 Device 005: ID 046d:08b2 Logitech, Inc. QuickCam Pro 4000
Bus 002 Device 004: ID 03eb:3301 Atmel Corp. at43301 4-port Hub
Bus 002 Device 003: ID 056e:000d Elecom Co., Ltd
Bus 002 Device 001: ID 0000:0000
Bus 001 Device 001: ID 0000:0000
上記出力中の各行の"ID xxxx:yyyy"の":"の左側がベンダID、右側がプロダクトIDを示す。例えば,第1行のカメラについての記述からは,LogitechのベンダIDが046d,QuickCam Pro 4000(USBカメラ)のプロダクトIDが08b2であることが読み取れる.
2. Googleなどで,上記のデバイス名やベンダID,プロダクトIDをキーワードとして検索を行い,ドライバの開発プロジェクトのWebサイトを探す.
関連リンク
- [[lspciのmanページ>>http://linux.die.net/man/8/lspci]]
- [[lsusbのmanページ>>http://linux.die.net/man/8/lsusb]]
**ディストリビューションのアップデートにおける依存性の問題を解決する
***sarge --> etch におけるpasswdとdebianutilsの依存性問題
問題: sargeではpasswdパッケージに所属していた'/usr/bin/add-shell'が
etchではdebianutilsパッケージに移った。passwdをアップデートするには
依存関係上,debianutilsを先にアップデートする必要がある。ところが,
debianutilsをアップデートしようとすると,その状態でのpasswdパッケージ
の'/usr/bin/add-shell'を上書きすることができず,アップデートできない。
解決方法: passwdパッケージのみを依存関係を無視して先にインストールする。
具体的には
1. aptによりダウンロードされたpasswdパッケージをホームディレクトリにコピーする
cp /var/cache/apt/archives/passwd_1%3a4.1.1-6_i386.deb ~/
2. 依存性を無視して新しいpasswdパッケージを強制的にインストールする
dpkg --force-all -i passwd_1%3a4.1.1-66_i386.deb
3. 改めてdebianutilsパッケージをアップデートする
aptitude install debianutils
または
aptitude dist-upgrade
**ログアウトしても停止されないようにプログラムを実行する
setsid ./program
**小技
***画像に縁を追加して所定のサイズにする
ImageMagickのconvertコマンドを使うと次のとおり.
convert original.png -gravity NorthWest -extent 512x512 padded.png
original.pngが元画像, "-gravity NorthWest"は加工後の画像中での元画像の配置を指定,
"-extent 512x512"は加工後のサイズを指定.
***ファイルのヘッダを16進数+ASCII文字として表示する
head -c 64 test.swf | od -tx1z
***特定のファイルだけを除外してtarアーカイブを作る
findで指定パターンにマッチするファイルだけを除いたリストを作り標準出力ストリームに出力.
パイプと"-T -"オプションにより,そのリストを標準入力ストリームからtarに読み込ませる.
find /var/spool/ml/ -not -type d -not -regex ".*spool/[0-9]+" |tar cjf backup`date -Id`.tar.bz2 -T -
***特定のファイルだけを除外してディレクトリ中の全ファイルのサイズの総計を求める
find -not -type d -not -regex ".*tmp/.*" -printf "%k\n"|awk "BEGIN{sum=0} /.*/{sum += \$1} END{ print sum}"
**Emacs
***行末のCR+LFが正しく読み込まれなかったとき(行末に"^M"があるとき)の対処
+バッファ領域全体を選択
+M-x recode-region
+ミニバッファにおいて"Text was really in:"と表示されるたら,実際の文字コード名(utf-8-dos, etc.)を入力
+ミニバッファにおいて"But was interpreted as"と表示されたら,誤解された文字コード名(utf-8-unix, etc.)を入力