29
62

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

USBで持ち歩けるポータブルな開発環境 作ってみた

Last updated at Posted at 2017-03-24

始めに

ちょっとしたコネで高校でプログラミングを教えることになったボク。
しかし、生徒用に使えるのはWindowsで、しかも管理者権限は使えないとの事。
仕方がないのでいろいろ考えて、最終的にUSBで持ち歩けてWindowsマシンがあればどこでも同じように使える開発環境を作っちゃいました。
この記事はその備忘録になります。

手法

WindowsのゲストアカウントでC系の言語でプログラミングしたいと思いました!
インストールが許されるのであれば、MicrosoftのVisual Studioの無料の奴とか、cygwinを入れろとか、msys2の方がとか、MinGWを忘れるなとか色々あると思います。
しかし、インストールすら出来ないとなると見事に全滅します1

解決方法は至って単純。管理者権限不要な仮想化ウェアを使う。終わり。

ではちょっと味気ないので具体的な導入手順を追ってみます。
仮想化ウェアとは何か、各種仮想化ウェア(VMWare, VirtualBox, Virtual PC, QEMU, bochs等)の詳細等については適宜ググって下さい。
この記事では、各種ツールが揃ってて便利で、USBで持ち運べて、動かすのに管理者権限が要らないQEMUを使っていきます。

QEMUの入手・展開

QEMUは
http://www.qemu-project.org/
のダウンロードページから入手できます。
インストール自体には管理者権限を要求されますが、インストール後にインストール先のディレクトリをまるごとコピーしてしまえばアンインストール後も正常に動きます。
なので、ディレクトリ毎コピーして何処かに保存しておけば、それがどこでも使える仮想化環境になります。
サイズの目安は、MIPSやPowerPC等の全てのアーキテクチャ用のエミュレータを含めて約370MB、今回必要となるqemu-system-x86_64.exe以外のqemu-system-なんとか.exeを削除した場合に約110MBとなります。

2017年3月25日追記:Windows向けのQEMUは2種類ありますが、32-bit版のダウンロードをおすすめします。32-bit版は32 bitのWindowsマシンでも64 bitのWindowsマシンでも動きますが、64-bit版は32 bitのWindowsマシンでは動かないので。

仮想ディスクファイルの作成

まず、作業用ディレクトリとしてD:\programming-on-qemuを用意し、その中にqemuというディレクトリを作り、中にQEMUのファイル群を置いた状態にします。
此処から先は管理者権限要りません。

Windowsのディレクトリを表示するアレ(正式名:エクスプローラー)で、何も選択せずに何もない所でShiftキーを押しながら右クリックすると、メニューに「コマンド ウィンドウをここで開く(W)」というのが出るのでそれを選びます。
1.png
すると黒地に白文字のこんな画面が開きます。
2.png

dirと打つことでそのディレクトリの内容物が一覧になって出てきます。
3.png

次に、仮想ディスクファイルを作ります。QEMUから見たディスクのサイズが256GBになるようにQCOW2形式で作るには、次のように打ちます。
qemu\qemu-img create -f qcow2 hdd1.qcow2 256G

4.png
仮想的なサイズは256GBとここでは指定していますが、実際のファイルは200KB弱となり、仮想ディスクに実際に書き込みを行ったタイミングでどんどん伸びていく感じになります。

インストールするべきOSの入手

入れるOSはなんでも良いのですが、Unixライクで無料な物ならプログラミングに適していると思います。
この記事ではLinuxディストリビューションの一つ、Debianを入れていきます。
https://www.debian.org/
今回はプログラミングを行うにあたって必要十分な程度の構成で組んでいくので、ネットワークインストール用の、「Debianを入手する」→「インストールイメージのダウンロード」→「小さなCDまたはUSBメモリ」節の「amd64」を選ぶ事によって、debian-8.7.1-amd64-netinst.isoをダウンロードします2

ダウンロードが終わったら作業ディレクトリにdebian-netinst.isoというファイル名でコピーします。
この時点で、dirコマンドを打つとこんな感じになると思われます。
5.png

仮想環境へのインストール

それでは起動して仮想環境にインストールしていきましょう。
仮想マシンのメモリサイズを512MBとした場合、次のようなコマンドになります3
qemu\qemu-system-x86_64 -m 512 -hda hdd1.qcow2 -cdrom debian-netinst.iso

