Link

  • 子ども用PCのテーマに♪

  • 美女Linux

Tweets

無料ブログはココログ

« 水槽の温度上昇対策 | トップページ | 久々のubuntu-defaults-builder »

2015年1月 4日 (日)

Linuxでブート可能なUSBメモリーを作ってみよう

しばらくLive USBに関しての情報共有をして来ましたが、少し前からLiveである必要性に関して疑問を感じるようになってきました。

カーネルの差し替えや、インストール可能なメディアの作成が面倒なこと、ソフトウェアのアップデートに難がある事が主な原因です。
casper-rwを空にしてしまえば、初期状態にカンタンに戻せるなどのメリットもありますが、ちょっと慣れてきてしまって、USBメモリーでブートするLinuxも割と楽に作れるようになってきてしまったので、今回はUSBへのインストールを紹介する事にしましょう。

まず最初に、USBメモリーは可能な限り書き込みの速いものを選ぶ必要があります。

amazonのレビューでベンチマークが出ている事があるので、根気よく探してみる事を探してみてください。
私はこのメーカーの32Gモデルを使用していますが、残念ながら売り切れになってしまいました。

Usb32gnew

参考までにベンチマークを載せておきます。
ポイントはランダムWriteの速度が、0.xMB/sぐらいは出ている事で、例えば下のベンチマークのUSBメモリーでもLinuxをインストールして使ってみましたが、上のものより4Kの書き込みが2桁遅いので、非常にもっさりとした動きになりますし「プチフリ(短時間のフリーズ)」と呼ばれる動きの鈍さに悩まされます。

Usb32gmint17

同じ32GのUSBメモリーで、値段も下のもの方が高いのに、わからないものです。
容量ですが、普通にインストールする分には8Gもあれば良いのですが、使い勝手を考えると、16G以上を選ぶと良いかと思います。

続いてUSBメモリーへのインストール方法を紹介しましょう。
ディストリビューションは別に何でも良いのですが、個人的にはUbuntu GNOMEを使用しています。
やや古めのPCでしたら、XubuntuLubuntuがオススメかと思います。
バージョンは、ディストリビューションによってもサポート期間は異なりますが、14.04が良いと思います。
ご希望のディストリビューションのCDもしくはDVDを焼いて、そのメディアからブートするところから始まります。
今回はXubuntu 14.04を例にして紹介します。
スクリーンショットを撮るために、仮想マシンを使っていますが、物理マシンでも似たようなものです。

メディアからブートした直後のスクショから始まります。
この時、USBメモリーをポートに挿しておきます。

Image01


ターミナルからでも良いですし、Application Menuからでも構わないので、管理者権限でgpartedを起動します。
良くわからない場合には、メニューから「ターミナル」もしくは「端末」を起動して、
"sudo gparted" と入力してエンターを押してください。
GpartedはUbuntu系のディストリビューションであれば、おそらく殆どのディストリビューションで(インストールはされませんが)メディアには入っていると思います。

Image02


Gpartedの起動直後の画面です。
右上にドライブを選択するリストボックスがあるので、容量を頼りにUSBメモリーを選択してください。
この例では、仮想マシンの20GのHDD(/dev/sda)と14.45GのUSBメモリー(/dev/sdb)が表示されているので、/dev/sdbを選択します。
ちなみにインストールするUSBメモリーは16Gとして売っているものです。
計算方法によって、ちょっと容量が目減りしているように見えますが、まぁ普通の事です。
ここでデバイス(ドライブ)の選択を間違えると、HDDを全てクリアしてしまうような事故に繋がりますので、慎重に選んでください。

Image03


このスクショはUSBメモリーを選択したところです。
普通に買ってきたばかりのUSBメモリーは、全域でFAT32の容量が確保されているものですが、何度か使いまわしているメモリーなので、未割り当ての状態になってしまっていますね。
一旦、リストでパーティションを選択して、マウント済であればパーティションメニューよりアンマウントした後に削除、編集メニューより操作を適用する(もしくは、チェックマークのアイコンをクリックする)と、このスクショと同じ状態になると思います。

Image04


あまり必然はありませんが、パーティションテーブルを作り直します。
デバイスメニューより、パーティションテーブルの作成を選択します。

Image05


パーティションの形式でmsdos(たぶんデフォルト)を選択して、適用をクリックします。

Image06


操作が終わりました。

Image07


次に新しいパーティションを作成します。
通常のUSBメモリーとしても使えるように、FAT32の領域を約4G、残りをLinuxのファイルシステムであるext4で確保する事にします。
パーティションメニューより新規パーティションの作成を選択します。

Image08


USBメモリーの前方に1Mほど空きを残して、最初はFAT32の領域を作りましょう。
Gpartedのデフォルトで1M空けるようになっているのですが、ここを0にしたらブートローダーの書き込みに失敗した事があります。
あとは、わかりやすいように、ラベルを付けておきます。

