デュアルブートPC上でUbuntuをUSBメモリにインストールした

# はじめに
Qiita初投稿です。大学の生協で買った~~クソ遅かった~~生協PCを使ってUbuntu+Windowsのデュアルブートをしています。
基本は家で使ってますが、大学まで持っていくのが重くてめんどくさい。通勤ラッシュでPCが押しつぶされたらどうしよう。
ということで、Ubuntuの環境を持ち運べるようにUSBメモリにインストールした。

# 使用したデバイス
- FUJITSU LIFEBOOK SH90/T ```/dev/sda```
    - Ubuntu 18.04とWindows 10のデュアルブート（UEFIブート）
    - HDDの動作があまりに遅くてイライラしてたのでSSD換装している

- BuffaloのUSBメモリ:2GB（容量が小さい、isoを書き込む） ```/dev/sdb```
- ELSONICのUSBメモリ:16GB（容量が大きい、Ubuntuのインストール先） ```/dev/sdc```

# isoの書き込み
1年前にやったのでどうやったか忘れた。Unetbootinだったかな？

# USBメモリのパーティション
小さい方のUSBメモリ(```/dev/sdb```)からブートする。
Try Ubuntu without Installingを選択。
大きい方のUSBメモリ(```/dev/sdc```)を接続し、GPartedでパーティションをいじる。
[参考サイト](https://cloud-work.net/usb%E3%83%96%E3%83%BC%E3%83%88/usb_install/#USB-2
) を見たところ、USBメモリの先頭にfat32形式で領域を確保すればWindowsからもアクセスできると知り、同じようにパーティションを編集した(```/dev/sdc1```)。
あとはUbuntuがインストールされる、ext4のパーティション(```/dev/sdc2```)を作る。
swap領域は作らなかった。

2020.5.3追記: UEFIブートするためにはEFIパーティション（マウントポイントは /boot/efi ）が必要。
Windowsとデータ共有用のパーティションは作らないで進め、```/dev/sdc1```をEFIパーティションにする方が良さそう。

# インストール
デスクトップにある「Ubuntu 18.04のインストール」をダブルクリック。
間違えるとSSDのデータが飛ぶので気をつける（そもそもSSDを外して作業すべきだった説）。
なお```/dev/sdc2```のような部分は環境によって変わるので、適宜読み替えていただくとよい。

- 「インストールの種類」: ```それ以外```
- マウントポイント(```/dev/sdc2```): ```/```
- ブートローダをインストールするデバイス: ```/dev/sdc```

![IMG_20191224_090143_25per.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/557117/851d8d7a-9759-a191-9a08-46c08ced7f00.jpeg)
![IMG_20191224_092058_25per_2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/557117/b89ea5ae-f804-e6b2-8e2e-f7b5331d66b6.jpeg)



解像度の関係で画面の下が切れていて、ブートローダをインストールするデバイスのメニューを選べなかったので設定を変更した。

```
$ xrandr --output eDP-1 --mode 1920x1440
```
# 起動できるか試す
- 大きい方のUSBメモリを外して（SSDから）いつもどおり起動できるか→起動できない（汗）
    - grub rescue的な画面が出現
- 大きい方のUSBメモリを付けて起動→GRUBにすべてのOSが登録されているのでこっちはいけそう（結局やらなかった）

