CRUX-ARM : Home

Home :: Documentation :: Download :: Development :: Community :: Ports :: Packages :: Bugs :: Links :: About :: Donors
Improvements for the rc script. Now can find_and_mount the install media, configure...
[initrd.git] / filesystem / rc
1 #!/bin/sh
2
3 #
4 # initramfs /init (busybox ash)
5 #
6
7 # color codes and some predefined texts
8 BOLD="\033[1m"
9 NORM="\033[0m"
10 RED="\033[31m"
11 GREEN="\033[32m"
12 YELLOW="\033[33m"
13 BLUE="\033[34m"
14 OK="${BOLD}${GREEN}OK${NORM}"
15 FAILED="${BOLD}${RED}FAILED${NORM}"
16
17 # helper functions
18
19 # check an exit value and print a colored status
20 checkReturn() {
21 if [ $? -ne 0 ]
22 then
23 echo -e $FAILED
24 else
25 echo -e $OK
26 fi
27 }
28
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
31 find_and_mount_media() {
32 echo -e " ${BOLD}${BLUE}*${NORM} Searching for the CRUX media..."
33 mkdir /media
34 CRUXMEDIA=""
35 MMC_DEVICES="`grep -E 'mmcblk' /proc/partitions | awk '{ print $4 }'`"
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
58
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
72
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
81 # configure for modules
82 MODULES_DIR="`find /media/crux/kernel -type d -name 'modules-*'`"
83 if [ ! -z "$MODULES_DIR" ]; then
84 ln -sf $MODULES_DIR/lib/modules /lib
85 depmod
86 fi
87 # configure the setup script
88 if [ -e /media/crux/setup ]; then
89 ln -sf /media/crux/setup /bin/setup
90 fi
91 fi
92 }
93
94 #
95 # main script
96 #
97
98 echo ""
99 echo -e "${BOLD}CRUX-ARM 2.7 - ${BLUE}http://crux-arm.nu/${NORM}"
100 echo ""
101
102 exec >/dev/console </dev/console 2>&1
103
104 echo -e -n " ${BOLD}${BLUE}*${NORM} Mounting filesystems... "
105 mount -v -a && mount -o remount,rw /
106 checkReturn
107
108 echo -e -n " ${BOLD}${BLUE}*${NORM} Populating /dev via mdev... "
109 mdev -s
110 checkReturn
111
112 echo -e -n " ${BOLD}${BLUE}*${NORM} Registering mdev as hotplug agent... "
113 echo "/bin/mdev" > /proc/sys/kernel/hotplug
114 checkReturn
115
116 echo -e -n " ${BOLD}${BLUE}*${NORM} Creating and mounting /dev/pts... "
117 mkdir /dev/pts
118 mount -t devpts devpts /dev/pts
119 checkReturn
120
121 echo -e -n " ${BOLD}${BLUE}*${NORM} Starting kernel log daemon... "
122 klogd
123 checkReturn
124
125 echo -e -n " ${BOLD}${BLUE}*${NORM} Setting hostname... "
126 hostname crux
127 checkReturn
128
129 echo -e -n " ${BOLD}${BLUE}*${NORM} Loading network loopback device... "
130 ip addr add 127.0.0.1/8 dev lo broadcast + scope host
131 checkReturn
132 ip link set lo up
133 checkReturn
134 echo "127.0.0.1 localhost crux" > /etc/hosts
135 checkReturn
136
137 echo -e -n " ${BOLD}${BLUE}*${NORM} Saving boot messages... "
138 dmesg > /var/log/boot
139 checkReturn
140
141 echo -e -n " ${BOLD}${BLUE}*${NORM} Trying to find and mount the media installer... "
142 find_and_mount_media
143
144 echo
145 echo "The system is coming up. Please wait."
146 echo
147
148 # End of file