79 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			79 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/sh
 | |
| 
 | |
| echo "*** GENERATE ROOTFS BEGIN ***"
 | |
| 
 | |
| SRC_ROOT=$(pwd)
 | |
| 
 | |
| # Remember the glibc prepared folder.
 | |
| GLIBC_PREPARED=$(pwd)/work/glibc/glibc_prepared
 | |
| 
 | |
| # Remember the BysyBox install folder.
 | |
| BUSYBOX_INSTALLED=$(pwd)/work/busybox/busybox_installed
 | |
| 
 | |
| cd work
 | |
| 
 | |
| echo "Preparing initramfs work area..."
 | |
| rm -rf rootfs
 | |
| 
 | |
| # Copy all BusyBox generated stuff to the location of our 'initramfs' folder.
 | |
| cp -r $BUSYBOX_INSTALLED rootfs
 | |
| 
 | |
| # Copy all rootfs resources to the location of our 'initramfs' folder.
 | |
| cp -r src/minimal_rootfs/* rootfs
 | |
| 
 | |
| cd rootfs
 | |
| 
 | |
| # Remove 'linuxrc' which is used when we boot in 'RAM disk' mode. 
 | |
| rm -f linuxrc
 | |
| 
 | |
| # Read the 'COPY_SOURCE_ROOTFS' property from '.config'
 | |
| COPY_SOURCE_ROOTFS="$(grep -i ^COPY_SOURCE_ROOTFS $SRC_ROOT/.config | cut -f2 -d'=')"
 | |
| 
 | |
| if [ "$COPY_SOURCE_ROOTFS" = "true" ] ; then
 | |
|   # Copy all prepared source files and folders to '/src'. Note that the scripts
 | |
|   # will not work there because you also need proper toolchain.
 | |
|   cp -r ../src src
 | |
|   echo "Source files and folders have been copied to '/src'."
 | |
| else
 | |
|   echo "Source files and folders have been skipped."
 | |
| fi
 | |
| 
 | |
| # This is for the dynamic loader. Note that the name and the location are both
 | |
| # specific for 32-bit and 64-bit machines. First we check the BusyBox executable
 | |
| # and then we copy the dynamic loader to its appropriate location.
 | |
| BUSYBOX_ARCH=$(file bin/busybox | cut -d' '  -f3)
 | |
| if [ "$BUSYBOX_ARCH" = "64-bit" ] ; then
 | |
|   mkdir lib64
 | |
|   cp $GLIBC_PREPARED/lib/ld-linux* lib64
 | |
|   echo "Dynamic loader is accessed via '/lib64'."
 | |
| else
 | |
|   cp $GLIBC_PREPARED/lib/ld-linux* lib
 | |
|   echo "Dynamic loader is accessed via '/lib'."
 | |
| fi
 | |
| 
 | |
| # Copy all necessary 'glibc' libraries to '/lib' BEGIN.
 | |
| 
 | |
| # BusyBox has direct dependencies on these libraries.
 | |
| cp $GLIBC_PREPARED/lib/libm.so.6 lib
 | |
| cp $GLIBC_PREPARED/lib/libc.so.6 lib
 | |
| 
 | |
| # These libraries are necessary for the DNS resolving.
 | |
| cp $GLIBC_PREPARED/lib/libresolv.so.2 lib
 | |
| cp $GLIBC_PREPARED/lib/libnss_dns.so.2 lib
 | |
| 
 | |
| # Copy all necessary 'glibc' libraries to '/lib' END.
 | |
| 
 | |
| strip -g \
 | |
|   $SRC_ROOT/work/rootfs/bin/* \
 | |
|   $SRC_ROOT/work/rootfs/sbin/* \
 | |
|   $SRC_ROOT/work/rootfs/lib/* \
 | |
|   2>/dev/null
 | |
| echo "Reduced the size of libraries and executables."
 | |
| 
 | |
| echo "The initramfs area has been generated."
 | |
| 
 | |
| cd $SRC_ROOT
 | |
| 
 | |
| echo "*** GENERATE ROOTFS END ***"
 | |
| 
 |