ドスパラのスティック型PC「DG-STK1」をはじめ、スティック型PCはOSにWindows 8.1 with Bingが使用されています。

ここにUbuntuを入れてみることにしました。

かなり大変でネットの情報も使用しましたが1つのサイトで完結しませんでした。
m-Stick MS-NH1という非常に似た端末の事例があったのですが同じようにやっても出来ませんでした。

なお、ここで書かれていることは自己責任でお願いします。

●バックアップ

まず最初にバックアップを取ります。
ここでのバックアップは工場出荷時に戻せる程度のもので個人で作成したファイルのことは記載しません。

バックアップは回復ディスクを作成する事で行いました。(→過去の記事)

なお、2015/8/3現在、このディスクを使用して復元は行っていませんので本当に復元できるかはまだ試せていません。
Ubuntuを楽しんだらWindows 10の無料アップデート期間には戻そうと思います。

 

●準備するもの

・Ubuntuのインストールイメージ

ここからUbuntu Desktop 日本語 Remixをダウンロードします。
私はUbuntu 14.04を使用しました。
あとにも出てきますが、最新のUbuntu 15.04ではインストールに失敗してしまいました。
Ubuntu 14.10は使用できると思いますがサポートが2015年7月で終わっていますので選択しませんでした。
(Ubuntu 14.04は2019年4月までサポートされます。)

イメージをダウンロードしたらUSBメモリで起動できるようにします。
作成方法はWindows 10 Insider Previewの起動ディスクを作成した時と同じ方法で作成できます。 (→過去の記事)

・USBハブ、USBキーボード、USBマウス、USB無線LANアダプタ

まずUSBキーボードは必須です。無いと文字が入力できません。
マウスは合った方が便利というか個人的には必須です。

USB無線LANアダプタは標準で入っているものをUbuntuが認識できないので用意しました。
Ubuntuで動作確認できているものがいいので私はBUFFALO 無線LAN子機 コンパクトモデル 11n技術・11g/b対応 WLI-UC-GNMを使用しました。
ちなみにWLI-UC-GNは使用できませんでした。(もちろんLinuxに精通している方なら認識させられると思います。)

USBハブはこれらの機器を接続するために使用するのですが私は念の為セルフパワー方式のハブを使用しました。
(使用したもの→iBUFFALO USB3.0ハブ 4ポートタイプ(ACアダプター付) マグネット付 ブラック 【PlayStation4,PS4 動作確認済】 BSH4A05U3BK)

・32bit UEFI対応のためのファイル

細かいことは割愛します。
スティック型PCにUbuntuをインストールしようとこのページをご覧の方はBIOSとUEFIという言葉とか仕組みは分かっていると思います。
ただ、私はUEFIに64bitとか32bitがあるのは知りませんでした。
DG-STK1はOSに32bitのWindows 8.1 が使用されているのでUEFIも32bitのようですが、Ubuntuの起動には64bit UEFIが使用されています。
これをどうにかしないと起動ディスクすら起動できない状態になります。

そんな中で神のようなファイルがありました。
これはすでにUbuntuが動作する環境があれば自分でコンパイル可能なのですが今回はありません。
それをまずダウンロードしておきます。

以下のサイトからダウンロードできます。私は後者のサイトから行いました。
https://github.com/jfwells/linux-asus-t100ta/blob/master/boot/bootia32.efi
http://askubuntu.com/questions/619872/installing-ubuntu-14-10-64-bit-on-a-windows-8-bay-trail-atom-tabletの「4.Download this bootia32.efi file from GitHub」

・USBメモリの起動ディスクの変更

ここまで来れば準備はあと少しです。
準備の最初に作った起動ディスクの中身をエクスプローラで開きます。
そして以下のフォルダに先ほどダウンロードした「bootia32.efi」をコピーします。

E:\EFI\BOOT
※EはUSBメモリのドライブと仮定します。

これだけで起動できるようになります。なんか不思議ですね。

 

●インストール

1.USBから起動ディスクを起動させる。

USBに挿して起動させれればインストーラが起動する、と思いきやそんな簡単ではありませんでした。
BIOS(UEFI)に入ってそこから起動させます。

電源を入れたら「Diginnos」というロゴが表示されるので[DEL]キーを押します。
そうするとメニューが起動します。

DSC02630_R

ここの[Save&Exit]タブの[UEFI:~](上図の白いところ)でEnterを押します。
BUFFALO~というのは使用しているUSBメモリによって異なりますが、ここから起動しますよ、という事です。

2.普通にUbuntuをインストールする

 

 

 

まずは普通にインストールしていきます。

DSC02631_R

上図画面では[インストール中にアップデートをダウンロードする]がチェックできない状態ですがこの画面を取った時はUSB無線LANアダプタを付けていなかったからです。
別に後からでもアップデートできますのでどちらでも大丈夫です。(サードパーティ云々も同様)

