Cleaned up Makefile and hopefully made it more modular. Added preinstall

and postinstall scripts for additional software
This commit is contained in:
Albert Hopkins 2010-07-10 14:04:04 -04:00
parent d500b91164
commit 8a7b5f1700
3 changed files with 73 additions and 52 deletions

119
Makefile
View File

@ -1,5 +1,5 @@
HOSTNAME=gstable HOSTNAME=gentoo
RAW_IMAGE=$(HOSTNAME).img RAW_IMAGE=$(HOSTNAME).img
QCOW_IMAGE=$(HOSTNAME).qcow QCOW_IMAGE=$(HOSTNAME).qcow
VMDK_IMAGE=$(HOSTNAME).vmdk VMDK_IMAGE=$(HOSTNAME).vmdk
@ -20,7 +20,7 @@ USEPKG=--usepkg --binpkg-respect-use=y
PARTED=/usr/sbin/parted PARTED=/usr/sbin/parted
PORTAGE=/portage PORTAGE=/portage
DISTFILES=/var/portage/distfiles DISTFILES=/var/portage/distfiles
STAGE3=ftp://ftp.osuosl.org/pub/gentoo/releases/$(ARCH)/autobuilds/current-stage3/stage3-$(ARCH)-*.tar.bz2 STAGE3=ftp://ftp.osuosl.org/pub/gentoo/releases/$(ARCH)/autobuilds/current-stage3/stage3-$(ARCH)-*.tar.bz2
KERNEL=gentoo-sources KERNEL=gentoo-sources
@ -33,54 +33,74 @@ partitions: parted $(RAW_IMAGE)
$(PARTED) -s -a optimal $(RAW_IMAGE) mklabel msdos $(PARTED) -s -a optimal $(RAW_IMAGE) mklabel msdos
$(PARTED) -s -a optimal $(RAW_IMAGE) mkpart primary ext4 0 $(DISK_SIZE) $(PARTED) -s -a optimal $(RAW_IMAGE) mkpart primary ext4 0 $(DISK_SIZE)
$(PARTED) -s -a optimal $(RAW_IMAGE) set 1 boot on $(PARTED) -s -a optimal $(RAW_IMAGE) set 1 boot on
qemu-nbd -c /dev/nbd1 $(RAW_IMAGE)
sleep 3
mkfs.ext4 /dev/nbd1p1
touch partitions touch partitions
parted: parted:
emerge -n1 $(USEPKG) parted emerge -n1 $(USEPKG) parted
touch parted touch parted
preproot: stage3 $(CHROOT):
cp -L /etc/resolv.conf $(CHROOT)/etc/ mkdir -p $(CHROOT)
mkdir -p $(CHROOT)/usr/portage
if [ ! -e preproot ] ; then \ mounts: $(CHROOT) stage3
if [ ! -e mounts ] ; then \
mount -t proc none $(CHROOT)/proc; \ mount -t proc none $(CHROOT)/proc; \
mount -o bind /dev $(CHROOT)/dev; \ mount -o bind /dev $(CHROOT)/dev; \
mount -o bind /var/tmp $(CHROOT)/var/tmp; \ mount -o bind /var/tmp $(CHROOT)/var/tmp; \
fi
touch mounts
portage: stage3
if [ ! -e portage ] ; then \
mkdir -p $(CHROOT)/usr/portage; \
mount -o bind $(PORTAGE) $(CHROOT)/usr/portage; \ mount -o bind $(PORTAGE) $(CHROOT)/usr/portage; \
mkdir -p $(CHROOT)/usr/portage/distfiles; \ mkdir -p $(CHROOT)/usr/portage/distfiles; \
mount -o bind $(DISTFILES) $(CHROOT)/usr/portage/distfiles; \ mount -o bind $(DISTFILES) $(CHROOT)/usr/portage/distfiles ; \
fi fi
chroot $(CHROOT) locale-gen touch portage
touch preproot
preproot: stage3 mounts portage
stage3: make.conf package.use package.keywords locale.gen cp -L /etc/resolv.conf $(CHROOT)/etc/
mkdir -p $(CHROOT) touch preproot
stage3: chroot
if [ ! -e stage3 ] ; then \ if [ ! -e stage3 ] ; then \
wget -c -q -nc $(STAGE3); \ wget -c -q -nc $(STAGE3); \
tar xvjpf stage3-*.tar.bz2 -C $(CHROOT); \ tar xjpf stage3-*.tar.bz2 -C $(CHROOT); \
fi fi
cp make.conf $(CHROOT)/etc/make.conf touch stage3
cp locale.gen $(CHROOT)/etc/locale.gen
mkdir -p $(CHROOT)/etc/portage
cp package.use $(CHROOT)/etc/portage/package.use
cp package.keywords $(CHROOT)/etc/portage/package.keywords
touch stage3
kernel: preproot kernel.config compile_options: make.conf package.use package.keywords locale.gen
chroot $(CHROOT) cp /usr/share/zoneinfo/GMT /etc/localtime cp make.conf $(CHROOT)/etc/make.conf
cp locale.gen $(CHROOT)/etc/locale.gen
chroot $(CHROOT) locale-gen
mkdir -p $(CHROOT)/etc/portage
cp package.use $(CHROOT)/etc/portage/package.use
cp package.keywords $(CHROOT)/etc/portage/package.keywords
touch compile_options
base_system: mounts compile_options
touch base_system
kernel: base_system kernel.config
chroot $(CHROOT) cp /usr/share/zoneinfo/GMT /etc/localtime
chroot $(CHROOT) emerge -N sys-kernel/$(KERNEL) chroot $(CHROOT) emerge -N sys-kernel/$(KERNEL)
cp kernel.config $(CHROOT)/usr/src/linux/.config cp kernel.config $(CHROOT)/usr/src/linux/.config
chroot $(CHROOT) gcc-config 1 chroot $(CHROOT) gcc-config 1
chroot $(CHROOT) make $(MAKEOPTS) -C /usr/src/linux oldconfig chroot $(CHROOT) make $(MAKEOPTS) -C /usr/src/linux oldconfig
chroot $(CHROOT) make $(MAKEOPTS) -C /usr/src/linux chroot $(CHROOT) make $(MAKEOPTS) -C /usr/src/linux
chroot $(CHROOT) make $(MAKEOPTS) -C /usr/src/linux modules_install chroot $(CHROOT) make $(MAKEOPTS) -C /usr/src/linux modules_install
chroot $(CHROOT) make $(MAKEOPTS) -C /usr/src/linux install chroot $(CHROOT) make $(MAKEOPTS) -C /usr/src/linux install
cd $(CHROOT)/boot ; \ cd $(CHROOT)/boot ; \
k=`/bin/ls -1 --sort=time vmlinuz-*|head -n 1` ; \ k=`/bin/ls -1 --sort=time vmlinuz-*|head -n 1` ; \
ln -nsf $$k vmlinuz ln -nsf $$k vmlinuz
touch kernel touch kernel
sysconfig: preproot fstab sysconfig: preproot fstab
cp fstab $(CHROOT)/etc/fstab cp fstab $(CHROOT)/etc/fstab
if [ "$(VIRTIO)" == "YES" ] ; then \ if [ "$(VIRTIO)" == "YES" ] ; then \
sed -i 's/sda/vda/' $(CHROOT)/etc/fstab; \ sed -i 's/sda/vda/' $(CHROOT)/etc/fstab; \
@ -92,51 +112,46 @@ sysconfig: preproot fstab
echo 'config_eth0=( "dhcp" )' > $(CHROOT)/etc/conf.d/net echo 'config_eth0=( "dhcp" )' > $(CHROOT)/etc/conf.d/net
chroot $(CHROOT) rc-update add net.eth0 default chroot $(CHROOT) rc-update add net.eth0 default
echo "127.0.0.1 $(HOSTNAME) localhost" > $(CHROOT)/etc/hosts echo "127.0.0.1 $(HOSTNAME) localhost" > $(CHROOT)/etc/hosts
chroot $(CHROOT) passwd -d root
chroot $(CHROOT) passwd -e root
touch sysconfig touch sysconfig
systools: sysconfig world etc-update.conf systools: sysconfig compile_options
chroot $(CHROOT) emerge -n $(USEPKG) syslog-ng chroot $(CHROOT) emerge -n $(USEPKG) app-admin/syslog-ng
chroot $(CHROOT) rc-update add syslog-ng default chroot $(CHROOT) rc-update add syslog-ng default
chroot $(CHROOT) emerge -DN $(USEPKG) system chroot $(CHROOT) emerge -n $(USEPKG) net-misc/dhcpcd
chroot $(CHROOT) emerge -Nn $(USEPKG) `cat world`
#chroot $(CHROOT) emerge -DuN $(USEPKG) world
chroot $(CHROOT) emerge --depclean --with-bdeps=n
chroot $(CHROOT) emerge -1n app-portage/gentoolkit
cp etc-update.conf $(CHROOT)/etc/
chroot $(CHROOT) revdep-rebuild -i
chroot $(CHROOT) etc-update
chroot $(CHROOT) emerge -C gentoolkit
touch systools touch systools
grub: preproot grub.conf kernel grub: systools grub.conf kernel
chroot $(CHROOT) emerge -nN $(USEPKG) sys-boot/grub chroot $(CHROOT) emerge -nN $(USEPKG) sys-boot/grub
cp grub.conf $(CHROOT)/boot/grub/grub.conf cp grub.conf $(CHROOT)/boot/grub/grub.conf
if [ "$(VIRTIO)" == "YES" ] ; then \ if [ "$(VIRTIO)" == "YES" ] ; then \
sed -i 's/sda/vda/' $(CHROOT)/boot/grub/grub.conf ; \ sed -i 's/sda/vda/' $(CHROOT)/boot/grub/grub.conf ; \
fi fi
touch grub touch grub
software: systools issue critical software: systools issue etc-update.conf critical world preinstall postinstall
./preinstall "$(CHROOT)"
chroot $(CHROOT) emerge -DNn $(USEPKG) `cat world`
chroot $(CHROOT) emerge -DN $(USEPKG) system
chroot $(CHROOT) emerge -1n app-portage/gentoolkit
chroot $(CHROOT) revdep-rebuild -i
cp issue $(CHROOT)/etc/issue cp issue $(CHROOT)/etc/issue
cp etc-update.conf $(CHROOT)/etc/
chroot $(CHROOT) etc-update
chroot $(CHROOT) emerge --depclean --with-bdeps=n chroot $(CHROOT) emerge --depclean --with-bdeps=n
chroot $(CHROOT) gcc-config 1 chroot $(CHROOT) gcc-config 1
chroot $(CHROOT) passwd -d root ./postinstall "$(CHROOT)"
chroot $(CHROOT) passwd -e root
if [ "$(PRUNE_CRITICAL)" = "YES" ] ; then \ if [ "$(PRUNE_CRITICAL)" = "YES" ] ; then \
chroot $(CHROOT) emerge -C `cat critical` ; \ chroot $(CHROOT) emerge -C `cat critical` ; \
fi fi
touch software touch software
device-map: $(RAW_IMAGE) device-map: $(RAW_IMAGE)
echo '(hd0) ' $(RAW_IMAGE) > device-map echo '(hd0) ' $(RAW_IMAGE) > device-map
image: $(RAW_IMAGE) grub partitions device-map grub.shell systools software
image: $(RAW_IMAGE) partitions systools grub software device-map grub.shell
mkdir -p loop mkdir -p loop
qemu-nbd -c /dev/nbd1 $(RAW_IMAGE)
sleep 3
mkfs.ext4 /dev/nbd1p1
mount /dev/nbd1p1 loop/ mount /dev/nbd1p1 loop/
mkdir -p gentoo mkdir -p gentoo
mount -o bind $(CHROOT) gentoo mount -o bind $(CHROOT) gentoo
@ -170,11 +185,11 @@ $(VMDK_IMAGE): $(RAW_IMAGE) image
vmdk: $(VMDK_IMAGE) vmdk: $(VMDK_IMAGE)
.PHONY: qcow vmdk clean .PHONY: qcow vmdk clean
clean: clean:
umount $(CHROOT)/usr/portage/distfiles $(CHROOT)/usr/portage $(CHROOT)/var/tmp $(CHROOT)/dev $(CHROOT)/proc || true umount $(CHROOT)/usr/portage/distfiles $(CHROOT)/usr/portage $(CHROOT)/var/tmp $(CHROOT)/dev $(CHROOT)/proc || true
rm -f mounts compile_options base_system portage
rm -f parted grub stage3 software preproot sysconfig systools image kernel partitions device-map rm -f parted grub stage3 software preproot sysconfig systools image kernel partitions device-map
rm -rf loop rm -rf loop
rm -rf gentoo rm -rf gentoo

3
postinstall Executable file
View File

@ -0,0 +1,3 @@
#!/bin/sh
CHROOT="$1"

3
preinstall Executable file
View File

@ -0,0 +1,3 @@
#!/bin/sh
CHROOT="$1"