Hatena::Grouplinux2

Going My Linux Way このページをアンテナに追加 RSSフィード

2012年01月31日(火)

VirtualBox で 2つのゲストOSを内部ネットワークで接続

| 23:59 |  VirtualBox で 2つのゲストOSを内部ネットワークで接続 - Going My Linux Way を含むブックマーク はてなブックマーク -  VirtualBox で 2つのゲストOSを内部ネットワークで接続 - Going My Linux Way  VirtualBox で 2つのゲストOSを内部ネットワークで接続 - Going My Linux Way のブックマークコメント

VirtualBox の 2つの仮想マシンUbuntu 11.10 desktop (amd64) をインストールしました。(手順は VirtualBox に Ubuntu 11.10 (amd64) をインストール(その1) - Going My Linux Way - りなっくすいろいろ)

VirtualBox には「内部ネットワーク」というゲストOSだけが参加できる仮想ネットワークの仕組みがあるので、それを使って以下のような環境を組みたいと思います。

f:id:lnznt:20120201014341j:image

ホスト OS からは仮想ネットワークは(自身のアドレス 10.0.2.2 も)見えません。

----

手順

  1. 仮想マシンの設定
    1. ネットワークアダプタ 1 を「NAT」にする
    2. ネットワークアダプタ 2 を「内部ネットワーク」にする
  2. ゲストOS の設定
    1. eth1 の 固定IPアドレスを設定する

手順詳細

仮想マシンの設定

以下の設定を 2つの仮想マシン両方にします。

まず、ネットワークアダプタ 1 を「NAT」にします。

f:id:lnznt:20120201015017j:image

次に、ネットワークアダプタ 1 を「内部ネットワーク」にします。

名前は内部ネットワークの識別に使われます。任意の名前でよいですが両方の仮想マシンで同じ名前にしてください。

f:id:lnznt:20120201015018j:image

ゲストOS の設定 (固定IPアドレスの設定)

ゲストOS#1 を起動します。

/etc/network/interface に eth1 のIPアドレスの設定を書き込みます。

まず、エディタで該当ファイルを開いて

$ vi /etc/network/interfaces

以下の記述を追加して保存します。

auto eth1
iface eth1 inet static
    address 192.168.7.11
    netmask 255.255.255.0

ゲストOS#1 を再起動します。

ゲストOS#2 も同様に作業します。

ただし、こちらは IP address は「192.168.7.12」です。

----

これで、両方のゲスト OS とも、

が出来るようになりました。

ifconfig と route の出力を掲載しておきます。

