mirror of
https://github.com/linuxkit/linuxkit.git
synced 2025-07-20 09:39:08 +00:00
81 lines
1.8 KiB
Bash
Executable File
81 lines
1.8 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
# currently only supports ext4 disks; will extend for other filesystems, ISO, ...
|
|
|
|
do_mkfs()
|
|
{
|
|
diskdev="$1"
|
|
|
|
# new disks does not have an DOS signature in sector 0
|
|
# this makes sfdisk complain. We can workaround this by letting
|
|
# fdisk create that DOS signature, by just do a "w", a write.
|
|
# http://bugs.alpinelinux.org/issues/145
|
|
echo "w" | fdisk $diskdev >/dev/null
|
|
|
|
# format one large partition
|
|
echo ";" | sfdisk --quiet $diskdev
|
|
|
|
# update status
|
|
blockdev --rereadpt $diskdev 2> /dev/null
|
|
|
|
# wait for device
|
|
for i in $(seq 1 50); do test -b "$DATA" && break || sleep .1; mdev -s; done
|
|
|
|
FSOPTS="-O resize_inode,has_journal,extent,huge_file,flex_bg,uninit_bg,64bit,dir_nlink,extra_isize"
|
|
|
|
mkfs.ext4 -q -F $FSOPTS ${diskdev}1
|
|
}
|
|
|
|
DEV="$(find /dev -maxdepth 1 -type b ! -name 'loop*' | grep -v '[0-9]$' | sed 's@.*/dev/@@' | sort | head -1 )"
|
|
DEV2="$(find /dev -maxdepth 1 -type b ! -name 'loop*' | grep -v '[0-9]$' | sed 's@.*/dev/@@' | sort | head -2 | tail -1)"
|
|
|
|
[ -z "${DEV}" ] && exit 1
|
|
[ -z "${DEV2}" ] && exit 1
|
|
|
|
DRIVE="/dev/${DEV}"
|
|
DRIVE2="/dev/${DEV2}"
|
|
|
|
# format
|
|
do_mkfs "$DRIVE"
|
|
|
|
PARTITION="${DRIVE}1"
|
|
|
|
# mount
|
|
mount "$PARTITION" /mnt
|
|
|
|
# copy kernel, initrd from tarball on second disk
|
|
tar xf "${DRIVE2}" -C /mnt
|
|
|
|
# rename if they do not have canonical names
|
|
(
|
|
cd /mnt
|
|
[ -f kernel ] || mv *-kernel kernel
|
|
[ -f initrd.img ] || mv *-initrd.img initrd.img
|
|
[ -f cmdline ] || mv *-cmdline cmdline
|
|
)
|
|
|
|
# create syslinux.cfg
|
|
CMDLINE="$(cat /mnt/cmdline)"
|
|
rm -f /mnt/cmdline
|
|
|
|
CFG="DEFAULT linux
|
|
LABEL linux
|
|
KERNEL /kernel
|
|
INITRD /initrd.img
|
|
APPEND ${CMDLINE}
|
|
"
|
|
|
|
printf "$CFG" > /mnt/syslinux.cfg
|
|
|
|
# install syslinux
|
|
extlinux --install /mnt
|
|
|
|
# unmount
|
|
umount /mnt
|
|
|
|
# install mbr
|
|
dd if=usr/share/syslinux/mbr.bin of="$DRIVE" bs=440 count=1
|
|
|
|
# make bootable
|
|
sfdisk -A "$DRIVE" 1
|