kernel: add kernel for Raspberry Pi.
[ipfire-2.x.git] / lfs / flash-images
1 ###############################################################################
2 #                                                                             #
3 # IPFire.org - A linux based firewall                                         #
4 # Copyright (C) 2007-2011  IPFire Team  <info@ipfire.org>                     #
5 #                                                                             #
6 # This program is free software: you can redistribute it and/or modify        #
7 # it under the terms of the GNU General Public License as published by        #
8 # the Free Software Foundation, either version 3 of the License, or           #
9 # (at your option) any later version.                                         #
10 #                                                                             #
11 # This program is distributed in the hope that it will be useful,             #
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of              #
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
14 # GNU General Public License for more details.                                #
15 #                                                                             #
16 # You should have received a copy of the GNU General Public License           #
17 # along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
18 #                                                                             #
19 ###############################################################################
20
21 ###############################################################################
22 # Definitions
23 ###############################################################################
24
25 include Config
26
27 VER = ipfire
28
29 THISAPP    = flash-image
30 TARGET     = $(DIR_INFO)/$(THISAPP)
31
32 ###############################################################################
33 # Top-level Rules
34 ###############################################################################
35
36 install : $(TARGET)
37
38 check :
39
40 download :
41
42 md5 :
43
44 ###############################################################################
45 # Installation Details
46 ###############################################################################
47 IMGinst  := /install/images/$(SNAME)-$(VERSION).2gb-ext2.$(MACHINE)-full-core$(CORE).img
48 IMGinsts := /install/images/$(SNAME)-$(VERSION).2gb-ext2-scon.$(MACHINE)-full-core$(CORE).img
49 MNThdd   := /install/harddisk
50 IMGpart  := /install/images/part_area
51 IMGboot  := /install/images/bootfs
52 # don't change SIZEboot this without checking Image size
53 SIZEboot := 50
54 IMGroot  := /install/images/rootfs
55 SIZEroot := 1400
56 IMGvar   := /install/images/varfs
57 SIZEvar  := 400
58
59 $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
60         rm -rf $(MNThdd) $(IMGinst) $(IMGpart) $(IMGboot) $(IMGroot) $(IMGvar) && mkdir -p $(MNThdd)
61
62         # Create first 32 sectors of image
63         dd bs=1k if=/dev/zero of=$(IMGpart) count=16
64
65         # Create images for filesystems
66         dd bs=1K if=/dev/zero of=$(IMGboot) count=51184  # 50MB-16K
67         dd bs=1M if=/dev/zero of=$(IMGroot) count=$(SIZEroot)
68         dd bs=1M if=/dev/zero of=$(IMGvar) count=$(SIZEvar)
69
70         # Format them
71 ifeq "$(MACHINE_TYPE)" "arm"
72         mkfs.vfat $(IMGboot)
73 else
74         mkfs.ext2 -F $(IMGboot)
75 endif
76         mkfs.ext2 -F $(IMGroot)
77         mkfs.ext2 -F $(IMGvar)
78
79         # Mount Images
80         mount -o loop $(IMGroot) $(MNThdd)
81         mkdir $(MNThdd)/boot
82         mkdir $(MNThdd)/var
83         mkdir $(MNThdd)/var/log
84         mount -o loop $(IMGboot) $(MNThdd)/boot
85         mount -o loop $(IMGvar)  $(MNThdd)/var
86
87         # Install MLO and uboot first
88 ifeq "$(MACHINE_TYPE)" "arm"
89         cp -v /boot/MLO $(MNThdd)/boot/
90         cp -v /boot/u-boot.bin $(MNThdd)/boot/
91         sync
92         umount $(MNThdd)/boot
93         mount -o loop $(IMGboot) $(MNThdd)/boot
94 endif
95
96         # Install IPFire
97         tar -C $(MNThdd)/ -xvaf /install/cdrom/$(SNAME)-$(VERSION).tlz
98         echo "LANGUAGE=en" >> $(MNThdd)/var/ipfire/main/settings
99         echo "HOSTNAME=$(SNAME)" >> $(MNThdd)/var/ipfire/main/settings
100         echo "THEME=ipfire" >> $(MNThdd)/var/ipfire/main/settings
101         -touch $(MNThdd)/lib/modules/$(KVER)-ipfire/modules.dep
102         mkdir $(MNThdd)/proc
103         mount --bind /proc $(MNThdd)/proc
104         mount --bind /dev  $(MNThdd)/dev
105         mount --bind /sys  $(MNThdd)/sys
106         chroot $(MNThdd) /usr/bin/perl -e "require '/var/ipfire/lang.pl'; &Lang::BuildCacheLang"
107         sed -i -e "s|DEVICE1|UUID=$$(blkid -sUUID $(IMGboot) | cut -d'"' -f2)|g" $(MNThdd)/etc/fstab
108 ifeq "$(MACHINE_TYPE)" "arm"
109         # ARM flash images have a VFAT partition for /boot.
110         sed -i -e "s|ext2|vfat|" $(MNThdd)/etc/fstab
111 endif
112         sed -i -e "s|DEVICE2|#DEVICE2|g" $(MNThdd)/etc/fstab
113         sed -i -e "s|DEVICE3|UUID=$$(blkid -sUUID $(IMGroot) | cut -d'"' -f2)|g" $(MNThdd)/etc/fstab
114         sed -i -e "s|DEVICE4|UUID=$$(blkid -sUUID $(IMGvar) | cut -d'"' -f2)|g" $(MNThdd)/etc/fstab
115         sed -i -e "s|FSTYPE|ext2|g" $(MNThdd)/etc/fstab
116
117 ifneq "$(MACHINE_TYPE)" "arm"
118         sed -i -e "s|MOUNT|ro|g" $(MNThdd)/boot/grub/grub.conf
119         sed -i -e "s|KVER|$(KVER)|g" $(MNThdd)/boot/grub/grub.conf
120         sed -i -e "s|ROOT|UUID=$$(blkid -sUUID $(IMGroot) | cut -d'"' -f2)|g" $(MNThdd)/boot/grub/grub.conf
121         ln -s grub.conf $(MNThdd)/boot/grub/menu.lst
122
123         # Copy grub files manually
124         cp -f $(MNThdd)/usr/share/grub/i386-pc/* $(MNThdd)/boot/grub/
125 endif
126
127         # Setup symlink for partresize at first boot...
128         ln -sf ../init.d/partresize $(MNThdd)/etc/rc.d/rcsysinit.d/S25partresize
129         # Setup symlink for fsresize at second boot...
130         ln -sf ../init.d/fsresize $(MNThdd)/etc/rc.d/rcsysinit.d/S26fsresize
131
132         # Unmount
133         umount $(MNThdd)/proc
134         umount $(MNThdd)/dev
135         umount $(MNThdd)/sys
136         umount $(MNThdd)/boot
137         umount $(MNThdd)/var
138         umount $(MNThdd)
139
140         # zerofree the ext2 images to get better compression
141 ifneq "$(MACHINE_TYPE)" "arm"
142         zerofree $(IMGboot)
143         -fsck.ext2 -f -y $(IMGboot)
144         fsck.ext2 -f -y $(IMGboot)
145 endif
146         zerofree $(IMGroot)
147         -fsck.ext2 -f -y  $(IMGroot)
148         fsck.ext2 -f -y  $(IMGroot)
149         zerofree $(IMGvar)
150         -fsck.ext2 -f -y  $(IMGvar)
151         fsck.ext2 -f -y  $(IMGvar)
152
153         # Cat to an image
154         cat $(IMGpart) $(IMGboot) $(IMGroot) $(IMGvar) > $(IMGinst)
155
156         # Write Partition table
157 ifneq "$(MACHINE_TYPE)" "arm"
158         echo -e ",$(SIZEboot),L,*\n,0,0\n,$(SIZEroot),L\n,$(SIZEvar),L\n" \
159                 | sfdisk -D -uM -H 64 -S 32 $(IMGinst)
160 else
161         echo -e ",$(SIZEboot),c,*\n,0,0\n,$(SIZEroot),L\n,$(SIZEvar),L\n" \
162                 | sfdisk -D -uM -H 64 -S 32 $(IMGinst)
163 endif
164
165 ifneq "$(MACHINE_TYPE)" "arm"
166         # Install grub
167         echo "device (hd0) $(IMGinst)" > /tmp/grubinst.tmp
168         echo "root (hd0,0)"           >> /tmp/grubinst.tmp
169         echo "setup (hd0)"            >> /tmp/grubinst.tmp
170         echo "quit"                   >> /tmp/grubinst.tmp
171         grub < /tmp/grubinst.tmp
172         rm -f /tmp/grubinst.tmp
173 endif
174
175         # Compress Image
176         gzip -f9 $(IMGinst)
177
178         # Now Build serialcon Version
179         # Mount Images
180         mount -o loop $(IMGroot) $(MNThdd)
181         mount -o loop $(IMGboot) $(MNThdd)/boot
182
183 ifneq "$(MACHINE_TYPE)" "arm"
184         sed -i -e "s|splashimage|#splashimage|g" $(MNThdd)/boot/grub/grub.conf
185         sed -i -e "s|#serial|serial|g" $(MNThdd)/boot/grub/grub.conf
186         sed -i -e "s|#terminal|terminal|g" $(MNThdd)/boot/grub/grub.conf
187         sed -i -e "s| panic=10 | console=ttyS0,115200n8 panic=10 |g" $(MNThdd)/boot/grub/grub.conf
188 else
189         sed -i -e "s| console=tty1 | console=ttyAMA0,115200n8 |g" $(MNThdd)/boot/cmdline.txt
190 endif
191
192         sed -i -e "s|1:2345:respawn:|#1:2345:respawn:|g" $(MNThdd)/etc/inittab
193         sed -i -e "s|2:2345:respawn:|#2:2345:respawn:|g" $(MNThdd)/etc/inittab
194         sed -i -e "s|3:2345:respawn:|#3:2345:respawn:|g" $(MNThdd)/etc/inittab
195         sed -i -e "s|4:2345:respawn:|#4:2345:respawn:|g" $(MNThdd)/etc/inittab
196         sed -i -e "s|5:2345:respawn:|#5:2345:respawn:|g" $(MNThdd)/etc/inittab
197         sed -i -e "s|6:2345:respawn:|#6:2345:respawn:|g" $(MNThdd)/etc/inittab
198         sed -i -e "s|#7:2345:respawn:|7:2345:respawn:|g" $(MNThdd)/etc/inittab
199
200         umount $(MNThdd)/boot
201         umount $(MNThdd)
202
203         # zerofree the ext3 images to get better compression
204 ifneq "$(MACHINE_TYPE)" "arm"
205         zerofree $(IMGboot)
206         -fsck.ext2 -f -y  $(IMGboot)
207         fsck.ext2 -f -y  $(IMGboot)
208 endif
209         zerofree $(IMGroot)
210         -fsck.ext2 -f -y  $(IMGroot)
211         fsck.ext2 -f -y  $(IMGroot)
212         zerofree $(IMGvar)
213         -fsck.ext2 -f -y  $(IMGvar)
214         fsck.ext2 -f -y  $(IMGvar)
215
216         # Cat to an image
217         cat $(IMGpart) $(IMGboot) $(IMGroot) $(IMGvar) > $(IMGinsts)
218         rm -vf $(IMGpart) $(IMGboot) $(IMGroot) $(IMGvar)
219
220         # Write Partition table
221 ifneq "$(MACHINE_TYPE)" "arm"
222         echo -e ",$(SIZEboot),L,*\n,0,0\n,$(SIZEroot),L\n,$(SIZEvar),L\n" \
223                 | sfdisk -D -uM -H 64 -S 32 $(IMGinsts)
224 else
225         echo -e ",$(SIZEboot),c,*\n,0,0\n,$(SIZEroot),L\n,$(SIZEvar),L\n" \
226                 | sfdisk -D -uM -H 64 -S 32 $(IMGinsts)
227 endif
228
229 ifneq "$(MACHINE_TYPE)" "arm"
230         # Install grub
231         echo "device (hd0) $(IMGinsts)" > /tmp/grubinst.tmp
232         echo "root (hd0,0)"            >> /tmp/grubinst.tmp
233         echo "setup (hd0)"             >> /tmp/grubinst.tmp
234         echo "quit"                    >> /tmp/grubinst.tmp
235         grub < /tmp/grubinst.tmp
236         rm -f /tmp/grubinst.tmp
237 endif
238
239         # Compress Image
240         gzip -f9 $(IMGinsts)
241
242         rm -rf $(MNThdd) $(IMGpart) $(IMGboot) $(IMGroot) $(IMGvar)