(ゲストOS#1) $ sudo ifconfig
eth0      Link encap:イーサネット  ハードウェアアドレス 08:00:27:b8:c5:4e
          inetアドレス:10.0.2.15  ブロードキャスト:10.0.2.255  マスク:255.255.255.0
                   :
                  (略)
                   :
eth1      Link encap:イーサネット  ハードウェアアドレス 08:00:27:a2:e1:60
          inetアドレス:192.168.7.11  ブロードキャスト:0.0.0.0  マスク:255.255.255.0
                   :
                  (略)
                   :
(ゲストOS#1) $ route
カーネルIP経路テーブル
受信先サイト    ゲートウェイ    ネットマスク   フラグ Metric Ref 使用数 インタフ
ェース
default         10.0.2.2        0.0.0.0         UG    0      0        0 eth0
10.0.2.0        *               255.255.255.0   U     1      0        0 eth0
link-local      *               255.255.0.0     U     1000   0        0 eth1
192.168.7.0     *               255.255.255.0   U     0      0        0 eth1
(ゲストOS#2) $ sudo ifconfig
eth0      Link encap:イーサネット  ハードウェアアドレス 08:00:27:0d:12:c6
          inetアドレス:10.0.2.15  ブロードキャスト:10.0.2.255  マスク:255.255.255.0
                   :
                  (略)
                   :
eth1      Link encap:イーサネット  ハードウェアアドレス 08:00:27:10:6f:51
          inetアドレス:192.168.7.12  ブロードキャスト:0.0.0.0  マスク:255.255.255.0
                   :
                  (略)
                   :
(ゲストOS#2) $ route
カーネルIP経路テーブル
受信先サイト    ゲートウェイ    ネットマスク   フラグ Metric Ref 使用数 インタフ
ェース
default         10.0.2.2        0.0.0.0         UG    0      0        0 eth0
10.0.2.0        *               255.255.255.0   U     1      0        0 eth0
link-local      *               255.255.0.0     U     1000   0        0 eth1
192.168.7.0     *               255.255.255.0   U     0      0        0 eth1

続きを読む

トラックバック - http://linux2.g.hatena.ne.jp/lnznt/20120131

2012年01月30日(月)

VirtualBox に Ubuntu 11.10 (amd64) をインストール(その3)

| 01:46 | VirtualBox に Ubuntu 11.10 (amd64) をインストール(その3) - Going My Linux Way を含むブックマーク はてなブックマーク - VirtualBox に Ubuntu 11.10 (amd64) をインストール(その3) - Going My Linux Way VirtualBox に Ubuntu 11.10 (amd64) をインストール(その3) - Going My Linux Way のブックマークコメント

前回のメモの続きです。(その3 です)

----

手順詳細(続き)

VirtualBox Guest Additions をインストールする

仮想マシンウィンドウのメニューバーから「デバイス(D)」-「Guest Additions のインストール」を選択する。仮想マシンに以下のダイアログが表示されたら「OK」ボタンを押下する。

20120130014549

以下のダイアログで、「実行する」ボタンを押下。

20120130014810

以下のダイアログで、パスワードを入力して「認証する」ボタンを押下。

20120130014921

......

(。。。私の環境で約3分です。。。)

......

以下のメッセージで停止したら、[Enter]キー押下。

20120130015226

ランチャーのdiscボタン上で右クリックしてメニューを呼び出したら「取り出す」を選択(VirtualBox Guest Addisions CD をアンマウントする)

20120130015557

インストールは終了なのでシャットダウンする。

上部パネルの最右のボタンをクリックしてプルダウンメニューを表示させたら「シャットダウン」を選択。

20120130015933

以下のダイアログで「シャットダウン」ボタンを押下。

20120130020048

これで仮想マシンが電源オフされる。

スナップショットを取る

任意の作業であるが、ここでスナップショットを取る。

画面上部右側の「スナップショット(S)」ボタンを押下。

20120130020651

画面中央部の「スナップショット作成」(カメラのアイコン)ボタンを押下。

20120130020707

以下のダイアログで、「スナップショットの名前(N)」「スナップショットの説明(D)」を適当に入力して「OK」ボタンを押下。

20120130020708

スナップショットが取れている。

20120130020710

今後、仮想マシンに変更を加えていっても、スナップショットの取得段階に復元することができます。

----

以上で作業は終了です。

お疲れ様でした。

VirtualBox に Ubuntu 11.10 (amd64) をインストール(その2)

| 00:05 | VirtualBox に Ubuntu 11.10 (amd64) をインストール(その2) - Going My Linux Way を含むブックマーク はてなブックマーク - VirtualBox に Ubuntu 11.10 (amd64) をインストール(その2) - Going My Linux Way VirtualBox に Ubuntu 11.10 (amd64) をインストール(その2) - Going My Linux Way のブックマークコメント

前回のメモの続きです。

----

手順詳細(続き)

仮想マシンUbuntu 11.10 をインストール

次に、Ubuntuインストールの準備作業を行う。

UbuntuISOイメージを仮想 CD としてマウントする。これは、インストールCD をCD-ROMデバイスに挿入する作業に相当する。

設定画面の左側リストから「システム」を選ぶ。下の画面が開いたら、「起動順序(B)」で「CD/DVD-ROM」が有効かつ「ハードディスク」より優先であることを確認する。(「フロッピー」はマウントされていないので無視してもよい)

20120203001517

設定画面の左側リストから「ストレージ」を選ぶ。下の画面が開いたら、ストレージツリーの IDE コントローラの下の「空」ディスクを選択する。

20120129231733

画面の右の(discアイコンの右の)プルダウンメニューから、

  • 「仮想CD/DVDディスクファイルの選択...」

を選択する。ファイル選択ダイアログが開くので UbuntuISO イメージファイル(ubuntu-11.10-desktop-amd64.iso)を選択する。以下の画面に戻ったら「OK」ボタンを押下する。

20120129232015

以下の画面で「起動(T)」ボタンを押下。

20120129232326

ウィンドウが開き仮想マシンの画面が表示される。

以下のダイアログが表示されたら左側リスト(の最下行)から「日本語」を選択する。

20120130000957

以下のダイアログで「Ubuntuインストール」ボタンを押下。

20120130001215

以下のダイアログで、下記項目をチェックして、「続ける」ボタンを押下。

([追記(2012/02/02): これらのチェックをしない場合、後で行う日本語 Remix 同等化作業までインストール後のデスクトップが日本語化されません)

20120130001605

以下のダイアログで「続ける」ボタンを押下。

20120130001701

以下のダイアログで「インストール」ボタンを押下。

20120130001750

以下のダイアログで「続ける」ボタンを押下。

20120130001843

以下のダイアログで、適切なキーボードレイアウトを選択して「続ける」ボタンを押下。

私は「日本語」-「日本語」を選択した。(Windowsキーのある日本語109キーボード)

20120130001931

以下のダイアログで、各項目を入力して「続ける」ボタンを押下。

私は以下のように入力した。(通常使うアカウントは別途作成するつもり)

  • 名前 : 「System Adminstrator」
  • ホスト名 : 「vlinux01」
  • ユーザ名 : 「sysadmin」
  • パスワード : (秘密)

20120130002325

......

(。。。インストールが続きます。。。この間、私の環境で約40分。。。)

(その間は、以下のダイアログが表示されます)

20120130021751

20120130021752

20120130021753

20120130021754

20120130021755

20120130022521

20120130021756

20120130021757

20120130021758

20120130021759

......

以下のダイアログで、「今すぐ再起動」ボタンを押下。

20120130002855

以下のメッセージで停止したら、「デバイス(D)」から「仮想ドライブからディスクを除去」を選択(PCのCD-ROMドライブからインストールCDを取り出す作業に相当)する。(...はずだが、仮想CDは umount により既に取り出されていた)

その後、[Enter]キー押下。

20120130003323

Ubuntu再起動したらログインする。

20120130004454

次に、システムのアップグレードを行う。

しばらく待つとアップデートマネージャアップデートを検出する。

アップデートマネージャを使う変わりに以下のコマンドを打ってもよい。(でも、多分コマンドが終了しない間にアップデートマネージャアップデートを検出する)

$ sudo apt-get update
$ sudo apt-get dist-upgrade

20120130004653

アップデートマネージャアップデートを検出すると、ランチャー(画面左側)の下から2つめのボタンが現れる。そのボタンを押下する。

20120130004907

以下のダイアログで、「アップデートインストール」ボタンを押下。

20120130005103

以下のダイアログで、パスワードを入力して「認証する」ボタンを押下。

20120130005231

.....

(。。。アップデートが続きます。。。この間、私の環境で約40分。。。)

.....

途中、画面がブラックアウトしたら、[Shift]キーを押し以下のダイアログを呼び出す。パスワードを入力して「ロックを解除」ボタンを押下する。

20120130005525

アップデートが終了し、以下のダイアログが表示されたら、「すぐに再起動」ボタンを押下。

20120130005659

再起動したら、再びログインする。

Ubuntu 11.10 64-bit 版は本家のイメージからインストールしたので、日本語 Remix 版と相違がある。これを同等とする処理を行う。(任意の作業。行わなくともよい)

方法は、Ubuntu Japanese Team のサイトUbuntu の日本語環境のページに「Japanese Teamによる追加パッケージの利用方法(方法2)」として記述されている。

端末を開き記述された方法を実行する。(Firefox と端末の起動の仕方は後述する)

$ wget -q https://www.ubuntulinux.jp/ubuntu-ja-archive-keyring.gpg -O- | sudo apt-key add -
$ wget -q https://www.ubuntulinux.jp/ubuntu-jp-ppa-keyring.gpg -O- | sudo apt-key add -
$ sudo wget https://www.ubuntulinux.jp/sources.list.d/oneiric.list -O /etc/apt/sources.list.d/ubuntu-ja.list
$ sudo apt-get update 
$ sudo apt-get upgrade
(「システム設定」の「言語サポート」で「日本語」がサポートされていることを確認。されてなければ「日本語」を追加)
$ sudo apt-get install ubuntu-defaults-ja
$ sudo wget https://www.ubuntulinux.jp/fonts.conf.d/oneiric-69-language-selector-ja-jp.conf -O /etc/fonts/conf.avail/69-language-selector-ja-jp.conf
$ sudo fontconfig-voodoo --force -s ja_JP #サイトの説明では --force オプションがないがオプションなしだとエラーになる

作業後、システムの再起動を行う。

システム設定の言語サポートの確認の仕方

ランチャーの「システム設定」ボタンを押下。

f:id:lnznt:20120202222101j:image

システム設定画面が表示されたら「言語サポート」ボタンを押下。

f:id:lnznt:20120202222102j:image

リストに「日本語」が含まれているのを確認。

f:id:lnznt:20120202222103j:image

Firefox と端末の起動の仕方

Firefoxランチャーから起動できる。

20120130010948

Firefox が起動する全画面表示のような感じになる。上部ツールバーマウスポインタをあてると「閉じる」「最大化」「最小化」ボタン等メニューバーが表示される。

(この状態で Superキー(私の環境では[Windowsキー]に割り当たっている)を押下するとランチャーが表示される)

20120130011648

端末は以下のように開く。

まずランチャーの一番上の「Dashホーム」ボタンを押し、以下の画面を開く。

20120130012500

検索テキストボックスに「terminal」と入力して以下のアイコンが表示されたら、「端末」アイコンをクリックする。(端末が開く)

20120130012855

端末が開いている間は、「端末」ボタンがランチャーに表示されている。ランチャーに常に表示させておきたい場合は、「端末」ボタン上で右クリックして以下のメニューを表示させて「ランチャーに常に表示」を選択する。

20120130013329

----

以降の作業は、次回のメモに書きます。

トラックバック - http://linux2.g.hatena.ne.jp/lnznt/20120130

2012年01月29日(日)

VirtualBox に Ubuntu 11.10 (amd64) をインストール(その1)

| 18:12 |  VirtualBox に Ubuntu 11.10 (amd64) をインストール(その1) - Going My Linux Way を含むブックマーク はてなブックマーク -  VirtualBox に Ubuntu 11.10 (amd64) をインストール(その1) - Going My Linux Way  VirtualBox に Ubuntu 11.10 (amd64) をインストール(その1) - Going My Linux Way のブックマークコメント

UbuntuVirtualBoxUbuntu 11.10 (amd64) をインストールしました。

実施した環境

構成

ホストOSUbuntu Linux 11.10 (amd64)
ゲストOSUbuntu Linux 11.10 (amd64)

マシンスペック

CPUIntel 64bit/2 Core
RAM8GB
Videoオンボードのチップ

ネットワーク環境(VirtualBoxネットワークを「ブリッジアダプタ」割り当てにした場合)

手順ではこの環境を想定してます。

f:id:lnznt:20120131151055j:image

ネットワーク環境(VirtualBoxネットワークを「NAT」割り当てにした場合)

NAT」は VirtualBoxデフォルト設定。ホスト OS からは仮想ネットワークは見えない。

f:id:lnznt:20120131165916j:image


手順

  1. ホストOSVirtualBoxインストール
  2. Ubuntu インストールイメージのダウンロード
  3. VirualBox のゲストOS として Ubuntu 11.10 をインストール
    1. 仮想マシン作成
      1. 仮想マシンの新規作成
      2. 仮想マシンの設定
    2. 仮想マシンUbuntu 11.10 をインストール
      1. Ubuntuインストール
      2. システムアップグレード
      3. 日本語 Remix と同等化
      4. VirtualBox Guest Additions インストール
    3. スナップショット取得

手順詳細

ホストOSVirtualBoxインストール
$ sudo apt-get install virtualbox
$ sudo apt-get install virutalbox-guest-additions-iso
Ubuntu インストールイメージのダウンロード

Ubunutu Japanese Team の日本語 Remix CD には 64-bit 版はないので、本家サイトからダウンロードする。(この手順では、後で Ubuntu Japanese Team のリポジトリを追加して日本語 Remix 環境と同等にする)

Ubuntu の本家サイトダウンロードページから Ubuntu 11.10 64-bit の ISOイメージ(ubuntu-11.10-desktop-amd64.iso)をダウンロードする。

VirualBox のゲストOS として Ubuntu 11.10 をインストール

VirtualBox を起動する。

$ virtualbox &

仮想マシンデフォルトでは、以下のディレクトリに作られる。

変更したい場合は、[ファイル]->[環境設定(P)]で以下の画面を開き変更する。

20120129222927

では、仮想マシンを新規作成する。

以下の画面で「新規(N)」ボタンを押下。

install-00

以下の画面で「次へ」ボタンを押下。

20120129185452

以下の画面で、各項目を入力/選択して、「次へ」ボタンを押下。

20120129190016

以下の画面で、メモリサイズを入力/選択して、「次へ」ボタンを押下。

私は 1024MB にした。多めが良いが任意のサイズでよい。

20120129190808

以下の画面で「次へ」ボタンを押下。

20120129191033

以下の画面で「次へ」ボタンを押下。

20120129191233

以下の画面で「次へ」ボタンを押下。

20120129191358

以下の画面で、ディスクサイズを入力/選択して、「次へ」ボタンを押下。

私は 20GB にした。任意のサイズでよい。(インストール直後のディスク使用量は約4GB)

20120129191458

以下の画面で「Create」ボタンを押下。

20120129224455

以下の画面で「Create」ボタンを押下。

20120129224610

仮想マシンができた。

20120129224722

次に、仮想マシンの設定を行う。(任意の作業。行わずデフォルト設定のままでもよい)

「設定(S)」ボタンを押下し、表示された画面の左側リストから「ディスプレイ」を選ぶ。下の画面が開いたら、下記の各項目入力を行い「OK」ボタンをクリックする。(任意の作業。デフォルトのままでもよい)

  • ビデオメモリ(M) : 64MB
  • 3Dアクセラレーションを有効化(3) : チェックする ([追記(2012/01/31)] リフレッシュが遅いようなので、後日このチェックは外しました)

20120129225810

設定画面の左側リストから「ネットワーク」を選ぶ。下の画面が開いたら、下記の各項目入力を行い「OK」ボタンをクリックする。(任意の作業。デフォルトのままでもよい)

  • 割り当て(A) : ブリッジ アダプタ
  • 名前(N) : eth0

(**注意**: 環境に DHCP がない場合、デフォルトの「NAT」のままのほうが簡単にインストールできる)

20120129230436

----

以降の作業は、次回のメモに書きます。

2012年01月28日(土)

X のディスプレイ

| 12:26 | X のディスプレイ - Going My Linux Way を含むブックマーク はてなブックマーク - X のディスプレイ - Going My Linux Way X のディスプレイ - Going My Linux Way のブックマークコメント

X のディスプレイに関するちょいメモです。

記憶に基づいてます。間違いも含まれているかもです。

----

X サーバ

X は サーバ/クライアント モデルのシステムです。

X サーバは「ディスプレイに対する入出力」をサービスとして提供します。

X サーバは 1つの「ディスプレイ」をハンドルします。

X のディスプレイ

X でいう「ディスプレイ」は論理的な概念で、液晶ディスプレイとかの表示装置(ハードウェア)のことではありません。

ディスプレイは以下の要素を持ちます。

ディスプレイは 0 から始まるディスプレイ番号で識別されます。多くの場合は ディスプレイ番号 0 しか使われません。

スクリーン

ハードウェアとして、通常は表示装置が割り当てられます。

ビデオメモリだけ(画面なし)を割り当てることも可能*1です。

スクリーンは一つのディスプレイに複数あります。これらは 0 から始まるスクリーン番号で識別されます。多くの場合は スクリーン番号 0 しか使われません。

キャラクタ入力デバイス

ハードウェアとして、通常はキーボードが割り当てられます。

他のデバイスを割り当てることも可能と思われますが、例を知りません。

ポインティングデバイス

ハードウェアとして、通常はマウスが割り当てられます。

タブレットなどを割り当てることも可能です。

サーバクライアントの通信

X のサーバクライアントTCP で通信します。

TCP 通信なので、他のホストの X サーバに X アプリケーションの画面を表示させることもできます。(ただし、リモート X サーバアクセス許可の設定が必要です)

ディスプレイ番号 0 のサーバはポート 6000、番号 1 はポート 6001、... を listen します。

ただし、最近の実装では localhost の場合は (効率のため)TCP でなくプロセス間通信を使用します。

ディスプレイの指定

環境変数 DISPLAY は X クライアントデフォルトで使用するディスプレイを指定します。書式は以下の通りです。

  IPアドレス(or名前解決可能なホスト名) +「:」+ ディスプレイ番号

例です。

  DISPLAY=192.168.0.10:0  # 192.168.0.10 のディスプレイ番号 0

  DISPLAY=example.com:1   # example.com のディスプレイ番号 1

  DISPLAY=:0  # ホストを省略(localhostと解釈される)した場合

多くの X クライアントは -display オプションで明示的にディスプレイを指定できます。また、環境変数 DISPLAY が未設定の場合は DISPLAY=:0 と解釈して動作します。

スクリーン番号

スクリーン番号は以下の書式で示します。

  ディスプレイ識別子 + 「.」+ スクリーン番号

例は以下です。

  192.168.0.10:0.0 # ディスプレイ 192.168.0.10:0 のスクリーン 0

  :0.1             # ディスプレイ localhost:0 のスクリーン 1

他のディスプレイに表示する例

ローカルホストのもう一つのディスプレイに表示させる例です。

$ sudo xinit wmaker -- :1  # ディスプレイ番号 1 に WindowMaker を起動
(画面がディスプレイ番号 1 に移動するので「Ctrl + Alt + F7」で戻ってきて)
$ export DISPLAY=:1        # ディスプレイをディスプレイ番号 1 に指定
$ mlterm &     # これ以降の X クライアントはディスプレイ番号 1 に表示される
$ firefox &
$ gimp &
(画面を「Ctrl + Alt + F8」でディスプレイ番号 1 に移動して確認)

----

[追記:(2012/02/02)]

下の図が X のクライアント/サーバのモデルです。

f:id:lnznt:20120204161730j:image

※ X のポートは 6000 + ディスプレイ番号

現在の X サーバの実装では(デフォルトで)TCPポートをlistenしません。Unixドメインソケットでローカルの Xクライアントとだけ通信します。

f:id:lnznt:20120204161732j:image

今回行った、DISPLAY#1(2番目のディスプレイ)として Xサーバをもう一つ起動したイメージ図です。

f:id:lnznt:20120204161731j:image

普通ユーザは表示装置やキーボードがあるホストX側にいるので、ホストAなどにリモートログインして、そこからホストXのディスプレイを指定してXクライアントを起動する、ような使い方をします。

ログインマネージャHack

01:46 | ログインマネージャHack - Going My Linux Way を含むブックマーク はてなブックマーク - ログインマネージャHack - Going My Linux Way ログインマネージャHack - Going My Linux Way のブックマークコメント

LINUXデスクトップHACKS」の第三章「ログインマネージャ」を読みました。

特筆するところのみメモします。

本が 2005 年出版なので古い内容があるかもしれません。

また、内容の実機検証はしてません。あくまで本の内容に関するメモです。

----

仮想コンソールの切り替え

大抵の Linux ディストリビューションでは、

  • テキストベースの仮想端末が 6つ
  • グラフィカルログイン用の仮想端末が 3つ

が、デフォルトで構成されているらしいです。

仮想コンソールの切り替えは、

  • Ctrl + Alt + Fnキー (X 環境で切り替える場合)
  • Alt + Fnキー (コンソール環境で切り替える場合)

で行ないます。(Fn の n は仮想コンソール番号)

例えば、X環境で「Ctrl + Alt + F1」を押下すると仮想コンソール#1 (テキストベース)へジャンプします。

仮想コンソール#1 で「Alt + F7」 を押下すると元の X 環境に戻ります。

複数のデスクトップ

テキストベースの仮想コンソールは 6 つ起動してますが、グラフィカルログインできる仮想コンソールは(大抵のディストリでは)1つです。

複数の仮想コンソールでグラフィカルログインをそれぞれ行うには、ディスプレイマネージャを複数起動すればいいはずです。

KDM や GDM を使用している場合は、構成ファイルをいじってみましょう。

Ubuntu では lightdm というディスプレイマネージャが使用されてます。構成ファイルを見てみましたが、どこをいじればいいのか見当つきませんでした(残念)。

----

ディスプレイマネージャ複数起動は断念しましたが、直接 ウィンドウマネージャを複数起動するのはできそうです。

私はデスクトップ環境Xfce を使用しています。このウィンドウマネージャは xfwm4 です。もう一つの仮想コンソールに wmaker (WindowMaker のウィンドウマネージャ) を起動してみます。

# wmaker が未インストールだったら、次のようにしてインストール
$ sudo apt-get install wmaker

$ sudo xinit wmaker -- :1

xinit は X サーバを起動するコマンドです。引数に起動する Xクライアント(ここでは wmaker)を指定しています。-- 以降は X サーバに渡されるオプションです。:1 はディスプレイ番号 1 を指定しています。(通常のディスプレイは番号 0)

本来は root で X を起動するのはセキュリティ上危険なので避けましょう。(Xauth 関連のエラーが面倒なので、ここでは sudo を使用しています)

上のコマンドを実行すると、仮想コンソール#8 に WindowMaker が起動したデスクトップ環境が表示されます。(戻ってくる場合は 「Ctrl + Alt + F7」押下)

仮想コンソールの WindowMaker (移動は「Ctrl + Alt + F8」)を終了させるには、WindowMakerexit するか、「login」とタイトルされた X 端末のウィンドウを閉じます。(この X端末は xinit の最後の仕事なので、これが終了すると xinit コマンドが終了する)

フレームバッファを使用したログインマネージャ Qingy

qingy はフレームバッファを使用したログインマネージャです。

Ubuntu では qingy パッケージが用意されてます。

# Ubuntu でのインストール
$ sudo apt-get install qingy

qingy は getty の置き替えになるので、/etc/inittab の該当箇所を書き替えれば使用できるようになります。。。。ですが、Ubuntu は /etc/inittab がありません。

Ubuntu では /etc/init/tty6.conf を書き替えます。(仮想コンソール#6 を使う場合)

(書き替える箇所)
#exec /sbin/getty -8 38400 tty6
exec /usr/sbin/qingy tty6

システムを再起動した後、仮想コンソール#6 に移動すると Qingy のビジュアルなログイン画面が表示されています。で、ログインまではできたのですが、ログインした後コマンドラインが表示されませんでした。(残念)

メモリの節約

テキストベース仮想コンソールは 6つ用意されていますが、せいぜい 2 個あれば十分です。不要な仮想コンソールは閉じておくとメモリの節約になります。

。。。しかし Ubuntu ではどうやんでしょう? /etc/init/tty[3-6].conf を削除すればいいのかな?

----

*1:Xvfb という X サーバがあります

トラックバック - http://linux2.g.hatena.ne.jp/lnznt/20120128

2012年01月27日(金)

LinuxのブートHack

23:07 | LinuxのブートHack - Going My Linux Way を含むブックマーク はてなブックマーク - LinuxのブートHack - Going My Linux Way LinuxのブートHack - Going My Linux Way のブックマークコメント

LINUXデスクトップHACKS」の第一章「Linux のブート」を読みました。

特筆するところのみメモします。

本が 2005 年出版なので古い内容があるかもしれません。

また、内容の実機検証はしてません。あくまで本の内容に関するメモです。

----

ブートローダ

Linuxブートローダーには LILOGRUB があります。

他に、Mac で使用される yaboot、フロッピーインストールできる Smart Boot Manager があります。

1種類のカーネルに対応する一連のエントリは「スタンザ*1」と呼ばれます。

マスターブートレコード(MBR)

/dev/hda をブートデバイスとして Linuxインストールされている場合、MBR の保存は以下のようにします。

$ sudo dd if=/dev/hda of=出力ファイル bs=512 count=1

IBM-PC 互換機での MBR の構成は以下のようになっています。

位置サイズ内容
0 .. 465466バイトブートコード
466 .. 50964(=16x4)バイトパーティションテーブル
510 .. 5112バイトマジックナンバー(0xaa55)

なので、パーティションテーブルは保存しない場合は以下のようにします。

$ sudo dd if=/dev/hda of=出力ファイル bs=466 count=1

また、DOS における fdisk /mbr と同じ働きをする install-mbr というツールがあります。(Ubuntu では mbr パッケージ)

使用するには以下のようにするそうです。(!!危険!! 実際に行うと MBR初期化されます)

$ sudo instal-mbr /dev/hda

ブートマネージャバイパス

これはブートマネージャを破損してしまった場合などの対応手段です。

  1. インストールCD-ROM から起動する
  2. インストールプログラムパーティション設定に進む前に、Ctrl + Alt + F2 *2などで別の仮想端末にジャンプする
  3. /boot のあるデバイスをマウントする
  4. /root のあるデバイスをマウントする
  5. マウントした /root に対して chroot コマンドを使用する
  6. ブートマネージャの修復(構成ファイルの修正やカーネルインストールなど)
(/boot のマウント) 
# mkdir /bootmnt
# mount /dev/discs/disc0/part3 /bootmnt (ディスク番号、パーティション番号は環境に合わせる)
(/root のマウント) 
# mkdir /rootmnt
# mount /dev/discs/disc0/part4 /rootmnt (ディスク番号、パーティション番号は環境に合わせる)
(マウントした /root に対して chroot)
# chroot /rootmnt

----

この本では GRUB が紹介されていますが、Ubuntu Linux 11.04 では既に Grub2 に移行されています。

*1:stanza、詩の連

*2Mac の場合は Apple Option Key + Fn + Fnキー

トラックバック - http://linux2.g.hatena.ne.jp/lnznt/20120127

2012年01月25日(水)

軽量端末エミュレータ mlterm

18:55 | 軽量端末エミュレータ mlterm - Going My Linux Way を含むブックマーク はてなブックマーク - 軽量端末エミュレータ mlterm - Going My Linux Way 軽量端末エミュレータ mlterm - Going My Linux Way のブックマークコメント

軽量端末エミュレータ mlterm を入れてみました。

$ sudo apt-get install mlterm

設定は ~/.mlterm/ の下にファイルを作って指定します。

主な設定は main というファイルに書きます。

アプリデフォルト設定は /etc/mlterm/ の下にあるので、ここにあるファイルをひな形にして ~/.mlterm/main を作成しました。

$ cp /etc/mlterm/main ~/.mlterm/
$ vi ~/.mlterm/main
(main を編集)

設定したのは、背景色を黒、前景色を白、スクロールバーを右、フェイディング、です。diff 結果は以下のようになります。

$ diff /etc/mlterm/main ~/.mlterm/main
0a1,2
> fg_color=white
> bg_color=black
4a7
> scrollbar_mode=right
12a16
> fade_ratio=30

mlterm の詳細は mlterm(1) を見ましょう。

トラックバック - http://linux2.g.hatena.ne.jp/lnznt/20120125

2012年01月24日(火)

軽量端末エミュレータ urxvt

23:46 | 軽量端末エミュレータ urxvt - Going My Linux Way を含むブックマーク はてなブックマーク - 軽量端末エミュレータ urxvt - Going My Linux Way 軽量端末エミュレータ urxvt - Going My Linux Way のブックマークコメント

軽量と言われる端末エミュレータ urxvt を入れてみました。

urxvt は rxvt の上位互換のようです。rxvt は ouR XVT (X Virtual Terminal emulator) の略みたいです。(wikipedia:rxvt)

----

Ubuntu では rxvt のパッケージがいくつかありますが、rxvt-unicode-256color を入れました。rxvt-unicode-256color は、マルチリンガル Unicode対応、かつカラー対応です。

$ sudo apt-get install rxvt-unicode-256color

端末は urxvt、rxvt のいずれのコマンドでも起動します。

$ urxvt  # urxvt として端末が起動する
$ rxvt   # rxvt として端末が起動する

urxvt と rxvt は /etc/alternative を介して同じバイナリにリンクされてますが、ネームスイッチが利いているようです。(後述の X リソースに関する辺り)

-----

urxvt は gnome-terminal のようなプロファイル設定の GUI などは付いていません。

背景色、前景色フォントデフォルトから変更したかったのでリソースファイルに記述しました。

リソースファイルは ~/.Xresources です。

!! urxvt/rxvt
Rxvt*foreground: White
Rxvt*background: Black
Rxvt*font: xft:Monospace:pixelsize=16
Rxvt*fading: 70

fading は、フォーカスが外れた時の色の薄くなる度合いを設定するリソースです。(この機能が気に入りました)

背景を透明にしたい場合は、

Rxvt*transparent: True

とするようです。(「LINUXデスクトップHACKS」 に紹介されている inheritPixmap は obsoleted になってます)

urxvt のリソースの詳細は rxvt(1)/urxvt(1) を参照しましょう。

-----

さて、X のリソースファイルのことは忘却の彼方でしたので、今回少し調べ直しました。ここにメモしておきます。

~/.Xresources と ~/.Xdefaults

Xクライアントが起動時に読み込むか否かですが、

  • ~/.Xdefaults は 読み込む
  • ~/.Xresouces は読み込まない

です。

~/.Xresources は X の起動スクリプト(~/.xinitrcなど)で X のリソースDB に登録されます。以下のようなコマンドが発行されているらしいです。

xrdb -merge ~/.Xresources

ちなみに、XリソースDB の登録内容の確認方法は以下です。

$ xrdb -query
 :
(略)
 :
Rxvt*background:	Black
Rxvt*fading:	70
Rxvt*font:	xft:Monospace:pixelsize=16
Rxvt*foreground:	White
 :
(略)

リソースファイルの書式

「!」はコメント開始記号です。

リソースプロパティとして記述します。「:」の左がリソース名で右が値です。

リソース名は「.」で区切られた階層になっています。「*」をワイルドカードとして途中の階層記述を省略できます。

リソース名の最左(最上位階層)は以下のいずれかです。

Rxvt*foreground: White    !! アプリケーションクラス(Rxvt)で指定
rxvt*background: Gray     !! アプリケーション(rvxt)で指定
urxvt*background: Black   !! アプリケーション(urxvt)で指定

とした場合、rxvt も urxvt もアプリケーションクラス Rxvt なので、

  • rxvt で起動した場合...文字(前景色)が白で背景色が灰色
  • urxvt で起動した場合..文字(前景色)が白で背景色が黒

になります。

トラックバック - http://linux2.g.hatena.ne.jp/lnznt/20120124

2012年01月22日(日)

bash プロファイル

15:22 | bash プロファイル - Going My Linux Way を含むブックマーク はてなブックマーク - bash プロファイル - Going My Linux Way bash プロファイル - Going My Linux Way のブックマークコメント

$HOME/.bashrc に bash のカスタマイズ設定を記述すると反映されます。

ですが、直接記述では何かと不都合です。

なので、以下のようにしてます。

---

以下を $HOME/.bashrc 末尾の追加します。

# loading user profile
. $HOME/etc/profile.d/Load

そして、実際の設定は $HOME/etc/profile.d/Load に記述します。

$HOME/etc/profile.d/Load は以下のように記述してます。

#
# Add the following descriptions to the '.bashrc'.
# --------------------------------------
#
#   . $HOME/etc/profile.d/Load
#
# --------------------------------------
#

cd $HOME/etc/profile.d/

#---------------------------------------------------------
# variables (paths)
#---------------------------------------------------------
PATH0=$HOME/bin:$PATH:/sbin:/usr/sbin
MANPATH0=$HOME/lib/man:$MANPATH
LD_LIBRARY_PATH0=$HOME/lib/lib:$LD_LIBRARY_PATH
export PATH0 MANPATH0 LD_LIBRARY_PATH0

PATH=$PATH0
MANPATH=$MANPATH0
LD_LIBRARY_PATH=$LD_LIBRARY_PATH0
export PATH MANPATH LD_LIBRARY_PATH

CDPATH0=.
CDPATH0=$CDPATH0:$HOME
CDPATH0=$CDPATH0:$HOME/sandbox
CDPATH0=$CDPATH0:$HOME/work
CDPATH0=$CDPATH0:$HOME/lib
CDPATH0=$CDPATH0:$HOME/public_html
CDPATH0=$CDPATH0:$HOME/var
CDPATH0=$CDPATH0:$HOME/etc
CDPATH0=$CDPATH0:/media
export CDPATH0

CDPATH=$CDPATH0

#---------------------------------------------------------
# variables
#---------------------------------------------------------
EDITOR=vi
VISUAL=${EDITOR:-vi}
MAIL=/var/spool/mail/$LOGNAME
export EDITOR VISUAL MAIL

GREP_OPTIONS='--color=auto'
export GREP_OPTIONS

#---------------------------------------------------------
# aliases
#---------------------------------------------------------
alias a=alias
##alias b=
alias c=clear
alias d="date '+%Y/%m/%d %H:%M:%S'"
alias e=egrep
alias f=find
alias g=grep
alias h=history
alias i='ifconfig -a'
alias j=jobs
##alias k=
alias l=locate
alias m=man
alias n='netstat -tua'
alias o='od -A x -t x1z'
alias p='ps aux'
##alias q=
alias r=route
alias s=sudo
##alias t=
alias u='uname -a'
alias v=view
####w= # ** NEVER USE **
####x=
##alias z=

alias ls='ls -FC --color=auto'
alias ls.='ls -a'
alias ls1='ls -1'
alias lsd='ls -d'
alias rm='rm -i'
alias mv='mv -i'
alias du='du -sk'
alias mkdir='mkdir -p'

alias pd='pushd'
alias ud='popd'
alias ds='dirs'

#---------------------------------------------------------
# aliases (sudo)
#---------------------------------------------------------
profile=sudo.aliases

if [ -f "$profile" ] && which sudo >/dev/null 2>&1
then
    while read alt cmd args
    do
        alias $alt="sudo ${cmd:-$alt} $args"
    done <"$profile"
fi

unset profile cmd args

#---------------------------------------------------------
# load profile
#---------------------------------------------------------
for profile in shell.`basename "$SHELL"` enable?/*
do
    [ -f "$profile" ] && . "$profile"
done
unset profile

#---------------------------------------------------------
# go home
#---------------------------------------------------------
cd $HOME

$HOME/etc/profile.d/Load から参照している sudo.alias、shell.bash は以下です。

sudo.alias (一部のみ)。ここでは sudo して使うコマンドを記述しています。

例えば、ここに記述されている mount は 'sudo mount' にエイリアスされます。

visudo
vigr
eject
mount
umount
mkfs
mke2fs
mkfs.ext2
mkfs.ext3
mkfs.ext4
mkfs.ext4dev
mkfs.ntfs
mkfs.vfat
mkfs.msdos
mount.dvd   mount -t udf -ro loop
mount.cdrom mount -t iso9660 -ro loop
mount.loop  mount -o loop
fsck
e2fsck
  :

shell.bash。ここでは bash 固有の設定を記述しています。

set -o vi

PS1="\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\$ "

function fcount {
    ls -1 $* | wc -l
}

$HOME/etc/profile.d/Load には enable0、enable1、enable2 のディレクトリがあります。それぞれにコマンド毎の設定ファイルを入れます。

enable* の末尾の数字にあまり意味はありません。数字の若いディレクトリの設定を先に読み込ませるためにあるものです。

例えば、enable1/ruby では ruby で使う環境変数などを設定しています。

[ -d $HOME/lib/ruby/lib ] || mkdir -p $HOME/lib/ruby/lib/
[ -d $HOME/lib/ruby/bin ] || mkdir -p $HOME/lib/ruby/bin/

export RUBYOPT=-rubygems
export RUBYLIB=$HOME/lib/ruby/lib
export RUBYPATH=$HOME/lib/ruby/bin

for pack in gmrw-ssh2-server    \
            pyxparser
do
    export RUBYLIB=$RUBYLIB:$HOME/lib/ruby/$pack/lib
    export RUBYPATH=$RUBYPATH:$HOME/lib/ruby/$pack/bin
done

例えば、enable1/tree では tree コマンドが導入されてない場合の代替関数を定義しています。

if ! which tree >/dev/null 2>&1
then
    function tree
    {
        cd ${1:-.}
        pwd ; find . -print | sed '1d;s,[^/]*/,|    ,g;s/..//;s/[^ ]*$/|--- &/'
        cd -
    }
fi

alias t=tree

例えば、enable1/lv では、単に環境変数を設定しているだけです。

export PAGER="lv -c"

alias lv='lv -c'
トラックバック - http://linux2.g.hatena.ne.jp/lnznt/20120122

2012年01月21日(土)

コンソールHack(その4)

23:55 | コンソールHack(その4) - Going My Linux Way を含むブックマーク はてなブックマーク - コンソールHack(その4) - Going My Linux Way コンソールHack(その4) - Going My Linux Way のブックマークコメント

LINUXデスクトップHACKS」の第2章「コンソール」を読んでのメモ(その4)。

X環境でなく、コンソールでのキーボードの再定義についての Hack です。

コンソール色々

ls の出力をカラー化するには以下のようにエイリアスするとよいです。

alias ls='ls -FC --color=auto'   # --color=auto がカラー化のオプションです

ls が出力するエスケープシーケンスをきちんと処理するために less、lv は以下のようにエイリアスするとよいです。

alias less='less -R'
alias lv='lv -c'

grep をカラー化したい場合、以下の環境変数を設定します。

export GREP_OPTIONS=--color=auto

diff をカラー化したい場合は、colordiff を使うとよいでしょう。

alias diff='colordiff'

gcc や make のカラー版、colorgcc や colormake などもあります。

----

rakuten:hmvjapan:11670694

コンソールHack(その3)

23:44 | コンソールHack(その3) - Going My Linux Way を含むブックマーク はてなブックマーク - コンソールHack(その3) - Going My Linux Way コンソールHack(その3) - Going My Linux Way のブックマークコメント

LINUXデスクトップHACKS」の第2章「コンソール」を読んでのメモ(その3)。

X環境でなく、コンソールでのキーボードの再定義についての Hack です。

仮想コンソールの変更

仮想コンソールは、X環境では以下のようにして開けます。

[Ctrl] + [Alt] + [F1]    # 仮想コンソール#1 に変更

また、仮想コンソールから別の仮想コンソールへ変更するには以下のようにします。

[Alt] + [F7]  # 仮想コンソール#7 に変更

仮想コンソールは大抵のディストリデフォルトでは 6つ確保されています。

なので、仮想コンソール#7 に変更すると X 環境(グラフィカル環境)に戻れます。

また、仮想コンソールは以下のコマンドで変更できます。

$ chvt 2        # 仮想コンソール#2 に変更

----

コンソールHack(その2)

23:33 | コンソールHack(その2) - Going My Linux Way を含むブックマーク はてなブックマーク - コンソールHack(その2) - Going My Linux Way コンソールHack(その2) - Going My Linux Way のブックマークコメント

LINUXデスクトップHACKS」の第2章「コンソール」を読んでのメモ(その2)。

X環境でなく、コンソールでのキーボードの再定義についての Hack です。

端末制御

tput コマンドで端末制御が行えます。(環境依存です)

$ tput cols     # 桁数を返す

$ tput cup 0 0  # 0 行 0 桁にカーソルを移動する

$ tput clear    # クリア

$ tput sc       # 現在位置の保存

$ tput rc       # 保存していた位置の復元

$ tput setab [0-7] # 背景色設定(ANSIエスケープシーケンスを使用)

$ tput setb [0-7]  # 背景色設定

$ tput setaf [0-7] # 前景色設定(ANSIエスケープシーケンスを使用)

$ tput setf [0-7] # 前景色設定

$ tput bold       # 太字モード設定

$ tput dim        # 半輝度モード設定

$ tput smul       # 下線モード設定

$ tput rmul       # 下線モード終了

$ tput rev        # 反転モード設定

bash では変数 PROMPT_COMMAND にプロンプト表示時に実行するコマンドを指定できます。

以下のようにすると、プロンプトとそれ以降の文字に色がつきます。

PROMPT_COMMAND="tput setf 1"

----

コンソールHack(その1)

18:11 | コンソールHack(その1) - Going My Linux Way を含むブックマーク はてなブックマーク - コンソールHack(その1) - Going My Linux Way コンソールHack(その1) - Going My Linux Way のブックマークコメント

LINUXデスクトップHACKS」の第2章「コンソール」を読んでのメモ(その1)。

X環境でなく、コンソールでのキーボードの再定義についての Hack です。

キー設定の表示

以下のコマンドでキー設定が表示されます。--keys-only は簡略表示オプションです。

$ sudo dumpkeys --keys-only

以下のような出力になります。

  :
 (略)
  :
keycode  59 = F1 
        shift   keycode  59 = F13   # 「Shift」同時押下:「F13」送出
        altgr   keycode  59 = Console_13      
        shift   altgr   keycode  59 = Console_25      
        control keycode  59 = F25 
        shift   control keycode  59 = F37             
        altgr   control keycode  59 = Console_13      
        shift   altgr   control keycode  59 = Console_25      
        alt     keycode  59 = Console_1 # 「左Alt」同時押下: 仮想コンソール#1開く
  :
 (略)
  :

keycode はキーボードのキーを識別する値です。(keycode 59 は「F1」と刻印されたキー)

ハードウェア(キーボード)からは「keycode 59 のキーが打鍵された」という信号しか送られません。ドライバがその信号を受け取って「F1」が押下されたと解釈します。

以下のようにして、「F13」押下時に送出される文字列を調べることができます。

$ sudo dumpkeys | grep ^string | grep F13
string F13 = "\033[25~"

キーコードを調べる

(X環境でなく、コンソールで)以下のようにします。

起動している間にキーを押下すると、そのキーの情報が出力されます。

$ showkey
  :
keycode 59 press       # 押したキーの keycode が表示される
keycode 59 release
  :
(10秒放置すると終了する) 

キー設定

一括して変更する場合、以下のように設定を一旦ファイルに出力して編集するのがいいでしょう。

$ sudo dumpkeys --keys-only > mykeys  # 一旦 mykeys に書き出す
(vi mykeys でキー設定を編集)
$ sudo loadkeys mykeys      # キー設定

1個程度のキーの設定ならば直接標準入力から設定を送り込んでもいいです。

$ echo "keycode 58 = VoidSymbol" | sudo loadkeys # CapsLock を無効

$ echo "keycode 58 = Control" | sudo loadkeys    # CapsLock を Ctrl に変換

以下の例では CapsLock を押下すると date コマンドが実行されるようになります。

$ echo "string F100 = \"date\n\"" | sudo loadkeys  # F100 ラベル定義
$ echo "keycode 58 = F100" | sudo loadkeys

string で定義するラベル(上では F100) は Fxx のような形式にします。

キー設定をデフォルトに戻す

キー設定をデフォルトに戻すには、以下のようにします。

$ sudo loadkeys --default

キー設定はシステムリブートした場合などにリセットされるので、恒常的にキー設定をしたい場合は /etc/rc.local などに記述するといいでしょう。

また、X 環境で不具合が生じないように X を起動する前にはコンソール環境でのキー設定はデフォルトにします。(XFree86Xorg はコンソール設定を上書きするそうなので通常は気にする必要ありません)


詳細は、dumpkeys(1)、loadkeys(1)、showkey(1)、keymaps(5) を参照しましょう。

----

トラックバック - http://linux2.g.hatena.ne.jp/lnznt/20120121