blob: 314569c7729c7e0804e1f460e91bf4c754fb93a0 (
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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
|
#!/bin/sh
depend_procedure core base
# This is a port of the original /arch/quickinst script.
# TODO: nowhere rely on /tmp
# TODO: find a way to make profilespecific arguments and usage function work (see src/aif.sh)
usage() {
echo "quickinst <install_mode> <destdir> <package_directory|server_url>"
echo
echo "This script is for users who would rather partition/mkfs/mount their target"
echo "media manually than go through the routines in the setup script."
echo
echo "First make sure you have all your filesystems mounted under <destdir>."
echo "e.g. mount -t iso9660 /dev/sdc or /dev/sr0 (for new naming sheme) /src "
echo "Then run this script to install all base packages to <destdir>."
echo
if [ -e /usr/bin/wget ]; then
echo "<install_mode> must be either 'ftp' or 'cd'"
else
echo "<install_mode> must be 'cd'"
fi
echo
echo "Examples:"
if [ -e /usr/bin/wget ]; then
if [ "$(uname -m)" = "x86_64" ]; then
echo " quickinst ftp /mnt ftp://ftp.archlinux.org/core/os/x86_64"
else
echo " quickinst ftp /mnt ftp://ftp.archlinux.org/core/os/i686"
fi
fi
echo " quickinst cd /mnt /src/core/pkg"
echo ""
exit 0
}
# TODO: implement correctly
worker_configure ()
{
# var_PKG_SOURCE_TYPE
# var_TARGET_DIR
# var_FILE_URL or var_SYNC_URL
}
# TODO: clean up everything below this
PACMAN=
[ -f /tmp/usr/bin/pacman.static ] && PACMAN=/tmp/usr/bin/pacman.static
[ -f /usr/bin/pacman.static ] && PACMAN=/usr/bin/pacman.static
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.static ] && PACMAN=/tmp/usr/bin/pacman.static
if [ "$PACMAN" = "" ]; then
echo "error: Cannot find the pacman.static binary!"
exit 1
fi
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
if [ "$INSTMODE" = "cd" ]; then
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
fi
! [ -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
$PACMAN -r $DESTDIR --config /tmp/pacman.conf -Sy base
umount $DESTDIR/proc $DESTDIR/sys $DESTDIR/dev
if [ $? -gt 0 ]; then
echo
echo "Package installation FAILED."
echo
exit 1
fi
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
exit 0
|