blog.monophile.net

コンピュータのこととかのメモ。

山本 一彰 | Takaaki Yamamoto

東京工業大学において計算機科学と応用数学を学び、 情報科学芸術大学院大学[IAMAS]においてメディア表現を専攻し修了。 2015年にコンビネータ論理を基に計算完備な計算手法 "論理珠算"を開発し、 それを含む体系である"算道"を構成した。 その成果により、 第19回 文化庁メディア芸術祭 アート部門 新人賞 (文部科学大臣賞) を2016年に受賞。 現在はインフラエンジニアとして生計をたててている。

技術

各種システムの設計/構築/運用を承ります。

Configuration Management Ansible, Terraform, cloud-init
Cloud Platform AWS, Azure, GCP, Openstack
Openstack Keystone, Glance, Cinder(Ceph), Neutron(VLAN), Nova(QEMU), Horizon
Virtualization QEMU+KVM, LXD/LXC, Docker
OS Ubuntu, Debian GNU/Linux, CentOS, ...
Storage Ceph, GlusterFS, ZFS, btrfs, ...
Networks Tunnel(IPSec, L2TP, VXLAN, GRE), WirelessAP, ...
DB MySQL, MariaDB(Galera Cluster), MongoDB
Mail postfix, dovecot
WebApps WordPress, GitLab, MatterMost, Redmine, RainLoop, ...
Monitoring Nagios, Munin
Misc certbot, dnsmasq, ...

技術(習得中)

Orchestration Kubernetes
Openstack swift, manila, trove
OS CoreOS(Container Linux), Vyatta(VyOS), ...
Networks IPv6, BGP(quagga, calico), flannel, fan, ...
DB/KVS Redis, etcd
Monitoring Prometheus, Zabbix
DNS CoreDNS, PowerDNS
Misc MAAS, Blockchain

投稿

Linuxの起動ディスクのお引越

概要

Ubuntu16.04を違うディスクに引っ越した時に行った作業のメモ。 もっと簡単に行う方法もあるかもしれない。

作業

作業はUSBメモリなどから起動した別Linuxからの作業とする。 (引越し元のシステムが起動した状態でも行うことはできると思うが、 システムが起動のためにマウントしているファイルシステムなどもあるため、 別システムで行ったほうが安全のように思う。)

ディスクのデバイスファイルは下記のような配置とする。

  • /dev/sda 引越元ディスク
    • /dev/sda1 起動パーティション
  • /dev/sdb 引越先ディスク
    • /dev/sdb1 起動パーティション

引越し先のファイルシステムのフォーマット

引越し先のディスクのファイルシステム(ext4,xfs,btrfs,…)は、 引越し元と同じ形式にすることを想定している。 ファイルシステムを変更した場合は、カーネルモジュールの不足が起きたり、 マウントのオプションが異なったりした場合に起動できない可能性があるため、 ここに書かれていることのみでは成功しない恐れがある。

Ubuntu16.04のインストール時のデフォルトはext4であると思うので、 引越し元のファイルシステムがext4の場合は↓でパーティションを切ってフォーマットしておけば良い。

$ sudo parted -s -a optimal /dev/sdb -- mklabel msdos mkpart primary ext4 0% 100% set 1 boot on
$ sudo mkfs.ext4 /dev/sdb1

データの複製

引っ越し元から引っ越し先へデータをrsyncでコピーする。 マウント先は適当な場所で良いが今回は /mnt/ 下にした。

$ sudo mkdir /mnt/sda1
$ sudo mount /dev/sda1 /mnt/sda1
$ sudo mkdir /mnt/sdb1
$ sudo mount /dev/sdb1 /mnt/sdb1
$ sudo rsync -av /mnt/sda1/ /mnt/sdb1/

引越し先のファイルシステム/mnt/sdb1へchrootする

↓の手順でchrootしてから、続く作業を行う。

$ sudo mount --bind /dev /mnt/sdb1/dev
$ sudo mount --bind /proc /mnt/sdb1/proc
$ sudo mount --bind /sys /mnt/sdb1/sys
$ sudo chroot /mnt/sdb1
(chroot)#

/etc/fstabの設定を書き換える

/etc/fstabに記載されている/dev/sda1のUUIDを/dev/sdb1のUUIDで書き換える。 blkidコマンドでパーティションのUUIDは確認できる。

(chroot)# blkid
/dev/sda1: UUID="e620079e-cd74-4f72-9bfe-aec792adc666" TYPE="ext4" PARTUUID="d49dc327-01"

lsblk -f でも確認できる。

(chroot)# lsblk -f
NAME   FSTYPE LABEL UUID                                 MOUNTPOINT
sda
└─sda1 ext4         e620079e-cd74-4f72-9bfe-aec792adc666 /

/dev/sdbへgrubのインストール

/dev/sdbのMBRへgrubをインストールする。 /dev/sdaのMBRをddでコピーする方法もあるが、こちらの方が覚えやすい気がする。

(chroot)# grub-install /dev/sdb
(chroot)# update-grub

initramfsの更新

initramfsの更新もしておく。

(chroot)# update-initramfs -u

再起動

chrootを終了し、コンピュータを再起動する。 BIOSで起動ドライブを/dev/sdbに対応するディスクに切り替えたら/dev/sdbから起動が始まる。