Image09


追加ボタンを押すと、こんな画面になります。

Image10


次に残りの領域を割り当てます。
パーティションメニューから新規を選択してください。

Image11


前方の空き容量は0にして、後方の空き容量も0になるように、ギリギリいっぱいのサイズをext4という形式で確保しましょう。

Image12


追加を押すと、このような画面になります。

Image13


ここでチェックマークのアイコンを押して、変更を適用します。

Image14


ダイアログで最終確認をすると、操作が開始されます。

Image15


操作が完了したのでダイアログを閉じましょう。

Image16


ご覧のようなパーティション配置のUSBメモリーが出来ました。

Image17


Gpartedを終了させます。

Image18


ここからが、Xubuntuのインストールです。
デスクトップやメニューに「Xubuntu 14.04 LTSのインストール」というアイコンがあるので、それをダブルクリックすると、インストーラが起動します。
最初は言語で日本語を選択して「続ける」ボタンを押してください。

Image19


「インストール中にアップデートをダウンロードする」を選択しておくと、最新版にアップデートされますが、それなりにインストールに時間がかかるので、今回は外しました。
お時間のある方は、チェックをしておく事をオススメします。

Image20


「使用中のパーティションをアンマウントしますか?」っと聞かれたら、「はい」を選択してください。

Image21


インストールの種類の画面になります。
USBメモリーにインストールする際には、ここからがミソです。
「それ以外」を選択してください。

Image22


「ブートローダーをインストールするデバイス」という項目があるので、ここで必ずUSBメモリーを選択してください。
間違ってもハードディスクを選択してはいけません。

Image23


次にUSBメモリーのext4のパーティションをダブルクリックします。

Image24


あらら、このスクショを撮った時には、ext2でインストールしてるようですね、すみません。
サイズは変更なし、利用方法は「ext4ファイルシステム」、マウントポイントは " / " を入力してOKを押してください。
ちなみに、ext2はジャーナリングファイルシステムではないので、書き込み回数がext4と比べると少なくなるそうです。
USBメモリーの寿命が気になる方は、ext2にしておくのも選択肢としては「あり」のようです。

Image25


こんな画面が表示されます。
USBメモリーのext4ファイルシステムが / にマウントされます(スクショはext2になっちゃってますが、ext4だと思ってください)。
ここでインストールを押します。

Image26


「swapを追加しないの?」ってインストーラが心配してくれますが、なにしろUSBメモリーは書き込みが遅いので、まずはswapなしで使ってみましょう。
ディストリビューションによりますが、最近のPCは2G〜4Gぐらいメモリーを積んでいるのが当たり前になって来てますので、案外普通に使えるものです。
メモリー不足で不安定な場合には、後ほど対処します。
構わず「続ける」を押しましょう。

Image27


ここから先は、まったく通常のインストールと同じですので、あっさりと。
地域はデフォルトでTokyoが選ばれている筈なので、「続ける」を押します。

Image28


キーボードも通常は日本語でしょう。

Image29


ユーザー名の入力です。何しろ小さいメディアなので、出先での紛失も考慮に入れ、ホームフォルダは暗号化しておきましょう。

Image30


「続ける」を押すと、インストールが開始されます。
ここからは、自動で画面が流れていくので、スクショの連続です。

Image31

Image32

Image33

Image34

Image35

Image36

Image37

Image38


インストールはこれで終了です。早速ブートして楽しんでみてください。

LinuxをインストールしたUSBメモリーはとても便利で、稀に音が出ないとか無線LANが使えないとかトラブルが無い訳でもありませんが、自分の環境を持ち歩けます。
別途NTFSのファイルシステムにアクセス出来ないカーネルを作って子どもに与えるなんて使い方でも良いでしょう。
最後に少し設定を変更して、使い勝手を上げる方法も紹介しておきます。
ここからの操作は管理者権限が必要なものばかりなので、

    $ sudo -s

で管理者権限で作業してしまいましょう。

①日本語環境の作り方はネットの情報で何とかなると思います。私は ibus-mozc を入れましたが、最近は何かと fcitx-mozc の方が使い勝手がいい場合も多いようです。

②子どもに与える場合、OpenDNSのFamilyシールドをDNSサーバーに指定しておきましょう。
/etc/dhclient.confに下記を追記します。

    interface "eth0" {
      prepend domain-name-servers 208.67.222.123,208.67.220.123;
    }
    interface "wlan0" {
      prepend domain-name-servers 208.67.222.123,208.67.220.123;
    }

