clfs-bootstrap

clfs-bootstrap.git
git clone git://git.lenczewski.org/clfs-bootstrap.git
Log | Files | Refs | README | LICENSE

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