summaryrefslogtreecommitdiff
path: root/src/lib-archboot/quickinst.sh
blob: 859c7a021a81cf2b902191e3160b666651beb301 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#! /bin/sh

assure_pacman ()
{
	PACMAN=
	[ -f /tmp/usr/bin/pacman ] && PACMAN=/tmp/usr/bin/pacman
	[ -f /usr/bin/pacman ] && PACMAN=/usr/bin/pacman
	if [ "$PACMAN" = "" ]; then
		cd /tmp
		if [ "$INSTMODE" = "ftp" ]; then
			echo "Downloading pacman..."
			wget $PKGARG/pacman*.pkg.tar.gz
			if [ $? -gt 0 ]; then
				echo "error: Download failed"
				exit 1
			fi
			tar -xzf pacman*.pkg.tar.gz
		elif [ "$INSTMODE" = "cd" ]; then
			echo "Unpacking pacman..."
			tar -xzf $PKGARG/pacman*.pkg.tar.gz
		fi
	fi
	[ -f /tmp/usr/bin/pacman ] && PACMAN=/tmp/usr/bin/pacman
	[ "$PACMAN" = "" ] && return 1

}

write_pacman_conf_ftp ()
{
if [ "$INSTMODE" = "ftp" ]; then
	echo "[core]" >/tmp/pacman.conf
	echo "Server = $PKGARG" >>/tmp/pacman.conf
	mkdir -p $DESTDIR/var/cache/pacman/pkg /var/cache/pacman >/dev/null 2>&1
	rm -f /var/cache/pacman/pkg >/dev/null 2>&1
	ln -sf $DESTDIR/var/cache/pacman/pkg /var/cache/pacman/pkg >/dev/null 2>&1
fi
}


write_pacman_conf_cd ()
{

if [ "$INSTMODE" = "cd" ]; then
	PKGFILE=/tmp/packages.txt
	cp $PKGARG/packages.txt /tmp/packages.txt
	if [ ! -f $PKGFILE ]; then
		echo "error: Could not find package list: $PKGFILE"
		return 1
	fi
	echo "[core]" >/tmp/pacman.conf
	echo "Server = file://$PKGARG" >>/tmp/pacman.conf
	mkdir -p $DESTDIR/var/cache/pacman/pkg /var/cache/pacman >/dev/null 2>&1
	rm -f /var/cache/pacman/pkg >/dev/null 2>&1
	ln -sf $PKGARG /var/cache/pacman/pkg >/dev/null 2>&1
	PKGLIST=
	# fix pacman list!
	sed -i -e 's/-i686//g' -e 's/-x86_64//g' $PKGFILE
	for i in $(cat $PKGFILE | grep 'base/' | cut -d/ -f2); do
	  nm=${i%-*-*}
	  PKGLIST="$PKGLIST $nm"
	done
fi
}

what_is_this_for ()
{
! [ -d $DESTDIR/var/lib/pacman ] && mkdir -p $DESTDIR/var/lib/pacman
! [ -d /var/lib/pacman ] && mkdir -p /var/lib/pacman
# mount proc/sysfs first, so mkinitrd can use auto-detection if it wants
! [ -d $DESTDIR/proc ] && mkdir $DESTDIR/proc
! [ -d $DESTDIR/sys ] && mkdir $DESTDIR/sys
! [ -d $DESTDIR/dev ] && mkdir $DESTDIR/dev
mount -t proc none $DESTDIR/proc
mount -t sysfs none $DESTDIR/sys
mount -o bind /dev $DESTDIR/dev	
if [ "$INSTMODE" = "cd" ]; then
  $PACMAN -r $DESTDIR --config /tmp/pacman.conf -Sy $PKGLIST
fi

if [ "$INSTMODE" = "ftp" ]; then
  $PACMAN -r $DESTDIR --config /tmp/pacman.conf -Sy base
fi

umount $DESTDIR/proc $DESTDIR/sys $DESTDIR/dev
if [ $? -gt 0 ]; then
	echo
	echo "Package installation FAILED."
	echo
	exit 1
fi
}

quickinst_finished ()
{
echo 
echo "Package installation complete."
echo 
echo "Please install a bootloader.  Edit the appropriate config file for"
echo "your loader, and chroot into your system to install it into the"
echo "boot sector:"
echo "  # mount -o bind /dev $DESTDIR/dev"
echo "  # mount -t proc none $DESTDIR/proc"
echo "  # mount -t sysfs none $DESTDIR/sys"
echo "  # chroot $DESTDIR /bin/bash"
echo 
echo "For GRUB:"
echo "  # install-grub /dev/sda /dev/sdaX (replace with your boot partition)"
echo "  (or install manually by invoking the GRUB shell)"
echo "HINT XFS FILESYSTEM:" 
echo "If you have created xfs filesystems, freeze them before and unfreeze them after"
echo "installing grub (outside the chroot):"
echo "- freeze:"
echo "  # xfs_freeze -f $DESTDIR/boot"
echo "  # xfs_freeze -f $DESTDIR/"
echo "- unfreeze:"
echo "  # xfs_freeze -u $DESTDIR/boot"
echo "  # xfs_freeze -u $DESTDIR/"
echo 
echo "For LILO:"
echo "  # lilo"
echo
echo "Next step, initramfs setup:"
echo "Edit your /etc/mkinitcpio.conf and /etc/mkinitcpio.d/kernel26-fallback.conf"
echo "to fit your needs. After that run:" 
echo "# mkinitcpio -p kernel26"
echo 
echo "Then exit your chroot shell, edit $DESTDIR/etc/fstab and"
echo "$DESTDIR/etc/rc.conf, and reboot!"
echo 
}