# SSDのブートローダを修復
- 大きい方のUSBメモリなしで起動しないのはまずい
- 大きい方のUSBメモリを外して修復。[参考サイト（web archive）](https://web.archive.org/web/20190310085610/http://john1851.html.xdomain.jp/notes/ubuntu/repair-grub.html)の通りで大丈夫だった。ひとまず安心。

# 大きい方のUSBメモリのブートローダを修復
この作業はWindowsのみインストールされている別のPCを使って行った。EFIパーティションを```/dev/sdc1```とした（共有用のパーティションを後で変更する）。

- [参考サイト（web archive）](https://web.archive.org/web/20190310085610/http://john1851.html.xdomain.jp/notes/ubuntu/repair-grub.html)の通り。

# 大きい方のUSBメモリから起動
![IMG_20191224_131701_tr_2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/557117/0a9bf507-837a-5627-e753-646b7f419545.jpeg)
grubのos選択画面からUbuntuを選べるようになってた。

しかし、この後ログイン画面が現れずemergency modeになってしまった。
ググってみたところ ```/etc/fstab``` が怪しそう。

```
# cat /etc/fstab
```
ブート時に ```/dev/sda3``` （SSDのブートローダ）を読み込む設定になってしまっていた。
[](あと ```/boot/efi``` 的なディレクトリが作られているが中身が空だった。)
→ ```/dev/sdc1```を読み込ませるようにする。

# パーティションを再編集
共有用のパーティションを別に作る。番号の並びが変になってしまった。

- ```/dev/sdc3```: 共有用(fat32)、```/windows``` にマウント
- ```/dev/sdc1```: ブートローダ（に変更）、```/boot/efi``` にマウント
- ```/dev/sdc2```: ubuntu、```/``` にマウント

対応するUUIDを指定してマウントの設定を書く。

```text:/etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/sdc2 during installation
UUID=hoge  /               ext4    noatime,errors=remount-ro 0       1
# /boot/efi => /dev/sdc1 に変更
UUID=fuga  /boot/efi       vfat    umask=0077      0       1
# /windows => /dev/sdc3 に変更
UUID=piyo  /windows        vfat    noatime,users,rw,utf8,uid=1000,gid=1000,fmask=133,dmask=022 0       1

# swapは使用しない

tmpfs /tmp tmpfs defaults,noatime,size=512m 0 0
tmpfs /var/tmp tmpfs defaults,noatime,size=512m 0 0
tmpfs /var/log tmpfs defaults,noatime,size=512m 0 0

UUID=foo /media/(username)/C auto nofail,noatime,users,rw,uid=1000,gid=1000,fmask=133,dmask=022 0 0
UUID=bar /media/(username)/D auto nofail,noatime,users,rw,uid=1000,gid=1000,fmask=133,dmask=022 0 0
```
# 起動できた
SSDなどを自動マウントする場合、```/etc/fstab``` の設定で ```nofail``` と書かないとそもそも起動できなかったりする（別PC上で起動するなどマウントできない場合にすぐemergency modeになる）。
WindowsのBitLockerがかかっているとマウントできない（それはそう）。

## パーティションテーブルがmsdosだった？
```
$ sudo parted -l
モデル:   (scsi)
ディスク /dev/sdc: 15.9GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: msdos
ディスクフラグ: 

番号  開始    終了    サイズ  タイプ   ファイルシステム  フラグ
 3    1049kB  3461MB  3460MB  primary  fat32
 1    3671MB  4195MB  524MB   primary  fat32             boot, lba
 2    4195MB  15.8GB  11.6GB  primary  ext4
 4    15.8GB  15.9GB  105MB   primary  fat32
```
![Screenshot from 2019-12-27 08-53-42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/557117/d0e673fe-b172-9f3c-a7b5-ab55bd865ff4.png)

これでも起動できてる。UEFI-MBRの組み合わせになっている？

## USBメモリの寿命を延ばす対策　メモ
効果がどのくらいあるかは不明。

- /etc/sysctl.conf の vm.dirty_writeback_centisecs の値を大きく
- mlocateをcron.dailyからcron.weeklyに移動
- /etc/fstab の設定
    - tmpfs (/tmp, /var/tmp, /var/log)
    - noatime

## いろんな設定（[1, 2](https://qiita.com/limb/items/a77e76f4a1255807fdd4)）（[3](https://news.mynavi.jp/article/20181125-728707/)）（[4](http://hal0taso.hateblo.jp/entry/2017/02/02/lubuntu_16.04_touch_pad_not_working)）
1. UbuntuとWindowsで時刻が9時間ずれる問題の解消

    ```
$ timedatectl set-local-rtc true
    ```

2. ディレクトリ名を英語に

    ```
$ LANG=C xdg-user-dirs-gtk-update
    ```
3. ctrlとcapsの入れ替え

    ```txt:/etc/default/keyboard
XKBOPTIONS="ctrl:swapcaps"
    ```

4. ノートPCでタッチパットが反応しない問題の解決

    ```txt:/etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash i8042.notimeout i8042.nomux"
    ```

# Ubuntu 20.04 の場合
2020.5.3追記: 同様にやってみたら案の定失敗したのでブートローダを修復した。インストール時に

```
以下のデバイスのパーティションテーブルが変更されます:
SCSI1 (0,0,0) (sda)
```
のように、インストール先のデバイス (```/dev/sdc```) 以外のものが表示される場合は失敗しそう。
![Screenshot from 2020-04-26 06-45-23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/557117/922a7fa3-a7ca-6d5c-fae1-849919df6971.png)




# 最後に
fat32のパーティションが最初じゃなくて（ext4をまたいで）最後にあってもWindowsで読み込めるかどうか試したところ、できた（できるようになってた）。
参考にしてたサイトが結構前のものだったので、最新の情報を調べることが大事そう。
Windows 10は起動しただけでメモリを2GB食っているのをやめてほしい（これが嫌で仮想環境とかは使いたくない）。

最後まで読んでくださりありがとうございます。