CRUX-ARM : Home

Home :: Documentation :: Download :: Development :: Community :: Ports :: Packages :: Bugs :: Links :: About :: Donors
Initial set of updates for 3.0.
[initrd.git] / filesystem / rc
CommitLineData
b70e0e65 1#!/bin/sh
60a77e5f 2
b70e0e65 3#
60a77e5f 4# initramfs /init (busybox ash)
b70e0e65
JB
5#
6
60a77e5f
JB
7# color codes and some predefined texts
8BOLD="\033[1m"
9NORM="\033[0m"
10RED="\033[31m"
11GREEN="\033[32m"
12YELLOW="\033[33m"
13BLUE="\033[34m"
14OK="${BOLD}${GREEN}OK${NORM}"
15FAILED="${BOLD}${RED}FAILED${NORM}"
16
17# helper functions
18
19# check an exit value and print a colored status
20checkReturn() {
21 if [ $? -ne 0 ]
22 then
23 echo -e $FAILED
24 else
25 echo -e $OK
26 fi
27}
b70e0e65 28
60a77e5f
JB
29# search for and mount the crux media, populate a tmpfs from it,
30# and prepare /newroot for switch_root at the end of the script
31find_and_mount_media() {
32 echo -e " ${BOLD}${BLUE}*${NORM} Searching for the CRUX media..."
dfd7aefe 33 mkdir -p /media
60a77e5f 34 CRUXMEDIA=""
06ba1c90 35 MMC_DEVICES="`grep -E 'mmcblk0p' /proc/partitions | awk '{ print $4 }'`"
60a77e5f
JB
36 BLOCK_DEVICES="`grep -E '[sh]d' /proc/partitions | awk '{ print $4 }'`"
37 for DEV in $MMC_DEVICES $BLOCK_DEVICES
38 do
39 DEV="/dev/$DEV"
40 mount -r $DEV /media 2> /dev/null
41 if [ $? -eq 0 ]
42 then
43 echo -e -n " ${BOLD}${GREEN}*${NORM} Found media on $DEV"
44 if [ -e /media/crux-media ]
45 then
46 echo ", CRUX media."
47 CRUXMEDIA=$DEV
48 ln -s $DEV /dev/media
49 break
50 else
51 echo ", but it's not the CRUX media."
52 umount /media
53 fi
54 else
55 echo -e " ${BOLD}${YELLOW}*${NORM} No media found on $DEV."
56 fi
57 done
b70e0e65 58
60a77e5f
JB
59 # check if the media was mounted properly. if not, spawn a shell
60 if [ ! -e /media/crux-media ]
61 then
62 echo
63 echo -e " ${BOLD}${RED}*${NORM} The CRUX media was not properly mounted!"
64 echo " Spawning a shell for you to attempt to fix this problem. If"
65 echo " you are able to find the correct device, mount it at"
66 echo " /media and then log out of this shell to continue."
67 echo " If you are NOT able to fix the problem, installation will"
68 echo " not be possible."
69 echo
70 /bin/sh
71 fi
b70e0e65 72
60a77e5f
JB
73 # check again and stop if it's still not there
74 if [ ! -e /media/crux-media ]
75 then
76 echo
77 echo -e " ${BOLD}${RED}*${NORM} The CRUX media still appears not to be"
78 echo " found and installation will not continue."
79 echo
80 else
dfd7aefe 81 # configure modules
eebbffc5 82 MODULES="`find /media/crux/kernel -type f -name 'modules-*.tar.*' 2>/dev/null`"
6cc6cf55
JB
83 if [ ! -z "$MODULES" ]; then
84 tar -C /tmp -xf $MODULES
b3584205 85 cd /lib && ln -s /tmp/lib/* .
60a77e5f
JB
86 depmod
87 fi
dfd7aefe 88 # configure pkgutils
eebbffc5 89 PKGUTILS="`find /media/crux/core -type f -name 'pkgutils#*.pkg.tar.*' 2>/dev/null`"
dfd7aefe 90 if [ ! -z "$PKGUTILS" ]; then
6cc6cf55 91 tar -C /tmp -xf $PKGUTILS
dfd7aefe
JB
92 cd /usr/bin && ln -s /tmp/usr/bin/* .
93 cd /etc && ln -s /tmp/etc/* .
60a77e5f
JB
94 fi
95 fi
96}
97
98#
99# main script
100#
b70e0e65 101
60a77e5f 102echo ""
2b95ffc0 103echo -e "${BOLD}CRUX-ARM 3.0 - ${BLUE}http://crux-arm.nu/${NORM}"
60a77e5f 104echo ""
b70e0e65 105
60a77e5f
JB
106exec >/dev/console </dev/console 2>&1
107
108echo -e -n " ${BOLD}${BLUE}*${NORM} Mounting filesystems... "
dfd7aefe
JB
109mount -a && \
110mount -o remount,rw /
60a77e5f
JB
111checkReturn
112
113echo -e -n " ${BOLD}${BLUE}*${NORM} Populating /dev via mdev... "
114mdev -s
115checkReturn
116
117echo -e -n " ${BOLD}${BLUE}*${NORM} Registering mdev as hotplug agent... "
b70e0e65 118echo "/bin/mdev" > /proc/sys/kernel/hotplug
60a77e5f
JB
119checkReturn
120
121echo -e -n " ${BOLD}${BLUE}*${NORM} Creating and mounting /dev/pts... "
122mkdir /dev/pts
123mount -t devpts devpts /dev/pts
124checkReturn
125
126echo -e -n " ${BOLD}${BLUE}*${NORM} Starting kernel log daemon... "
127klogd
128checkReturn
b70e0e65 129
60a77e5f
JB
130echo -e -n " ${BOLD}${BLUE}*${NORM} Setting hostname... "
131hostname crux
132checkReturn
b70e0e65 133
60a77e5f 134echo -e -n " ${BOLD}${BLUE}*${NORM} Loading network loopback device... "
dfd7aefe
JB
135ip addr add 127.0.0.1/8 dev lo broadcast + scope host && \
136ip link set lo up && \
60a77e5f
JB
137echo "127.0.0.1 localhost crux" > /etc/hosts
138checkReturn
b70e0e65 139
60a77e5f
JB
140echo -e -n " ${BOLD}${BLUE}*${NORM} Saving boot messages... "
141dmesg > /var/log/boot
142checkReturn
b70e0e65 143
dfd7aefe 144echo -e " ${BOLD}${BLUE}*${NORM} Trying to find and mount the media installer..."
60a77e5f 145find_and_mount_media
b70e0e65 146
06ba1c90
JB
147if grep -q debug /proc/cmdline; then
148 echo -e -n " ${BOLD}${BLUE}*${NORM} Loading debug script..."
149 /media/debug.sh
150 checkReturn
151fi
152
60a77e5f
JB
153echo
154echo "The system is coming up. Please wait."
155echo
b70e0e65
JB
156
157# End of file