デュアルブート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でパーティションをいじる。
参考サイト を見たところ、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


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

$ xrandr --output eDP-1 --mode 1920x1440

起動できるか試す

  • 大きい方のUSBメモリを外して(SSDから)いつもどおり起動できるか→起動できない(汗)
    • grub rescue的な画面が出現
  • 大きい方のUSBメモリを付けて起動→GRUBにすべてのOSが登録されているのでこっちはいけそう(結局やらなかった)

SSDのブートローダを修復

  • 大きい方のUSBメモリなしで起動しないのはまずい
  • 大きい方のUSBメモリを外して修復。参考サイト(web archive)の通りで大丈夫だった。ひとまず安心。

大きい方のUSBメモリのブートローダを修復

この作業はWindowsのみインストールされている別のPCを使って行った。EFIパーティションを/dev/sdc1とした(共有用のパーティションを後で変更する)。

大きい方のUSBメモリから起動


grubのos選択画面からUbuntuを選べるようになってた。

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

# cat /etc/fstab

ブート時に /dev/sda3 (SSDのブートローダ)を読み込む設定になってしまっていた。

/dev/sdc1を読み込ませるようにする。

パーティションを再編集

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

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

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

/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

これでも起動できてる。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)(3)(4

  1. UbuntuとWindowsで時刻が9時間ずれる問題の解消

    $ timedatectl set-local-rtc true
    
  2. ディレクトリ名を英語に

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

    /etc/default/keyboard
    XKBOPTIONS="ctrl:swapcaps"
    
  4. ノートPCでタッチパットが反応しない問題の解決

    /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) 以外のものが表示される場合は失敗しそう。

最後に

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

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