③せっかくUSBでブートしているので、ハードディスクは回しっぱなしにしないで省エネ状態にしておきます。
/etc/hdparm.conf に下記を追加します。
HDDの名前が何になるのかわからないのですが、例えば /dev/sdb がUSBメモリーだったとしても無視されるっぽいので、/dev/sda, /dev/sdbの2つのディスクに対して、スタンバイへの移行時間を短くしてしまっています。
ディスクがたくさんある方は、sdc, sdd なんて増やしても、たぶん大丈夫だと思います。

    /dev/sda {
      spindown_time = 1
    }
    /dev/sdb {
      spindown_time = 1
    }

実際にHDDがスタンバイになってるかどうかの確認は、下記のコマンドを実行するとわかります。

    $ sudo hdparm -C /dev/sda

④Ubuntu系のディストリビューションは、DNSキャッシュを有効にするのがカンタンになりました。
/etc/NetworkManager/dnsmasq.d/cache というファイルを作って、中に下記の様に書いて起きます。

    cache-size=100

これで100個のエントリをキャッシュするらしいです。

⑤ /tmpをramに持って行きましょう。USBメモリーへの書き込みが減るので、体感速度が若干上がるらしいです。
/etc/fstab に下記を追加します。

    tmpfs /tmp tmpfs defaults,noatime 0 0
    tmpfs /var/tmp tmpfs defaults,noatime 0 0

⑥ インストール時にはswapの領域を確保しなかったのですが、心配だったりメモリー不足に陥ることがある場合には、swapをファイルで作っておきましょう。
これで1Gのswapをファイルとして確保した事になります。

    $ dd if=/dev/zero of=/swapfile bs=1M count=1000
    $ mkswap /swapfile
    $ echo "/swapfile swap swap defaults 0 0" >> /etc/fstab

⑦ swapを作ったら、実メモリを使い切るギリギリまで、スワップ領域を使わないように抑制する設定をしておきましょう。何しろUSBメモリーは書き込みが遅いですから、swapの発生は相当イライラしますので。
/etc/sysctl.conf 下記を追記します。

    vm.swappiness = 0

 

⑧ JAVAが必要な方は、インストールが簡単なppaが公開されているので、それを利用すると良いと思います(個人的にJAVAが必須なので紹介しておきますが、最近はJAVAもやや廃れて来ましたね…)。

    $ sudo add-apt-repository ppa:webupd8team/java
    $ sudo apt-get update
    $ sudo apt-get install oracle-java7-installer

 

⑨ ややリスクありかも知れませんが、ext4ファイルシステムの書き込みをwritebackにして、書き込みの遅さを少しでもカバー出来るようにします。ネット上で調べると、grubの設定が必要という記事が見つかるのですが、grubの設定はしなくてもwritebackでマウントされているように見えます。カーネル起動時にはルートはroでマウントして、どこかでremountしているのが原因と推測していますが、実際のところは正しいやり方はわかっていません。
ついでに高速化手法としてnoatimeなどの、書き込みを抑制するオプションも少し追加しておきます。ネットで高速化手法としてnobhを付けると言う記事を見つけて試してみたら、HDD専用のオプションだったらしく、USBメモリーでは起動しなくなってしまいましたので、いろいろ試す際には、リカバリ方法を考えてから実行する事をオススメします。
ここでは / は /dev/sdb2 として例を示しています。
  1. /etc/fstabでルートファイルシステムのマウントオプションにdata=writebackを追加します。

      /dev/sdb2 / ext4 defaults,async,noatime,nodiratime,data=writeback,barrier=0 1 1

  2. rootパーティションのジャーナリングシステムを以下のコマンドで変更します。

      $ tune2fs -o journal_data_writeback /dev/sdb2

  3. 再起動してmountコマンドでwritebackでマウントされているか確認します。

自分の環境としては、こんな感じの事をした結果、USBメモリーからLinuxを起動して、デスクトップ用途として、そこそこ快調に動作しています。
他に、実用的な高速化手法がありましたら、共有して頂けると助かります。

 

« 水槽の温度上昇対策 | トップページ | 久々のubuntu-defaults-builder »

パソコン・インターネット」カテゴリの記事

Ubuntu」カテゴリの記事

コメント

(参考)

USBブート Windows系システム用 - Windows板 [転載禁止]2ch.net
http://peace.2ch.net/test/read.cgi/win/1416409524/


The making of the integrated ISO file / bootable CD/DVD/BD
http://hp.vector.co.jp/authors/VA053879/bootcd.htm

The making of 2048[sct] aligned / 2^n[GB] normalized partitions
http://hp.vector.co.jp/authors/VA053879/mkpart.htm

The making of USB bootable system for Windows 7 (OEM_SLP) / PE3.x
http://hp.vector.co.jp/authors/VA053879/usbboot.htm

コメントを書く

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: Linuxでブート可能なUSBメモリーを作ってみよう:

« 水槽の温度上昇対策 | トップページ | 久々のubuntu-defaults-builder »