Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0a7a028b03 |
9
Makefile
9
Makefile
@@ -8,16 +8,17 @@
|
|||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
# GNU General Public License for more details.
|
# GNU General Public License for more details.
|
||||||
|
|
||||||
DEPENDS = gawk,cpio,eudev,findutils,kmod,psmisc,sed
|
DEPENDS = coreutils,cpio,eudev,gzip,perl,psmisc,sed,util-linux
|
||||||
ARCH = x86_64
|
ARCH = x86_64
|
||||||
URL =
|
URL =
|
||||||
DESC = This package includes scripts to build an initrd image
|
DESC = This package includes scripts to build an initrd image
|
||||||
SNAPVER = 1
|
SNAPVER = 0
|
||||||
|
|
||||||
ARCHIVE := ''
|
ARCHIVE := ''
|
||||||
SRCDIR := $(PWD)/SRC/mkinitramfs-*
|
SRCDIR := $(PWD)/SRC/mkinitramfs
|
||||||
PATCHDIR := $(PWD)/SRC/patches
|
PATCHDIR := $(PWD)/SRC/patches
|
||||||
VERSION := $(shell echo $(SRCDIR)|egrep -o '\-[0-9].*'|sed 's/^-//')-$(SNAPVER)
|
VERSION := $(shell grep 'VERSION =>' $(SRCDIR)/mkinitramfs| \
|
||||||
|
sed "s/.*=>\s\+'\|'.*//g")-$(SNAPVER)
|
||||||
|
|
||||||
include /usr/share/snap/Makefile.snaplinux
|
include /usr/share/snap/Makefile.snaplinux
|
||||||
|
|
||||||
|
|||||||
26
SNAP/usher
Executable file
26
SNAP/usher
Executable file
@@ -0,0 +1,26 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
case $1 in
|
||||||
|
preinst)
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
postinst)
|
||||||
|
if [ ! -f ${TARGET}/usr/share/mkinitramfs/bins/default ]; then
|
||||||
|
cp ${TARGET}/usr/share/mkinitramfs/default-bins \
|
||||||
|
${TARGET}/usr/share/mkinitramfs/bins/default
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -f ${TARGET}/usr/share/mkinitramfs/mods/default ]; then
|
||||||
|
cp ${TARGET}/usr/share/mkinitramfs/default-mods \
|
||||||
|
${TARGET}/usr/share/mkinitramfs/mods/default
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
prerm)
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
postrm)
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
esac
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
dirs:
|
|
||||||
install -d -m 755 $(DESTDIR)/sbin
|
|
||||||
install -d -m 755 $(DESTDIR)/usr/share/mkinitramfs/modules
|
|
||||||
|
|
||||||
files:
|
|
||||||
install -m 755 sbin/mkinitramfs $(DESTDIR)/sbin/mkinitramfs
|
|
||||||
install -m 755 default-modules \
|
|
||||||
$(DESTDIR)/usr/share/mkinitramfs/default-modules
|
|
||||||
install -m 755 usr/share/mkinitramfs/init.in \
|
|
||||||
$(DESTDIR)/usr/share/mkinitramfs/init.in
|
|
||||||
|
|
||||||
install: dirs files
|
|
||||||
@@ -1,205 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
# This file based in part on the mkinitrafms script for the LFS LiveCD
|
|
||||||
# written by Alexander E. Patrakov and Jeremy Huntwork.
|
|
||||||
|
|
||||||
copy()
|
|
||||||
{
|
|
||||||
local file
|
|
||||||
|
|
||||||
if [ "$2" == "lib" ]; then
|
|
||||||
file=$(PATH=/lib:/usr/lib type -p $1)
|
|
||||||
else
|
|
||||||
file=$(type -p $1)
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -n $file ] ; then
|
|
||||||
cp $file $WDIR/$2
|
|
||||||
else
|
|
||||||
echo "Missing required file: $1 for directory $2"
|
|
||||||
rm -rf $WDIR
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
if [ -z $1 ] ; then
|
|
||||||
KERNEL_VERSION=`uname -r`
|
|
||||||
else
|
|
||||||
KERNEL_VERSION=$1
|
|
||||||
fi
|
|
||||||
|
|
||||||
INITRAMFS_FILE=initrd.img-$KERNEL_VERSION
|
|
||||||
|
|
||||||
if [ -n "$KERNEL_VERSION" ] && [ ! -d "/lib/modules/$1" ] ; then
|
|
||||||
echo "No modules directory named $1"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
printf "Creating $INITRAMFS_FILE...\n"
|
|
||||||
|
|
||||||
binfiles="dmesg sh cat cp dd killall ls mkdir mknod mount"
|
|
||||||
binfiles="$binfiles umount sed sleep ln rm uname"
|
|
||||||
|
|
||||||
# Systemd installs udevadm in /bin. Other udev implementations have it in /sbin
|
|
||||||
if [ -x /bin/udevadm ] ; then binfiles="$binfiles udevadm"; fi
|
|
||||||
|
|
||||||
sbinfiles="modprobe blkid switch_root zfs zpool"
|
|
||||||
|
|
||||||
#Optional files and locations
|
|
||||||
for f in mdadm udevd udevadm; do
|
|
||||||
if [ -x /sbin/$f ] ; then sbinfiles="$sbinfiles $f"; fi
|
|
||||||
done
|
|
||||||
|
|
||||||
unsorted=$(mktemp /tmp/unsorted.XXXXXXXXXX)
|
|
||||||
|
|
||||||
DATADIR=/usr/share/mkinitramfs
|
|
||||||
INITIN=init.in
|
|
||||||
|
|
||||||
# Create a temporrary working directory
|
|
||||||
WDIR=$(mktemp -d /tmp/initrd-work.XXXXXXXXXX)
|
|
||||||
|
|
||||||
# Create base directory structure
|
|
||||||
mkdir -p $WDIR/{bin,dev,lib/firmware,run,sbin,sys,proc}
|
|
||||||
mkdir -p $WDIR/etc/{modprobe.d,udev/rules.d}
|
|
||||||
touch $WDIR/etc/modprobe.d/modprobe.conf
|
|
||||||
cp /etc/modprobe.d/* $WDIR/etc/modprobe.d
|
|
||||||
ln -s lib $WDIR/lib64
|
|
||||||
|
|
||||||
# Create necessary device nodes
|
|
||||||
mknod -m 640 $WDIR/dev/console c 5 1
|
|
||||||
mknod -m 664 $WDIR/dev/null c 1 3
|
|
||||||
|
|
||||||
# Install the udev configuration files
|
|
||||||
if [ -f /etc/udev/udev.conf ]; then
|
|
||||||
cp /etc/udev/udev.conf $WDIR/etc/udev/udev.conf
|
|
||||||
fi
|
|
||||||
|
|
||||||
for file in $(find /etc/udev/rules.d/ -type f) ; do
|
|
||||||
cp $file $WDIR/etc/udev/rules.d
|
|
||||||
done
|
|
||||||
|
|
||||||
# Install any firmware present
|
|
||||||
if [ -d /lib/firmware ]; then
|
|
||||||
cp -a /lib/firmware $WDIR/lib
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Copy the RAID configuration file if present
|
|
||||||
if [ -f /etc/mdadm.conf ] ; then
|
|
||||||
cp /etc/mdadm.conf $WDIR/etc
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Install the init file
|
|
||||||
install -m0755 $DATADIR/$INITIN $WDIR/init
|
|
||||||
|
|
||||||
if [ -n "$KERNEL_VERSION" ] ; then
|
|
||||||
if [ -x /bin/kmod ] ; then
|
|
||||||
binfiles="$binfiles kmod"
|
|
||||||
else
|
|
||||||
binfiles="$binfiles lsmod"
|
|
||||||
sbinfiles="$sbinfiles insmod"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Install basic binaries
|
|
||||||
for f in $binfiles ; do
|
|
||||||
if [ -x /bin/$f ]; then
|
|
||||||
ldd /bin/$f | sed "s/\t//" | cut -d " " -f1 >> $unsorted
|
|
||||||
copy $f bin
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
# Add lvm if present
|
|
||||||
if [ -x /sbin/lvm ] ; then sbinfiles="$sbinfiles lvm dmsetup"; fi
|
|
||||||
|
|
||||||
for f in $sbinfiles ; do
|
|
||||||
if [ -x /sbin/$f ]; then
|
|
||||||
ldd /sbin/$f | sed "s/\t//" | cut -d " " -f1 >> $unsorted
|
|
||||||
copy $f sbin
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
# Add module symlinks if appropriate
|
|
||||||
if [ -n "$KERNEL_VERSION" ] && [ -x /bin/kmod ] ; then
|
|
||||||
ln -s kmod $WDIR/bin/lsmod
|
|
||||||
ln -s kmod $WDIR/bin/insmod
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Add lvm symlinks if appropriate
|
|
||||||
# Also copy the lvm.conf file
|
|
||||||
if [ -x /sbin/lvm ] ; then
|
|
||||||
ln -s lvm $WDIR/sbin/lvchange
|
|
||||||
ln -s lvm $WDIR/sbin/lvrename
|
|
||||||
ln -s lvm $WDIR/sbin/lvextend
|
|
||||||
ln -s lvm $WDIR/sbin/lvcreate
|
|
||||||
ln -s lvm $WDIR/sbin/lvdisplay
|
|
||||||
ln -s lvm $WDIR/sbin/lvscan
|
|
||||||
|
|
||||||
ln -s lvm $WDIR/sbin/pvchange
|
|
||||||
ln -s lvm $WDIR/sbin/pvck
|
|
||||||
ln -s lvm $WDIR/sbin/pvcreate
|
|
||||||
ln -s lvm $WDIR/sbin/pvdisplay
|
|
||||||
ln -s lvm $WDIR/sbin/pvscan
|
|
||||||
|
|
||||||
ln -s lvm $WDIR/sbin/vgchange
|
|
||||||
ln -s lvm $WDIR/sbin/vgcreate
|
|
||||||
ln -s lvm $WDIR/sbin/vgscan
|
|
||||||
ln -s lvm $WDIR/sbin/vgrename
|
|
||||||
ln -s lvm $WDIR/sbin/vgck
|
|
||||||
# Conf file(s)
|
|
||||||
cp -a /etc/lvm $WDIR/etc
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Add mtab symlink for zfs
|
|
||||||
ln -s /proc/mounts $WDIR/etc/mtab
|
|
||||||
|
|
||||||
# Install libraries
|
|
||||||
sort $unsorted | uniq | while read library ; do
|
|
||||||
if [ "$library" == "linux-vdso.so.1" ] ||
|
|
||||||
[ "$library" == "linux-gate.so.1" ]; then
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
|
|
||||||
copy $library lib
|
|
||||||
done
|
|
||||||
|
|
||||||
if [ -d /lib/udev ]; then
|
|
||||||
cp -a /lib/udev $WDIR/lib
|
|
||||||
fi
|
|
||||||
|
|
||||||
#ls -lR $WDIR
|
|
||||||
mkdir -p $WDIR/lib/modules/$KERNEL_VERSION
|
|
||||||
touch $WDIR/lib/modules/$KERNEL_VERSION/modules.{builtin,order}
|
|
||||||
|
|
||||||
# Install kernel modules
|
|
||||||
printf "Copying modules...\n"
|
|
||||||
|
|
||||||
if [ $(find /usr/share/mkinitramfs/modules -type f|wc -l) -gt 0 ]; then
|
|
||||||
for file in /usr/share/mkinitramfs/modules/*; do
|
|
||||||
while read name; do
|
|
||||||
module=`modinfo -k $KERNEL_VERSION -F filename $name 2>/dev/null`
|
|
||||||
|
|
||||||
if [ $? -eq 0 ]; then
|
|
||||||
cp --parents $module $WDIR/;
|
|
||||||
fi
|
|
||||||
done < $file
|
|
||||||
done
|
|
||||||
else
|
|
||||||
while read name; do
|
|
||||||
module=`modinfo -k $KERNEL_VERSION -F filename $name 2>/dev/null`
|
|
||||||
|
|
||||||
if [ $? -eq 0 ]; then
|
|
||||||
cp --parents $module $WDIR/;
|
|
||||||
fi
|
|
||||||
done < /usr/share/mkinitramfs/default-modules
|
|
||||||
fi
|
|
||||||
|
|
||||||
cp /lib/modules/$KERNEL_VERSION/modules.{builtin,order} \
|
|
||||||
$WDIR/lib/modules/$KERNEL_VERSION
|
|
||||||
|
|
||||||
depmod -b $WDIR $KERNEL_VERSION
|
|
||||||
|
|
||||||
printf "Creating gzipped cpio...\n";
|
|
||||||
( cd $WDIR ; find . | cpio -o -H newc --quiet | gzip -9 ) > /boot/$INITRAMFS_FILE
|
|
||||||
|
|
||||||
# Remove the temporary directory and file
|
|
||||||
rm -rf $WDIR $unsorted
|
|
||||||
printf "done.\n"
|
|
||||||
@@ -1,456 +0,0 @@
|
|||||||
3c574_cs
|
|
||||||
3c589_cs
|
|
||||||
3c59x
|
|
||||||
3w-9xxx
|
|
||||||
3w-sas
|
|
||||||
3w-xxxx
|
|
||||||
8139cp
|
|
||||||
8139too
|
|
||||||
8390
|
|
||||||
a100u2w
|
|
||||||
aacraid
|
|
||||||
acard-ahci
|
|
||||||
acenic
|
|
||||||
advansys
|
|
||||||
aha152x_cs
|
|
||||||
ahci
|
|
||||||
aic79xx
|
|
||||||
aic7xxx
|
|
||||||
aic7xxx_old
|
|
||||||
aic94xx
|
|
||||||
alx
|
|
||||||
amd8111e
|
|
||||||
aoe
|
|
||||||
arcmsr
|
|
||||||
ata_generic
|
|
||||||
ata_piix
|
|
||||||
aten
|
|
||||||
atl1
|
|
||||||
atl1c
|
|
||||||
atl1e
|
|
||||||
atl2
|
|
||||||
atp
|
|
||||||
atp870u
|
|
||||||
auth_rpcgss
|
|
||||||
axnet_cs
|
|
||||||
b44
|
|
||||||
be2iscsi
|
|
||||||
be2net
|
|
||||||
bfa
|
|
||||||
bna
|
|
||||||
bnx2
|
|
||||||
bnx2fc
|
|
||||||
bnx2i
|
|
||||||
bnx2x
|
|
||||||
bpck
|
|
||||||
brd
|
|
||||||
broadcom
|
|
||||||
bsd_comp
|
|
||||||
btrfs
|
|
||||||
BusLogic
|
|
||||||
cassini
|
|
||||||
cb710
|
|
||||||
cb710-mmc
|
|
||||||
cciss
|
|
||||||
cdrom
|
|
||||||
ch
|
|
||||||
cicada
|
|
||||||
cnic
|
|
||||||
comm
|
|
||||||
configfs
|
|
||||||
cpqarray
|
|
||||||
crc16
|
|
||||||
crc32c
|
|
||||||
crc7
|
|
||||||
crc-ccitt
|
|
||||||
crc-itu-t
|
|
||||||
crc-t10dif
|
|
||||||
cxgb
|
|
||||||
cxgb3
|
|
||||||
cxgb3i
|
|
||||||
cxgb4
|
|
||||||
cxgb4i
|
|
||||||
cxgb4vf
|
|
||||||
DAC960
|
|
||||||
davicom
|
|
||||||
dc395x
|
|
||||||
dca
|
|
||||||
de2104x
|
|
||||||
de600
|
|
||||||
de620
|
|
||||||
defxx
|
|
||||||
dl2k
|
|
||||||
dmfe
|
|
||||||
dm-log
|
|
||||||
dm-mirror
|
|
||||||
dm-mod
|
|
||||||
dm-region-hash
|
|
||||||
dm-snapshot
|
|
||||||
dmx3191d
|
|
||||||
dnet
|
|
||||||
dpt_i2o
|
|
||||||
drbd
|
|
||||||
dstr
|
|
||||||
dummy
|
|
||||||
e100
|
|
||||||
e1000
|
|
||||||
e1000e
|
|
||||||
eata
|
|
||||||
ehci-hcd
|
|
||||||
enc28j60
|
|
||||||
enclosure
|
|
||||||
enic
|
|
||||||
epat
|
|
||||||
epia
|
|
||||||
epic100
|
|
||||||
eql
|
|
||||||
et1011c
|
|
||||||
ethoc
|
|
||||||
ext2
|
|
||||||
ext3
|
|
||||||
ext4
|
|
||||||
fan
|
|
||||||
fcoe
|
|
||||||
fdomain
|
|
||||||
fdomain_cs
|
|
||||||
fealnx
|
|
||||||
ff-memless
|
|
||||||
firewire-core
|
|
||||||
firewire-ohci
|
|
||||||
firewire-sbp2
|
|
||||||
fit2
|
|
||||||
fit3
|
|
||||||
floppy
|
|
||||||
fmvj18x_cs
|
|
||||||
fnic
|
|
||||||
forcedeth
|
|
||||||
friq
|
|
||||||
frpw
|
|
||||||
fscache
|
|
||||||
fuse
|
|
||||||
gdth
|
|
||||||
gre
|
|
||||||
hamachi
|
|
||||||
hid
|
|
||||||
hid-apple
|
|
||||||
hid-belkin
|
|
||||||
hid-cherry
|
|
||||||
hid-chicony
|
|
||||||
hid-ezkey
|
|
||||||
hid-hyperv
|
|
||||||
hid-keytouch
|
|
||||||
hid-logitech
|
|
||||||
hid-logitech-dj
|
|
||||||
hid-microsoft
|
|
||||||
hid-monterey
|
|
||||||
hid-ortek
|
|
||||||
hid-primax
|
|
||||||
hid-prodikeys
|
|
||||||
hid-roccat
|
|
||||||
hid-roccat-arvo
|
|
||||||
hid-roccat-common
|
|
||||||
hid-samsung
|
|
||||||
hid-sjoy
|
|
||||||
hid-sunplus
|
|
||||||
hid-topseed
|
|
||||||
hp100
|
|
||||||
hpsa
|
|
||||||
hptiop
|
|
||||||
hv_netvsc
|
|
||||||
hv_storvsc
|
|
||||||
hv_vmbus
|
|
||||||
i2c-algo-bit
|
|
||||||
i2c-core
|
|
||||||
i2o_block
|
|
||||||
i2o_core
|
|
||||||
icplus
|
|
||||||
ifb
|
|
||||||
igb
|
|
||||||
igbvf
|
|
||||||
imm
|
|
||||||
inet_lro
|
|
||||||
initio
|
|
||||||
ipg
|
|
||||||
ipr
|
|
||||||
ips
|
|
||||||
isci
|
|
||||||
iscsi_boot_sysfs
|
|
||||||
iscsi_tcp
|
|
||||||
isofs
|
|
||||||
ixgb
|
|
||||||
ixgbe
|
|
||||||
ixgbevf
|
|
||||||
jbd
|
|
||||||
jbd2
|
|
||||||
jfs
|
|
||||||
jme
|
|
||||||
kbic
|
|
||||||
ks8842
|
|
||||||
ks8851
|
|
||||||
ks8851_mll
|
|
||||||
ksz884x
|
|
||||||
ktti
|
|
||||||
libahci
|
|
||||||
libata
|
|
||||||
libceph
|
|
||||||
libcrc32c
|
|
||||||
libcxgbi
|
|
||||||
libfc
|
|
||||||
libfcoe
|
|
||||||
libiscsi
|
|
||||||
libiscsi_tcp
|
|
||||||
libosd
|
|
||||||
libphy
|
|
||||||
libsas
|
|
||||||
libsrp
|
|
||||||
lockd
|
|
||||||
loop
|
|
||||||
lpfc
|
|
||||||
lru_cache
|
|
||||||
lxt
|
|
||||||
macvlan
|
|
||||||
macvtap
|
|
||||||
marvell
|
|
||||||
mbcache
|
|
||||||
mdio
|
|
||||||
mdio-bitbang
|
|
||||||
megaraid
|
|
||||||
megaraid_mbox
|
|
||||||
megaraid_mm
|
|
||||||
megaraid_sas
|
|
||||||
micrel
|
|
||||||
mii
|
|
||||||
mlx4_core
|
|
||||||
mlx4_en
|
|
||||||
mmc_block
|
|
||||||
mmc_core
|
|
||||||
mmc_spi
|
|
||||||
mpt2sas
|
|
||||||
mptbase
|
|
||||||
mptfc
|
|
||||||
mptsas
|
|
||||||
mptscsih
|
|
||||||
mptspi
|
|
||||||
mtd
|
|
||||||
mvsas
|
|
||||||
mvumi
|
|
||||||
myri10ge
|
|
||||||
national
|
|
||||||
natsemi
|
|
||||||
nbd
|
|
||||||
ne2k-pci
|
|
||||||
netconsole
|
|
||||||
netxen_nic
|
|
||||||
nfs
|
|
||||||
nfs_acl
|
|
||||||
niu
|
|
||||||
nmclan_cs
|
|
||||||
ns83820
|
|
||||||
ohci-hcd
|
|
||||||
on20
|
|
||||||
on26
|
|
||||||
osd
|
|
||||||
osdblk
|
|
||||||
osst
|
|
||||||
paride
|
|
||||||
parport
|
|
||||||
pata_ali
|
|
||||||
pata_amd
|
|
||||||
pata_arasan_cf
|
|
||||||
pata_artop
|
|
||||||
pata_atiixp
|
|
||||||
pata_atp867x
|
|
||||||
pata_cmd64x
|
|
||||||
pata_cs5520
|
|
||||||
pata_cs5530
|
|
||||||
pata_efar
|
|
||||||
pata_hpt366
|
|
||||||
pata_hpt37x
|
|
||||||
pata_it8213
|
|
||||||
pata_it821x
|
|
||||||
pata_jmicron
|
|
||||||
pata_marvell
|
|
||||||
pata_mpiix
|
|
||||||
pata_netcell
|
|
||||||
pata_ninja32
|
|
||||||
pata_ns87410
|
|
||||||
pata_ns87415
|
|
||||||
pata_oldpiix
|
|
||||||
pata_pcmcia
|
|
||||||
pata_pdc2027x
|
|
||||||
pata_pdc202xx_old
|
|
||||||
pata_piccolo
|
|
||||||
pata_rdc
|
|
||||||
pata_rz1000
|
|
||||||
pata_sc1200
|
|
||||||
pata_sch
|
|
||||||
pata_serverworks
|
|
||||||
pata_sil680
|
|
||||||
pata_sis
|
|
||||||
pata_triflex
|
|
||||||
pata_via
|
|
||||||
pcd
|
|
||||||
pch_gbe
|
|
||||||
pcmcia
|
|
||||||
pcmcia_core
|
|
||||||
pcnet32
|
|
||||||
pcnet_cs
|
|
||||||
pd
|
|
||||||
pdc_adma
|
|
||||||
pf
|
|
||||||
pg
|
|
||||||
pktcdvd
|
|
||||||
plip
|
|
||||||
pm8001
|
|
||||||
pmcraid
|
|
||||||
ppa
|
|
||||||
ppp_async
|
|
||||||
ppp_deflate
|
|
||||||
ppp_generic
|
|
||||||
ppp_mppe
|
|
||||||
pppoe
|
|
||||||
pppox
|
|
||||||
ppp_synctty
|
|
||||||
pptp
|
|
||||||
pt
|
|
||||||
qla1280
|
|
||||||
qla2xxx
|
|
||||||
qla3xxx
|
|
||||||
qla4xxx
|
|
||||||
qlcnic
|
|
||||||
qlge
|
|
||||||
qlogic_cs
|
|
||||||
qlogicfas408
|
|
||||||
qsemi
|
|
||||||
r6040
|
|
||||||
r8169
|
|
||||||
raid_class
|
|
||||||
rbd
|
|
||||||
realtek
|
|
||||||
reiserfs
|
|
||||||
rrunner
|
|
||||||
s2io
|
|
||||||
sata_mv
|
|
||||||
sata_nv
|
|
||||||
sata_promise
|
|
||||||
sata_qstor
|
|
||||||
sata_sil
|
|
||||||
sata_sil24
|
|
||||||
sata_sis
|
|
||||||
sata_svw
|
|
||||||
sata_sx4
|
|
||||||
sata_uli
|
|
||||||
sata_via
|
|
||||||
sata_vsc
|
|
||||||
sb1000
|
|
||||||
sc92031
|
|
||||||
scsi_debug
|
|
||||||
scsi_dh
|
|
||||||
scsi_dh_alua
|
|
||||||
scsi_dh_emc
|
|
||||||
scsi_dh_hp_sw
|
|
||||||
scsi_dh_rdac
|
|
||||||
scsi_mod
|
|
||||||
scsi_tgt
|
|
||||||
scsi_transport_fc
|
|
||||||
scsi_transport_iscsi
|
|
||||||
scsi_transport_sas
|
|
||||||
scsi_transport_spi
|
|
||||||
scsi_transport_srp
|
|
||||||
scsi_wait_scan
|
|
||||||
sdhci
|
|
||||||
sdhci-pci
|
|
||||||
sdhci-pltfm
|
|
||||||
sdio_uart
|
|
||||||
sd_mod
|
|
||||||
sdricoh_cs
|
|
||||||
ses
|
|
||||||
sfc
|
|
||||||
sg
|
|
||||||
sis190
|
|
||||||
sis900
|
|
||||||
skfp
|
|
||||||
skge
|
|
||||||
sky2
|
|
||||||
slhc
|
|
||||||
slip
|
|
||||||
smc91c92_cs
|
|
||||||
smsc
|
|
||||||
smsc9420
|
|
||||||
snd-seq-device
|
|
||||||
soundcore
|
|
||||||
sr_mod
|
|
||||||
ssb
|
|
||||||
st
|
|
||||||
starfire
|
|
||||||
ste10Xp
|
|
||||||
stex
|
|
||||||
sundance
|
|
||||||
sungem
|
|
||||||
sungem_phy
|
|
||||||
sunhme
|
|
||||||
sunrpc
|
|
||||||
sx8
|
|
||||||
sym53c500_cs
|
|
||||||
sym53c8xx
|
|
||||||
tehuti
|
|
||||||
tg3
|
|
||||||
thermal
|
|
||||||
thermal_sys
|
|
||||||
tifm_core
|
|
||||||
tifm_sd
|
|
||||||
tlan
|
|
||||||
tmscsim
|
|
||||||
tulip
|
|
||||||
tun
|
|
||||||
typhoon
|
|
||||||
udf
|
|
||||||
uhci-hcd
|
|
||||||
uio
|
|
||||||
uli526x
|
|
||||||
umem
|
|
||||||
ums-alauda
|
|
||||||
ums-cypress
|
|
||||||
ums-datafab
|
|
||||||
ums-eneub6250
|
|
||||||
ums-freecom
|
|
||||||
ums-isd200
|
|
||||||
ums-jumpshot
|
|
||||||
ums-karma
|
|
||||||
ums-onetouch
|
|
||||||
ums-realtek
|
|
||||||
ums-sddr09
|
|
||||||
ums-sddr55
|
|
||||||
ums-usbat
|
|
||||||
usb-common
|
|
||||||
usbcore
|
|
||||||
usbhid
|
|
||||||
usb-storage
|
|
||||||
ushc
|
|
||||||
veth
|
|
||||||
via-rhine
|
|
||||||
via-sdmmc
|
|
||||||
via-velocity
|
|
||||||
virtio
|
|
||||||
virtio_blk
|
|
||||||
virtio_net
|
|
||||||
virtio_pci
|
|
||||||
virtio_ring
|
|
||||||
virtio_scsi
|
|
||||||
vitesse
|
|
||||||
vmw_pvscsi
|
|
||||||
vmxnet3
|
|
||||||
vub300
|
|
||||||
vxge
|
|
||||||
wbsd
|
|
||||||
winbond-840
|
|
||||||
xen-blkback
|
|
||||||
xen-blkfront
|
|
||||||
xen-netback
|
|
||||||
xen-netfront
|
|
||||||
xfs
|
|
||||||
xhci-hcd
|
|
||||||
xirc2ps_cs
|
|
||||||
xircom_cb
|
|
||||||
yellowfin
|
|
||||||
zlib_deflate
|
|
||||||
@@ -1,108 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
PATH=/bin:/usr/bin:/sbin:/usr/sbin
|
|
||||||
export PATH
|
|
||||||
|
|
||||||
problem()
|
|
||||||
{
|
|
||||||
printf "Encountered a problem!\n\nDropping you to a shell.\n\n"
|
|
||||||
sh
|
|
||||||
}
|
|
||||||
|
|
||||||
no_device()
|
|
||||||
{
|
|
||||||
printf "The device %s, which is supposed to contain the\n" $1
|
|
||||||
printf "root file system, does not exist.\n"
|
|
||||||
printf "Please fix this problem and exit this shell.\n\n"
|
|
||||||
}
|
|
||||||
|
|
||||||
no_mount()
|
|
||||||
{
|
|
||||||
printf "Could not mount device %s\n" $1
|
|
||||||
printf "Sleeping forever. Please reboot and fix the kernel command line.\n\n"
|
|
||||||
printf "Maybe the device is formatted with an unsupported file system?\n\n"
|
|
||||||
printf "Or maybe filesystem type autodetection went wrong, in which case\n"
|
|
||||||
printf "you should add the rootfstype=... parameter to the kernel command line.\n\n"
|
|
||||||
printf "Available partitions:\n"
|
|
||||||
}
|
|
||||||
|
|
||||||
do_mount_root()
|
|
||||||
{
|
|
||||||
mkdir /.root
|
|
||||||
[ -n "$rootflags" ] && rootflags="$rootflags,"
|
|
||||||
rootflags="$rootflags$ro"
|
|
||||||
|
|
||||||
case "$root" in
|
|
||||||
/dev/* ) device=$root ;;
|
|
||||||
UUID=* ) eval $root; device="/dev/disk/by-uuid/$UUID" ;;
|
|
||||||
LABEL=*) eval $root; device="/dev/disk/by-label/$LABEL" ;;
|
|
||||||
ZFS=*) eval $root; device="$ZFS"; zfs=true; rootfstype=zfs ;;
|
|
||||||
"" ) echo "No root device specified." ; problem ;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
if [ "$zfs" == 'true' ] ; then
|
|
||||||
zpool import -N -a
|
|
||||||
else
|
|
||||||
while [ ! -b "$device" ] ; do
|
|
||||||
no_device $device
|
|
||||||
problem
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
|
|
||||||
if ! mount -n -t "$rootfstype" -o "$rootflags" "$device" /.root ; then
|
|
||||||
no_mount $device
|
|
||||||
cat /proc/partitions
|
|
||||||
while true ; do sleep 10000 ; done
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
init=/sbin/init
|
|
||||||
root=
|
|
||||||
rootdelay=
|
|
||||||
rootfstype=auto
|
|
||||||
ro="ro"
|
|
||||||
rootflags=
|
|
||||||
device=
|
|
||||||
|
|
||||||
mount -n -t devtmpfs devtmpfs /dev
|
|
||||||
mount -n -t proc proc /proc
|
|
||||||
mount -n -t sysfs sysfs /sys
|
|
||||||
mount -n -t tmpfs tmpfs /run
|
|
||||||
|
|
||||||
read -r cmdline < /proc/cmdline
|
|
||||||
|
|
||||||
for param in $cmdline ; do
|
|
||||||
case $param in
|
|
||||||
init=* ) init=${param#init=} ;;
|
|
||||||
root=* ) root=${param#root=} ;;
|
|
||||||
rootdelay=* ) rootdelay=${param#rootdelay=} ;;
|
|
||||||
rootfstype=*) rootfstype=${param#rootfstype=} ;;
|
|
||||||
rootflags=* ) rootflags=${param#rootflags=} ;;
|
|
||||||
ro ) ro="ro" ;;
|
|
||||||
rw ) ro="rw" ;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
# udevd location depends on version
|
|
||||||
if [ -x /sbin/udevd ]; then
|
|
||||||
UDEVD=/sbin/udevd
|
|
||||||
elif [ -x /lib/udev/udevd ]; then
|
|
||||||
UDEVD=/lib/udev/udevd
|
|
||||||
else
|
|
||||||
echo "Cannot find udevd"
|
|
||||||
problem
|
|
||||||
fi
|
|
||||||
|
|
||||||
${UDEVD} --daemon --resolve-names=never
|
|
||||||
udevadm trigger
|
|
||||||
udevadm settle
|
|
||||||
|
|
||||||
if [ -f /etc/mdadm.conf ] ; then mdadm -As ; fi
|
|
||||||
if [ -x /sbin/vgchange ] ; then /sbin/vgchange -a y > /dev/null ; fi
|
|
||||||
if [ -n "$rootdelay" ] ; then sleep "$rootdelay" ; fi
|
|
||||||
|
|
||||||
do_mount_root
|
|
||||||
|
|
||||||
killall -w ${UDEVD##*/}
|
|
||||||
|
|
||||||
exec switch_root /.root "$init" "$@"
|
|
||||||
14
SRC/mkinitramfs/Makefile
Normal file
14
SRC/mkinitramfs/Makefile
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
dirs:
|
||||||
|
install -d -m 755 $(DESTDIR)/sbin
|
||||||
|
install -d -m 755 $(DESTDIR)/usr/share/mkinitramfs/mods
|
||||||
|
install -d -m 755 $(DESTDIR)/usr/share/mkinitramfs/bins
|
||||||
|
|
||||||
|
files:
|
||||||
|
install -m 755 mkinitramfs $(DESTDIR)/sbin/mkinitramfs
|
||||||
|
install -m 644 default-bins \
|
||||||
|
$(DESTDIR)/usr/share/mkinitramfs/default-bins
|
||||||
|
install -m 644 default-mods \
|
||||||
|
$(DESTDIR)/usr/share/mkinitramfs/default-mods
|
||||||
|
install -m 755 init $(DESTDIR)/usr/share/mkinitramfs/init
|
||||||
|
|
||||||
|
install: dirs files
|
||||||
24
SRC/mkinitramfs/default-bins
Normal file
24
SRC/mkinitramfs/default-bins
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
/bin/cat
|
||||||
|
/bin/cp
|
||||||
|
/bin/dd
|
||||||
|
/bin/dmesg
|
||||||
|
/bin/killall
|
||||||
|
/bin/kmod
|
||||||
|
/bin/ln
|
||||||
|
/bin/ls
|
||||||
|
/bin/mkdir
|
||||||
|
/bin/mknod
|
||||||
|
/bin/mount
|
||||||
|
/bin/rm
|
||||||
|
/bin/sed
|
||||||
|
/bin/sh
|
||||||
|
/bin/sleep
|
||||||
|
/bin/umount
|
||||||
|
/bin/uname
|
||||||
|
/sbin/blkid
|
||||||
|
/sbin/insmod
|
||||||
|
/sbin/lsmod
|
||||||
|
/sbin/modprobe
|
||||||
|
/sbin/switch_root
|
||||||
|
/sbin/udevadm
|
||||||
|
/sbin/udevd
|
||||||
92
SRC/mkinitramfs/init
Executable file
92
SRC/mkinitramfs/init
Executable file
@@ -0,0 +1,92 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
PATH=/bin:/sbin
|
||||||
|
export PATH
|
||||||
|
|
||||||
|
error() {
|
||||||
|
echo "ERROR: $@"
|
||||||
|
echo "Dropping to shell"
|
||||||
|
echo
|
||||||
|
sh
|
||||||
|
}
|
||||||
|
|
||||||
|
init=/sbin/init
|
||||||
|
root=
|
||||||
|
rootdelay=
|
||||||
|
rootfstype=auto
|
||||||
|
rorw="ro"
|
||||||
|
rootflags=
|
||||||
|
rootdev=
|
||||||
|
|
||||||
|
mount -n -t devtmpfs devtmpfs /dev
|
||||||
|
mount -n -t proc proc /proc
|
||||||
|
mount -n -t sysfs sysfs /sys
|
||||||
|
mount -n -t tmpfs tmpfs /run
|
||||||
|
|
||||||
|
read -r cmdline < /proc/cmdline
|
||||||
|
|
||||||
|
for param in $cmdline ; do
|
||||||
|
case $param in
|
||||||
|
init=*)
|
||||||
|
init=${param#init=}
|
||||||
|
;;
|
||||||
|
root=*)
|
||||||
|
root=${param#root=}
|
||||||
|
;;
|
||||||
|
rootdelay=*)
|
||||||
|
rootdelay=${param#rootdelay=}
|
||||||
|
;;
|
||||||
|
rootfstype=*)
|
||||||
|
rootfstype=${param#rootfstype=}
|
||||||
|
;;
|
||||||
|
rootflags=*)
|
||||||
|
rootflags=${param#rootflags=}
|
||||||
|
;;
|
||||||
|
rw)
|
||||||
|
rorw="rw"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
case "$root" in
|
||||||
|
/dev/*)
|
||||||
|
rootdev=$root
|
||||||
|
;;
|
||||||
|
UUID=*)
|
||||||
|
eval $root
|
||||||
|
rootdev="/dev/disk/by-uuid/$UUID"
|
||||||
|
;;
|
||||||
|
LABEL=*)
|
||||||
|
eval $root
|
||||||
|
rootdev="/dev/disk/by-label/$LABEL"
|
||||||
|
;;
|
||||||
|
ZFS=*)
|
||||||
|
eval $root
|
||||||
|
zfs=true
|
||||||
|
rootdev="$ZFS"
|
||||||
|
rootfstype=zfs
|
||||||
|
;;
|
||||||
|
"")
|
||||||
|
error "No root device found"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
/sbin/udevd --daemon --resolve-names=never
|
||||||
|
udevadm trigger
|
||||||
|
udevadm settle
|
||||||
|
|
||||||
|
[ -f /etc/mdadm.conf ] && mdadm -As
|
||||||
|
[ -x /sbin/vgchange ] && /sbin/vgchange --sysinit -a y
|
||||||
|
[ -n "$zfs" ] && zpool import rpool -N || error "Failed importing rpool"
|
||||||
|
[ -n "$rootdelay" ] && sleep "$rootdelay"
|
||||||
|
[ -n "$rootflags" ] && rootflags="$rootflags,$rorw" || rootflags="$rorw"
|
||||||
|
|
||||||
|
mkdir /.root
|
||||||
|
|
||||||
|
if ! mount -n -t "$rootfstype" -o "$rootflags" "$rootdev" /.root ; then
|
||||||
|
error "Failed to mount root filesystem"
|
||||||
|
fi
|
||||||
|
|
||||||
|
killall -w udevd
|
||||||
|
|
||||||
|
exec switch_root /.root "$init" "$@"
|
||||||
246
SRC/mkinitramfs/mkinitramfs
Executable file
246
SRC/mkinitramfs/mkinitramfs
Executable file
@@ -0,0 +1,246 @@
|
|||||||
|
#!/usr/bin/perl
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
|
||||||
|
use POSIX qw( uname );
|
||||||
|
use Data::Dumper;
|
||||||
|
|
||||||
|
use constant VERSION => '0.4';
|
||||||
|
|
||||||
|
sub build {
|
||||||
|
my $kernel = shift;
|
||||||
|
my $bins = shift;
|
||||||
|
my $mods = shift;
|
||||||
|
my $libs = shift;
|
||||||
|
my $tmpdir = '/tmp/initrd-' . randstr();
|
||||||
|
|
||||||
|
mkdir( $tmpdir, 0700 ) || die( "mkdir(): $tmpdir: $!" );
|
||||||
|
|
||||||
|
foreach ( qw( bin dev etc etc/modprobe.d etc/udev etc/udev/rules.d
|
||||||
|
lib proc run sys ) ) {
|
||||||
|
mkdir( "$tmpdir/$_", 0755 ) || die( "mkdir(): $tmpdir/$_: $!" );
|
||||||
|
}
|
||||||
|
|
||||||
|
symlink( 'lib', "$tmpdir/lib64" ) ||
|
||||||
|
die( "symlynk(): $tmpdir/lib64: $!" );
|
||||||
|
symlink( '/proc/mounts', "$tmpdir/etc/mtab" ) ||
|
||||||
|
die( "symlynk(): $tmpdir/etc/mtab: $!" );
|
||||||
|
symlink( '/bin', "$tmpdir/sbin" ) ||
|
||||||
|
die( "symlynk(): $tmpdir/sbin: $!" );
|
||||||
|
|
||||||
|
if ( system( "cp -p /usr/share/mkinitramfs/init $tmpdir" ) ) {
|
||||||
|
die( "Failed copying init" );
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ( @$bins ) {
|
||||||
|
if ( system( "cp -p $_ $tmpdir/bin" ) ) {
|
||||||
|
die( "Failed copying $_\n" );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ( @$mods ) {
|
||||||
|
my $file = modinfo( $_, $kernel->{'version'} ) || next;
|
||||||
|
my @patharr = split( '/', $file );
|
||||||
|
my $path;
|
||||||
|
|
||||||
|
shift( @patharr );
|
||||||
|
pop( @patharr );
|
||||||
|
|
||||||
|
$path = join( '/', @patharr );
|
||||||
|
|
||||||
|
if ( ! -d "$tmpdir/$path" ) {
|
||||||
|
mkdirp( "$tmpdir/$path", 0755 );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( system( "cp -p $file $tmpdir/$path" ) ) {
|
||||||
|
die( "Failed copying $file\n" );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ( @$libs ) {
|
||||||
|
if ( system( "cp -p $_ $tmpdir/lib" ) ) {
|
||||||
|
die( "Failed copying $_\n" );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( system( "cp -rp /lib/firmware $tmpdir/lib/firmware" ) ) {
|
||||||
|
die( "Failed copying firmware\n" );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( system( "cp -p /etc/modprobe.d/* $tmpdir/etc/modprobe.d" ) ) {
|
||||||
|
die( "Failed copying data from modprobe.d\n" );
|
||||||
|
}
|
||||||
|
if ( system( "cp -rp /etc/udev/{rules.d,udev.conf}"
|
||||||
|
. " $tmpdir/etc/udev" ) ) {
|
||||||
|
die( "Failed copying udev data\n" );
|
||||||
|
}
|
||||||
|
if ( system( "cp -rp /lib/udev $tmpdir/lib/udev" ) ) {
|
||||||
|
die( "Failed copying udev lib data\n" );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( system( "mknod -m 640 $tmpdir/dev/console c 5 1" ) ) {
|
||||||
|
die( "Failed to create console device node\n" );
|
||||||
|
}
|
||||||
|
if ( system( "mknod -m 640 $tmpdir/dev/null c 1 3" ) ) {
|
||||||
|
die( "Failed to create null device node\n" );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( system( "cp /lib/modules/$kernel->{'version'}/"
|
||||||
|
. "modules.{builtin,order} $tmpdir/lib/modules/"
|
||||||
|
. "$kernel->{'version'}" ) ) {
|
||||||
|
die( "Failed copying module data\n" );
|
||||||
|
}
|
||||||
|
if ( system( "depmod -b $tmpdir $kernel->{'version'}" ) ) {
|
||||||
|
die( "Failed to execute depmod\n" );
|
||||||
|
}
|
||||||
|
|
||||||
|
print "Building cpio image\n";
|
||||||
|
|
||||||
|
if ( system( "cd $tmpdir && find . | cpio -o -H newc --quiet |"
|
||||||
|
. " gzip -9 > $kernel->{'initrd'}" ) ) {
|
||||||
|
die( "Failed building cpio\n" );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sub getkern {
|
||||||
|
my $dir = '/boot';
|
||||||
|
my $kernels = {};
|
||||||
|
|
||||||
|
opendir( DIR, $dir ) || die( "opendir(): $dir: $!" );
|
||||||
|
|
||||||
|
foreach ( sort( readdir( DIR ) ) ) {
|
||||||
|
if ( $_ =~ /^vmlinuz-(\S+)/ ) {
|
||||||
|
$kernels->{$1}{'version'} = $1;
|
||||||
|
$kernels->{$1}{'path'} = "$dir/$_";
|
||||||
|
$kernels->{$1}{'initrd'} = "$dir/initrd.img-$1";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return( $kernels );
|
||||||
|
}
|
||||||
|
|
||||||
|
sub ldd {
|
||||||
|
my $file = shift;
|
||||||
|
my $libs = [];
|
||||||
|
|
||||||
|
open( LDD, "ldd -v $file|" );
|
||||||
|
|
||||||
|
while ( <LDD> ) {
|
||||||
|
if ( $_ =~ /(\S+)\s+=>\s+(\S+)/ ) {
|
||||||
|
if ( -e $1 ) {
|
||||||
|
push( @$libs, $1 );
|
||||||
|
}
|
||||||
|
|
||||||
|
push( @$libs, $2 );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
close( LDD );
|
||||||
|
|
||||||
|
return( $libs );
|
||||||
|
}
|
||||||
|
|
||||||
|
sub mkdirp{
|
||||||
|
( my $dir = shift ) =~ s/\/^//;
|
||||||
|
my $mode = shift;
|
||||||
|
( my $parent = $dir ) =~ s/\/[^\/]+$//;
|
||||||
|
|
||||||
|
if ( -d $dir ){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
mkdirp( $parent, $mode );
|
||||||
|
|
||||||
|
mkdir( $dir, $mode ) || die( "mkdir(): $dir: $!" );
|
||||||
|
}
|
||||||
|
|
||||||
|
sub modinfo {
|
||||||
|
my $module = shift;
|
||||||
|
my $kernver = shift;
|
||||||
|
my $file;
|
||||||
|
|
||||||
|
open( INFO, "modinfo -k $kernver -F filename $module 2>/dev/null|" ) ||
|
||||||
|
die( "open(): modinfo: $!" );
|
||||||
|
$file = <INFO>;
|
||||||
|
close( INFO );
|
||||||
|
|
||||||
|
if ( $file ) {
|
||||||
|
chomp( $file );
|
||||||
|
}
|
||||||
|
|
||||||
|
return( $file );
|
||||||
|
}
|
||||||
|
|
||||||
|
sub randstr {
|
||||||
|
my $num = shift || 8;
|
||||||
|
my @chars = ('a'..'z','A'..'Z',0..9);
|
||||||
|
my $str = '';
|
||||||
|
|
||||||
|
for ( my $i = 0; $i < $num; $i++ ) {
|
||||||
|
$str .= $chars[rand( $#chars )];
|
||||||
|
}
|
||||||
|
|
||||||
|
return( $str );
|
||||||
|
}
|
||||||
|
|
||||||
|
sub readlines {
|
||||||
|
my $dir = '/usr/share/mkinitramfs/' . shift;
|
||||||
|
my $lines = [];
|
||||||
|
|
||||||
|
opendir( DIR, $dir ) || die( "opendir(): $dir: $!" );
|
||||||
|
|
||||||
|
while ( readdir( DIR ) ) {
|
||||||
|
if ( ! -f "$dir/$_" ) {
|
||||||
|
next;
|
||||||
|
}
|
||||||
|
|
||||||
|
open( FILE, "<$dir/$_" ) || die( "open(): $dir/$_: $!" );
|
||||||
|
|
||||||
|
while ( my $line = <FILE> ) {
|
||||||
|
chomp( $line );
|
||||||
|
|
||||||
|
push( @$lines, $line );
|
||||||
|
}
|
||||||
|
|
||||||
|
close( FILE );
|
||||||
|
}
|
||||||
|
|
||||||
|
close( DIR );
|
||||||
|
|
||||||
|
return( $lines );
|
||||||
|
}
|
||||||
|
|
||||||
|
for ( my $i = 0; $i <= $#ARGV; $i++ ) {
|
||||||
|
if ( $ARGV[$i] eq '-v' || $ARGV[$i] eq '--version' ) {
|
||||||
|
print VERSION . "\n";
|
||||||
|
|
||||||
|
exit 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
my $kernver = $ARGV[0] || ( uname() )[2];
|
||||||
|
my $kernels = getkern();
|
||||||
|
my $bins = readlines( 'bins' );
|
||||||
|
my $mods = readlines( 'mods' );
|
||||||
|
my $libs = [];
|
||||||
|
|
||||||
|
foreach my $bin ( @$bins ) {
|
||||||
|
my $ldd = ldd( $bin );
|
||||||
|
|
||||||
|
foreach my $lib ( @$ldd ) {
|
||||||
|
if ( ! grep( $_ eq $lib, @$libs ) ) {
|
||||||
|
push( @$libs, $lib );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( ! $kernels->{$kernver} ) {
|
||||||
|
print STDERR "Unable to locate kernel version $kernver\n";
|
||||||
|
|
||||||
|
exit 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
print "Generating $kernels->{$kernver}{'initrd'}\n";
|
||||||
|
build( $kernels->{$kernver}, $bins, $mods, $libs );
|
||||||
|
print "Done\n";
|
||||||
Reference in New Issue
Block a user