Skip to content

Instantly share code, notes, and snippets.

@mizzy
Last active December 14, 2015 03:49
Show Gist options
  • Select an option

  • Save mizzy/5023926 to your computer and use it in GitHub Desktop.

Select an option

Save mizzy/5023926 to your computer and use it in GitHub Desktop.
#!/bin/sh
set -e
image=/tmp/lvm.img
root_dir=/tmp/root
truncate -s 5368709120 $image
parted --script -- $image "mklabel msdos"
parted --script -- $image "mkpart primary ext2 1049k 192"
parted --script -- $image "mkpart primary 193 5119"
parted --script -- $image "set 1 boot on"
parted --script -- $image "set 2 lvm on"
kpartx -va $image
pvcreate /dev/mapper/loop0p2
vgcreate vg_vm /dev/mapper/loop0p2
lvcreate -l 900 -n lv_root vg_vm
lvcreate -l 30 -n lv_swap vg_vm
mkfs.ext4 -F -E lazy_itable_init=1 -L boot /dev/mapper/loop0p1
mkfs.ext4 -F -E lazy_itable_init=1 -L root /dev/mapper/vg_vm-lv_root
mkswap -L swap -f /dev/mapper/vg_vm-lv_swap
mount /dev/mapper/vg_vm-lv_root $root_dir
mkdir $root_dir/boot
mount /dev/mapper/loop0p1 $root_dir/boot
cat <<EOF > /tmp/sl.repo
[sl]
name=Scientific Linux 6 - x86_64
baseurl=http://ftp.riken.jp/Linux/scientific/6.3/x86_64/os/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-sl file:///etc/pki/rpm-gpg/RPM-GPG-KEY-dawson
EOF
yum -c /tmp/sl.repo --disablerepo='*' --enablerepo='sl' --installroot=$root_dir \
-y groupinstall core
mkdir -m 0755 $root_dir/dev/pts
mkdir -m 1777 $root_dir/dev/shm
rm $root_dir/dev/null
mknod -m 666 $root_dir/dev/null c 1 3
mknod -m 666 $root_dir/dev/zero c 1 5
mknod -m 620 $root_dir/dev/tty1 c 4 1
mknod -m 620 $root_dir/dev/tty2 c 4 2
mknod -m 620 $root_dir/dev/tty3 c 4 3
mknod -m 620 $root_dir/dev/tty4 c 4 4
mknod -m 600 $root_dir/dev/console c 5 1
mknod -m 666 $root_dir/dev/full c 1 7
mknod -m 666 $root_dir/dev/randam c 1 8
mknod -m 666 $root_dir/dev/urandam c 1 9
mknod -m 666 $root_dir/dev/ptmx c 5 2
chroot $root_dir bash -e -c "echo root:root | chpasswd"
cat <<EOF > $root_dir/etc/sysconfig/network
NETWORKING=yes
HOSTNAME=drpepper.mizzy.org
EOF
cat <<EOF > $root_dir/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
BOOTPROTO=dhcp
ONBOOT=yes
EOF
boot_uuid=`blkid -sUUID -ovalue /dev/mapper/loop0p1`
cat <<EOF > $root_dir/etc/fstab
/dev/mapper/vg_vm-lv_root / ext4 defaults 1 1
UUID=${boot_uuid} /boot ext4 defaults 1 2
/dev/mapper/vg_vm-lv_swap swap swap defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
EOF
sed -i "s/^\(SELINUX=\).*/\1disabled/" $root_dir/etc/sysconfig/selinux
yum -c /tmp/sl.repo --disablerepo='*' --enablerepo='sl' --installroot=$root_dir \
-y install kernel lvm2 lvm2-libs
cat <<EOF > /tmp/device.map
(hd0) $image
EOF
cp $root_dir/usr/share/grub/x86_64-redhat/stage1 $root_dir/boot/grub
cp $root_dir/usr/share/grub/x86_64-redhat/e2fs_stage1_5 $root_dir/boot/grub
cp $root_dir/usr/share/grub/x86_64-redhat/stage2 $root_dir/boot/grub
cat <<EOF | grub --batch --device-map=/tmp/device.map
root (hd0,0)
setup (hd0)
quit
EOF
cat <<EOF > $root_dir/boot/grub/grub.conf
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title sl-6.3_x86_64 (2.6.32-279.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-279.el6.x86_64 ro root=/dev/mapper/vg_vm-lv_root rd_LVM_LV=vg_vm/lv_root rd_LVM_LV=vg_vm/lv_swap rd_NO_LUKS rd_NO_MD rd_NO_DM LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=us crashkernel=auto selinux=0
initrd /initramfs-2.6.32-279.el6.x86_64.img
EOF
cd $root_dir/boot/grub
ln -fs grub.conf menu.lst
cd - >/dev/null
chroot $root_dir bash -e -c "cd /etc; ln -fs ../boot/grub/grub.conf /etc/grub.conf"
umount $root_dir/boot
umount $root_dir
lvchange -an /dev/mapper/vg_vm-lv_root
lvchange -an /dev/mapper/vg_vm-lv_swap
vgchange -an vg_vm
kpartx -dv $image
pvscan
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment