気まま研究所ブログ

ITとスーパーカブ、思ったことをてきとーに書きます。

RaspbianからUbuntu MateへGitBucketの移行 下準備編

個人的なプログラムや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)のみの提供となっていたので今回はこちらを用います。
f:id:AonaSuzutsuki:20180422162411p:plain

ダウンロードが完了するとアーカイブファイルなので展開しておきます。なお、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を用いて適当な場所にダウンロードしました。
f:id:AonaSuzutsuki:20180422162428p:plain

SDカードの全面バックアップ

続いてSDカードの全面バックアップを行います。SDカードが複数枚ある場合は取らなくても問題ありませんが、今回は一枚しかないので念のためバックアップを作成します。

今回はWin32DiskImagerを用いてSDカードからデータを抜き出します。なお、このソフトは後のOS書き込みでも用いるのでここで用意しておきましょう。

インストール後立ち上げると次のような画面が表示されるのでImage Fileに保存先のファイルパスを選択し、DeviceにSDカードのドライブレターを選択します。なお、保存先は存在しないファイルでも問題ありません。
f:id:AonaSuzutsuki:20180422162440p:plain
今回はSDカードを差し込んでいないためグレーアウトしていますが、Readボタンを押すことでSDカードから指定したファイルへ書き込みが行われます。

SDカードのフォーマット

まずはSDカードのフォーマットを行います。Windowsエクスプローラのフォーマットツールでは一部のパーティション以外表示されないめ、フォーマットできません。管理ツールにてパーティションの作り直しでもできますが、注意点が多く厄介なのでSD Associationの配布するSDCardFormatterを利用します。

SDCardFormatterをインストールすると次のような画面が表示されるのでDriveにSDカードのドライブレター(複数ある場合は同じ物理カードのいずれか)を選択肢します。
f:id:AonaSuzutsuki:20180422162514p:plain
次に、オプション設定にて論理サイズ調整をONにします。
f:id:AonaSuzutsuki:20180422162521p:plain
あとはフォーマットボタンが有効になるのでクリックし、フォーマットを行います。たまにエラーが出ますが、その場合はエラー内容を見直して再度フォーマットを行います。

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にて接続を行います。当環境ではCygwinSSHを用います。

$ 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の移行とあまり関係がありませんが、長いのでとりあえず初期設定だけをまとめました。
続きは次の記事でまとめます。