ページ「「OPEN IPv6 ダイナミック DNS for フレッツ・光ネクスト」の利用/Debian9.9 or Raspbian Stretch」と「ArchLinuxのインストール」の間の差分

提供: とある社畜の頭脳整理
(ページ間の差分)
ナビゲーションに移動 検索に移動
タグ: モバイルウェブ編集モバイル編集
 
タグ: モバイルウェブ編集モバイル編集
 
1行目: 1行目:
「外部からSSH接続したい」でも「IPアドレスが半固定」しかも「IPv6プラス」ってなると、なかなかIPv6に対応したDDNS(ダイナミックドメインネームサーバー)が見つからないです。<br/>今のところメジャーなのが「[https://i.open.ad.jp/ OPEN IPv6 ダイナミック DNS for フレッツ・光ネクスト]」みたいなので、これを利用して外部から接続できるようにしてみたいと思います。
+
= イメージのダウンロード =
 +
先ずは「[https://www.archlinux.jp/ Arch Linux JP Project]」をブラウザで開きます。<br/>
 +
以下の画面が表示されるので、右上の「ダウンロード」をクリックします。<br/>
 +
[[ファイル:archlinux-install-001.png | 400px]]
  
== 現在のIPv6アドレスの確認 ==
 
外部に公開したいサーバーのIPv6アドレスを調べます。<br/>googleで調べると「ifconfigで調べる」というのがたくさんヒットしますが、Debian9.9では「ifconfig」が非推奨になってしまったので、代わりに「ip」で調べます。(Raspbianは「ifconfig」で調べられます)
 
<syntaxhighlight lang="bash">ip a</syntaxhighlight>
 
で、以下のような結果が得られるかと思います。
 
<syntaxhighlight lang="bash">1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
 
    inet 127.0.0.1/8 scope host lo
 
      valid_lft forever preferred_lft forever
 
    inet6 ::1/128 scope host
 
      valid_lft forever preferred_lft forever
 
2: enxAABBCCDDEEFF: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
 
    link/ether AA:BB:CC:DD:EE:FF brd ff:ff:ff:ff:ff:ff
 
    inet 192.168.1.2/24 brd 192.168.1.255 scope global enxAABBCCDDEEFF
 
      valid_lft forever preferred_lft forever
 
    inet6 HHHH:IIII:JJJJ:KKKK:LLLL:MMMM:NNNN:OOOO/64 scope global noprefixroute dynamic
 
      valid_lft 86398sec preferred_lft 14398sec
 
    inet6 PPPP:QQQQ:RRRR:SSSS:TTTT:UUUU/64 scope link
 
      valid_lft forever preferred_lft forever
 
</syntaxhighlight>
 
「inet6」の「scope global」となっている「HHHH:IIII:JJJJ:KKKK:LLLL:MMMM:NNNN:OOOO」がグローバルIPv6アドレスとなります。<br/>
 
(セキュリティ的には危険ですが、試しにルーターの設定を「パススルーを許可する」にして、このアドレスにSSH接続してみると接続できるかと思います。もちろんアドレスが変わってしまえば接続できなくなりますが…)
 
  
== 「OPEN IPv6 ダイナミック DNS for フレッツ・光ネクスト」に登録 ==
+
「HTTP で直接ダウンロード (推奨)」の日本のサーバーから適当なサーバーをクリックします。<br/>
次に「OPEN IPv6 ダイナミック DNS for フレッツ・光ネクスト」に登録していきます。<br/>まずは「[https://i.open.ad.jp/ OPEN IPv6 ダイナミック DNS for フレッツ・光ネクスト]」にアクセスします。<br/>すると、画面下部に以下のような項目があるかと思いますので、入力していきます。<br/>[[ファイル:Ddns-setting-001.png | 400px]]
+
[[ファイル:archlinux-install-002.png | 400px]]
 +
 
 +
 
 +
ディレクトリの内容が表示されたら「*.iso」ファイルをクリックして、ダウンロードします。<br/>
 +
[[ファイル:archlinux-install-003.png | 400px]]
 +
 
 +
= USBの作成 =
 +
今回はインストールメディアにUSBメモリを使用しました。
 +
# ISOファイルをUSBに展開する<br/>適切な表現かどうかはおいといて…ISOファイルをUSBに展開する。<br/>私の場合、WindowsPCでツールを使用した。ツールは「Rufus」を使用しました。<br/>(手元にツールが無いので説明は割愛します…ググってください…すみません…)<br/><br/>
 +
# Lattepandaに差し込む<br/>USBポートが3つあるのはありがたい(他2つにはキーボードとマウスをつなぐ)
 +
 
 +
= UEFIの設定確認 =
 +
インストールを開始する前に、UEFIの設定を確認します。<br/>
 +
Latttepamda起動時に「Deleteキー」を連打して、UEFIのメニューに入ります。<br/>
 +
 
 +
== セキュアブートの無効化 ==
 +
セキュアブートはLinuxの世界ではまだ一般的では無いと思うので、セキュアブートを使用しない方向でインストールしていきます。<br/>
 +
UEFIメニューで「Security」を選択します。<br/>
 +
[[ファイル:archlinux-install-101.png | 400px]]
 +
 
 +
 
 +
「Security」画面で「Secure Boot Menu」を選択します。<br/>
 +
[[ファイル:archlinux-install-102.png | 400px]]
 +
 
 +
 
 +
「Secure Boot Menu」画面で「Secure Boot」が「Disabled」になっていることを確認します。<br/>
 +
「Disabled」になっていない場合は、「Disabled」に変更します<br/>
 +
(画面見づらくてスミマセン…)<br/>
 +
[[ファイル:archlinux-install-103.png | 400px]]
 +
 
 +
 
 +
== ファーストブートの無効化とブートデバイスの順番 ==
 +
ファーストブートとブートデバイスの設定を確認します。<br/>
 +
画面上部のメニューから「Boot」を選択します。<br/>
 +
「Boot」画面中程の「Fast Boot」が「Disabled」になっていることを確認します。<br/>
 +
「Disabled」になっていない場合は、「Disabled」に変更します<br/>
 +
 
 +
次に「起動順」の確認です。<br/>
 +
「Boot」画面下部の「Boot Option Priorities」の順番で、「Boot Option #1」にUSBメモリーが来るように設定します。<br/>
 +
(画面はUSBを刺さずに取ったので、USBメモリが表示されていません…スミマセン)<br/>
 +
[[ファイル:archlinux-install-104.png | 400px]]
 +
 
 +
 
 +
== 保存して起動 ==
 +
最後に「F4」キーを押して、保存してメニューを終了させます。
 +
 
 +
 
 +
= USBから起動 =
 +
UEFIのメニューを終了すると、起動が始まります。<br/>
 +
起動すると、以下の画面が表示されます。<br/>
 +
この画面で「Arch Linux archiso x86_64 UEFI USB」を選択します。<br/>
 +
[[ファイル:archlinux-install-004.png | 400px]]
 +
 
 +
しばらく真っ黒な画面が続きますが、根気よく待ち続けます…。<br/>
 +
しばらくすると、以下の画面が表示されます。<br/>
 +
[[ファイル:archlinux-install-005.png | 400px]]
 +
 
 +
この状態はいわゆる「ライブ起動(インストール無しで起動)」の状態です。<br/>
 +
この状態から、インストールしていきます。
 +
 
 +
= インストール =
 +
== キーボード設定 ==
 +
今の状態は「英字キーボード」になっています。<br/>
 +
英字キーボードを使用している人はそのままでも良いですが、日本語キーボードを使用してい人は記号の入力で手間取るので、日本語キーボードに切り替えます。<br/>
 +
以下のコマンドで選択できるキーボードの一覧を表示することが出来ます…(一覧見たからなんなんだって感じですが…)。
 +
<syntaxhighlight lang="bash">ls /usr/share/kbd/keymaps/**/*.map.gz</syntaxhighlight>
 +
 
 +
キーボードのロードは以下のコマンドを実行します。
 +
<syntaxhighlight lang="bash">loadkeys jp106</syntaxhighlight>
 +
 
 +
== UEFIかどうか確認 ==
 +
LattapnadaはネイティブUEFIなのでこの作業は不要です…。
 +
<syntaxhighlight lang="bash">ls /sys/firmware/efi/efivars</syntaxhighlight>
 +
このコマンドでnot foundにならなければ「UEFI」で起動されています。
 +
 
 +
== パーティション作成 ==
 +
以下の手順はまっさらなHDDにインストールする手順になっちゃってます。<br/>
 +
パーティションが作成済みの場合は、パーティションを削除してから作業してください。<br/>
 +
 
 +
まず、以下のコマンドでデバイス名を確認します。<br/>
 +
<syntaxhighlight lang="bash">fdisk -l</syntaxhighlight>
 +
 
 +
 
 +
こんな感じで、表示されます。(ちょっと表示が違うかもです…)
 +
<syntaxhighlight lang="bash">ディスク /dev/mmcblk0: 64 GiB, 68719476736 バイト, 134217728 セクタ
 +
ディスク型式: HARDDISK       
 +
単位: セクタ (1 * 512 = 512 バイト)
 +
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
 +
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト</syntaxhighlight>
 +
大概「/dev/mmcblk0」になっているかと思います。<br/>
 +
 
 +
 
 +
以下のコマンドで「/dev/mmcblk0」にパーティションを作成していきます。<br/>
 +
<syntaxhighlight lang="bash">fdisk /dev/mmcblk0</syntaxhighlight>
 +
 
 +
 
 +
「fdisk」コマンドは対話型で起動します。<br/>
 +
操作の一覧は「m」で見ることが出来ます。<br/>
 +
<syntaxhighlight lang="bash">Command (m for help): m
 +
 
 +
Help:
 +
 
 +
  DOS (MBR)
 +
  a  toggle a bootable flag
 +
  b  edit nested BSD disklabel
 +
  c  toggle the dos compatibility flag
 +
 
 +
  Generic
 +
  d  delete a partition
 +
  F  list free unpartitioned space
 +
  l  list known partition types
 +
  n  add a new partition
 +
  p  print the partition table
 +
  t  change a partition type
 +
  v  verify the partition table
 +
  i  print information about a partition
 +
 
 +
  Misc
 +
  m  print this menu
 +
  u  change display/entry units
 +
  x  extra functionality (experts only)
 +
 
 +
  Script
 +
  I  load disk layout from sfdisk script file
 +
  O  dump disk layout to sfdisk script file
 +
 
 +
  Save & Exit
 +
  w  write table to disk and exit
 +
  q  quit without saving changes
 +
 
 +
  Create a new label
 +
  g  create a new empty GPT partition table
 +
  G  create a new empty SGI (IRIX) partition table
 +
  o  create a new empty DOS partition table
 +
  s  create a new empty Sun partition table</syntaxhighlight>
 +
 
 +
 
 +
 
 +
今後主流になる可能性が高いGPTでパーティションテーブルを作成します。<br/>
 +
GPTでパーティションテーブルを作成する場合は「g」を入力します。<br/>
 +
<syntaxhighlight lang="bash">Command (m for help): g
 +
 
 +
Created a new GPT disklabel (GUID: 2FA51CB3-DEF4-6645-9B9B-26EA9C143903).</syntaxhighlight>
 +
 
 +
 
 +
次にパーティションを作成していきます。<br/>
 +
Windowsの場合はこだわりが無い限り、パーティション分割はしないものですが…<br/>
 +
Linuxでは普通にパーティション分割します。<br/>
 +
 
 +
以下のパーティション分割は、初心者向けになっています。<br/>
 +
こだわりがある方は、自由に分割して良いかと思います。<br/>
 +
 
 +
今回は以下のパーティション作成します。
 +
<dl>
 +
<dt>/dev/mmcblk0p1</dt>
 +
<dd>EFI用パーティション(512MByte)</dd>
 +
<dt>/dev/mmcblk0p2</dt>
 +
<dd>システム用パーティション(64GByte - 512MByte - 4GByte)</dd>
 +
<dt>/dev/mmcblk0p3</dt>
 +
<dd>スワップ用パーティション(4GByte)</dd>
 +
</dl>
 +
 
 +
まず、UEFI用のパーティションを512MByteで作成します。<br/>
 +
パーティションの作成は「n」で行います。
 +
<syntaxhighlight lang="bash">Command (m for help): n
 +
Partition number (1-128, default 1):
 +
First sector (2048-134217694, default 2048):
 +
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-134217694, default 134217694): +512M
 +
 
 +
Created a new partition 2 of type 'Linux filesystem' and of size 512 MiB.</syntaxhighlight>
 +
 
 +
次に、システム用パーティションを「残りの容量 - 4GByte」で作成します。
 +
<syntaxhighlight lang="bash">Command (m for help): n
 +
Partition number (1,3-128, default 2):
 +
First sector (1050624-134217694, default 1050624):
 +
Last sector, +/-sectors or +/-size{K,M,G,T,P} (1050624-134217694, default 134217694): -4G
 +
 
 +
Created a new partition 1 of type 'Linux filesystem' and of size 59.5 GiB.</syntaxhighlight>
 +
 
 +
最後に、スワップ用パーティションを4GByteで作成します。
 +
<syntaxhighlight lang="bash">Command (m for help): n
 +
Partition number (3-128, default 3):
 +
First sector (125829120-134217694, default 125829120):
 +
Last sector, +/-sectors or +/-size{K,M,G,T,P} (125829120-134217694, default 134217694):
 +
 
 +
Created a new partition 3 of type 'Linux filesystem' and of size 4 GiB.</syntaxhighlight>
 +
 
 +
それぞれの目的に合わせてパーティションタイプを設定します。<br/>
 +
設定できるパーティションタイプは「l」で確認することが出来ます。<br/>
 +
リストから抜ける場合は「q」を押します。<br/>
 +
 
 +
 
 +
「/dev/mmcblk0p1」はUEFI用パーティションなので、「EFI System」を設定します。<br/>
 +
パーティションタイプの設定は「t」で行います。
 +
<syntaxhighlight lang="bash">Command (m for help): t
 +
Partition number (1-3, default 3): 1
 +
Partition type (type L to list all types): 1
 +
 
 +
Changed type of partition 'Linux filesystem' to 'EFI System'.</syntaxhighlight>
 +
 
 +
「/dev/mmcblk0p3」はスワップ用パーティションなので、「Linux swap」を設定します。
 +
<syntaxhighlight lang="bash">Command (m for help): t
 +
Partition number (1-3, default 3): 3
 +
Partition type (type L to list all types): 19
 +
 
 +
Changed type of partition 'Linux filesystem' to 'Linux swap'.</syntaxhighlight>
 +
 
 +
「/dev/mmcblk0p2」を設定していませんが、デフォルトで「Linux File System」なので特に変更しません。
 +
 
 +
最後に、これまで設定した内容をHDDに書き込みます。<br/>
 +
HDDへの書き込みは「w」で行います。
 +
<syntaxhighlight lang="bash">Command (m for help): w
 +
The partition table has been altered.
 +
Calling ioctl() to re-read partition table.
 +
Syncing disks.</syntaxhighlight>
 +
 
 +
== フォーマット ==
 +
各パーティションを利用できるようにするために、フォーマットしていきます。<br/>
 +
使用目的によって、フォーマットのやり方が異なります。
 +
 
 +
UEFI領域のフォーマットは、以下のコマンドで、FAT32にフォーマットします。
 +
<syntaxhighlight lang="bash">mkfs.fat -F32 /dev/mmcblk0p1</syntaxhighlight>
 +
 
 +
システム領域は以下のコマンドで、ext4にフォーマットします。
 +
<syntaxhighlight lang="bash">mkfs.ext4 /dev/mmcblk0p2</syntaxhighlight>
 +
 
 +
スワップ領域は以下のコマンドで、swap領域に設定します。
 +
<syntaxhighlight lang="bash">mkswap /dev/mmcblk0p3
 +
swapon /dev/mmcblk0p3</syntaxhighlight>
 +
 
 +
== マウント ==
 +
フォーマットが終わったら、HDDをマウントします。<br/>
 +
ここはAcrhLinuxのインストールガイドに則り、以下のコマンドで「/mnt」にマウントします。
 +
<syntaxhighlight lang="bash">mount /dev/mmcblk0p2 /mnt</syntaxhighlight>
 +
 
 +
UEFI領域は「/mnt/boot」にマウントします。
 +
<syntaxhighlight lang="bash">mkdir /mnt/boot
 +
mount /dev/mmcblk0p1 /mnt/boot</syntaxhighlight>
 +
 
 +
== システムクロックの設定 ==
 +
よくわからないのですが…www<br/>
 +
システムクロックの設定をします。<br/>
 +
(ntpを使用するように設定しているのかな?)
 +
<syntaxhighlight lang="bash">timedatectl set-ntp true</syntaxhighlight>
 +
 
 +
 
 +
== ミラーサイトの設定 ==
 +
「/etc/pacman.d/mirrorlist」を編集して、ミラーサイトを設定します。<br/>
 +
どうやらデフォルトで「nano」が入っているようなので、nanoで編集します<br/>
 +
<syntaxhighlight lang="bash">nano /etc/pacman.d/mirrorlist</syntaxhighlight>
 +
 
 +
すごい量が表示されるかと思います。<br/>
 +
日本のミラーサイトは3つ登録されていますので、それを最上位(ファイルの先頭)に移動します。<br/>
 +
 
 +
 
 +
== プロキシが必要なら設定 ==
 +
プロキシ配下でインストールしている場合は、ここでプロキシの設定をしておきます。<br/>
 +
以下のコマンドで、プロキシの環境変数を設定します。<br/>
 +
<syntaxhighlight lang="bash">export HTTP_PROXY=[userid]:[password]@[host]:[port]
 +
export HTTPS_PROXY=[userid]:[password]@[host]:[port]
 +
export http_proxy=[userid]:[password]@[host]:[port]
 +
export https_proxy=[userid]:[password]@[host]:[port]</syntaxhighlight>
 +
[userid][password][host][port]はそれぞれ、実際の値に置き換えてください。<br/>
 +
パスワードやユーザーIDに「@」が含まれる場合は「%40」に置き換えます。<br/>
 +
(その他記号も置き換える必要があります。詳しくはググってください)
 +
 
 +
== ベースシステムのインストール ==
 +
ようやくインストールです。<br/>
 +
以下のコマンドを実行して、HDDにArchLinuxをインストールしてください。
 +
<syntaxhighlight lang="bash">pacstrap /mnt base base-devel</syntaxhighlight>
 +
 
 +
= システム設定 =
 +
== fstabの作成 ==
 +
以下のコマンドを実行して、システム起動時のパーティションマウントを設定します。
 +
<syntaxhighlight lang="bash">genfstab -U /mnt >> /mnt/etc/fstab</syntaxhighlight>
 +
この作業で、再起動後「/dev/mmcblk0p2」がルートディレクトリになります。
 +
 
 +
== 一時的にルートディレクトリを変更 ==
 +
この後の設定のために、ルートディレクトリを変更します。
 +
<syntaxhighlight lang="bash">arch-chroot /mnt</syntaxhighlight>
 +
 
 +
== タイムゾーンの設定 ==
 +
以下のコマンドを実行して、タイムゾーンを設定します。
 +
<syntaxhighlight lang="bash">ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
 +
hwclock --systohc --utc</syntaxhighlight>
 +
 
 +
== ロケールの設定 ==
 +
「/etc/locale.gen」を編集して、利用するロケールを選択します。<br/>
 +
「nano」で「/etc/locale.gen」を開いて、「en_US.UTF-8 UTF-8」と「ja_JP.UTF-8 UTF-8」をコメントアウトします。
 +
<syntaxhighlight lang="bash">nano /etc/locale.gen</syntaxhighlight>
  
* ホスト名:任意のホスト名を入力します
+
編集後、以下のコマンドを実行して、ロケール等を反映します。
* 初期IPv6アドレス(オプション):前段で取得したIPv6アドレスを入力します
+
<syntaxhighlight lang="bash">locale-gen
* メールアドレス:ホストキー(後述します)紛失時に使用します。(登録しておいたほうが安全です)
+
echo LANG=en_US.UTF-8 > /etc/locale.conf
 +
echo KEYMAP=jp106 > /etc/vconsole.conf</syntaxhighlight>
  
入力し終わったら「作成」ボタンをクリックします。<br/>「新しい DDNS ホスト 「example.i.open.ad.jp」 の作成が完了しました。」と表示されればOKです。<br/>「OK」ボタンをクリックします。
+
== ホストネームの設定 ==
 +
以下のコマンドを実行して、ホストネームを設定します。
 +
<syntaxhighlight lang="bash">echo [hostname] > /etc/hostname</syntaxhighlight>
 +
[hostname]は実際に合わせて置き換えてください。
  
すると以下の様な一覧が表示されます。(横長ではみ出てますwww)<br/>
+
また、以下の様に「hosts」ファイルを編集します。
[[ファイル:Ddns-setting-002.png]]<br/>
+
<syntaxhighlight lang="bash">nano /etc/hosts</syntaxhighlight>
* ホスト名(FQDN):IPアドレスの代わりに使うホスト名になります
 
* IPv6アドレス:上の画像では「::1」と表示されてしまっていますが、実際は現在のIPv6アドレスが表示されます
 
* ホストキー情報:ホストキーと合わせて、更新用の「ホスト名」「アドレス」「URL」が表示されています
 
* 登録メールアドレス:登録時に入力したメールアドレスが表示されています
 
* クエリ回数~操作:省略
 
  
ちなみに、登録したWEBブラウザで「[https://i.open.ad.jp/ OPEN IPv6 ダイナミック DNS for フレッツ・光ネクスト]」を開くと登録したホスト一覧が表示されるのですが、別のWEBブラウザで開くとホスト一覧が表示されません…。<br/>そんなときは、「過去に作成した DDNS ホストをリストに追加」機能を利用して、表示させたい「ホストキー」を入力するとこで表示できるようになります。
+
内容は以下のとおりです。
 +
<syntaxhighlight lang="bash">127.0.0.1 localhost
 +
::1 localhost
 +
127.0.1.1 [hostname].localdomain [hostname]</syntaxhighlight>
  
また、その下の更新用「ホスト名」「アドレス」「URL」ですが、公開したいサーバーのIPv6アドレスが変わってしまったときに、公開したいサーバーから「ホスト名」「アドレス」にpingや「URL」にアクセスするとIPv6アドレスが最新の情報に更新されます。<br/>(ルーターからやっちゃダメですよ…ルーターのIPv6アドレスに書き換わっちゃうので…私はしばらくルーターからやってましたwww)
 
  
登録は以上です。
+
== rootパスワードの変更 ==
 +
rootアカウントのパスワードを変更します。
 +
<syntaxhighlight lang="bash">passwd</syntaxhighlight>
  
== systemdでIPv6の更新をする ==
 
systemdを使用して、一定間隔で「アドレス」にpingをするようにしてみます。<br/>先ずは、公開したいサーバーにログインして、以下のコマンドを実行します。
 
<syntaxhighlight lang="bash">sudo nano /etc/systemd/system/ddns-update.service</syntaxhighlight>
 
新しくファイルを作成しているので、中身はなにもないはずです。<br/>ちなみに「/etc/systemd/system」ディレクトリは「systemd」で動かすサービスファイル置き場みたいです。<br/>つまり今回は「ddns-update」サービスを作成していきます。
 
  
次にファイルの中身ですが、以下の様にします。
+
== マイクロコードのインストール ==
<syntaxhighlight lang="bash">[Unit]
+
LattepandはIntelのCPUを使用しているので、以下のコマンドを実行してマイクロコードをインストールします。<br/>
Description=ddns ipv6 update
+
適用は後でします。
 +
<syntaxhighlight lang="bash">pacman -S intel-ucode</syntaxhighlight>
  
[Service]
+
== GRUBのインストール ==
Type=simple
+
以下のコマンドを実行して、GRUBブートローダーとEFIブートマネージャーをインストールします。
ExecStart=/bin/ping6 -c 1 [更新用IPv6アドレス]</syntaxhighlight>
+
<syntaxhighlight lang="bash">pacman -S grub
[更新用IPv6アドレス]は先程の一覧の「更新用アドレス」に置き換えてください。<br/>上記の一覧の例を反映すると…
+
pacman -S efibootmgr</syntaxhighlight>
<syntaxhighlight lang="bash">[Unit]
 
Description=ddns ipv6 update
 
  
[Service]
+
また、以下のコマンドでArchLinuxをGRUBに登録します。
Type=simple
+
<syntaxhighlight lang="bash">grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=ArchLinux</syntaxhighlight>
ExecStart=/bin/ping6 -c 1 2409:11:c0e0:468:6b16:a7eb:503e:c23b</syntaxhighlight>
 
となります。
 
  
ちなみに「ping6」はIPv6用のpingコマンド、「-c 1」は1回実行という意味です。<br/>「Description」は好きな内容に変更しても大丈夫です。
+
== マイクロコードの適用 ==
 +
以下のコマンドを実行して、GRUBにマイクロコードを適用するように設定します。
 +
<syntaxhighlight lang="bash">grub-mkconfig -o /boot/grub/grub.cfg</syntaxhighlight>
  
次にこれを一定間隔で起動するタイマーを作成します。<br/>以下のコマンドを入力してください。
 
<syntaxhighlight lang="bash">sudo nano /etc/systemd/system/ddns-update.timer</syntaxhighlight>
 
これも新規作成です。<br/>
 
内容は以下の様にします。
 
<syntaxhighlight lang="bash">[Unit]
 
Description=ddns ipv6 update timer
 
  
[Timer]
+
== chrootから抜ける ==
OnCalendar=*-*-* *:00:00
+
chroot内の作業が終わりましたので、以下のコマンドで抜けます。
 +
<syntaxhighlight lang="bash">exit</syntaxhighlight>
  
[Install]
+
== efiファイルのコピー ==
WantedBy=timers.target</syntaxhighlight>
+
今の状態で再起動すると、UEFIのシェルからファイルを選択する羽目になります。<br/>
内容的には「ddns-update.serviceを毎時0分0秒に起動する」と言って感じです。<br/>「ddns-update.service」ファイルと同様に「Description」は好きな内容に変更しても大丈夫です。
+
自動でGRUBが起動するように、以下のコマンドを実行してefiファイルをコピーします。
 +
<syntaxhighlight lang="bash">mkdir /mnt/boot/EFI/boot
 +
cp /mnt/boot/EFI/ArchLinux/grubx64.efi /mnt/boot/EFI/boot/bootx64,efi</syntaxhighlight>
  
準備ができたので、動かしてみます。<br/>動かすときは以下のコマンドを実行します。
+
== アンマウント ==
<syntaxhighlight lang="bash">sudo systemctl start ddns-update.timer</syntaxhighlight>
+
「fstab」に設定済みなので、再起動後は「/mnt」のマウントが不要になります。<br/>
エラーが出なければOKです。<br/>エラーが出たときは内容を確認してください。<br/>内容が合っているのにエラーになるときは…「nano」上で改行をし直してみてください。<br/>(私は改行コードの違いでエラーが出ていることに気づくまで、結構時間がかかってしまいました)
+
なので、「/mnt」を、以下のコマンドでアンマウントします。<br/>
 +
(と言っても、再起動した時点でアンマウントされるのですが…)
 +
<syntaxhighlight lang="bash">umount -R /mnt</syntaxhighlight>
  
正常に動いたなら、今度は起動時に動くようにします。<br/>以下のコマンドで起動時に動くようになります。
+
== 再起動 ==
<syntaxhighlight lang="bash">sudo systemctl enable ddns-update.timer</syntaxhighlight>
+
USBメモリを外したいので、再起動と言いつつ以下のコマンドでシャットダウンします。
 +
<syntaxhighlight lang="bash">shutdown -h now</syntaxhighlight>
  
ちなみに、止めたいときは…
+
== USBメモリの取り外しと起動 ==
<syntaxhighlight lang="bash">sudo systemctl stop ddns-update.timer</syntaxhighlight>
+
シャットダウンしたら、USBの取り外します。<br/>
 +
電源ボタンを押して、Lattepandaを起動します。
  
起動時に動かないようにするには…
+
== ログイン ==
<syntaxhighlight lang="bash">sudo systemctl disable ddns-update.timer</syntaxhighlight>
+
ログイン画面が表示されたらログインします。<br/>
 +
ユーザーIDは「root」で、パスワードはインストールで設定したパスワードです。
  
です。
+
== ネットワークの有効化 ==
 +
デフォルトではネットワークが自動で起動しないようになっています。<br/>
 +
ネットワークを自動で有効になるように設定します。<br/>
  
 +
先ずは以下のコマンドを実行してNICのデバイス名を取得します。
 +
<syntaxhighlight lang="bash">ip a</syntaxhighlight>
  
ここで少し疑問に思う人がいるかも知れません…<br/>「ddns-update.service」と「ddns-update.timer」と実行コマンドの「sudo systemctl start ddns-update」の3つを関連付ける設定をしていません。<br/>実は単純な話で、ファイル名だけで関連付いています。<br/>「ddns-update.service」と「ddns-update.timer」は「ddns-update」が同じになっています。<br/>これで「*.service」ファイルと「*.timer」ファイルはセットだと認識しています。<br/>また実行コマンドは「ddns-update.timer」と指定するだけで「*.service」ファイルを探しに行きます。
+
こんなふうに表示されるかと思います。
 +
<syntaxhighlight lang="bash">1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
 +
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
 +
    inet 127.0.0.1/8 scope host lo
 +
      valid_lft forever preferred_lft forever
 +
    inet6 ::1/128 scope host
 +
      valid_lft forever preferred_lft forever
 +
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
 +
    link/ether 08:00:00:00:00:00brd ff:ff:ff:ff:ff:ff
 +
    inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic noprefixroute enp0s3
 +
      valid_lft 82004sec preferred_lft 82004sec
 +
    inet6 fe80:0000:0000:0000:0000:0000/64 scope link noprefixroute
 +
      valid_lft forever preferred_lft forever</syntaxhighlight>
 +
「lo」じゃないほうがデバイス名です(この場合「enp0s3」です)。
  
== ルーターの設定 ==
+
NICのデバイス名を取得したら、以下のコマンドを実行します。
「[[PiVPNによるOpenVPNのインストール#ルーターの設定]]」に書いているので、そちらを参照してください。<br/>
+
<syntaxhighlight lang="bash">systemctl enable dhcpcd@[interface].service</syntaxhighlight>
sshのデフォルトポートを開放したいなら22番ポートを開放してください(22番ポートを開放するのは危険だと思いますが…)
+
[interface]をNICのデバイス名に置き換えてください。
  
 
= 参考サイト =
 
= 参考サイト =
[https://i.open.ad.jp/ OPEN IPv6 ダイナミック DNS for フレッツ・光ネクスト]
+
[https://wiki.archlinux.jp/index.php/%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%82%AC%E3%82%A4%E3%83%89 インストールガイド - ArchWiki]<br/>
 +
[https://qiita.com/Gen_Arch/items/da296b7cbe5d87abc5a4 ArchLinuxのインストール(3つのブート方式ごとの設定) - Qiita]<br/>
 +
[https://wiki.archlinux.jp/index.php/%E3%83%91%E3%83%BC%E3%83%86%E3%82%A3%E3%82%B7%E3%83%A7%E3%83%8B%E3%83%B3%E3%82%B0 パーティショニング - ArchWiki]<br/>
 +
[https://qiita.com/honeniq/items/579b36588f3c1061edf5 Arch LinuxをVirtualBox上にインストール - Qiita]<br/>
 +
[https://mattintosh.hatenablog.com/entry/20180308/1520518082 VirtualBox の UEFI で Ubuntu が起動しない - mattintosh note]<br/>
  
[[Category:Debian]]
+
[[Category:ArchLinux]]
[[Category:Raspbian]]
+
[[Category:Lattepanda]]
[[Category:Raspberry Pi]]
 
[[Category:DDNS]]
 

2019年7月23日 (火) 14:56時点における版

イメージのダウンロード

先ずは「Arch Linux JP Project」をブラウザで開きます。
以下の画面が表示されるので、右上の「ダウンロード」をクリックします。
Archlinux-install-001.png


「HTTP で直接ダウンロード (推奨)」の日本のサーバーから適当なサーバーをクリックします。
Archlinux-install-002.png


ディレクトリの内容が表示されたら「*.iso」ファイルをクリックして、ダウンロードします。
Archlinux-install-003.png

USBの作成

今回はインストールメディアにUSBメモリを使用しました。

  1. ISOファイルをUSBに展開する
    適切な表現かどうかはおいといて…ISOファイルをUSBに展開する。
    私の場合、WindowsPCでツールを使用した。ツールは「Rufus」を使用しました。
    (手元にツールが無いので説明は割愛します…ググってください…すみません…)

  2. Lattepandaに差し込む
    USBポートが3つあるのはありがたい(他2つにはキーボードとマウスをつなぐ)

UEFIの設定確認

インストールを開始する前に、UEFIの設定を確認します。
Latttepamda起動時に「Deleteキー」を連打して、UEFIのメニューに入ります。

セキュアブートの無効化

セキュアブートはLinuxの世界ではまだ一般的では無いと思うので、セキュアブートを使用しない方向でインストールしていきます。
UEFIメニューで「Security」を選択します。
Archlinux-install-101.png


「Security」画面で「Secure Boot Menu」を選択します。
Archlinux-install-102.png


「Secure Boot Menu」画面で「Secure Boot」が「Disabled」になっていることを確認します。
「Disabled」になっていない場合は、「Disabled」に変更します
(画面見づらくてスミマセン…)
Archlinux-install-103.png


ファーストブートの無効化とブートデバイスの順番

ファーストブートとブートデバイスの設定を確認します。
画面上部のメニューから「Boot」を選択します。
「Boot」画面中程の「Fast Boot」が「Disabled」になっていることを確認します。
「Disabled」になっていない場合は、「Disabled」に変更します

次に「起動順」の確認です。
「Boot」画面下部の「Boot Option Priorities」の順番で、「Boot Option #1」にUSBメモリーが来るように設定します。
(画面はUSBを刺さずに取ったので、USBメモリが表示されていません…スミマセン)
Archlinux-install-104.png


保存して起動

最後に「F4」キーを押して、保存してメニューを終了させます。


USBから起動

UEFIのメニューを終了すると、起動が始まります。
起動すると、以下の画面が表示されます。
この画面で「Arch Linux archiso x86_64 UEFI USB」を選択します。
Archlinux-install-004.png

しばらく真っ黒な画面が続きますが、根気よく待ち続けます…。
しばらくすると、以下の画面が表示されます。
Archlinux-install-005.png

この状態はいわゆる「ライブ起動(インストール無しで起動)」の状態です。
この状態から、インストールしていきます。

インストール

キーボード設定

今の状態は「英字キーボード」になっています。
英字キーボードを使用している人はそのままでも良いですが、日本語キーボードを使用してい人は記号の入力で手間取るので、日本語キーボードに切り替えます。
以下のコマンドで選択できるキーボードの一覧を表示することが出来ます…(一覧見たからなんなんだって感じですが…)。

ls /usr/share/kbd/keymaps/**/*.map.gz

キーボードのロードは以下のコマンドを実行します。

loadkeys jp106

UEFIかどうか確認

LattapnadaはネイティブUEFIなのでこの作業は不要です…。

ls /sys/firmware/efi/efivars

このコマンドでnot foundにならなければ「UEFI」で起動されています。

パーティション作成

以下の手順はまっさらなHDDにインストールする手順になっちゃってます。
パーティションが作成済みの場合は、パーティションを削除してから作業してください。

まず、以下のコマンドでデバイス名を確認します。

fdisk -l


こんな感じで、表示されます。(ちょっと表示が違うかもです…)

ディスク /dev/mmcblk0: 64 GiB, 68719476736 バイト, 134217728 セクタ
ディスク型式: HARDDISK        
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト

大概「/dev/mmcblk0」になっているかと思います。


以下のコマンドで「/dev/mmcblk0」にパーティションを作成していきます。

fdisk /dev/mmcblk0


「fdisk」コマンドは対話型で起動します。
操作の一覧は「m」で見ることが出来ます。

Command (m for help): m

Help:

  DOS (MBR)
   a   toggle a bootable flag
   b   edit nested BSD disklabel
   c   toggle the dos compatibility flag

  Generic
   d   delete a partition
   F   list free unpartitioned space
   l   list known partition types
   n   add a new partition
   p   print the partition table
   t   change a partition type
   v   verify the partition table
   i   print information about a partition

  Misc
   m   print this menu
   u   change display/entry units
   x   extra functionality (experts only)

  Script
   I   load disk layout from sfdisk script file
   O   dump disk layout to sfdisk script file

  Save & Exit
   w   write table to disk and exit
   q   quit without saving changes

  Create a new label
   g   create a new empty GPT partition table
   G   create a new empty SGI (IRIX) partition table
   o   create a new empty DOS partition table
   s   create a new empty Sun partition table


今後主流になる可能性が高いGPTでパーティションテーブルを作成します。
GPTでパーティションテーブルを作成する場合は「g」を入力します。

Command (m for help): g

Created a new GPT disklabel (GUID: 2FA51CB3-DEF4-6645-9B9B-26EA9C143903).


次にパーティションを作成していきます。
Windowsの場合はこだわりが無い限り、パーティション分割はしないものですが…
Linuxでは普通にパーティション分割します。

以下のパーティション分割は、初心者向けになっています。
こだわりがある方は、自由に分割して良いかと思います。

今回は以下のパーティション作成します。

/dev/mmcblk0p1
EFI用パーティション(512MByte)
/dev/mmcblk0p2
システム用パーティション(64GByte - 512MByte - 4GByte)
/dev/mmcblk0p3
スワップ用パーティション(4GByte)

まず、UEFI用のパーティションを512MByteで作成します。
パーティションの作成は「n」で行います。

Command (m for help): n
Partition number (1-128, default 1):
First sector (2048-134217694, default 2048): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-134217694, default 134217694): +512M

Created a new partition 2 of type 'Linux filesystem' and of size 512 MiB.

次に、システム用パーティションを「残りの容量 - 4GByte」で作成します。

Command (m for help): n
Partition number (1,3-128, default 2): 
First sector (1050624-134217694, default 1050624): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (1050624-134217694, default 134217694): -4G

Created a new partition 1 of type 'Linux filesystem' and of size 59.5 GiB.

最後に、スワップ用パーティションを4GByteで作成します。

Command (m for help): n
Partition number (3-128, default 3): 
First sector (125829120-134217694, default 125829120): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (125829120-134217694, default 134217694): 

Created a new partition 3 of type 'Linux filesystem' and of size 4 GiB.

それぞれの目的に合わせてパーティションタイプを設定します。
設定できるパーティションタイプは「l」で確認することが出来ます。
リストから抜ける場合は「q」を押します。


「/dev/mmcblk0p1」はUEFI用パーティションなので、「EFI System」を設定します。
パーティションタイプの設定は「t」で行います。

Command (m for help): t
Partition number (1-3, default 3): 1
Partition type (type L to list all types): 1

Changed type of partition 'Linux filesystem' to 'EFI System'.

「/dev/mmcblk0p3」はスワップ用パーティションなので、「Linux swap」を設定します。

Command (m for help): t
Partition number (1-3, default 3): 3
Partition type (type L to list all types): 19

Changed type of partition 'Linux filesystem' to 'Linux swap'.

「/dev/mmcblk0p2」を設定していませんが、デフォルトで「Linux File System」なので特に変更しません。

最後に、これまで設定した内容をHDDに書き込みます。
HDDへの書き込みは「w」で行います。

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

フォーマット

各パーティションを利用できるようにするために、フォーマットしていきます。
使用目的によって、フォーマットのやり方が異なります。

UEFI領域のフォーマットは、以下のコマンドで、FAT32にフォーマットします。

mkfs.fat -F32 /dev/mmcblk0p1

システム領域は以下のコマンドで、ext4にフォーマットします。

mkfs.ext4 /dev/mmcblk0p2

スワップ領域は以下のコマンドで、swap領域に設定します。

mkswap /dev/mmcblk0p3
swapon /dev/mmcblk0p3

マウント

フォーマットが終わったら、HDDをマウントします。
ここはAcrhLinuxのインストールガイドに則り、以下のコマンドで「/mnt」にマウントします。

mount /dev/mmcblk0p2 /mnt

UEFI領域は「/mnt/boot」にマウントします。

mkdir /mnt/boot
mount /dev/mmcblk0p1 /mnt/boot

システムクロックの設定

よくわからないのですが…www
システムクロックの設定をします。
(ntpを使用するように設定しているのかな?)

timedatectl set-ntp true


ミラーサイトの設定

「/etc/pacman.d/mirrorlist」を編集して、ミラーサイトを設定します。
どうやらデフォルトで「nano」が入っているようなので、nanoで編集します

nano /etc/pacman.d/mirrorlist

すごい量が表示されるかと思います。
日本のミラーサイトは3つ登録されていますので、それを最上位(ファイルの先頭)に移動します。


プロキシが必要なら設定

プロキシ配下でインストールしている場合は、ここでプロキシの設定をしておきます。
以下のコマンドで、プロキシの環境変数を設定します。

export HTTP_PROXY=[userid]:[password]@[host]:[port]
export HTTPS_PROXY=[userid]:[password]@[host]:[port]
export http_proxy=[userid]:[password]@[host]:[port]
export https_proxy=[userid]:[password]@[host]:[port]

[userid][password][host][port]はそれぞれ、実際の値に置き換えてください。
パスワードやユーザーIDに「@」が含まれる場合は「%40」に置き換えます。
(その他記号も置き換える必要があります。詳しくはググってください)

ベースシステムのインストール

ようやくインストールです。
以下のコマンドを実行して、HDDにArchLinuxをインストールしてください。

pacstrap /mnt base base-devel

システム設定

fstabの作成

以下のコマンドを実行して、システム起動時のパーティションマウントを設定します。

genfstab -U /mnt >> /mnt/etc/fstab

この作業で、再起動後「/dev/mmcblk0p2」がルートディレクトリになります。

一時的にルートディレクトリを変更

この後の設定のために、ルートディレクトリを変更します。

arch-chroot /mnt

タイムゾーンの設定

以下のコマンドを実行して、タイムゾーンを設定します。

ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
hwclock --systohc --utc

ロケールの設定

「/etc/locale.gen」を編集して、利用するロケールを選択します。
「nano」で「/etc/locale.gen」を開いて、「en_US.UTF-8 UTF-8」と「ja_JP.UTF-8 UTF-8」をコメントアウトします。

nano /etc/locale.gen

編集後、以下のコマンドを実行して、ロケール等を反映します。

locale-gen
echo LANG=en_US.UTF-8 > /etc/locale.conf
echo KEYMAP=jp106 > /etc/vconsole.conf

ホストネームの設定

以下のコマンドを実行して、ホストネームを設定します。

echo [hostname] > /etc/hostname

[hostname]は実際に合わせて置き換えてください。

また、以下の様に「hosts」ファイルを編集します。

nano /etc/hosts

内容は以下のとおりです。

127.0.0.1	localhost
::1		localhost
127.0.1.1	[hostname].localdomain	[hostname]


rootパスワードの変更

rootアカウントのパスワードを変更します。

passwd


マイクロコードのインストール

LattepandはIntelのCPUを使用しているので、以下のコマンドを実行してマイクロコードをインストールします。
適用は後でします。

pacman -S intel-ucode

GRUBのインストール

以下のコマンドを実行して、GRUBブートローダーとEFIブートマネージャーをインストールします。

pacman -S grub
pacman -S efibootmgr

また、以下のコマンドでArchLinuxをGRUBに登録します。

grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=ArchLinux

マイクロコードの適用

以下のコマンドを実行して、GRUBにマイクロコードを適用するように設定します。

grub-mkconfig -o /boot/grub/grub.cfg


chrootから抜ける

chroot内の作業が終わりましたので、以下のコマンドで抜けます。

exit

efiファイルのコピー

今の状態で再起動すると、UEFIのシェルからファイルを選択する羽目になります。
自動でGRUBが起動するように、以下のコマンドを実行してefiファイルをコピーします。

mkdir /mnt/boot/EFI/boot
cp /mnt/boot/EFI/ArchLinux/grubx64.efi /mnt/boot/EFI/boot/bootx64,efi

アンマウント

「fstab」に設定済みなので、再起動後は「/mnt」のマウントが不要になります。
なので、「/mnt」を、以下のコマンドでアンマウントします。
(と言っても、再起動した時点でアンマウントされるのですが…)

umount -R /mnt

再起動

USBメモリを外したいので、再起動と言いつつ以下のコマンドでシャットダウンします。

shutdown -h now

USBメモリの取り外しと起動

シャットダウンしたら、USBの取り外します。
電源ボタンを押して、Lattepandaを起動します。

ログイン

ログイン画面が表示されたらログインします。
ユーザーIDは「root」で、パスワードはインストールで設定したパスワードです。

ネットワークの有効化

デフォルトではネットワークが自動で起動しないようになっています。
ネットワークを自動で有効になるように設定します。

先ずは以下のコマンドを実行してNICのデバイス名を取得します。

ip a

こんなふうに表示されるかと思います。

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:00:00:00:00brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic noprefixroute enp0s3
       valid_lft 82004sec preferred_lft 82004sec
    inet6 fe80:0000:0000:0000:0000:0000/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

「lo」じゃないほうがデバイス名です(この場合「enp0s3」です)。

NICのデバイス名を取得したら、以下のコマンドを実行します。

systemctl enable dhcpcd@[interface].service

[interface]をNICのデバイス名に置き換えてください。

参考サイト

インストールガイド - ArchWiki
ArchLinuxのインストール(3つのブート方式ごとの設定) - Qiita
パーティショニング - ArchWiki
Arch LinuxをVirtualBox上にインストール - Qiita
VirtualBox の UEFI で Ubuntu が起動しない - mattintosh note