CentOS Userland Linux 7 armv7hlのswapパーティションを削除して、swapファイルに置き換える手順例
Raspberry Pi 3 Model B/B+向け
2018-11-27 22:31がLast modifiedなCentOS-Userland-7-armv7hl-RaspberryPI-Minimal-1810-sda.raw.xzを使用
(CentOS Linux 7 1810相当 / SHA256:fd7ee31a2a0b868703f0715e9819911f68b160e3ae014317b706c63d716200f6)
CentOS 7.x Minimalな環境(クリーンインストール直後でOK)
作業用に10GBぐらいのディスク空き容量
root権限で作業
ついでにEPELリポジトリを追加
作業用ディレクトリ作成
# mkdir -p /tmp/centos-rpi3/{boot,rootfs}
# cd /tmp/centos-rpi3
イメージをダウンロードしてchecksum確認
# curl -L -O http://mirror.centos.org/altarch/7/isos/armhfp/CentOS-Userland-7-armv7hl-RaspberryPI-Minimal-1810-sda.raw.xz
# curl -L -O http://mirror.centos.org/altarch/7/isos/armhfp/sha256sum.txt
# grep CentOS-Userland-7-armv7hl-RaspberryPI-Minimal-1810-sda.raw.xz sha256sum.txt | sha256sum -c -
イメージを展開
# xz -dv CentOS-Userland-7-armv7hl-RaspberryPI-Minimal-1810-sda.raw.xz
イメージをloopデバイスにマッピングして確認
# kpartx -av CentOS-Userland-7-armv7hl-RaspberryPI-Minimal-1810-sda.raw
# losetup
loop0p3(rootパーティション)のイメージを取得
# dd if=/dev/mapper/loop0p3 of=./centos-rpi3_loop0p3.img bs=512
loop0p2(swapパーティション)とloop0p3(rootパーティション)を削除
# parted /dev/loop0 -s rm 2 -s rm 3
loopデバイスにリマッピング
新たにパーティションを作成
# parted /dev/loop0 -- mkpart primary ext4 1370112s -1s
再度loopデバイスにリマッピング
取得しておいたイメージをloop0p2に書き込む
# dd if=./centos-rpi3_loop0p3.img of=/dev/mapper/loop0p2
パーティションリサイズ
# e2fsck -f /dev/mapper/loop0p2
# resize2fs /dev/mapper/loop0p2
loop0p1(bootパーティション)をマウント
# mount /dev/mapper/loop0p1 /tmp/centos-rpi3/boot
kernel commandでrootパーティションを変更
# sed -i".orig" -e "s/\(mmcblk0p\)./\12/" /tmp/centos-rpi3/boot/cmdline.txt
loop0p1をアンマウント
# umount /dev/mapper/loop0p1
loop0p2(rootパーティション)をマウント
# mount /dev/mapper/loop0p2 /tmp/centos-rpi3/rootfs
rootfs-expandを構成に合わせて変更
# sed -i -e "s/3/2/" /tmp/centos-rpi3/rootfs/usr/bin/rootfs-expand
swapファイルを作成して有効化
# sed -i".orig" -e '/swap/c\/swapfile swap swap noatime 0 0' /tmp/centos-rpi3/rootfs/etc/fstab
# dd if=/dev/zero of=/tmp/centos-rpi3/rootfs/swapfile bs=1M count=512
# chmod 600 /tmp/centos-rpi3/rootfs/swapfile
# mkswap /tmp/centos-rpi3/rootfs/swapfile
EPELリポジトリを追加
# cat > /tmp/centos-rpi3/rootfs/etc/yum.repos.d/epel.repo << EOF
[epel]
name=Epel rebuild for armhfp
baseurl=https://armv7.dev.centos.org/repodir/epel-pass-1/
enabled=1
gpgcheck=0
EOF
loop0p2をアンマウント
# umount /dev/mapper/loop0p2
デバイスマップ削除
# kpartx -dv /dev/loop0
# losetup -d /dev/loop0