#!/bin/bash
#====================================================================
# This is a Source Mage script for generating initial ramdisks to be
# loaded by the kernel
#
# @Copyright Source Mage GNU/Linux Developers
#
# USAGE:
#
#   # mkinitrd -o /boot/initrd.img-2.6.20 2.6.20
#
#    -v|--version               displays usage version and exits
#    --enable-raid              force the usage of raid
#    --enable-lvm               force the usage of lvm
#    --disable-raid             don't use raid
#    --disable-lvm              don't use lvm
#    -f|--force                 if initrd file exists blow it away
#    --ignore-missing           ignore missing modules that may show up
#    -m|--with-module           add module to the initrd
#    -o|--output                output file 
#====================================================================

FORCE_RAID=${FORCE_RAID:=false}
FORCE_LVM=${FORCE_LVM:=false}
FORCE_CRYPTO=${FORCE_CRYPTO:=false}
USE_RAID=${USE_RAID:=false}
USE_LVM=${USE_LVM:=false}
USE_CRYPTO=${USE_CRYPTO:=false}
BREAK_ON_MISSING=${BREAK_ON_MISSING:=true}
REMOVE_OLD_INITRD=${REMOVE_OLD_INITRD:=false}

MODULES=${MODULES:=}
KVERSION=$(uname -r)
INITRD_FILE=${INITRD_FILE:=/boot/initrd.img-$KVERSION}
CPIO_TMP_ROOT=$(mktemp -d -p ${TMP_DIR:-/tmp})


function usage()
{
	local usage=$(cat << EOF
	$0 [OPTIONS] -o <initrdfile> <kernel-version>

EOF
)
	echo $usage
}

