]> git.ipfire.org Git - ipfire-2.x.git/blob - lfs/stage2
Merge remote-tracking branch 'origin/master' into kernel-4.9
[ipfire-2.x.git] / lfs / stage2
1 ###############################################################################
2 # #
3 # IPFire.org - A linux based firewall #
4 # Copyright (C) 2007 Michael Tremer & Christian Schmidt #
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 = stage2
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
48 $(TARGET) :
49 @$(PREBUILD)
50
51 # Create directories
52 -mkdir -pv /{bin,boot,etc/opt,etc/modprobe.d,home,lib/firmware/brcm,mnt,opt,run}
53 -mkdir -pv /{media/{floppy,cdrom,usbkey},sbin,srv,var}
54 -install -dv -m 0750 /root
55 -install -dv -m 1777 /tmp /var/tmp
56 -mkdir -pv /usr/{,local/}{bin,include,lib{,/sse2},sbin,src}
57 -mkdir -pv /usr/{,local/}share/{doc,info,locale,man}
58 -mkdir -v /usr/{,local/}share/{misc,terminfo,xt_geoip,zoneinfo}
59 -mkdir -pv /usr/{,local/}share/man/man{1..8}
60 #-for dir in /usr /usr/local; do \
61 # ln -sv share/{man,doc,info} $$dir; \
62 #done
63
64 # Symlink /var/run -> /run.
65 ln -svf ../run /var/run
66
67 ifeq "$(IS_64BIT)" "1"
68 ln -svf lib /lib64
69 ln -svf lib /usr/lib64
70 endif
71
72 # Symlinks
73 # for this reason, stage2 rebuild will broke the iso:perl, grubbatch
74 -ln -sv /tools/bin/{bash,cat,echo,pwd,stty} /bin
75 -ln -sv /tools/bin/perl /usr/bin
76 -ln -sv /tools/lib/libgcc_s.so{,.1} /usr/lib
77 -ln -sv /tools/lib/libstdc++.so{,.6} /usr/lib
78 sed 's/tools/usr/' /tools/lib/libstdc++.la > /usr/lib/libstdc++.la
79 -ln -sv bash /bin/sh
80
81 # Config files
82 cp -rvf $(DIR_SRC)/config/etc/* /etc;
83 cp -rvf $(DIR_SRC)/config/lib/* /lib;
84 touch /etc/{fs,m}tab
85 echo "$(NAME) v$(VERSION) - $(SLOGAN)" > /etc/issue
86 echo "===============================" >> /etc/issue
87 echo "\n running on \s \r \m" >> /etc/issue
88
89 # Bash startup files
90 install --directory --mode=0755 --owner=root --group=root /etc/profile.d
91 for i in $(DIR_SRC)/config/profile.d/*; do \
92 [ -f $$i ] && cp $$i /etc/profile.d; \
93 done
94 chmod 755 /etc/bashrc
95
96 # Install root's bash files.
97 for i in $(DIR_SRC)/config/bash/dot_*; do \
98 [ -f $$i ] && cp $$i /root/$$(basename $${i/dot_/\.}); \
99 done
100
101 # Scripts
102 for i in `find $(DIR_SRC)/src/scripts -maxdepth 1 -type f`; do \
103 sed "s+CONFIG_ROOT+$(CONFIG_ROOT)+g" $$i > /usr/local/bin/`basename $$i`; \
104 chmod 755 /usr/local/bin/`basename $$i`; \
105 done
106
107 # Move script to correct place.
108 mv -vf /usr/local/bin/ovpn-ccd-convert /usr/sbin/
109 mv -vf /usr/local/bin/ovpn-collectd-convert /usr/sbin/
110 mv -vf /usr/local/bin/captive-cleanup /usr/bin/
111
112 # Install firewall scripts.
113 mkdir -pv /usr/lib/firewall
114 install -m 755 $(DIR_SRC)/config/firewall/rules.pl \
115 /usr/lib/firewall/rules.pl
116 install -m 644 $(DIR_SRC)/config/firewall/firewall-lib.pl \
117 /usr/lib/firewall/firewall-lib.pl
118 install -m 755 $(DIR_SRC)/config/firewall/ipsec-block \
119 /usr/lib/firewall/ipsec-block
120
121 # Nobody user
122 -mkdir -p /home/nobody
123 chown -R nobody:nobody /home/nobody
124
125 # Create /var dirs and files
126 -mkdir -v /var/{lock,log,mail,spool,empty}
127 -mkdir -pv /var/{opt,cache,lib/{misc,locate},local}
128 -mkdir -pv /var/log/{counter,calamaris}
129 chown nobody.nobody /var/log/calamaris
130 touch /var/log/{btmp,lastlog,wtmp}
131 chmod -v 600 /var/log/btmp
132 chgrp -v utmp /var/log/lastlog
133 chmod -v 664 /var/log/lastlog
134
135 # Permissions
136 chmod 0711 /var/empty
137
138 # A small hack to include /root to the iso but not all of it's files.
139 touch /root/ipfire
140
141 # License agreement
142 -mkdir -pv /usr/share/doc/licenses/
143 cp -vf $(DIR_SRC)/doc/COPYING /usr/share/doc/licenses/GPLv3
144
145 # System release
146 echo "$(SYSTEM_RELEASE)" > /etc/system-release
147
148 # Pakfire
149 -mkdir -pv /opt/pakfire/db/core
150 echo "$(PAKFIRE_CORE)" > /opt/pakfire/db/core/mine
151
152 @$(POSTBUILD)