build-base-packages.sh (7472B)
1 #!/bin/bash 2 3 ################################################################################ 4 ### Defined Variables: 5 ### - CLFS : Root folder for CLFS build, holds final tarballs 6 ### - CLFS_BOOTSCRIPTS : Root folder for CLFS bootscripts 7 ### - CLFS_CONFIGS : Additional configuration files for CLFS packages 8 ### - CLFS_LOGS : Package build log root 9 ### - CLFS_SCRIPTS : Build script root 10 ### - CLFS_SOURCES : Package source root 11 ### ---------------------------------------------------------------------------- 12 ### - CLFS_ROOT : Root folder for cross-compiled system 13 ### - CLFS_BOOT_ROOT : Root folder for boot-required binaries 14 ### - CLFS_CROSS_NAME : Name of cross-toolchain root 15 ### - CLFS_CROSS_ROOT : Root folder for cross-toolchain 16 ### - CLFS_CROSS_SYSROOT : Sysroot for cross-toolchain 17 ################################################################################ 18 19 source ~/.bashrc 20 21 22 ## Allows logging in as root without password 23 cat > ${CLFS_ROOT}/etc/passwd << "EOF" 24 root::0:0:root:/root:/bin/ash 25 EOF 26 27 ## Creating the group,passwd, and lastlog files 28 cat > ${CLFS_ROOT}/etc/group << "EOF" 29 root:x:0: 30 bin:x:1: 31 sys:x:2: 32 kmem:x:3: 33 tty:x:4: 34 tape:x:5: 35 daemon:x:6: 36 floppy:x:7: 37 disk:x:8: 38 lp:x:9: 39 dialout:x:10: 40 audio:x:11: 41 video:x:12: 42 utmp:x:13: 43 usb:x:14: 44 cdrom:x:15: 45 EOF 46 47 touch ${CLFS_ROOT}/var/log/lastlog 48 chmod -v 664 ${CLFS_ROOT}/var/log/lastlog 49 50 51 ## Copying libgcc from the xgcc we built earlier. This is necessary as gcc can 52 ## emit calls to this shared library whenever it sees fit. 53 cp -v ${CLFS_CROSS_SYSROOT}/lib/libgcc_s.so.1 ${CLFS_ROOT}/usr/lib/ 54 ln -fsv ../usr/lib/libgcc_s.so.1 ${CLFS_ROOT}/lib/libgcc_s.so.1 55 ${CLFS_TARGET}-strip ${CLFS_ROOT}/lib/libgcc_s.so.1 56 57 58 LINUX () { 59 make mrproper 60 61 make ARCH=${CLFS_ARCH} headers_check 62 make ARCH=${CLFS_ARCH} headers 63 64 find usr/include -name '.*' -delete 65 rm usr/include/Makefile 66 cp -r usr/include ${CLFS_ROOT}/usr 67 } 68 EXTRACT "LINUX" LINUX "base-pkg-linux-headers" 69 70 71 MUSL () { 72 ./configure \ 73 CROSS_COMPILE=${CLFS_TARGET}- \ 74 --prefix=/usr \ 75 --build=${CLFS_HOST} \ 76 --host=${CLFS_TARGET} \ 77 --target=${CLFS_TARGET} \ 78 --enable-warnings \ 79 --enable-optimize 80 81 make && make DESTDIR=${CLFS_ROOT} install 82 83 ln -fsv ../usr/lib/libc.so ${CLFS_ROOT}/lib/ld-musl-*.so.1 84 } 85 EXTRACT "MUSL" MUSL "base-pkg-musl-libc" 86 87 88 LIBSTDCXX () { 89 ln -s gthr-posix.h libgcc/gthr-default.h 90 91 mkdir -v libstdcxx-build 92 cd libstdcxx-build 93 94 ../libstdc++-v3/configure \ 95 CXXFLAGS="-g -O2 -D_GNU_SOURCE" \ 96 --prefix=/usr \ 97 --build=${CLFS_HOST} \ 98 --host=${CLFS_TARGET} \ 99 --target=${CLFS_TARGET} \ 100 --disable-multilib \ 101 --disable-nls \ 102 --disable-static 103 104 make && make DESTDIR=${CLFS_ROOT} install 105 } 106 EXTRACT "GCC" LIBSTDCXX "base-pkg-libstdc++" 107 108 109 ZLIB () { 110 ./configure \ 111 --prefix=/usr \ 112 --const \ 113 --shared 114 115 make && make DESTDIR=${CLFS_ROOT} install 116 117 rm -v ${CLFS_ROOT}/usr/lib/libz.a 118 mv -v ${CLFS_ROOT}/usr/lib/libz.so.* ${CLFS_ROOT}/lib 119 ln -sfv ../../lib/$(readlink ${CLFS_ROOT}/usr/lib/libz.so) ${CLFS_ROOT}/usr/lib/libz.so 120 } 121 EXTRACT "ZLIB" ZLIB "base-pkg-zlib" 122 123 124 LINUX () { 125 make mrproper 126 127 cp ${CLFS_CONFIGS}/${CLFS_ARCH}-kernel-config .config 128 129 make ARCH=${CLFS_ARCH} CROSS_COMPILE=${CLFS_TARGET}- && \ 130 make ARCH=${CLFS_ARCH} CROSS_COMPILE=${CLFS_TARGET}- INSTALL_MOD_PATH=${CLFS_ROOT} modules_install 131 132 cp arch/${CLFS_ARCH}/boot/$CLFS_KERNEL ${CLFS_BOOT_ROOT} 133 for DTS in ${CLFS_DTS_LIST[@]}; do 134 cp arch/${CLFS_ARCH}/boot/dts/$DTS ${CLFS_BOOT_ROOT} 135 done 136 } 137 EXTRACT "LINUX" LINUX "boot-pkg-linux" 138 139 140 UBOOT () { 141 make distclean 142 143 cp ${CLFS_CONFIGS}/uboot-config .config 144 145 make ARCH=${CLFS_ARCH} CROSS_COMPILE=${CLFS_TARGET}- 146 147 cp u-boot.bin ${CLFS_BOOT_ROOT} 148 } 149 EXTRACT "UBOOT" UBOOT "boot-pkg-uboot" 150 151 152 ## Installing bootscripts 153 cd ${CLFS_BOOTSCRIPTS} 154 155 make DESTDIR=${CLFS_ROOT} install-bootscripts install-dropbear 156 157 cd ${CLFS_SOURCES} 158 159 160 ## Creating /etc/fstab file 161 cat > ${CLFS_ROOT}/etc/fstab <<'EOF' 162 # file-system mount-point type options dump fsck 163 EOF 164 165 166 ## Creating /etc/inittab 167 cat > ${CLFS_ROOT}/etc/inittab <<'EOF' 168 # /etc/inittab 169 170 ::sysinit:/etc/rc.d/startup 171 172 tty1::respawn:/sbin/getty 38400 tty1 173 #tty2::respawn:/sbin/getty 38400 tty2 174 #tty3::respawn:/sbin/getty 38400 tty3 175 #tty4::respawn:/sbin/getty 38400 tty4 176 #tty5::respawn:/sbin/getty 38400 tty5 177 #tty6::respawn:/sbin/getty 38400 tty6 178 179 ::shutdown:/etc/rc.d/shutdown 180 ::ctrlaltdel:/sbin/reboot 181 EOF 182 183 184 ## Configuring mdev 185 cat > ${CLFS_ROOT}/etc/mdev.conf<<'EOF' 186 # /etc/mdev/conf 187 188 # Devices: 189 # Syntax: %s %d:%d %s 190 # devices user:group mode 191 192 # null does already exist; therefore ownership has to be changed with command 193 null root:root 0666 @chmod 666 $MDEV 194 zero root:root 0666 195 grsec root:root 0660 196 full root:root 0666 197 198 random root:root 0666 199 urandom root:root 0444 200 hwrandom root:root 0660 201 202 # console does already exist; therefore ownership has to be changed with command 203 #console root:tty 0600 @chmod 600 $MDEV && mkdir -p vc && ln -sf ../$MDEV vc/0 204 console root:tty 0600 @mkdir -pm 755 fd && cd fd && for x in 0 1 2 3 ; do ln -sf /proc/self/fd/$x $x; done 205 206 fd0 root:floppy 0660 207 kmem root:root 0640 208 mem root:root 0640 209 port root:root 0640 210 ptmx root:tty 0666 211 212 # ram.* 213 ram([0-9]*) root:disk 0660 >rd/%1 214 loop([0-9]+) root:disk 0660 >loop/%1 215 sd[a-z].* root:disk 0660 */lib/mdev/usbdisk_link 216 hd[a-z][0-9]* root:disk 0660 */lib/mdev/ide_links 217 md[0-9] root:disk 0660 218 219 tty root:tty 0666 220 tty[0-9] root:root 0600 221 tty[0-9][0-9] root:tty 0660 222 ttyS[0-9]* root:tty 0660 223 pty.* root:tty 0660 224 vcs[0-9]* root:tty 0660 225 vcsa[0-9]* root:tty 0660 226 227 ttyLTM[0-9] root:dialout 0660 @ln -sf $MDEV modem 228 ttySHSF[0-9] root:dialout 0660 @ln -sf $MDEV modem 229 slamr root:dialout 0660 @ln -sf $MDEV slamr0 230 slusb root:dialout 0660 @ln -sf $MDEV slusb0 231 fuse root:root 0666 232 233 # dri device 234 card[0-9] root:video 0660 =dri/ 235 236 # alsa sound devices and audio stuff 237 pcm.* root:audio 0660 =snd/ 238 control.* root:audio 0660 =snd/ 239 midi.* root:audio 0660 =snd/ 240 seq root:audio 0660 =snd/ 241 timer root:audio 0660 =snd/ 242 243 adsp root:audio 0660 >sound/ 244 audio root:audio 0660 >sound/ 245 dsp root:audio 0660 >sound/ 246 mixer root:audio 0660 >sound/ 247 sequencer.* root:audio 0660 >sound/ 248 249 # misc stuff 250 agpgart root:root 0660 >misc/ 251 psaux root:root 0660 >misc/ 252 rtc root:root 0664 >misc/ 253 254 # input stuff 255 event[0-9]+ root:root 0640 =input/ 256 mice root:root 0640 =input/ 257 mouse[0-9] root:root 0640 =input/ 258 ts[0-9] root:root 0600 =input/ 259 260 # v4l stuff 261 vbi[0-9] root:video 0660 >v4l/ 262 video[0-9] root:video 0660 >v4l/ 263 264 # dvb stuff 265 dvb.* root:video 0660 */lib/mdev/dvbdev 266 267 # load drivers for usb devices 268 usbdev[0-9].[0-9] root:root 0660 */lib/mdev/usbdev 269 usbdev[0-9].[0-9]_.* root:root 0660 270 271 # net devices 272 tun[0-9]* root:root 0600 =net/ 273 tap[0-9]* root:root 0600 =net/ 274 275 # zaptel devices 276 zap(.*) root:dialout 0660 =zap/%1 277 dahdi!(.*) root:dialout 0660 =dahdi/%1 278 279 # raid controllers 280 cciss!(.*) root:disk 0660 =cciss/%1 281 ida!(.*) root:disk 0660 =ida/%1 282 rd!(.*) root:disk 0660 =rd/%1 283 284 sr[0-9] root:cdrom 0660 @ln -sf $MDEV cdrom 285 286 # hpilo 287 hpilo!(.*) root:root 0660 =hpilo/%1 288 289 # xen stuff 290 xvd[a-z] root:root 0660 */lib/mdev/xvd_links 291 EOF 292