ConoHaにLinuxからsftpでISOimageをアップロードする
ConoHaを利用する際、使いたいOSのイメージが用意されていなかったり、自分で用意したい場合のやり方。
事前準備
インストールしたいOSのイメージを用意する
SSHの設定
ConoHaのコンパネを開き、コンソールの画面を開くと、下の方に "SSH Private Key" というのがあるので、クリックして秘密鍵をダウンロード。
ダウンロードしたら秘密鍵の場所とパーミッションを変更する。
# mv [秘密鍵] ~/.ssh/ # chmod 600 [秘密鍵]
イメージのアップロード
さっき "SSH Private Key" をダウンロードした場所に書いてある、 "ISOイメージアップロード(SFTP)" の接続先とユーザ名を確認する。
コンソールから
# sftp -o IdentityFile=[秘密鍵のパス] [ユーザ名]@[接続先]:images/ > Connected to sftp1001.cnode.jp. > Changing to: /images/ sftp> put [ISOイメージ] > Uploading Linux.iso to /images/Linux.iso > Linux.iso sftp> exit
これでアップロードができる。
あとはコンパネからOS再インストールを選択すると、インストール元から今回アップロードしたイメージが選択できる。
参考
ConoHaにArchLinuxをインストールした時の手順
最近VPS上のArchLinuxを再インストールしたのでその手順をまとめてみました。
環境
- OS : ArchLinux64bit(自分でアップロードしたISOイメージ)
- VPS : ConoHa
- プラン : メモリ2Gのやつ
VPSの作成とインストールイメージの用意
VPSを作成する
- 最初にVPSを作成するときはCentOSしか選べないはずなので、とりあえず適当にVPSをひとつ作ります。
今回使用するArchのインストールイメージについて
- 作成した後、OSの再インストールを開くと、ConoHaで用意されているArchLinuxのインストールイメージがあるのですが、今回は自分でインストールイメージを用意します。
- ArchLinuxのイメージを用意する方法は2つあります(今考えた)。
- 自分で落としてきてConoHaにアップロード
- いま作成したVPSにイメージをDLしてそこからConoHaにアップロード
- 今回は現在使用しているネット回線が通信速度絶賛規制中なので今作成したVPSにDLしてConoHaにアップロードする方法でいきます。
ArchLinuxのイメージを用意する
インストールイメージのダウンロード
- ConoHaのコンパネからコンソールを開くと、下の方に"SSH Private Key"というのがあるのでクリックして秘密鍵をダウンロードします。
- 今DLした秘密鍵の場所とパーミッションを変更します。
local# mv [秘密鍵] ~/.ssh/ local# chmod 600 [秘密鍵]
- SSHでログイン
local# ssh -i./ssh/[秘密鍵] root@X.X.X.X
- 適当な場所にwgetでイメージをDLします。
cent# wget http://ftp.jaist.ac.jp/pub/Linux/ArchLinux/iso/2015.06.01/archlinux-2015.06.01-dual.iso
- DLが完了したら
cent# sha1sum archlinux-2015.06.01-dual.iso
でハッシュを確認します。
インストールイメージのアップロード
今ダウンロードしたインストールイメージをConoHaにアップロードします。
- VPS上からConoHaにアップロードできるように、さっきDLした秘密鍵をCentOS上にscpする。
local# scp ~/.ssh/[秘密鍵] root@X.X.X.X:.ssh/
- ConoHaのコンパネで "OS再インストール" を選択し、ページの一番下にある "ISOイメージアップロード(SFTP)" から "接続先&ユーザ名" を確認する。
- sftpでインストールイメージをアップロードするためのサーバに接続し、イメージをアップロード
cent# sftp -o IdentityFile=[秘密鍵のパス] [ユーザ名]@[接続先]:images/ > Connected to sftp1001.cnode.jp. > Changing to: /images/ sftp> put archlinux-2015.06.01-dual.iso > Uploading archlinux-2015.06.01-dual.iso to /images/archlinux-2015.06.01-dual.iso > archlinux-2015.06.01-dual.iso sftp> exit
Archのインストールディスクを起動する
- "OS再インストール" を選択。
- "インストール元" でアップロード済みISOイメージを選択。
- "テンプレートイメージ" からさっきアップロードしたISOイメージを選択する。
- Archの場合 "Virtio" が使えないので "OFF" にする。
FreeBSD、ArchLinuxはVirtioをOFFにしてください。 ONの場合はVirtioドライバーがないため、デバイスを認識できずにインストールが途中で止まってしまいます。
だそうです。
- "ビデオデバイス" はGUIを使用する場合は "vmvga" にする。 あと処理速度も "vmvga" のほうが高いらしい。 前回 "vmvga" でArchも動いたのでそっちを使用する。 詳しい違いはここを参考
- "ディスク構成" は分ける必要も無いかなと思うので "カスタム" で片方を200GBに指定して一つにまとめてしまいます。
- 変更を確定し、VPSを起動させる。
ドライブの準備
パーティションの準備
今回はrootディレクトリ一つとswapの2つのパーティションを作成たいと思います。
(bootパーティションとか分けてもいいけど正直そこまでしなくてもいい気がする。)
rootパーティションの作成
fdiskを使用してパーティションを作成します。
archiso# fdisk /dev/sda archiso# Command (m for help): o ("o"を入力でパーティションテーブルの作成) > Created a new DOS disklabel with disk identifier XXXXXXXXXX. archiso# Command (m for help): n ("n"を入力で新しいパーティションテーブルを作成) > Partition type > p primary (0 primary, 0 extended, 4 free) > e extended archiso# Select (default p): (パーティションのタイプを選ぶ。何もせずにEnter) > Using default response p. archiso# Partition numver (1-4, default 1): (作成するパーティションのナンバーを入力。1を入力してEnter) archiso#Firest sector (2048-XXXXXXX, default 2048):` (何も入力せずにEnter) archiso#Last sector, +sectors or +size{K,M,G,T,P} (2048-XXXX,default XXXX) : +190G 今回HDDは200GB。SWAPを適当に10GBぐらいで作ろうと思うので単純計算+190Gにしときました。 > Created a new partition 1 of type 'Linux' and of size 190 GiB.
swapパーティションの作成
今のと同じ手順でSWAP用のパーティションを作成していきます。
archiso# Command (m for help): n 後はすべてEnter > Created a new partition 2 of type 'Linux' and of size 10GiB 上手く10GB分作れてた。 archiso# Command (m for help): w ("w"で変更をディスクに書き込んで終了!) > The partition table has been altered. > Calling ioctl() to re-read partition table. > Syncing disks.
- wで書き込んだ時に、
Re-reading the partition table failed.: Device or resource busy
と怒られた場合、
lsblkした時に、前回のパーティション構成が表示されてしまっていますが、再起動すると適応されるはずです。
気になる人は再起動してからやり直してもいいかも(私はやり直しました)
ちゃんとパーティションが作成されているか確認。
archiso# lsblk sda 200G |-sda1 190G |-sda2 10G
ファイルシステムの作成
archiso# mkfs.ext4 /dev/sda1
archiso> proceed anyway? (y,n)
と聞かれたらy
と応える
そしてswapの作成
archiso# mkswap /dev/sda2
swaponするのを忘れないように!
archiso# swapon /dev/sda2
ちゃんとファイルシステムが作成されているか確認
archiso# lsblk -f sda |-sda1 ext4 |-sda2 swap
パーティションのマウント
archiso# mount /dev/sda1 /mnt
今回パーティションは"/dev/sda1"しか作成していないのでこれだけ
インストール
一応ネットワークにつながっているか確認する
archiso# ping archlinux.org
ミラーリストの選択
"mirrorlist"を編集して日本のサーバを1番上に持ってきます。
インストールした時にこの設定が引き継がれるっぽいです。
archiso# vi /etc/pacman.d/mirrorlist
.jpのサーバが2つあるはずなのでヤングして1番上に持ってきます。
保存して終了
ベースシステムのインストール
ベースシステムのインストールを行います。
archiso# pacstrap /mnt base base-devel
ここで、引数のbase
、base-devel
以外にインストールしたいパッケージを指定すると一緒にインストールしてくれます。
こんな感じ
archiso# pacstrap /mnt base base-devel vim zsh grml-zsh-config openssh
fstabの生成
fstabを作成します。これがないと起動出来ないので注意。
archiso# genfstab -U -p /mnt >> /mnt/etc/fstab
一応確認
archiso# cat /mnt/etc/fstab > # /dev/sda1 > UUID=XXX / ext4 rw,relatime,data=ordered 0 1 > # /dev/sda2 > UUID=XXX none swap defaults 0 0
ちゃんと作れてました。
Chrootとベースシステムの設定
今インストールしたArchLinuxにChrootでログインして色々と設定します。
archiso# arch-chroot /mnt /bin/bash
ロケール
ロケールの設定をする
locale.genを編集
chroot# vi /etc/locale.gen en_US.UTF-8 UTF-8 ja_JP.UTF-8 UTF-8
行の最初の"#" を削除
localeを生成
chroot# locale-gen
locale.confの編集
chroot# echo LANG=en_US.UTF-8 > /etc/locale.conf
chroot# export LANG=en_US.UTF-8
タイムゾーン
日本のタイムゾーンを設定
chroot# ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
ハードウェアクロック
Archにはデフォルトで時刻合わせのためのデーモン等が入っていません。
ntpかsystemdで設定してあげる必要があります。
今回はsystemdで設定したいと思います。
chroot# vi /etc/systemd/timesyncd.conf (2行追加) NTP=0.arch.pool.ntp.org 1.arch.pool.ntp.org 2.arch.pool.ntp.org 3.arch.pool.ntp.org FallbackNTP=0.pool.ntp.org 1.pool.ntp.org 0.jp.pool.ntp.org chroot# timedatectl set-ntp true chroot# date (正しい時間か確認) chroot# hwclock --systohc --utc
ホストネーム
かっちょいいホストネームをつけます
chroot# echo [かっちょいいホストネーム] > /etc/hostname
同じホスト名を"/etc/hosts"に追加
chroot# vi /etc/hosts 127.0.0.1 localhost.localdomain localhost [ホストネーム] ::1 localhost.localdomain localhost [ホストネーム]
Pacmanの設定
[multilib]を有効にします。
chroot# vi /etc/pacman.conf [multilib] Include = /etc/pacman.d/mirrorlist
この2行の最初の"#"を消します。[multilib]の行の"#"も消さないとダメです。
パッケージリストの更新
chroot# pacman -Sy
rootパスワードの設定
chroot# passwd
ブートローダのインスコと設定
今回はGRUBを使います
chroot# pacman -S grub chroot# grub-install --recheck /dev/sda > Installing for i386-pc platform. >Installation finishd. No error reported.
上手くインストールできたみたいです
"grub.cfg"を自動生成します。
chroot# grub-mkconfig -o /boot/grub/grub.cfg
パーティションのアンマウントと再起動
Chrootを抜けます
chroot# exit
アンマウント
archiso# umount /mnt
電源を落とします。
archiso# reboot
コンソールページ右上の排出ボタンでディスクを取り出します。
必要最低限の設定
ネットワークに接続させる
dhcpcdを起動して上げると後は勝手にやってくれます。
arch# systemctl enable dhcpcd.service
arch# systemctl start dhcpcd.service
ユーザーの追加
管理者用のユーザを追加
arch# useradd -m -G wheel -s /bin/zsh [ユーザ名]
先にpacmanでzshをインスコしていたのでデフォルトシェルはzshです
オプション忘れそうなので書いておくと
-m ユーザディレクトリを自動生成
-g プライマリグループ、指定しないと自動でユーザ名&UIDと、同じグループ名&GIDで作成してもらえる
-G セカンダリグループ
-s デフォルトシェル
wheelは、sudoを使えるグループ的な感じ
パスワードの設定
arch# passwd [ユーザ名]
sudoを使えるように設定
arch# visudo %wheel ALL=(ALL) ALL
行の最初の"#"を消す
Firewallの設定
iptablesの設定
設定はCentOSから引っ張ってきました
arch# vim /etc/iptables/iptables.rules *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT
iptablesの起動
arch# systemctl start iptables
すでに起動している場合は再起動しないと設定が更新されません
arch# systemctl restart iptables
んで、起動時にサービスがスタートするように設定
arch# systemctl enable iptables
ちなみに、Archだとデフォルトで/etc/iptables/iptables.rules
が作成されていません。
iptablesは.rulesファイルがないと起動出来ないので注意!
ip6tablesの設定
こっちもCentOSから設定を引っ張ってきました。
arch# vim /etc/iptables/ip6tables.rules *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -p ipv6-icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT -A INPUT -j REJECT --reject-with icmp6-adm-prohibited -A FORWARD -j REJECT --reject-with icmp6-adm-prohibited COMMIT
ip6tablesの起動
arch# systemctl start ip6tables
すでに起動している場合は再起動しないと設定が更新されません
arch# systemctl restart ip6tables
んで、起動時にサービスがスタートするように設定
arch# systemctl enable ip6tables
備考
- sshだとかの手順はそのうち書く予定
参考サイト
- 事前準備的なので使用した ConoHaにISOイメージをアップロードするための手順 ConoHaのブログ
変更履歴
6月6日 作成