4
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

isolinuxとbusyboxでブータブルCDを作成する

Last updated at Posted at 2017-04-14

まずsyslinuxを落としてきて

wget https://www.kernel.org/pub/linux/utils/boot/syslinux/syslinux-6.03.tar.xz
xzcat syslinux-6.03.tar.xz | tar x

適当なワークディレクトリにbootディレクトリとisolinuxディレクトリを掘って
isolinux.binとldlinux.c32をisolinuxにコピーします。

mkdir iso9660
mkdir iso9660/boot
mkdir iso9660/isolinux
cp syslinux-6.03/bios/core/isolinux.bin iso9660/isolinux/
cp syslinux-6.03/bios/com32/elflink/ldlinux/ldlinux.c32 iso9660/isolinux/

そのディレクトリにisolinux/isolinux.cfgを作成します。

default 1
label 1
      kernel /boot/bzImage
      initrd /boot/initrd.gz
      append root=/dev/ram0 rdinit=/sbin/init

カーネルを落としてきてビルドします。

wget https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.9.6.tar.xz
xzcat linux-4.9.6.tar.xz | tar x
cd linux-4.9.6/
make defconfig
make bzImage
cp arch/x86/boot/bzImage ../iso9660/boot/
cd ..

busyboxを落としてきて

wget https://busybox.net/downloads/busybox-1.26.2.tar.bz2
bzcat busybox-1.26.2.tar.bz2 | tar x
cd busybox-1.26.2/

menuconfigで

make menuconfig

スタティックにリンクするように
Busybox Settings --->
[*] Build BusyBox as a static binary (no shared libs)
を設定して

makeして_installをinitrdとか適当な名前でコピーします。

make install
cp -r _install/ ../initrd
cd ..

その中にprocディレクトリとsysディレクトリとetc/init.dディレクトリを作って

mkdir initrd/proc
mkdir initrd/sys
mkdir -p initrd/etc/init.d

etc/init.d/rcSを作って

#!/bin/sh
mount -t proc none /proc
mount -t sysfs none /sys
/sbin/mdev -s

実行権限を付けて

chmod a+x initrd/etc/init.d/rcS

boot/initrd.gzにまとめます。

cd initrd/
find . | cpio --create --format=newc --owner=root:root | gzip > ../iso9660/boot/initrd.gz
cd ..

最後にiso9660のイメージを作成。

cd iso9660/
mkisofs -o ../busybox.iso -b isolinux/isolinux.bin -no-emul-boot -boot-load-size 4 -boot-info-table .


buildrootは色々やってくれてありがたいんですが、しくじったときに何が悪いのか分かりにくいです。
自分でisolinuxとカーネルとbusyboxを用意した方がトラブルシューティングは楽かと。
ただし上記のやり方はクロスコンパイルしてないので32bit環境なら32bit用、64bit環境なら64bit用が出来てしまいます。

ちなみに buildrootでブータブルCDを作成する で作ったCDイメージは約5.5Mbyteで、上記の方法だと約7.8Mbyteでした。
menuconfigで真面目に設定するならこっちの方が小さくできるはずですが。

4
7
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?