仮想環境を使い Linux Kernel 内で動作するプログラムを作っていきます。ユーザー・ランドで動作するプログラムとの違い。Linux Kernel の様子を探っていきます。ここでは Linux で動作する VirtualBox を使用します。Windows で動作する VirtualBox も利用できます。Windows で動作する VirtualBox では不便な場面は有るかと思いますが、なるべく困らないようにしていきたいと思います。
VirtualBox に次のような設定の仮想マシンを用意してください。他の仮想環境を使う場合は、よく似た環境にしてください。
構成要素 | 設定 | 説明 |
仮想マシンOS (Type) | Linux | この OS のデバイス・ドライバ開発の話ですので。 |
仮想マシンディストリビューション (Version) | Ubuntu ホストと同じ CPU 語長 | Ubuntuを使用します。Release を指定できる場合は 14.04 を指定してください。仮想マシンの CPU 語長はホスト環境と同じにする事を推奨します。ホストマシンと合わせる目的は、コンパイル速度が遅い場合、ホストマシンで補助しやすくするためです。 |
仮想マシンメモリ容量 (Base Memory) | 1024Mibyte 以上 | 遅いですが、セルフコンパイルを実施するためです。できれば 2048Mibyte 以上にしてください。 |
プロセッサ数(Processor(s)) | 2 個以上 | 2個を割り当てると可能な実験をする予定です。 |
リモート・ディスプレイ(Remote Display) | Disable | リモートディスプレイ機能は使用する予定が無いので disable で良いです。 |
光学ドライブ (optical drive) | 1 台 | Ubuntu インストーラー ISO イメージをマウントします。 |
ハード・ディスク (hard disk) | 1 台, 200G byte | Ubuntu、Linux Kernel ソース、それをコンパイルしたオブジェクトを格納します。容量の 100% まで使用する予定はないので動的確保(Dynamically Allocated)で構成してください。 |
ネットワーク・アダプタ接続 (Attached to) | bridged adapter | ブリッジ接続をおすすめします。ssh で入ることで状況を立て直せる場合もあります。ネットワークにコンピュータを追加できない場合は NAT, Internal Network, Host Only network を使い分けるか複数用意してください。 |
シリアル・ポート番号 (Port Number) | COM1 | もしかしたら使うかもしれません。 |
シリアル・ポート・モード (Port Mode) | Disconnected | もしかしたら使うかもしれません。 |
次は VirtualBox の仮想マシン設定一覧の画像です。赤線を引いたところは設定を必要とする項目です。
単純なパーティション構成で Ubuntu をインストールします。Installation Type にて Erase disk and install Ubuntu を選びます。
次の表のようにパーティションが分割されます。
パーティション | ファイル・システム | マウント・ポイント | 備考 |
/dev/sda1 | ext4 | / | 殆どこのパーティションに容量が割れ当てられます。 |
/dev/sda5 | swap | おおよそメモリ容量と同じ量が割り当てられます。 |
次はパーティション分割を終えた後のスクリーン・ショットです。
ノート
インストール後、仮想マシンの画面が狭く感じる場合は xorg.conf ファイルを root 権限で /etc/X11 ディレクトリにコピーしてください。logout/login 後に画面サイズは 1280x1024 になります。解像度を下げたい場合は、xorg.conf の Modes 行の解像度名(たとえば "1280x1024")を削除してください。
私の好みも含め、パッケージを追加しデバイス・ドライバ開発に備えます。apt-get install を目的別に書いたので、お手数をおかけします。
# sudo apt-get install ssh # sudo service ssh start # ifconfig # IP アドレスを調べてリモートより操作する手掛かりを収集
# sudo apt-get install sysv-rc-conf
# sudo sysv-rc-conf --level 2345 ssh on
# sudo apt-get install git gitk git-gui # sudo git config --global user.name "Your Name" # Your Name の部分は英語で自分の名前にします。 # sudo git config --global user.email "your.email@example.com" # your.email... の部分はメールアドレスら置き換えます。
# sudo apt-get install libncurses-dev
ノート
git gui コマンドを使って GUI の git ツールを起動し、commit を行った人の名前、メールアドレスに加えスペルチェック機能も設定すると便利です。
# sudo apt-get install grub2
# sudo apt-get install nfs-kernel-server # sudo service nfs-kernel-server on # sudo sysv-rc-conf --level 2345 nfs-kernel-server on
ノート
設定ファイル /etc/exportfs を編集していないので NFS で共有するディレクトリはありません。/etc/exportfs を編集した後、sudo service nfs-kernel-server reload で設定が有効になります。
# sudo apt-get install samba winbind libnss-winbind # sudo sysv-rc-conf --level 2345 nmb on # sudo sysv-rc-conf --level 2345 smb on # sudo sysv-rc-conf --level 2345 winbind on # sudo nano /etc/samba/smb.conf # samba 設定内容を好みに合わせて編集 # sudo nano /etc/nsswitch.conf # hosts: 行に有る dns の前に wins を追加 # sudo service nmb start # sudo service smb start # sudo service winbind start