パーティションについては[ディスクを削除して~」を選択しました。[それ以外]で手動でやってもいいのですが、自動でも問題ありませんでした。

DSC02632_R

ちょっと迷ったのが以下の画面です。

DSC02634_R

何度かインストールを失敗しているのですが、最初だけUEFIに関する警告が出ました。
正直よく分からなかったのですが、Windows 8.1と併用するのが難しくなるという事だと思います。

私は[Continue in UEFI mode]を選択しました。

これ以降は問題なくインストールが完了するはずです。

なお、もしUbuntu 15.04をインストールしようとしていた場合、以下のエラーが表示されると思います。
原因とか分かりませんでした。なので今回はUbuntu 14.04を使用しています。

DSC02635_R

 

●インストール後の処理

さて、インストールが終わったら再起動しますが実はまだ起動できません。
ここでも32bit UEFIの壁があります。
今度は32bit UEFIで動作する32bitのGRUBを自分でコンパイルして所定の場所に配置する必要があります。

1. まずは起動

流れとしてはインストールで使用したUSBメモリを使用してGRUBメニューを起動させ、コマンドラインから内蔵HDD(SSD)にインストールしたUbuntuを起動させることになります。
実際にGRUBメニューが壊れた場合に行う修復作業らしいです。

それではインストールの時と同じ方法でUSBから起動させ、GRUBメニューを起動させ、この画面で「c」を押します。
そうすると「grub>」で入力待ち状態になります。

以下のコマンドを入力します。

grub> linux (hd1,gpt2)/boot/vmlinuz-3.16-0-23-generic root=/dev/mmcblk0p2 reboot=pci
grub> initrd (hd1,gpt2)/boot/initrd-3.16-0-23-generic
grub> boot

入力する時、途中で[TAB]キーを押すと候補が出たりファイル名を補完してくれたりします。
例えば、(hd1,gpt まで入力して[TAB]キーを押すと、gpt1は○○、gpt2は○○のように候補が出ます。
その中でext*のような表示があるものを選択します。

つまり、(hd1,gpt2)というのは1番のHDDの2番目のパーティションということになります。

vmlinux-3.-16-0-23-generic というのは起動するファイルになりますがバージョンは異なる場合があります。
またインストール時にアップデートしながら行っていた場合は複数種類あるかもしれません。
その場合は一番バージョンが新しいものでいいと思います。

root=/dev/mmcblk0p2 の最後の2はパーティション番号になります。

reboot=pci は正直よく分かりません。起動時にPCIを初期化してくれるとか?

initrd行も上記ルールに基づいて自分の環境に合わせて変更します。

最後にbootすれば問題なければここでやっとUbuntuが起動します。

2. アップデート

Ubuntuの起動でアップデートをしておいてください。
但し、Ubuntu 14.10、15.04へのアップデートは行わないでください。
14.10へは問題なくアップデートできますが、その状態ではサポート切れとのことで15.04へのアップデートを即されます。
前述したとおりDG-STK1ではUbuntu 15.04はどうも動作しないようです。

念の為、アップデート後は再起動しました。
そしてまた、前項のようにUSBメモリから起動させて下さい。

3. 32bit GRUBを作成

最後の作業ですが一番難しいかもしれません。
ですが基本的にはコマンドを叩くだけなので間違えなければ大丈夫だと思います。

まずは「端末」(ターミナル)を起動しておきます。

・ライブラリ等の取得

$ sudo apt-get install git bison libopts25 libselinux1-dev autogen m4 autoconf help2man libopts25-dev flex libfont-freetype-perl automake autotools-dev libfreetype6-dev texinfo

・GRUBのソースを取得

$ git clone git://git.savannah.gnu.org/grub.git

・GRUBのコンパイル

$ cd grub
$ ./autogen.sh
$ ./configure --with-platform=efi --target=i386 --program-prefix=""
$ make

・GRUBのインストール

$ cd grub-core
$ sudo ../grub-install -d . --efi-directory /boot/efi/ --target=i386

このとき、
Installing for i386-efi platform.
../grub-install: warning: cannot open directory `/usr/local/share/locale’: そのようなファイルやディレクトリはありません。
Installation finished. No error reported.
というエラーのようなメッセージが出ますが気にしなくていいようです。

・GRUBの配置

最後に、GRUBを配置するのですが2つの方法があるようです。

①単に配置する方法

$ cd /boot/efi/EFI
$ cp grub/grubia32.efi ubuntu/

②64bitのGRUBを32bitのGRUBで上書き

$ cd /boot/efi/EFI
$ sudo cp ubuntu/grubx64.efi ubuntu/grubx64.efi.org
$ sudo cp grub/grubia32.efi ubuntu/grubx64.efi

私は①の方法では起動できませんでした。
①の方法では何かしらの方法でgrubia32.efiを起動するようにしないとダメなような気がするのですが、これで起動できている事例もありました。

私は、というかDG-STK1の場合は②の方法になると思います。
この②の方法は32bitのgrubia32.efiをgrubx64.efiというファイル名にしてしまって起動ファイル自体はgrubx64.efiなのですがその実態は32bitのGRUBが起動するというものです。

この方法の欠点はアップデートした時にgrubx64.efiが置き換わってしまう可能性があることです。

もしそうなったら再度、②の方法を行う必要があります。

 

●無事起動

ここまで行う事で無事起動することができました。

ただまだ課題も残っています。

音が鳴らない状態です。またbluetoothも設定できていません。

そもそも私はまだubuntuでbluetoothを扱ったことが無いのでそこから勉強です。

 

今後は音を鳴らせるように調査していきます。

また、回復ディスクでWindows 8.1に戻せたなら、Windows 10の無料アップデートも行ってみたいですね。

 

 

 

●参考サイト

http://www.geocities.jp/cowfish_lactoria/mstick1-euc.html
http://sturmflut.github.io/linux/ubuntu/2015/01/21/installing-ubuntu-15.04-on-baytrail-tablets/
http://www.jfwhome.com/2014/03/07/perfect-ubuntu-or-other-linux-on-the-asus-transformer-book-t100/
http://askubuntu.com/questions/619872/installing-ubuntu-14-10-64-bit-on-a-windows-8-bay-trail-atom-tablet