install - Tokyo-NixOS/Tokyo-NixOS-Meetup-Wiki GitHub Wiki
NixOSのインストール自体は難しくないですがコマンドラインを利用します。
気をつけたいところはパーティショニングです。
コマンドラインインストールをやったことがない場合は一度バーチャルマシンで試すのはいいかもしれません。
英語を読める方はぜひ一度公式インストールマニュアルに目を通してください。
-> 公式マニュアル
公式ページから最新のISOファイルをダウンロードします。
-> ダウンロードページ。
このチュートリアルはMinimal Installation CDを使う前提です。
CDで起動したら、Grub画面が表示されます。そこで「NixOS <バージョン> Installer」を選択したままエンターキーを押します。
ブートが終わりましたら、プロンプトが表示されます。
この状態ではいつでも「alt+F8」でマニュアルを表示することができます。(「alt+F1」を押せばプロンプトに戻れます)
プロンプトで最初に行いたい事はキーボードレイアウトを日本語レイアウトに変更することです。
$ loadkeys jp106NixOSのインストールにでは「fdisk」や「gdisk」を利用して手動でパーティショニングを行います。
パーティショニングは複雑なトピックであります。
NixOSのソフトウェアはすべて「/nix/store/」にインストールされます。OSのデザインから「/nix/store/」が大きいなるので、十分な領域を与えたいです。(50ギガ以上は無難)
パーティショニングを行う前にArchlinuxのパーティショニングWikiページを読むのを勧めます。
MBRとGPTのに種類のパーティションがあります。簡単にまとめると
- UEFIシステムはGPTを使わないといけない
- GPTで
grubを利用できません(その代わりgummibootを使います)
詳しくはArchlinuxのWikiを参考にしてください。-> GPT か MBR の選択
参考までに1Tのハードディスクのパーティショニング(GPT):
-
/dev/sda1に/bootを512M -
/dev/sda2にswapを20G (RAMは16G) -
/dev/sda3に/を100G -
/dev/sda4に/homeの残りの810.5G
まずはfdiskで利用できるディスクを確認します。
$ fdisk -l一つのハードディスクがある場合はすべてのディスクがリストされます。一つのハードディスクがある場合は「/dev/sda」がリストアップされるはず。
次はfdiskでパーティションを作ります。
$ fdisk /dev/sda
fdiskからパーティションを作ります。下記はあくまで参考のための例となります。
利用しているPCによって調整が必要となります。
-
oを入力して、enterキーを押します(パーティションテーブルを作成)
bootパーティション作成(任意)
-
nを入力して、enterキーを押します(パーティションを新しく作る) -
pを入力して、enterキーを押します(種類をprimary) -
enterキーを押します(パーティション番号、デフォルトのまま) -
enterキーを押します(初めてのセクター、デフォルトのまま) -
+200Mを入力して、enterキーを押します(サイズ設定、bootは100M以上がおすすめ)
swapパーティション作成(任意)
-
nを入力して、enterキーを押します(パーティションを新しく作る) -
pを入力して、enterキーを押します(種類をprimary) -
enterキーを押します(パーティション番号、デフォルトのまま) -
enterキーを押します(初めてのセクター、デフォルトのまま) -
+8Gを入力して、enterキーを押します(サイズ設定、PCのメモリによります 参考ページ) -
tを入力して、enterキーを押します(パーティション種類変更) -
2を入力して、enterキーを押します(今作ったパーティション) -
82を入力して、enterキーを押します(swapに設定)
/パーティションの作成
-
nを入力して、enterキーを押します(パーティションを新しく作る) -
pを入力して、enterキーを押します(種類をprimary) -
enterキーを押します(パーティション番号、デフォルトのまま) -
enterキーを押します(初めてのセクター、デフォルトのまま) -
enterキーを押します(残り領域をすべて利用する) -
pを入力して、enterキーを押して、パーティションテーブルを確認します
問題がなければ
-
wを入力して、enterキーを押して、パーティションテーブルを記録します
パーティショニングはこれで終わりました!
新しく出来たパーティションはfdisk -lで確認できます。
まずはfdiskで利用できるディスクを確認します。
$ fdisk -l一つのハードディスクがある場合はすべてのディスクがリストされます。一つのハードディスクがある場合は「/dev/sda」がリストアップされるはず。
GPTパーティションを作成する際はgdiskを使います。
$ gdisk /dev/sdagdiskからパーティションを作ります。下記はあくまで参考のための例となります。
利用しているPCによって調整が必要となります。
-
oを入力して、enterキーを押します(パーティションテーブルを作成)
bootパーティション作成(必須)
-
nを入力して、enterキーを押します(パーティションを新しく作る) -
enterキーを押します(パーティション番号、デフォルトのまま) -
enterキーを押します(初めてのセクター、デフォルトのまま) -
+512Mを入力して、enterキーを押します(サイズ設定、UEFIのbootは512Mがおすすめ) -
ef00を入力して、enterキーを押します(パーティションタイプ、EFI Systemに設定)
swapパーティション作成(任意)
-
nを入力して、enterキーを押します(パーティションを新しく作る) -
enterキーを押します(パーティション番号、デフォルトのまま) -
enterキーを押します(初めてのセクター、デフォルトのまま) -
+8Gを入力して、enterキーを押します(サイズ設定、PCのメモリによります 参考ページ) -
8200を入力して、enterキーを押します(パーティションタイプ、Linux swapに設定)
/パーティションの作成
-
nを入力して、enterキーを押します(パーティションを新しく作る) -
enterキーを押します(パーティション番号、デフォルトのまま) -
enterキーを押します(初めてのセクター、デフォルトのまま) -
enterキーを押します(残り領域をすべて利用する) -
enterキーを押します(パーティションタイプ、デフォルトのLinux filesystemのまま) -
pを入力して、enterキーを押して、パーティションテーブルを確認します
問題がなければ
-
wを入力して、enterキーを押して、パーティションテーブルを記録します
NixOSではいろいろなファイルシステムを利用できます。どれを利用すれば良いのわからない場合はext4が無難です。
前のパーティショニング通りにしていれば、
-
/dev/sda1はブート用 -
/dev/sda2はswap用 -
/dev/sda3は/用
では早速ファイルシステムを作ります
bootパーティションのみはGPTとMBRによってファイルシステムは変わります、利用したパーティションシステムに合ったファイルシステムを作る必要があります
次のコマンドは利用するパーティションシステムによって異なります
MBRの場合はext4にします
$ mkfs.ext4 -L boot /dev/sda1GPTの場合はfat32にしないと行けないです
$ mkfs.fat -F32 /dev/sda1$ mkswap /dev/sda2$ mkfs.ext4 -L nixos /dev/sda3まずは/をマウントします
$ mount /dev/disk/by-label/nixos /mnt次は/bootフォルダーを作ります
$ mkdir /mnt/boot次のコマンドは利用するパーティションシステムによって異なります
MBRの場合はラベルを利用して/bootをマウントします。
$ mount /dev/disk/by-label/boot /mnt/bootGPTの場合はmkfs.fatでラベルをパーティションにつけれないので、IDから直接マウントします。
$ mount /dev/sda1 /mnt/boot最後にswapを有効にします
$ swapon /dev/sda2インストールにはネットワークが必要です。
有線で接続していれば自動的にネットワークが設定されます。
pingコマンドでネットワークを試せます。
$ ping nixos.org -c3Wifiの設定はMinimal CDで多少面倒なので、自信がなければ有線かFull CDでGUIで設定がおすすめです。
Wifi設定は専用なバーチャルコンソールに行いたいので、alt+F2を押して第2バーチャルコンソールに移動します。
最初はネットワークインターフェイスを確認します
$ ifconfig -aこれですべてのインターフェイスはリストアップされるはずです。
WifiインターフェイスはwlpXs0の名前でリストアップされるはず(Xは数字になります、例wlp4s0)
wifiインターフェイス名をわかったら、次は利用できるアクセスポイント(ESSID)を確認します。
$ iwlist wlp4s0 scan | grep ESSID※ wlp4s0はifconfigで見つけたインターフェイスに変更
次はwpa_supplicantサービスを停止します。
$ systemctl stop wpa_supplicantinterfaceにインタフェース名、ESSIDをアクセスポイント名とpassphraseをパスワードに入れ替えて、
次はこのコマンドで接続します
$ wpa_supplicant -i interface -c <(wpa_passphrase ESSID passphrase)インターフェイスはwlp4s0、アクセスポイントはhogehogeとパスワードはhimitsuなら
$ wpa_supplicant -i wlp4s0 -c <(wpa_passphrase 'hogehoge' 'himitsu')情報に問題がなければ大量なメッセージが表示されてアクセスポイントに接続されます。
第2バーチャルコンソールをこのままにしてalt+F1でバーチャルコンソール1に戻って、pingコマンドで接続状態を確認しましょう。
$ ping nixos.org -c3pingは失敗なら、alt+F2でwifi接続バーチャルコンソールに戻ってからctrl+cでwpa_supplicantプロセスを終了してもう一度試すか有線を利用すれば良い。
wpa_supplicantのメッセージにWRONG_KEYが含まれている場合はパスワードが間違ってると意味します。
NixOSの設定ファイルを生成します。
$ nixos-generate-config --root /mntこのコマンドでファイルは2つ生成されます
/mnt/etc/nixos/hardware-configuration.nix/mnt/etc/nixos/configuration.nix
/mnt/etc/nixos/hardware-configuration.nixは変更が必要ないが、less等で確認するには損がない。
hardware-configuration.nixにはカーネルモジュールとファイルシステムが設定されています。
configuration.nixはメインの設定ファイルとなります。
今の段階でMBRの場合には必ず変更しないといけないです。
エディターはnanoしか入っていないので、vim派の人は
$ nix-env -iA nixos.vim
$ echo "set backspace=2" > ~/.vimrcemacs派の人は
$ nix-env -iA nixos.emacsのコマンドで好きなエディターを利用できます。(ネットワーク必要)
vimもemacsもわからない場合はnanoが簡単でおすすめです。
configuration.nixを編集しましょう。
configurationはNixOSのメインの設定ファイルであって、変更する事でシステムのいろいろをカスタマイズできます。
Nix言語で書かれていて、オプションがいろいろあります。
公式サイトでオプションを検索できます。オプションページ。
またコマンドラインでも探せます。
$ nixos-option networking.hostName
Value:
"nixos"
Default:
"nixos"
Description:
The name of the machine. Leave it empty if you want to obtain
it from a DHCP server (if using DHCP).
Declared by:
"/nix/store/0q3jj4lqvvl4b330jfnwh56jjcm823m3-nixos-16.03pre75064.faae09f/nixos/nixpkgs/nixos/modules/tasks/network-interfaces.nix"
Defined by:
"/nix/store/0q3jj4lqvvl4b330jfnwh56jjcm823m3-nixos-16.03pre75064.faae09f/nixos/nixpkgs/nixos/modules/tasks/network-interfaces.nix"この時点で必要が必要なのはブートローダーです。 MBRとGPTそれぞれに設定が異なりますので、利用したパーティションシステムに合わせて設定をしましょう。
次のステップは利用するパーティションシステムによって異なります
必須 MBRの場合の設定はboot.loader.grub.device、デフォルトではコメントアウトされていますのでコメントアウトを外しましょう。
/dev/sdaはパーティションをセットアップしたディスクを指定する、/dev/sdaディスク以外にパーティションを作った場合は設定の変更が必要です。(この設定は有効でないとgrubはインストールされず、ブートはできません)
boot.loader.grub.device = "/dev/sda";GPTの場合はgrubが利用できないが、代わりにgummibootがデフォルトで設定されているはず。
設定が正しくと記述されているを確認しましょう。
boot.loader.gummiboot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;ついでにホスト名も好きな名前に設定しましょう
networking.hostName = "nixos";Wifiを使う場合はnetworking.wireless.enableを有効にします
networking.wireless.enable = true;国際化も設定しましょう
i18n = {
consoleFont = "lat2-Terminus16";
consoleKeyMap = "jp106";
defaultLocale = "ja_JP.UTF-8";
};
time.timeZone = "Asia/Tokyo";X11やデスクトップ環境を設定する場合は下記のように設定すれば良いです
services = {
xserver = {
enable = true;
# X11で日本語キーボードレイアウト
layout = "jp";
displayManager.gdm.enable = true;
desktopManager.gnome3.enable = true;
};
}; services = {
xserver = {
enable = true;
# X11で日本語キーボードレイアウト
layout = "jp";
displayManager.kdm.enable = true;
desktopManager.kde4.enable = true;
};
}; services = {
xserver = {
enable = true;
# X11で日本語キーボードレイアウト
layout = "jp";
desktopManager.xterm.enable = false;
desktopManager.xfce.enable = true;
};
}; services = {
xserver = {
enable = true;
# X11で日本語キーボードレイアウト
layout = "jp";
desktopManager.xterm.enable = false;
desktopManager.e19.enable = true;
};
}; services = {
xserver = {
enable = true;
# X11で日本語キーボード
layout = "jp";
desktopManager.xterm.enable = false;
windowManager.i3.enable = true;
};
}; services = {
xserver = {
enable = true;
# X11で日本語キーボード
layout = "jp";
desktopManager.xterm.enable = false;
windowManager.awesome.enable = true;
};
}; services = {
xserver = {
enable = true;
# X11で日本語キーボード
layout = "jp";
windowManager.xmonad.enable = true;
windowManager.xmonad.enableContribAndExtras = true;
windowManager.default = "xmonad";
desktopManager.default = "none";
desktopManager.xterm.enable = false;
};
};デフォルトのディスプレイマネージャーはSLiMとなります。
使えなくはないですが、多少古いので他のディスプレイマネージャーを利用したいかたもいます
LightDMの場合
services.xserver.displayManager.lightdm.enable = true;SDDMの場合
services.xserver.displayManager.sddm.enable = true;ユーザ作成もconfiguration.nixでできます。
users.extraUsersの後に来るのはユーザ名となります。
# fooを好きなユーザ名に変更
users.extraUsers.foo = {
isNormalUser = true;
# homeディレクトリを作る
createHome = true;
uid = 1000;
};ようやくインストールできます
$ nixos-install最後に新しいシステムのrootパスワード頼まれます。
うまく設定できなかった場合はもう一度nixos-installを実行しましょう。
終わったら、マシンをパワーオフします。
$ poweroff
パワーオフ語はインストールCDやUSBを外してから起動しましょう。
再起動しましたら、設定したX11環境のログインもしくはプロンプトのログインが出ます。
configuration.nixでユーザを作り、X11環境を利用場合は、そのユーザのパスワードが設定されていないので、ctrl+alt+F2で別なバーチャルコンソールでrootとしてログインし、passwdコマンドでパスワードを設定しましょう。
ユーザ名がfooであれば:
$ passwd foo
でexitコマンドでログアウトします。
$ exit
ctrl+alt+F7でX11のバーチャルコンソールに戻り、configuration.nixで設定したユーザでログインできます!
これでセットアップが完了しました。