8.png
タイムゾーンの設定はotherAsiaJapanを選んでおきましょう。
9.png
ロケールはデフォルトのen_US.UTF-8で問題ありません。
10.png
キーマップは日本語配列([]が上下に並んでてリターンキーが大きくてスペースバーが狭い、日本では一般的な奴)であればJapaneseを選ぶべきです。US配列の場合は多分American Englishが良いと思いますが未検証です。
11.png
少し待つと、ホスト名を選ぶ画面になります。これが他のマシンと被ると技術的な意味でちょっと面倒な事が起こる事がありえます、が、普通は問題ない上にあとで変えられるのでデフォルトのdebianで良いと思います。
12.png
ドメイン名はポータブルな環境に割り当てる類の物では無いので、今回は空欄のまま次へ。
13.png
rootのパスワードを設定します。rootは最大の権限を持つので普通は強力なパスワードを使うべきですが、今回は適当に設定します。但し空欄にだけはしないで下さい。あと絶対忘れないで下さい。死にます
14.png
パスワードをもう一度入力するアレです。
15.png
普段使いのアカウントのユーザ名を、長くなってもいいので入れます。ログイン時に使う短いユーザ名は後で入れます。
16.png
ログイン時に使う短いユーザ名を入れます。
17.png
普段使いのアカウント用のパスワードを入れます。この後でこのアカウントの権限をsudoerに昇格する予定なので、これも強力なパスワードを使うべきです。
18.png
はいもう一度打って下さい。
19.png
暫く待つと、次はディスクの割り当て方を決めます。今回は一番上のGuided - use entire diskを使いましょう。
20.png
使えるディスクの一覧が出てくるので、そのままリターンキーでsdaを選びます。
21.png
パーティションの割り当て方は一番上で良いと思います。
22.png
こんな風に作るよ!っていう表示が出るので、Finish partitioning and write changes to diskで確定します。
23.png
最終確認的なアレ。Yesを選びます。選ぶとhdd1.qcow2ファイルが膨らみ始めます。
24.png
暫く待つと核となるシステムがインストールされて、追加パッケージをインストールする段階になります。追加パッケージをどこからダウンロードするかを選択する画面になるので、日本在住であればJapanを選びましょう。
25.png
日本のどのサーバからダウンロードするか、の選択肢ですが、どれでも大きな違いは無いはずなので今回は一番上を選んでみます。
26.png
プロキシを刺す必要がある人はここで適切な値を入力します。私は必要ないので空欄でリターンキーを押します。
時間帯等のアレで繋がらない場合は、時間を空けるか、何度かリトライして下さい。
27.png
暫く待つと、どのパッケージをインストールしたかに関する統計情報を定期的に送信するか(意訳)という選択肢が出てくるので、嫌な人はNoを選んでおきます。
28.png
少し待つと、大雑把にどの種類のパッケージをインストールするかを選択する画面になります。どちらにせよ後で追加できるので、今回は図のように一番下のstandard system utilities以外は空欄にして進めます。選択と非選択の切り替えにはスペースキーを使います
29.png
暫く待つと、次はGRUBをインストールする段階になります。詳しい事は省きますが、これが入ってないと起動しないのでYesを選択してインストールします。
30.png
インストール先は/dev/sdaにします。
31.png
お疲れ様でした!仮想環境へのDebianのインストールが完了しました!Continueを選んで、仮想環境の再起動をしましょう。

仮想環境の初期設定

32.png
再起動後暫く待つと、ログイン画面になります。色々とやることがあるので、まずはrootとしてログインします。この時、パスワードを打つ時に画面上の反応はありませんが、正常です。
34.png
まずはaptsudoを入れます。
コマンドはapt install sudoです。
また、この後sudoersを編集するので好みのテキストエディタがあればそれを入れます。例えばemacsユーザであれば、apt install emacs-noxで入ります。何も入れない場合、vim.tinynanoがこの時点で使えるようでした。
次にsudoersを編集するのに使うエディタを選択します。
コマンドはupdate-alternatives --config editorです。
35.png
最後に、visudoコマンドでsudoersファイルに下図のような感じの行を追加します。
今回私は普段使いのユーザアカウント名をuserとして作ったので、21行目の反転させている部分の最初の単語はuserとなります。
36.png
最後に保存してエディタを終了させた後、Ctrl+Dを押すか、またはlogoutコマンドによってログアウトします。

仮想環境の追加設定

37.png
まずは通常ユーザとしてログインし、プログラミング環境を整えます。今回はC言語の環境を整えたいので、build-essentialaptで入れておきましょう。
コマンドはsudo apt install build-essentialとなります。
38.png
aptコマンドの実行に権限が必要なので、sudoコマンドで一時的に昇格します。最初に昇格する時に「よく考えて使ってね」とも言われますが、スルーして現在ログイン中のアカウントのパスワードを入力します。
build-essentialに関連付けられた多くのプログラムとライブラリがインストールの予定の一覧に上がります。「続けますか?」の質問に対しYまたは無記名でリターンキーを押して応える事によって(多肢選択式の場合で、一つだけ大文字になっていれば、普通はそれがデフォルトで選ばれます)、インストールが始まります。

やる事が一通り終わったら、一旦終了しましょう。
Debianを終了するにはsudo poweroffで行けます。

仮想ディスクファイルの小型化

QCOW2形式の仮想ディスクファイルは、使っているうちにどんどん大きくなります。
但し、次のような内容のコマンドを(Windows側で)実行する事によって、圧縮できる場合があります5

move hdd1.qcow2 hdd1.qcow2.backup
qemu\qemu-img convert -O qcow2 hdd1.qcow2.backup hdd1.qcow2

起動の簡略化

最後に、メモ帳か何かにqemu\qemu-system-x86_64 -m 512 -hda hdd1.qcow2と書いて、virtual-machine-startup.batというファイル名で作業ディレクトリに保存すると、そこから起動できるようになるので非常に便利です。
39.png

結果

WindowsのゲストアカウントでC系の言語でプログラミングできるようになった!
40.png
今時のUSBメモリになら余裕で全部入る大きさとなりました(debian-netinst.isoを含まず、仮想ディスクファイルは圧縮済み)。

最後に

ひとまずここで備忘録を終わりにします。
最後まで読んでくださった方、ありがとうございました。

  1. 例外として、MinGWはPATHの設定が出来ない事を除けば持ち運んで使う事も出来なくはない。すごく不便だけど。

  2. この記事を書いている2017年3月24日現在の辿り方とファイル名なのでもしかしたら変わるかも知れません。

  3. 実際に使われるメモリのサイズにはQEMU自体が使う分も含まれるので、300MBくらいの追加の余裕がホスト側(QEMU自体を動かす側)に必要となります。
    6.png
    無事立ち上がったので、リターンキーを押してInstallを選びます。
    7.png
    言語は英語推奨です。インストール後、起動した時に文字化けすることが多いので4

  4. 厳密にはインストール時の言語の設定の問題ではなくロケールの設定の問題なのでインストール後に弄れば直る。

  5. 厳密には圧縮ではなく、既に使われなくなった領域を詰めてるだけ。

29
62
7

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
29
62

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?