個人的なプログラムやGitHubのような外部にアップロードすると問題になるようなものを管理するためにRaspbianでGitBucketを導入していましたが、諸事情でUbuntu Mateに移行することになりました。
元々セットアップについて備忘録を載せようかと思っていましたが、すっかり日が経って忘れてしまったので移行の時のことを書いてみます。
初期セットアップとは若干異なりますが近いところもあるので参考にしてみてください。
準備する物たち
ホストコンピュータ
1. Ubuntu MATE 16.04.2 (Xenial)
2. WinSCP
3. Win32DiskImager
4. SDCardFormatter
Raspberry Pi
1. Tomcat
2. GitBucket
下準備
今回はクリーンインストールからのデータ移行となるため、必要なデータを全てバックアップしておく必要があります。今回は GitBucket の移行をメインに書いていきますが、必要に応じてバックアップを行いましょう。
Ubuntu MATEのダウンロード
初めにUbuntu MATEをダウンロードしておきます。回線の状況により結構時間がかかるのでダウンロード中に準備作業を終えてしまいます。
Ubuntu MATEはRaspberry Pi用のイメージファイルが提供されているのでRaspberry Piを選択します。執筆当時は16.04.2 (Xenial)のみの提供となっていたので今回はこちらを用います。
ダウンロードが完了するとアーカイブファイルなので展開しておきます。なお、xzはWindowsエクスプローラでは展開できないので7-Zipなどを用意しておきましょう。
GitBucketのバックアップ
次に、GitBucket並びに移行が必要なデータをこの段階で別の端末や記憶領域に移動させておきます。今回はローカルエリアネットワークを用いてホストコンピュータに転送する方式を用います。
PostgreSQLのデータを抽出
当環境ではGitBucketのデータベースシステムにPostgreSQLを採用しているため、データを抽出します。
PostgreSQLではいくつか方法が提供されていますが、データベースのダンプを作成する方式が一番楽そうなのでこちらで抽出します。
$ sudo pg_dump gitbucket > /root/.gitbucket/gitbucket.dmp
するとGitBucketの保存領域にダンプファイルが作成されます。データベースのバックアップはこれで終わりです。
GitBucketのデータをアーカイブ化
次にGitBucketの保存ディレクトリをアーカイブファイルに変換します。
$ su # cd /home/tomcat # tar -zcvf /home/tomcat/GitBucket.tar.gz .gitbucket/ # exit
これでGitBucketのバックアップは完了です。
SFTPにてアーカイブファイルをダウンロード
最後にSFTPにて作成したアーカイブファイルをダウンロードします。SFTPでの接続はいくつか方法がありますが、当方ではWinSCPを用いて適当な場所にダウンロードしました。
SDカードの全面バックアップ
続いてSDカードの全面バックアップを行います。SDカードが複数枚ある場合は取らなくても問題ありませんが、今回は一枚しかないので念のためバックアップを作成します。
今回はWin32DiskImagerを用いてSDカードからデータを抜き出します。なお、このソフトは後のOS書き込みでも用いるのでここで用意しておきましょう。
インストール後立ち上げると次のような画面が表示されるのでImage Fileに保存先のファイルパスを選択し、DeviceにSDカードのドライブレターを選択します。なお、保存先は存在しないファイルでも問題ありません。
今回はSDカードを差し込んでいないためグレーアウトしていますが、Readボタンを押すことでSDカードから指定したファイルへ書き込みが行われます。
SDカードのフォーマット
まずはSDカードのフォーマットを行います。Windowsエクスプローラのフォーマットツールでは一部のパーティション以外表示されないめ、フォーマットできません。管理ツールにてパーティションの作り直しでもできますが、注意点が多く厄介なのでSD Associationの配布するSDCardFormatterを利用します。
SDCardFormatterをインストールすると次のような画面が表示されるのでDriveにSDカードのドライブレター(複数ある場合は同じ物理カードのいずれか)を選択肢します。
次に、オプション設定にて論理サイズ調整をONにします。
あとはフォーマットボタンが有効になるのでクリックし、フォーマットを行います。たまにエラーが出ますが、その場合はエラー内容を見直して再度フォーマットを行います。
OSの書き込み
次にWin32DiskImagerを再び起動し、ドライブにSDカードのドライブレターを選択、Image FileにUbuntu Mateのimgファイルを選択します。
その後Writeボタンが有効になるのでWriteを押して書き込みます。
初期設定
SDカードを差し、電源を繋ぐと起動しますので指示に従ってOSの初期設定を行います。特筆すべきことはありません。
するとデスクトップが表示されるので「アプリケーション→システムツール→MATE端末(ターミナル)」を立ち上げます。ここからSSHを利用しないでデスクトップを用いる場合はこのターミナルで問題ありませんが、当環境ではこの先デスクトップを止めるのでSSH接続の準備を行います。
その前にパッケージリストの更新とパッケージのアップグレードを行っておきましょう。
$ sudo apt-get update $ sudo apt-get upgrade $ sudo apt-get dist-upgrade
アップグレードの量、ネットワーク環境と端末自体の非力さも相まって結構時間がかかります。別の作業をしつつ気長に待ちましょう。
全て完了するとローカルIPアドレスを確認します。
$ ifconfig | grep inet inetアドレス:192.168.1.43 ブロードキャスト:192.168.1.255 マスク:255.255.255.0 inet6アドレス: fe80::7998:da2f:e69e:f037/64 範囲:リンク inetアドレス:127.0.0.1 マスク:255.0.0.0 inet6アドレス: ::1/128 範囲:ホスト
2つ表示されますが、下はローカルループバックのアドレスなので上のinetアドレスを記憶しておきましょう。
次に、SSHを起動し、OS立ち上げと同時にSSHも起動するようにします。
$ sudo /etc/init.d/ssh restart $ sudo systemctl enable ssh
あとはホストマシン上のSSHにて接続を行います。当環境ではCygwinのSSHを用います。
$ ssh -2 -C {user}@{ip_address}
接続できれば設定完了です。
GUIデスクトップを無効化
サーバ目的なのでデスクトップは不要です。結構メモリを食うので止めてしまいましょう。
systemctl set-default multi-user.target --force systemctl disable lightdm.service --force systemctl disable graphical.target --force systemctl disable plymouth.service --force
あとは再起動するとShellの画面が表示されるだけでGUIは表示されません。
ただ、たまにGUIを必要とする場合があるかもしれないので、その時は「startx」コマンドでGUIデスクトップが起動します。
〆
このあたりはGitBucketの移行とあまり関係がありませんが、長いのでとりあえず初期設定だけをまとめました。
続きは次の記事でまとめます。