function linuxrc_pre()
{
	cat <<-EOF
#!/bin/sh

for module in \`cat /modules.lst\`
do
/bin/insmod \$module
done
EOF
}

function linuxrc_crypto()
{
	if $USE_CRYPTO || $FORCE_CRYPTO
	then
		cat <<-EOF
/bin/mount -t proc proc /proc > /dev/null 2>&1
/bin/mount -t sysfs sys /sys  > /dev/null 2>&1
/bin/dmsetup mknodes
cat /crypttab |
while read line
do
eval "/bin/cryptsetup luksOpen \$line" < /dev/console > /dev/console 2>&1
done
/bin/dmsetup mknodes
/bin/vgscan --ignorelockingfailure --mknodes
/bin/vgchange -ay --ignorelockingfailure
EOF
	fi
}

function linuxrc_raid()
{
	if $USE_RAID || $FORCE_RAID
	then
	cat <<-EOF
/bin/mount -t proc proc /proc > /dev/null 2>&1
/bin/mdadm --assemble --scan
EOF
	fi
}

function linuxrc_lvm()
{
	if $USE_LVM || $FORCE_LVM
	then
	cat <<-EOF
/bin/mount -t proc proc /proc > /dev/null 2>&1
/bin/mount -t sysfs sys /sys  > /dev/null 2>&1
/bin/dmsetup mknodes
/bin/vgscan --ignorelockingfailure --mknodes
/bin/vgchange -ay --ignorelockingfailure
EOF
	fi
}

function linuxrc_pre_kinit()
{
	[ -x /etc/linux-initramfs/pre_kinit.sh ] && 
	. /etc/linux-initramfs/pre_kinit.sh
}

function linuxrc_post()
{
local rootdev;
rootdev=$(awk '$2=="/" {print $1}' /etc/fstab)
	cat <<-EOF
ROOTDEV=\$(busybox sed -n 's:^.*root=\([^ ]*\).*$:\1:p' /proc/cmdline )
/bin/mount \${ROOTDEV:-$rootdev} /root
INIT=\$(busybox sed -n 's:^.*init=\([^ ]*\).*$:\1:p' /proc/cmdline )
exec /bin/switch_root /root \${INIT:-/sbin/init}
EOF
}

function default_parts()
{
	cat <<-EOF
dir /dev 0755 0 0
nod /dev/console 0600 0 0 c 5 1
nod /dev/random  0666 0 0 c 1 8
nod /dev/urandom 0644 0 0 c 1 9
dir /root 0700 0 0
file /linuxrc /tmp/linuxrc 0755 0 0
link /init /linuxrc 0755 0 0
EOF
}

function dir_parts()
{
	cat <<-EOF
dir /bin 0755 0 0
dir /usr 0755 0 0
dir /usr/bin 0755 0 0
dir /lib 0755 0 0
dir /proc 0755 0 0
dir /sys 0755 0 0
dir /etc 0755 0 0
dir /modules 0755 0 0
EOF
}

function user_parts()
{
	local file
	[ -f /etc/linux-initramfs/add-files.lst ] &&
	for file in `cat /etc/linux-initramfs/add-files.lst`
	do
		if [[ -f $file ]]
		then
			local mode=$(stat -c %a $file)
			local O=$(stat -c %o $file)
			local G=$(stat -c %g $file)
			cat <<-EOF
			file $file $file $mode $O $G
			EOF
		fi
	done
}

function dev_parts()
{
	cat <<-EOF
nod /dev/sda 660 0 6 b 8 0
nod /dev/sda1 660 0 6 b 8 1
nod /dev/sda10 660 0 6 b 8 10
nod /dev/sda11 660 0 6 b 8 11
nod /dev/sda12 660 0 6 b 8 12
nod /dev/sda13 660 0 6 b 8 13
nod /dev/sda14 660 0 6 b 8 14
nod /dev/sda15 660 0 6 b 8 15
nod /dev/sda2 660 0 6 b 8 2
nod /dev/sda3 660 0 6 b 8 3
nod /dev/sda4 660 0 6 b 8 4
nod /dev/sda5 660 0 6 b 8 5
nod /dev/sda6 660 0 6 b 8 6
nod /dev/sda7 660 0 6 b 8 7
nod /dev/sda8 660 0 6 b 8 8
nod /dev/sda9 660 0 6 b 8 9
nod /dev/sdb 660 0 6 b 8 16
nod /dev/sdb1 660 0 6 b 8 17
nod /dev/sdb10 660 0 6 b 8 26
nod /dev/sdb11 660 0 6 b 8 27
nod /dev/sdb12 660 0 6 b 8 28
nod /dev/sdb13 660 0 6 b 8 29
nod /dev/sdb14 660 0 6 b 8 30
nod /dev/sdb15 660 0 6 b 8 31
nod /dev/sdb2 660 0 6 b 8 18
nod /dev/sdb3 660 0 6 b 8 19
nod /dev/sdb4 660 0 6 b 8 20
nod /dev/sdb5 660 0 6 b 8 21
nod /dev/sdb6 660 0 6 b 8 22
nod /dev/sdb7 660 0 6 b 8 23
nod /dev/sdb8 660 0 6 b 8 24
nod /dev/sdb9 660 0 6 b 8 25
nod /dev/sdc 660 0 6 b 8 32
nod /dev/sdc1 660 0 6 b 8 33
nod /dev/sdc10 660 0 6 b 8 42
nod /dev/sdc11 660 0 6 b 8 43
nod /dev/sdc12 660 0 6 b 8 44
nod /dev/sdc13 660 0 6 b 8 45
nod /dev/sdc14 660 0 6 b 8 46
nod /dev/sdc15 660 0 6 b 8 47
nod /dev/sdc2 660 0 6 b 8 34
nod /dev/sdc3 660 0 6 b 8 35
nod /dev/sdc4 660 0 6 b 8 36
nod /dev/sdc5 660 0 6 b 8 37
nod /dev/sdc6 660 0 6 b 8 38
nod /dev/sdc7 660 0 6 b 8 39
nod /dev/sdc8 660 0 6 b 8 40
nod /dev/sdc9 660 0 6 b 8 41
nod /dev/sdd 660 0 6 b 8 48
nod /dev/sdd1 660 0 6 b 8 49
nod /dev/sdd10 660 0 6 b 8 58
nod /dev/sdd11 660 0 6 b 8 59
nod /dev/sdd12 660 0 6 b 8 60
nod /dev/sdd13 660 0 6 b 8 61
nod /dev/sdd14 660 0 6 b 8 62
nod /dev/sdd15 660 0 6 b 8 63
nod /dev/sdd2 660 0 6 b 8 50
nod /dev/sdd3 660 0 6 b 8 51
nod /dev/sdd4 660 0 6 b 8 52
nod /dev/sdd5 660 0 6 b 8 53
nod /dev/sdd6 660 0 6 b 8 54
nod /dev/sdd7 660 0 6 b 8 55
nod /dev/sdd8 660 0 6 b 8 56
nod /dev/sdd9 660 0 6 b 8 57
nod /dev/sde 660 0 6 b 8 64
nod /dev/sde1 660 0 6 b 8 65
nod /dev/sde10 660 0 6 b 8 74
nod /dev/sde11 660 0 6 b 8 75
nod /dev/sde12 660 0 6 b 8 76
nod /dev/sde13 660 0 6 b 8 77
nod /dev/sde14 660 0 6 b 8 78
nod /dev/sde15 660 0 6 b 8 79
nod /dev/sde2 660 0 6 b 8 66
nod /dev/sde3 660 0 6 b 8 67
nod /dev/sde4 660 0 6 b 8 68
nod /dev/sde5 660 0 6 b 8 69
nod /dev/sde6 660 0 6 b 8 70
nod /dev/sde7 660 0 6 b 8 71
nod /dev/sde8 660 0 6 b 8 72
nod /dev/sde9 660 0 6 b 8 73
nod /dev/sdf 660 0 6 b 8 80
nod /dev/sdf1 660 0 6 b 8 81
nod /dev/sdf10 660 0 6 b 8 90
nod /dev/sdf11 660 0 6 b 8 91
nod /dev/sdf12 660 0 6 b 8 92
nod /dev/sdf13 660 0 6 b 8 93
nod /dev/sdf14 660 0 6 b 8 94
nod /dev/sdf15 660 0 6 b 8 95
nod /dev/sdf2 660 0 6 b 8 82
nod /dev/sdf3 660 0 6 b 8 83
nod /dev/sdf4 660 0 6 b 8 84
nod /dev/sdf5 660 0 6 b 8 85
nod /dev/sdf6 660 0 6 b 8 86
nod /dev/sdf7 660 0 6 b 8 87
nod /dev/sdf8 660 0 6 b 8 88
nod /dev/sdf9 660 0 6 b 8 89
nod /dev/sdh 660 0 6 b 8 112
nod /dev/sdh1 660 0 6 b 8 113
nod /dev/sdh10 660 0 6 b 8 122
nod /dev/sdh11 660 0 6 b 8 123
nod /dev/sdh12 660 0 6 b 8 124
nod /dev/sdh13 660 0 6 b 8 125
nod /dev/sdh14 660 0 6 b 8 126
nod /dev/sdh15 660 0 6 b 8 127
nod /dev/sdh2 660 0 6 b 8 114
nod /dev/sdh3 660 0 6 b 8 115
nod /dev/sdh4 660 0 6 b 8 116
nod /dev/sdh5 660 0 6 b 8 117
nod /dev/sdh6 660 0 6 b 8 118
nod /dev/sdh7 660 0 6 b 8 119
nod /dev/sdh8 660 0 6 b 8 120
nod /dev/sdh9 660 0 6 b 8 121
nod /dev/sdi 660 0 6 b 8 128
nod /dev/sdi1 660 0 6 b 8 129
nod /dev/sdi10 660 0 6 b 8 138
nod /dev/sdi11 660 0 6 b 8 139
nod /dev/sdi12 660 0 6 b 8 140
nod /dev/sdi13 660 0 6 b 8 141
nod /dev/sdi14 660 0 6 b 8 142
nod /dev/sdi15 660 0 6 b 8 143
nod /dev/sdi2 660 0 6 b 8 130
nod /dev/sdi3 660 0 6 b 8 131
nod /dev/sdi4 660 0 6 b 8 132
nod /dev/sdi5 660 0 6 b 8 133
nod /dev/sdi6 660 0 6 b 8 134
nod /dev/sdi7 660 0 6 b 8 135
nod /dev/sdi8 660 0 6 b 8 136
nod /dev/sdi9 660 0 6 b 8 137
nod /dev/sdj 660 0 6 b 8 144
nod /dev/sdj1 660 0 6 b 8 145
nod /dev/sdj10 660 0 6 b 8 154
nod /dev/sdj11 660 0 6 b 8 155
nod /dev/sdj12 660 0 6 b 8 156
nod /dev/sdj13 660 0 6 b 8 157
nod /dev/sdj14 660 0 6 b 8 158
nod /dev/sdj15 660 0 6 b 8 159
nod /dev/sdj2 660 0 6 b 8 146
nod /dev/sdj3 660 0 6 b 8 147
nod /dev/sdj4 660 0 6 b 8 148
nod /dev/sdj5 660 0 6 b 8 149
nod /dev/sdj6 660 0 6 b 8 150
nod /dev/sdj7 660 0 6 b 8 151
nod /dev/sdj8 660 0 6 b 8 152
nod /dev/sdj9 660 0 6 b 8 153
nod /dev/sdk 660 0 6 b 8 160
nod /dev/sdk1 660 0 6 b 8 161
nod /dev/sdk10 660 0 6 b 8 170
nod /dev/sdk11 660 0 6 b 8 171
nod /dev/sdk12 660 0 6 b 8 172
nod /dev/sdk13 660 0 6 b 8 173
nod /dev/sdk14 660 0 6 b 8 174
nod /dev/sdk15 660 0 6 b 8 175
nod /dev/sdk2 660 0 6 b 8 162
nod /dev/sdk3 660 0 6 b 8 163
nod /dev/sdk4 660 0 6 b 8 164
nod /dev/sdk5 660 0 6 b 8 165
nod /dev/sdk6 660 0 6 b 8 166
nod /dev/sdk7 660 0 6 b 8 167
nod /dev/sdk8 660 0 6 b 8 168
nod /dev/sdk9 660 0 6 b 8 169
nod /dev/sdl 660 0 6 b 8 176
nod /dev/sdl1 660 0 6 b 8 177
nod /dev/sdl10 660 0 6 b 8 186
nod /dev/sdl11 660 0 6 b 8 187
nod /dev/sdl12 660 0 6 b 8 188
nod /dev/sdl13 660 0 6 b 8 189
nod /dev/sdl14 660 0 6 b 8 190
nod /dev/sdl15 660 0 6 b 8 191
nod /dev/sdl2 660 0 6 b 8 178
nod /dev/sdl3 660 0 6 b 8 179
nod /dev/sdl4 660 0 6 b 8 180
nod /dev/sdl5 660 0 6 b 8 181
nod /dev/sdl6 660 0 6 b 8 182
nod /dev/sdl7 660 0 6 b 8 183
nod /dev/sdl8 660 0 6 b 8 184
nod /dev/sdl9 660 0 6 b 8 185
nod /dev/hda 660 0 6 b 3 0
nod /dev/hda1 660 0 6 b 3 1
nod /dev/hda10 660 0 6 b 3 10
nod /dev/hda11 660 0 6 b 3 11
nod /dev/hda12 660 0 6 b 3 12
nod /dev/hda13 660 0 6 b 3 13
nod /dev/hda14 660 0 6 b 3 14
nod /dev/hda15 660 0 6 b 3 15
nod /dev/hda16 660 0 6 b 3 16
nod /dev/hda17 660 0 6 b 3 17
nod /dev/hda18 660 0 6 b 3 18
nod /dev/hda19 660 0 6 b 3 19
nod /dev/hda2 660 0 6 b 3 2
nod /dev/hda20 660 0 6 b 3 20
nod /dev/hda3 660 0 6 b 3 3
nod /dev/hda4 660 0 6 b 3 4
nod /dev/hda5 660 0 6 b 3 5
nod /dev/hda6 660 0 6 b 3 6
nod /dev/hda7 660 0 6 b 3 7
nod /dev/hda8 660 0 6 b 3 8
nod /dev/hda9 660 0 6 b 3 9
nod /dev/hdb 660 0 6 b 3 64
nod /dev/hdb1 660 0 6 b 3 65
nod /dev/hdb10 660 0 6 b 3 74
nod /dev/hdb11 660 0 6 b 3 75
nod /dev/hdb12 660 0 6 b 3 76
nod /dev/hdb13 660 0 6 b 3 77
nod /dev/hdb14 660 0 6 b 3 78
nod /dev/hdb15 660 0 6 b 3 79
nod /dev/hdb16 660 0 6 b 3 80
nod /dev/hdb17 660 0 6 b 3 81
nod /dev/hdb18 660 0 6 b 3 82
nod /dev/hdb19 660 0 6 b 3 83
nod /dev/hdb2 660 0 6 b 3 66
nod /dev/hdb20 660 0 6 b 3 84
nod /dev/hdb3 660 0 6 b 3 67
nod /dev/hdb4 660 0 6 b 3 68
nod /dev/hdb5 660 0 6 b 3 69
nod /dev/hdb6 660 0 6 b 3 70
nod /dev/hdb7 660 0 6 b 3 71
nod /dev/hdb8 660 0 6 b 3 72
nod /dev/hdb9 660 0 6 b 3 73
nod /dev/hdc 660 0 6 b 22 0
nod /dev/hdc1 660 0 6 b 22 1
nod /dev/hdc10 660 0 6 b 22 10
nod /dev/hdc11 660 0 6 b 22 11
nod /dev/hdc12 660 0 6 b 22 12
nod /dev/hdc13 660 0 6 b 22 13
nod /dev/hdc14 660 0 6 b 22 14
nod /dev/hdc15 660 0 6 b 22 15
nod /dev/hdc16 660 0 6 b 22 16
nod /dev/hdc17 660 0 6 b 22 17
nod /dev/hdc18 660 0 6 b 22 18
nod /dev/hdc19 660 0 6 b 22 19
nod /dev/hdc2 660 0 6 b 22 2
nod /dev/hdc20 660 0 6 b 22 20
nod /dev/hdc3 660 0 6 b 22 3
nod /dev/hdc4 660 0 6 b 22 4
nod /dev/hdc5 660 0 6 b 22 5
nod /dev/hdc6 660 0 6 b 22 6
nod /dev/hdc7 660 0 6 b 22 7
nod /dev/hdc8 660 0 6 b 22 8
nod /dev/hdc9 660 0 6 b 22 9
nod /dev/hdd 660 0 6 b 22 64
nod /dev/hdd1 660 0 6 b 22 65
nod /dev/hdd10 660 0 6 b 22 74
nod /dev/hdd11 660 0 6 b 22 75
nod /dev/hdd12 660 0 6 b 22 76
nod /dev/hdd13 660 0 6 b 22 77
nod /dev/hdd14 660 0 6 b 22 78
nod /dev/hdd15 660 0 6 b 22 79
nod /dev/hdd16 660 0 6 b 22 80
nod /dev/hdd17 660 0 6 b 22 81
nod /dev/hdd18 660 0 6 b 22 82
nod /dev/hdd19 660 0 6 b 22 83
nod /dev/hdd2 660 0 6 b 22 66
nod /dev/hdd20 660 0 6 b 22 84
nod /dev/hdd3 660 0 6 b 22 67
nod /dev/hdd4 660 0 6 b 22 68
nod /dev/hdd5 660 0 6 b 22 69
nod /dev/hdd6 660 0 6 b 22 70
nod /dev/hdd7 660 0 6 b 22 71
nod /dev/hdd8 660 0 6 b 22 72
nod /dev/hdd9 660 0 6 b 22 73
nod /dev/hde 660 0 6 b 33 0
nod /dev/hde1 660 0 6 b 33 1
nod /dev/hde10 660 0 6 b 33 10
nod /dev/hde11 660 0 6 b 33 11
nod /dev/hde12 660 0 6 b 33 12
nod /dev/hde13 660 0 6 b 33 13
nod /dev/hde14 660 0 6 b 33 14
nod /dev/hde15 660 0 6 b 33 15
nod /dev/hde16 660 0 6 b 33 16
nod /dev/hde17 660 0 6 b 33 17
nod /dev/hde18 660 0 6 b 33 18
nod /dev/hde19 660 0 6 b 33 19
nod /dev/hde2 660 0 6 b 33 2
nod /dev/hde20 660 0 6 b 33 20
nod /dev/hde3 660 0 6 b 33 3
nod /dev/hde4 660 0 6 b 33 4
nod /dev/hde5 660 0 6 b 33 5
nod /dev/hde6 660 0 6 b 33 6
nod /dev/hde7 660 0 6 b 33 7
nod /dev/hde8 660 0 6 b 33 8
nod /dev/hde9 660 0 6 b 33 9
nod /dev/hdf 660 0 6 b 33 64
nod /dev/hdf1 660 0 6 b 33 65
nod /dev/hdf10 660 0 6 b 33 74
nod /dev/hdf11 660 0 6 b 33 75
nod /dev/hdf12 660 0 6 b 33 76
nod /dev/hdf13 660 0 6 b 33 77
nod /dev/hdf14 660 0 6 b 33 78
nod /dev/hdf15 660 0 6 b 33 79
nod /dev/hdf16 660 0 6 b 33 80
nod /dev/hdf17 660 0 6 b 33 81
nod /dev/hdf18 660 0 6 b 33 82
nod /dev/hdf19 660 0 6 b 33 83
nod /dev/hdf2 660 0 6 b 33 66
nod /dev/hdf20 660 0 6 b 33 84
nod /dev/hdf3 660 0 6 b 33 67
nod /dev/hdf4 660 0 6 b 33 68
nod /dev/hdf5 660 0 6 b 33 69
nod /dev/hdf6 660 0 6 b 33 70
nod /dev/hdf7 660 0 6 b 33 71
nod /dev/hdf8 660 0 6 b 33 72
nod /dev/hdf9 660 0 6 b 33 73
nod /dev/hdg 660 0 6 b 34 0
nod /dev/hdg1 660 0 6 b 34 1
nod /dev/hdg10 660 0 6 b 34 10
nod /dev/hdg11 660 0 6 b 34 11
nod /dev/hdg12 660 0 6 b 34 12
nod /dev/hdg13 660 0 6 b 34 13
nod /dev/hdg14 660 0 6 b 34 14
nod /dev/hdg15 660 0 6 b 34 15
nod /dev/hdg16 660 0 6 b 34 16
nod /dev/hdg17 660 0 6 b 34 17
nod /dev/hdg18 660 0 6 b 34 18
nod /dev/hdg19 660 0 6 b 34 19
nod /dev/hdg2 660 0 6 b 34 2
nod /dev/hdg20 660 0 6 b 34 20
nod /dev/hdg3 660 0 6 b 34 3
nod /dev/hdg4 660 0 6 b 34 4
nod /dev/hdg5 660 0 6 b 34 5
nod /dev/hdg6 660 0 6 b 34 6
nod /dev/hdg7 660 0 6 b 34 7
nod /dev/hdg8 660 0 6 b 34 8
nod /dev/hdg9 660 0 6 b 34 9
nod /dev/hdh 660 0 6 b 34 64
nod /dev/hdh1 660 0 6 b 34 65
nod /dev/hdh10 660 0 6 b 34 74
nod /dev/hdh11 660 0 6 b 34 75
nod /dev/hdh12 660 0 6 b 34 76
nod /dev/hdh13 660 0 6 b 34 77
nod /dev/hdh14 660 0 6 b 34 78
nod /dev/hdh15 660 0 6 b 34 79
nod /dev/hdh16 660 0 6 b 34 80
nod /dev/hdh17 660 0 6 b 34 81
nod /dev/hdh18 660 0 6 b 34 82
nod /dev/hdh19 660 0 6 b 34 83
nod /dev/hdh2 660 0 6 b 34 66
nod /dev/hdh20 660 0 6 b 34 84
nod /dev/hdh3 660 0 6 b 34 67
nod /dev/hdh4 660 0 6 b 34 68
nod /dev/hdh5 660 0 6 b 34 69
nod /dev/hdh6 660 0 6 b 34 70
nod /dev/hdh7 660 0 6 b 34 71
nod /dev/hdh8 660 0 6 b 34 72
nod /dev/hdh9 660 0 6 b 34 73
nod /dev/loop0 660 0 6 b 7 0
nod /dev/loop1 660 0 6 b 7 1
nod /dev/loop10 660 0 6 b 7 10
nod /dev/loop11 660 0 6 b 7 11
nod /dev/loop12 660 0 6 b 7 12
nod /dev/loop13 660 0 6 b 7 13
nod /dev/loop14 660 0 6 b 7 14
nod /dev/loop15 660 0 6 b 7 15
nod /dev/loop2 660 0 6 b 7 2
nod /dev/loop3 660 0 6 b 7 3
nod /dev/loop4 660 0 6 b 7 4
nod /dev/loop5 660 0 6 b 7 5
nod /dev/loop6 660 0 6 b 7 6
nod /dev/loop7 660 0 6 b 7 7
nod /dev/loop8 660 0 6 b 7 8
nod /dev/loop9 660 0 6 b 7 9
nod /dev/ram0 660 0 6 b 1 0
nod /dev/ram1 660 0 6 b 1 1
nod /dev/ram2 660 0 6 b 1 2
nod /dev/ram3 660 0 6 b 1 3
nod /dev/xvda 660 0 6 b 202 0
nod /dev/xvda1 660 0 6 b 202 1
nod /dev/xvda2 660 0 6 b 202 2
nod /dev/xvda3 660 0 6 b 202 3
nod /dev/xvda4 660 0 6 b 202 4
nod /dev/xvda5 660 0 6 b 202 5
nod /dev/xvda6 660 0 6 b 202 6
nod /dev/xvda7 660 0 6 b 202 7
nod /dev/xvda8 660 0 6 b 202 8
nod /dev/xvda9 660 0 6 b 202 9
nod /dev/xvda10 660 0 6 b 202 10
nod /dev/xvda11 660 0 6 b 202 11
nod /dev/xvda12 660 0 6 b 202 12
nod /dev/xvda13 660 0 6 b 202 13
nod /dev/xvda14 660 0 6 b 202 14
nod /dev/xvda15 660 0 6 b 202 15
nod /dev/xvdb 660 0 6 b 202 16
nod /dev/xvdb1 660 0 6 b 202 17
nod /dev/xvdb2 660 0 6 b 202 18
nod /dev/xvdb3 660 0 6 b 202 19
nod /dev/xvdb4 660 0 6 b 202 20
nod /dev/xvdb5 660 0 6 b 202 21
nod /dev/xvdb6 660 0 6 b 202 22
nod /dev/xvdb7 660 0 6 b 202 23
nod /dev/xvdb8 660 0 6 b 202 24
nod /dev/xvdb9 660 0 6 b 202 25
nod /dev/xvdb10 660 0 6 b 202 26
nod /dev/xvdb11 660 0 6 b 202 27
nod /dev/xvdb12 660 0 6 b 202 28
nod /dev/xvdb13 660 0 6 b 202 29
nod /dev/xvdb14 660 0 6 b 202 30
nod /dev/xvdb15 660 0 6 b 202 31
nod /dev/xvdc 660 0 6 b 202 32
nod /dev/xvdc1 660 0 6 b 202 33
nod /dev/xvdc2 660 0 6 b 202 34
nod /dev/xvdc3 660 0 6 b 202 35
nod /dev/xvdc4 660 0 6 b 202 36
nod /dev/xvdc5 660 0 6 b 202 37
nod /dev/xvdc6 660 0 6 b 202 38
nod /dev/xvdc7 660 0 6 b 202 39
nod /dev/xvdc8 660 0 6 b 202 40
nod /dev/xvdc9 660 0 6 b 202 41
nod /dev/xvdc10 660 0 6 b 202 42
nod /dev/xvdc11 660 0 6 b 202 43
nod /dev/xvdc12 660 0 6 b 202 44
nod /dev/xvdc13 660 0 6 b 202 45
nod /dev/xvdc14 660 0 6 b 202 46
nod /dev/xvdc15 660 0 6 b 202 47
nod /dev/xvdd 660 0 6 b 202 48
nod /dev/xvdd1 660 0 6 b 202 49
nod /dev/xvdd2 660 0 6 b 202 50
nod /dev/xvdd3 660 0 6 b 202 51
nod /dev/xvdd4 660 0 6 b 202 52
nod /dev/xvdd5 660 0 6 b 202 53
nod /dev/xvdd6 660 0 6 b 202 54
nod /dev/xvdd7 660 0 6 b 202 55
nod /dev/xvdd8 660 0 6 b 202 56
nod /dev/xvdd9 660 0 6 b 202 57
nod /dev/xvdd10 660 0 6 b 202 58
nod /dev/xvdd11 660 0 6 b 202 59
nod /dev/xvdd12 660 0 6 b 202 60
nod /dev/xvdd13 660 0 6 b 202 61
nod /dev/xvdd14 660 0 6 b 202 62
nod /dev/xvdd15 660 0 6 b 202 63
nod /dev/xvde 660 0 6 b 202 64
nod /dev/xvde1 660 0 6 b 202 65
nod /dev/xvde2 660 0 6 b 202 66
nod /dev/xvde3 660 0 6 b 202 67
nod /dev/xvde4 660 0 6 b 202 68
nod /dev/xvde5 660 0 6 b 202 69
nod /dev/xvde6 660 0 6 b 202 70
nod /dev/xvde7 660 0 6 b 202 71
nod /dev/xvde8 660 0 6 b 202 72
nod /dev/xvde9 660 0 6 b 202 73
nod /dev/xvde10 660 0 6 b 202 74
nod /dev/xvde11 660 0 6 b 202 75
nod /dev/xvde12 660 0 6 b 202 76
nod /dev/xvde13 660 0 6 b 202 77
nod /dev/xvde14 660 0 6 b 202 78
nod /dev/xvde15 660 0 6 b 202 79
nod /dev/xvdf 660 0 6 b 202 80
nod /dev/xvdf1 660 0 6 b 202 81
nod /dev/xvdf2 660 0 6 b 202 82
nod /dev/xvdf3 660 0 6 b 202 83
nod /dev/xvdf4 660 0 6 b 202 84
nod /dev/xvdf5 660 0 6 b 202 85
nod /dev/xvdf6 660 0 6 b 202 86
nod /dev/xvdf7 660 0 6 b 202 87
nod /dev/xvdf8 660 0 6 b 202 88
nod /dev/xvdf9 660 0 6 b 202 89
nod /dev/xvdf10 660 0 6 b 202 90
nod /dev/xvdf11 660 0 6 b 202 91
nod /dev/xvdf12 660 0 6 b 202 92
nod /dev/xvdf13 660 0 6 b 202 93
nod /dev/xvdf14 660 0 6 b 202 94
nod /dev/xvdf15 660 0 6 b 202 95
nod /dev/xvdg 660 0 6 b 202 96
nod /dev/xvdg1 660 0 6 b 202 97
nod /dev/xvdg2 660 0 6 b 202 98
nod /dev/xvdg3 660 0 6 b 202 99
nod /dev/xvdg4 660 0 6 b 202 100
nod /dev/xvdg5 660 0 6 b 202 101
nod /dev/xvdg6 660 0 6 b 202 102
nod /dev/xvdg7 660 0 6 b 202 103
nod /dev/xvdg8 660 0 6 b 202 104
nod /dev/xvdg9 660 0 6 b 202 105
nod /dev/xvdg10 660 0 6 b 202 106
nod /dev/xvdg11 660 0 6 b 202 107
nod /dev/xvdg12 660 0 6 b 202 108
nod /dev/xvdg13 660 0 6 b 202 109
nod /dev/xvdg14 660 0 6 b 202 110
nod /dev/xvdg15 660 0 6 b 202 111
nod /dev/xvdh 660 0 6 b 202 112
nod /dev/xvdh1 660 0 6 b 202 113
nod /dev/xvdh2 660 0 6 b 202 114
nod /dev/xvdh3 660 0 6 b 202 115
nod /dev/xvdh4 660 0 6 b 202 116
nod /dev/xvdh5 660 0 6 b 202 117
nod /dev/xvdh6 660 0 6 b 202 118
nod /dev/xvdh7 660 0 6 b 202 119
nod /dev/xvdh8 660 0 6 b 202 120
nod /dev/xvdh9 660 0 6 b 202 121
nod /dev/xvdh10 660 0 6 b 202 122
nod /dev/xvdh11 660 0 6 b 202 123
nod /dev/xvdh12 660 0 6 b 202 124
nod /dev/xvdh13 660 0 6 b 202 125
nod /dev/xvdh14 660 0 6 b 202 126
nod /dev/xvdh15 660 0 6 b 202 127
nod /dev/xvdi 660 0 6 b 202 128
nod /dev/xvdi1 660 0 6 b 202 129
nod /dev/xvdi2 660 0 6 b 202 130
nod /dev/xvdi3 660 0 6 b 202 131
nod /dev/xvdi4 660 0 6 b 202 132
nod /dev/xvdi5 660 0 6 b 202 133
nod /dev/xvdi6 660 0 6 b 202 134
nod /dev/xvdi7 660 0 6 b 202 135
nod /dev/xvdi8 660 0 6 b 202 136
nod /dev/xvdi9 660 0 6 b 202 137
nod /dev/xvdi10 660 0 6 b 202 138
nod /dev/xvdi11 660 0 6 b 202 139
nod /dev/xvdi12 660 0 6 b 202 140
nod /dev/xvdi13 660 0 6 b 202 141
nod /dev/xvdi14 660 0 6 b 202 142
nod /dev/xvdi15 660 0 6 b 202 143
nod /dev/xvdj 660 0 6 b 202 144
nod /dev/xvdj1 660 0 6 b 202 145
nod /dev/xvdj2 660 0 6 b 202 146
nod /dev/xvdj3 660 0 6 b 202 147
nod /dev/xvdj4 660 0 6 b 202 148
nod /dev/xvdj5 660 0 6 b 202 149
nod /dev/xvdj6 660 0 6 b 202 150
nod /dev/xvdj7 660 0 6 b 202 151
nod /dev/xvdj8 660 0 6 b 202 152
nod /dev/xvdj9 660 0 6 b 202 153
nod /dev/xvdj10 660 0 6 b 202 154
nod /dev/xvdj11 660 0 6 b 202 155
nod /dev/xvdj12 660 0 6 b 202 156
nod /dev/xvdj13 660 0 6 b 202 157
nod /dev/xvdj14 660 0 6 b 202 158
nod /dev/xvdj15 660 0 6 b 202 159
nod /dev/xvdk 660 0 6 b 202 160
nod /dev/xvdk1 660 0 6 b 202 161
nod /dev/xvdk2 660 0 6 b 202 162
nod /dev/xvdk3 660 0 6 b 202 163
nod /dev/xvdk4 660 0 6 b 202 164
nod /dev/xvdk5 660 0 6 b 202 165
nod /dev/xvdk6 660 0 6 b 202 166
nod /dev/xvdk7 660 0 6 b 202 167
nod /dev/xvdk8 660 0 6 b 202 168
nod /dev/xvdk9 660 0 6 b 202 169
nod /dev/xvdk10 660 0 6 b 202 170
nod /dev/xvdk11 660 0 6 b 202 171
nod /dev/xvdk12 660 0 6 b 202 172
nod /dev/xvdk13 660 0 6 b 202 173
nod /dev/xvdk14 660 0 6 b 202 174
nod /dev/xvdk15 660 0 6 b 202 175
nod /dev/xvdl 660 0 6 b 202 176
nod /dev/xvdl1 660 0 6 b 202 177
nod /dev/xvdl2 660 0 6 b 202 178
nod /dev/xvdl3 660 0 6 b 202 179
nod /dev/xvdl4 660 0 6 b 202 180
nod /dev/xvdl5 660 0 6 b 202 181
nod /dev/xvdl6 660 0 6 b 202 182
nod /dev/xvdl7 660 0 6 b 202 183
nod /dev/xvdl8 660 0 6 b 202 184
nod /dev/xvdl9 660 0 6 b 202 185
nod /dev/xvdl10 660 0 6 b 202 186
nod /dev/xvdl11 660 0 6 b 202 187
nod /dev/xvdl12 660 0 6 b 202 188
nod /dev/xvdl13 660 0 6 b 202 189
nod /dev/xvdl14 660 0 6 b 202 190
nod /dev/xvdl15 660 0 6 b 202 191
nod /dev/xvdm 660 0 6 b 202 192
nod /dev/xvdm1 660 0 6 b 202 193
nod /dev/xvdm2 660 0 6 b 202 194
nod /dev/xvdm3 660 0 6 b 202 195
nod /dev/xvdm4 660 0 6 b 202 196
nod /dev/xvdm5 660 0 6 b 202 197
nod /dev/xvdm6 660 0 6 b 202 198
nod /dev/xvdm7 660 0 6 b 202 199
nod /dev/xvdm8 660 0 6 b 202 200
nod /dev/xvdm9 660 0 6 b 202 201
nod /dev/xvdm10 660 0 6 b 202 202
nod /dev/xvdm11 660 0 6 b 202 203
nod /dev/xvdm12 660 0 6 b 202 204
nod /dev/xvdm13 660 0 6 b 202 205
nod /dev/xvdm14 660 0 6 b 202 206
nod /dev/xvdm15 660 0 6 b 202 207
nod /dev/xvdn 660 0 6 b 202 208
nod /dev/xvdn1 660 0 6 b 202 209
nod /dev/xvdn2 660 0 6 b 202 210
nod /dev/xvdn3 660 0 6 b 202 211
nod /dev/xvdn4 660 0 6 b 202 212
nod /dev/xvdn5 660 0 6 b 202 213
nod /dev/xvdn6 660 0 6 b 202 214
nod /dev/xvdn7 660 0 6 b 202 215
nod /dev/xvdn8 660 0 6 b 202 216
nod /dev/xvdn9 660 0 6 b 202 217
nod /dev/xvdn10 660 0 6 b 202 218
nod /dev/xvdn11 660 0 6 b 202 219
nod /dev/xvdn12 660 0 6 b 202 220
nod /dev/xvdn13 660 0 6 b 202 221
nod /dev/xvdn14 660 0 6 b 202 222
nod /dev/xvdn15 660 0 6 b 202 223
nod /dev/xvdo 660 0 6 b 202 224
nod /dev/xvdo1 660 0 6 b 202 225
nod /dev/xvdo2 660 0 6 b 202 226
nod /dev/xvdo3 660 0 6 b 202 227
nod /dev/xvdo4 660 0 6 b 202 228
nod /dev/xvdo5 660 0 6 b 202 229
nod /dev/xvdo6 660 0 6 b 202 230
nod /dev/xvdo7 660 0 6 b 202 231
nod /dev/xvdo8 660 0 6 b 202 232
nod /dev/xvdo9 660 0 6 b 202 233
nod /dev/xvdo10 660 0 6 b 202 234
nod /dev/xvdo11 660 0 6 b 202 235
nod /dev/xvdo12 660 0 6 b 202 236
nod /dev/xvdo13 660 0 6 b 202 237
nod /dev/xvdo14 660 0 6 b 202 238
nod /dev/xvdo15 660 0 6 b 202 239
nod /dev/xvdp 660 0 6 b 202 240
nod /dev/xvdp1 660 0 6 b 202 241
nod /dev/xvdp2 660 0 6 b 202 242
nod /dev/xvdp3 660 0 6 b 202 243
nod /dev/xvdp4 660 0 6 b 202 244
nod /dev/xvdp5 660 0 6 b 202 245
nod /dev/xvdp6 660 0 6 b 202 246
nod /dev/xvdp7 660 0 6 b 202 247
nod /dev/xvdp8 660 0 6 b 202 248
nod /dev/xvdp9 660 0 6 b 202 249
nod /dev/xvdp10 660 0 6 b 202 250
nod /dev/xvdp11 660 0 6 b 202 251
nod /dev/xvdp12 660 0 6 b 202 252
nod /dev/xvdp13 660 0 6 b 202 253
nod /dev/xvdp14 660 0 6 b 202 254
nod /dev/xvdp15 660 0 6 b 202 255
nod /dev/vda 660 0 6 b 253 0
nod /dev/vda1 660 0 6 b 253 1
nod /dev/vda2 660 0 6 b 253 2
nod /dev/vda3 660 0 6 b 253 3
nod /dev/vda4 660 0 6 b 253 4
nod /dev/vda5 660 0 6 b 253 5
nod /dev/vda6 660 0 6 b 253 6
nod /dev/vda7 660 0 6 b 253 7
nod /dev/vda8 660 0 6 b 253 8
nod /dev/vda9 660 0 6 b 253 9
nod /dev/vda10 660 0 6 b 253 10
nod /dev/vda11 660 0 6 b 253 11
nod /dev/vda12 660 0 6 b 253 12
nod /dev/vda13 660 0 6 b 253 13
nod /dev/vda14 660 0 6 b 253 14
nod /dev/vda15 660 0 6 b 253 15
nod /dev/vdb 660 0 6 b 253 16
nod /dev/vdb1 660 0 6 b 253 17
nod /dev/vdb2 660 0 6 b 253 18
nod /dev/vdb3 660 0 6 b 253 19
nod /dev/vdb4 660 0 6 b 253 20
nod /dev/vdb5 660 0 6 b 253 21
nod /dev/vdb6 660 0 6 b 253 22
nod /dev/vdb7 660 0 6 b 253 23
nod /dev/vdb8 660 0 6 b 253 24
nod /dev/vdb9 660 0 6 b 253 25
nod /dev/vdb10 660 0 6 b 253 26
nod /dev/vdb11 660 0 6 b 253 27
nod /dev/vdb12 660 0 6 b 253 28
nod /dev/vdb13 660 0 6 b 253 29
nod /dev/vdb14 660 0 6 b 253 30
nod /dev/vdb15 660 0 6 b 253 31
nod /dev/vdc 660 0 6 b 253 32
nod /dev/vdc1 660 0 6 b 253 33
nod /dev/vdc2 660 0 6 b 253 34
nod /dev/vdc3 660 0 6 b 253 35
nod /dev/vdc4 660 0 6 b 253 36
nod /dev/vdc5 660 0 6 b 253 37
nod /dev/vdc6 660 0 6 b 253 38
nod /dev/vdc7 660 0 6 b 253 39
nod /dev/vdc8 660 0 6 b 253 40
nod /dev/vdc9 660 0 6 b 253 41
nod /dev/vdc10 660 0 6 b 253 42
nod /dev/vdc11 660 0 6 b 253 43
nod /dev/vdc12 660 0 6 b 253 44
nod /dev/vdc13 660 0 6 b 253 45
nod /dev/vdc14 660 0 6 b 253 46
nod /dev/vdc15 660 0 6 b 253 47
nod /dev/vdd 660 0 6 b 253 48
nod /dev/vdd1 660 0 6 b 253 49
nod /dev/vdd2 660 0 6 b 253 50
nod /dev/vdd3 660 0 6 b 253 51
nod /dev/vdd4 660 0 6 b 253 52
nod /dev/vdd5 660 0 6 b 253 53
nod /dev/vdd6 660 0 6 b 253 54
nod /dev/vdd7 660 0 6 b 253 55
nod /dev/vdd8 660 0 6 b 253 56
nod /dev/vdd9 660 0 6 b 253 57
nod /dev/vdd10 660 0 6 b 253 58
nod /dev/vdd11 660 0 6 b 253 59
nod /dev/vdd12 660 0 6 b 253 60
nod /dev/vdd13 660 0 6 b 253 61
nod /dev/vdd14 660 0 6 b 253 62
nod /dev/vdd15 660 0 6 b 253 63
nod /dev/vde 660 0 6 b 253 64
nod /dev/vde1 660 0 6 b 253 65
nod /dev/vde2 660 0 6 b 253 66
nod /dev/vde3 660 0 6 b 253 67
nod /dev/vde4 660 0 6 b 253 68
nod /dev/vde5 660 0 6 b 253 69
nod /dev/vde6 660 0 6 b 253 70
nod /dev/vde7 660 0 6 b 253 71
nod /dev/vde8 660 0 6 b 253 72
nod /dev/vde9 660 0 6 b 253 73
nod /dev/vde10 660 0 6 b 253 74
nod /dev/vde11 660 0 6 b 253 75
nod /dev/vde12 660 0 6 b 253 76
nod /dev/vde13 660 0 6 b 253 77
nod /dev/vde14 660 0 6 b 253 78
nod /dev/vde15 660 0 6 b 253 79
nod /dev/vdf 660 0 6 b 253 80
nod /dev/vdf1 660 0 6 b 253 81
nod /dev/vdf2 660 0 6 b 253 82
nod /dev/vdf3 660 0 6 b 253 83
nod /dev/vdf4 660 0 6 b 253 84
nod /dev/vdf5 660 0 6 b 253 85
nod /dev/vdf6 660 0 6 b 253 86
nod /dev/vdf7 660 0 6 b 253 87
nod /dev/vdf8 660 0 6 b 253 88
nod /dev/vdf9 660 0 6 b 253 89
nod /dev/vdf10 660 0 6 b 253 90
nod /dev/vdf11 660 0 6 b 253 91
nod /dev/vdf12 660 0 6 b 253 92
nod /dev/vdf13 660 0 6 b 253 93
nod /dev/vdf14 660 0 6 b 253 94
nod /dev/vdf15 660 0 6 b 253 95
nod /dev/vdg 660 0 6 b 253 96
nod /dev/vdg1 660 0 6 b 253 97
nod /dev/vdg2 660 0 6 b 253 98
nod /dev/vdg3 660 0 6 b 253 99
nod /dev/vdg4 660 0 6 b 253 100
nod /dev/vdg5 660 0 6 b 253 101
nod /dev/vdg6 660 0 6 b 253 102
nod /dev/vdg7 660 0 6 b 253 103
nod /dev/vdg8 660 0 6 b 253 104
nod /dev/vdg9 660 0 6 b 253 105
nod /dev/vdg10 660 0 6 b 253 106
nod /dev/vdg11 660 0 6 b 253 107
nod /dev/vdg12 660 0 6 b 253 108
nod /dev/vdg13 660 0 6 b 253 109
nod /dev/vdg14 660 0 6 b 253 110
nod /dev/vdg15 660 0 6 b 253 111
nod /dev/vdh 660 0 6 b 253 112
nod /dev/vdh1 660 0 6 b 253 113
nod /dev/vdh2 660 0 6 b 253 114
nod /dev/vdh3 660 0 6 b 253 115
nod /dev/vdh4 660 0 6 b 253 116
nod /dev/vdh5 660 0 6 b 253 117
nod /dev/vdh6 660 0 6 b 253 118
nod /dev/vdh7 660 0 6 b 253 119
nod /dev/vdh8 660 0 6 b 253 120
nod /dev/vdh9 660 0 6 b 253 121
nod /dev/vdh10 660 0 6 b 253 122
nod /dev/vdh11 660 0 6 b 253 123
nod /dev/vdh12 660 0 6 b 253 124
nod /dev/vdh13 660 0 6 b 253 125
nod /dev/vdh14 660 0 6 b 253 126
nod /dev/vdh15 660 0 6 b 253 127
nod /dev/vdi 660 0 6 b 253 128
nod /dev/vdi1 660 0 6 b 253 129
nod /dev/vdi2 660 0 6 b 253 130
nod /dev/vdi3 660 0 6 b 253 131
nod /dev/vdi4 660 0 6 b 253 132
nod /dev/vdi5 660 0 6 b 253 133
nod /dev/vdi6 660 0 6 b 253 134
nod /dev/vdi7 660 0 6 b 253 135
nod /dev/vdi8 660 0 6 b 253 136
nod /dev/vdi9 660 0 6 b 253 137
nod /dev/vdi10 660 0 6 b 253 138
nod /dev/vdi11 660 0 6 b 253 139
nod /dev/vdi12 660 0 6 b 253 140
nod /dev/vdi13 660 0 6 b 253 141
nod /dev/vdi14 660 0 6 b 253 142
nod /dev/vdi15 660 0 6 b 253 143
nod /dev/vdj 660 0 6 b 253 144
nod /dev/vdj1 660 0 6 b 253 145
nod /dev/vdj2 660 0 6 b 253 146
nod /dev/vdj3 660 0 6 b 253 147
nod /dev/vdj4 660 0 6 b 253 148
nod /dev/vdj5 660 0 6 b 253 149
nod /dev/vdj6 660 0 6 b 253 150
nod /dev/vdj7 660 0 6 b 253 151
nod /dev/vdj8 660 0 6 b 253 152
nod /dev/vdj9 660 0 6 b 253 153
nod /dev/vdj10 660 0 6 b 253 154
nod /dev/vdj11 660 0 6 b 253 155
nod /dev/vdj12 660 0 6 b 253 156
nod /dev/vdj13 660 0 6 b 253 157
nod /dev/vdj14 660 0 6 b 253 158
nod /dev/vdj15 660 0 6 b 253 159
nod /dev/vdk 660 0 6 b 253 160
nod /dev/vdk1 660 0 6 b 253 161
nod /dev/vdk2 660 0 6 b 253 162
nod /dev/vdk3 660 0 6 b 253 163
nod /dev/vdk4 660 0 6 b 253 164
nod /dev/vdk5 660 0 6 b 253 165
nod /dev/vdk6 660 0 6 b 253 166
nod /dev/vdk7 660 0 6 b 253 167
nod /dev/vdk8 660 0 6 b 253 168
nod /dev/vdk9 660 0 6 b 253 169
nod /dev/vdk10 660 0 6 b 253 170
nod /dev/vdk11 660 0 6 b 253 171
nod /dev/vdk12 660 0 6 b 253 172
nod /dev/vdk13 660 0 6 b 253 173
nod /dev/vdk14 660 0 6 b 253 174
nod /dev/vdk15 660 0 6 b 253 175
nod /dev/vdl 660 0 6 b 253 176
nod /dev/vdl1 660 0 6 b 253 177
nod /dev/vdl2 660 0 6 b 253 178
nod /dev/vdl3 660 0 6 b 253 179
nod /dev/vdl4 660 0 6 b 253 180
nod /dev/vdl5 660 0 6 b 253 181
nod /dev/vdl6 660 0 6 b 253 182
nod /dev/vdl7 660 0 6 b 253 183
nod /dev/vdl8 660 0 6 b 253 184
nod /dev/vdl9 660 0 6 b 253 185
nod /dev/vdl10 660 0 6 b 253 186
nod /dev/vdl11 660 0 6 b 253 187
nod /dev/vdl12 660 0 6 b 253 188
nod /dev/vdl13 660 0 6 b 253 189
nod /dev/vdl14 660 0 6 b 253 190
nod /dev/vdl15 660 0 6 b 253 191
nod /dev/vdm 660 0 6 b 253 192
nod /dev/vdm1 660 0 6 b 253 193
nod /dev/vdm2 660 0 6 b 253 194
nod /dev/vdm3 660 0 6 b 253 195
nod /dev/vdm4 660 0 6 b 253 196
nod /dev/vdm5 660 0 6 b 253 197
nod /dev/vdm6 660 0 6 b 253 198
nod /dev/vdm7 660 0 6 b 253 199
nod /dev/vdm8 660 0 6 b 253 200
nod /dev/vdm9 660 0 6 b 253 201
nod /dev/vdm10 660 0 6 b 253 202
nod /dev/vdm11 660 0 6 b 253 203
nod /dev/vdm12 660 0 6 b 253 204
nod /dev/vdm13 660 0 6 b 253 205
nod /dev/vdm14 660 0 6 b 253 206
nod /dev/vdm15 660 0 6 b 253 207
nod /dev/vdn 660 0 6 b 253 208
nod /dev/vdn1 660 0 6 b 253 209
nod /dev/vdn2 660 0 6 b 253 210
nod /dev/vdn3 660 0 6 b 253 211
nod /dev/vdn4 660 0 6 b 253 212
nod /dev/vdn5 660 0 6 b 253 213
nod /dev/vdn6 660 0 6 b 253 214
nod /dev/vdn7 660 0 6 b 253 215
nod /dev/vdn8 660 0 6 b 253 216
nod /dev/vdn9 660 0 6 b 253 217
nod /dev/vdn10 660 0 6 b 253 218
nod /dev/vdn11 660 0 6 b 253 219
nod /dev/vdn12 660 0 6 b 253 220
nod /dev/vdn13 660 0 6 b 253 221
nod /dev/vdn14 660 0 6 b 253 222
nod /dev/vdn15 660 0 6 b 253 223
nod /dev/vdo 660 0 6 b 253 224
nod /dev/vdo1 660 0 6 b 253 225
nod /dev/vdo2 660 0 6 b 253 226
nod /dev/vdo3 660 0 6 b 253 227
nod /dev/vdo4 660 0 6 b 253 228
nod /dev/vdo5 660 0 6 b 253 229
nod /dev/vdo6 660 0 6 b 253 230
nod /dev/vdo7 660 0 6 b 253 231
nod /dev/vdo8 660 0 6 b 253 232
nod /dev/vdo9 660 0 6 b 253 233
nod /dev/vdo10 660 0 6 b 253 234
nod /dev/vdo11 660 0 6 b 253 235
nod /dev/vdo12 660 0 6 b 253 236
nod /dev/vdo13 660 0 6 b 253 237
nod /dev/vdo14 660 0 6 b 253 238
nod /dev/vdo15 660 0 6 b 253 239
nod /dev/vdp 660 0 6 b 253 240
nod /dev/vdp1 660 0 6 b 253 241
nod /dev/vdp2 660 0 6 b 253 242
nod /dev/vdp3 660 0 6 b 253 243
nod /dev/vdp4 660 0 6 b 253 244
nod /dev/vdp5 660 0 6 b 253 245
nod /dev/vdp6 660 0 6 b 253 246
nod /dev/vdp7 660 0 6 b 253 247
nod /dev/vdp8 660 0 6 b 253 248
nod /dev/vdp9 660 0 6 b 253 249
nod /dev/vdp10 660 0 6 b 253 250
nod /dev/vdp11 660 0 6 b 253 251
nod /dev/vdp12 660 0 6 b 253 252
nod /dev/vdp13 660 0 6 b 253 253
nod /dev/vdp14 660 0 6 b 253 254
nod /dev/vdp15 660 0 6 b 253 255
EOF
}

function module_parts()
{
	local module
	local full_path_module
	rm -f /tmp/modules.lst
	touch /tmp/modules.lst
	echo "file /modules.lst /tmp/modules.lst 0644 0 0"
	for module in $MODULES
	do
		full_path_module=$(grep "/$module.ko:\|/${module//-/_}.ko:\|/${module//_/-}.ko:" /lib/modules/$KVERSION/modules.dep | cut -d: -f1 | head -n 1)
		echo /modules/$(basename $full_path_module) >> /tmp/modules.lst
		# at some point they descided to not have full paths in deps
		if [[ ! -f $full_path_module ]]
		then
			full_path_module="/lib/modules/$KVERSION/$full_path_module"
		fi
		cat <<-EOF
		file /modules/$(basename $full_path_module) $full_path_module 0644 0 0
		EOF
	done
}

function klibc_parts()
{
	local file
	for file in $(find /usr/lib/klibc/bin/ )
	do
		echo "#file b"
		echo "file /bin/$(basename $file) $file 0755 0 0"
	done
	for file in /usr/lib/klibc/lib/*
	do
		echo "#file i"
		echo "file /lib/$(basename $file) $file 0755 0 0"
	done
}

function busybox_parts()
{
	local file
	echo "file /bin/busybox /sbin/busybox 0755 0 0"
	for file in pivot_root mount switch_root cat chroot cpio dd false gzip halt insmod ln mkdir mknod sh less ls 
	do
		echo "link /bin/$file /bin/busybox 0755 0 0"
	done
}

function raid_parts()
{
	if $USE_RAID || $FORCE_RAID
	then
	cat <<-EOF
file /bin/mdadm /sbin/mdadm.static 0755 0 0
file /etc/mdadm.conf /etc/mdadm.conf 0644 0 0
EOF
	fi
}

function lvm_parts()
{
	if $USE_LVM || $FORCE_LVM
	then
	cat <<-EOF
dir /etc/lvm 0755 0 0
file /etc/lvm/lvm.conf /etc/lvm/lvm.conf 0644 0 0
file /bin/lvm $(which lvm.static) 0755 0 0
EOF
	local link
	for link in lvs pvs vgs vgck lvconvert lvdisplay pvchange pvcreate \
		vgmknodes pvremove pvresize lvmchange lvmdump lvmsadc \
		vgcfgrestore lvmdiskscan pvdisplay lvmsar lvscan vgchange \
		vgcreate pvmove pvscan vgexport vgextend vgimport vgscan \
		vgmerge vgsplit lvchange lvcreate lvextend vgreduce vgrename \
		vgremove vgconvert vgcfgbackup lvreduce lvrename lvremove \
		lvresize vgdisplay 
	do
		echo "link /bin/$link /bin/lvm 0755 0 0"
	done
	echo "file /bin/dmsetup $(which dmsetup.static 2>/dev/null) 0755 0 0"
	fi
}

function crypto_parts()
{
	if $USE_CRYPTO || $FORCE_CRYPTO
	then
	echo "file /crypttab /etc/crypttab 0644 0 0"
	echo "file /bin/cryptsetup /usr/sbin/cryptsetup.static 0755 0 0"
	echo "file /bin/dmsetup $(which dmsetup.static 2>/dev/null) 0755 0 0"
	fi
}

function rec_fill_modules()
{
	local dep_modules
	local module=$1
	local dep_module
	dep_modules=$(grep "/$module.ko:\|/${module//-/_}.ko:\|/${module//_/-}.ko:" /lib/modules/$KVERSION/modules.dep)
	if [[ -z $dep_modules ]]
	then
		echo "# Bahh!!! couldn't find dependent module $module"
		if $BREAK_ON_MISSING
		then
			exit -1
		else
			return 0
		fi
	fi
	dep_modules=$(echo $dep_modules | cut -d: -f2-)
	if ! echo $MODULES | grep -q " $module"
	then
		if [[ $dep_modules ]]
		then
			for dep_module in $dep_modules
			do
				dep_module=$(basename $dep_module)
				rec_fill_modules ${dep_module/.ko}
			done
		fi
		MODULES="${MODULES} $module"
	fi
}

function fill_root_driver()
{
	local module
	# there should be a better way to 'detect' what this is but...
	for module in `cat /etc/linux-initramfs/modules.lst`
	do
		if ! echo $MODULES | grep -q " $module"
		then
			rec_fill_modules ${module}
		fi
	done
}

function fill_root_filesystem()
{
	local filesystem=$(mount | grep ' / ' | tail -n 1 | cut -d' ' -f5)
	rec_fill_modules $filesystem
}

function fill_modules()
{
	if $USE_RAID || $FORCE_RAID
	then
		rec_fill_modules raid0
		rec_fill_modules raid1
		rec_fill_modules raid10
		rec_fill_modules raid5
		rec_fill_modules raid6
		rec_fill_modules raid456
	fi
	if $USE_LVM || $FORCE_LVM
	then
		rec_fill_modules dm-mod
	fi
	if $USE_CRYPTO || $FORCE_CRYPTO
	then
		rec_fill_modules sha256
		rec_fill_modules sha512
		rec_fill_modules aes-i586
		rec_fill_modules aes
		rec_fill_modules dm-crypt
	fi
	fill_root_driver
	fill_root_filesystem
}

function gen_cpio_root()
{
	local line args
	while read line
	do
		args=($line)
		case ${args[0]} in
			link)
				ln ${CPIO_TMP_ROOT}/${args[2]} ${CPIO_TMP_ROOT}/${args[1]}
			;;
			file)
				cat ${args[2]} > ${CPIO_TMP_ROOT}/${args[1]}
				chmod ${args[3]} ${CPIO_TMP_ROOT}/${args[1]}
			;;
			dir)
				mkdir ${CPIO_TMP_ROOT}/${args[1]}
				chmod ${args[2]} ${CPIO_TMP_ROOT}/${args[1]}
			;;
			nod)
				mknod ${CPIO_TMP_ROOT}/${args[1]} ${args[5]} ${args[6]} ${args[7]}
				chmod ${args[2]} ${CPIO_TMP_ROOT}/${args[1]}

			;;
		esac
	done
}

function gen_cpio_image()
{
	pushd $CPIO_TMP_ROOT > /dev/null 2>&1
	find . | cpio --quiet -H newc -o | gzip -c > $INITRD_FILE
	popd > /dev/null 2>&1
	rm -rf $CPIO_TMP_ROOT
}

function check_raid()
{
	if [[ -f /etc/mdadm.conf && -x /sbin/mdadm.static ]]
	then
		USE_RAID=true
	else
		USE_RAID=false
	fi
}

function check_lvm()
{
	LVM_STATIC=$(which lvm.static 2>/dev/null)
	DMSETUP_STATIC=$(which dmsetup.static 2>/dev/null)
	if [[ -f /etc/lvm/lvm.conf && -x $LVM_STATIC && -x $DMSETUP_STATIC ]]
	then
		USE_LVM=true
	else
		USE_LVM=false
	fi
}

function check_crypto()
{
	LVM_STATIC=$(which lvm.static 2>/dev/null)
	DMSETUP_STATIC=$(which dmsetup.static 2>/dev/null)
	if [[ -f /etc/crypttab && -x $LVM_STATIC && -x $DMSETUP_STATIC ]]
	then
		USE_CRYPTO=true
	else
		USE_CRYPTO=false
	fi
}

while [[ $1 ]]
do
	case $1 in
		-v|--version)
			echo "Source Mage GNU/Linux mkinitrd v0.1"
			usage
			exit 0
		;;
		-h|--help)
			usage
			exit 0
		;;
		--enable-raid)
			FORCE_RAID=true
		;;
		--enable-lvm)
			FORCE_LVM=true
		;;
		--enable-crypto)
			FORCE_CRYPTO=true
		;;
		--disable-raid)
			FORCE_RAID=false
		;;
		--disable-lvm)
			FORCE_LVM=false
		;;
		--disable-crypto)
			FORCE_CRYPTO=false
		;;
		-f|--force)
			REMOVE_OLD_INITRD=true
		;;
		--ignore-missing)
			BREAK_ON_MISSING=false
		;;
		-m|--with-module)
			MODULES="${MODULES} ${2}"
			shift
		;;
		-o|--output)
			INITRD_FILE="${2}"
			shift
		;;
		[2-9].*|[1-9][0-9].*)
			KVERSION=$1
		;;
		*)
			echo "Caught a second option that looks like the file"
			usage
			exit 1
		;;

	esac &&
	shift
done

depmod -a $KVERSION
check_raid
check_lvm
check_crypto
fill_modules
(
	linuxrc_pre
	linuxrc_raid
	linuxrc_lvm
	linuxrc_crypto
	linuxrc_pre_kinit
	linuxrc_post
) > /tmp/linuxrc
(
	default_parts
	dev_parts
	dir_parts
	module_parts
	#klibc_parts
	busybox_parts
	raid_parts
	crypto_parts
	lvm_parts
	user_parts	
) | gen_cpio_root
if [[ -f $INITRD_FILE && ! $REMOVE_OLD_INITRD ]]
then
	echo "Refusing to blow away original initrd"
	usage
	exit -1
fi && 
gen_cpio_image

#---------------------------------------------------------------------
##=back
##
##=head1 LICENSE
##
## This software is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
## the Free Software Foundation; either version 2 of the License, or
## (at your option) any later version.
##
## This software is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
## GNU General Public License for more details.
##
## You should have received a copy of the GNU General Public License
## along with this software; if not, write to the Free Software
## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
##
#---------------------------------------------------------------------
