Changeset 302 for soft


Ignore:
Timestamp:
Apr 14, 2014, 6:47:07 PM (11 years ago)
Author:
cfuguet
Message:

Optimization in disk image generation

When disk image exists, we dont need to recreate it, we only
copy new files in it

Location:
soft/giet_vm
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • soft/giet_vm/Makefile

    r300 r302  
     1-include build.mk
     2
    13export # export all variable to sub-Makefile
    24CC = mipsel-unknown-elf-gcc
     
    1113### partition sectors    = 524832
    1214
    13 MAP_XML     ?= mappings/4c_1p_iob_sort.xml
     15MAP_XML     ?= mappings/4c_1p_sort_leti.xml
    1416
    1517### Objects to be linked for kernel.elf
     
    123125               -I.
    124126
    125 all: map.bin                         \
     127DISK_IMAGE  := hdd/virt_hdd.dmg
     128
     129### Copy executable and miscellaneous files into disk image
     130### Copy bootloader into sector 2 of disk image
     131all: $(DISK_IMAGE)                   \
     132     $(MAP_XML)                      \
     133     giet_config.h                   \
     134     map.bin                         \
    126135     build/boot/boot.elf             \
    127136     build/kernel/kernel.elf         \
    128137     build/display/display.elf       \
    129      build/router/router.elf         \
    130138     build/hello/hello.elf           \
    131139     build/pgcd/pgcd.elf             \
     140     build/router/router.elf         \
    132141     build/dhrystone/dhrystone.elf   \
    133142     build/gameoflife/gameoflife.elf \
    134143     build/sort/sort.elf             \
    135144     build/transpose/transpose.elf   \
    136      hdd/virt_hdd.dmg
     145         
     146        mcopy -so -i $(DISK_IMAGE) build ::/
     147        mcopy -so -i $(DISK_IMAGE) hdd/misc ::/
     148        mcopy -so -i $(DISK_IMAGE) map.bin ::/
     149        dd if=build/boot/boot.elf of=$(DISK_IMAGE) seek=2 conv=notrunc
    137150
    138151### Disk image generation
    139152### This requires the generic LINUX/MacOS script "create_dmg" script
    140153### written by C.Fuguet. (should be installed in GIET-VM root directory).
    141 hdd/virt_hdd.dmg: map.bin                \
    142          build/boot/boot.elf             \
    143          build/kernel/kernel.elf         \
    144          build/display/display.elf       \
    145          build/hello/hello.elf           \
    146          build/pgcd/pgcd.elf             \
    147          build/router/router.elf         \
    148          build/dhrystone/dhrystone.elf   \
    149          build/gameoflife/gameoflife.elf \
    150          build/sort/sort.elf             \
    151          build/transpose/transpose.elf
    152 
    153 ### remove all content of virtual disk virt_hdd
    154         rm -rf hdd/virt_hdd/*
    155 ### copy content to virtual disk from build, misc and map.bin
    156 ### the boot.elf file is not copied on the virtual disk
    157         cp -r build hdd/virt_hdd
    158         rm -rf hdd/virt_hdd/build/boot
    159         cp -r hdd/misc hdd/virt_hdd
    160         cp map.bin  hdd/virt_hdd
    161 ### create temporary partition image
    162         ./create_dmg create hdd/virt_hdd $(basename $@)
    163 ### copy boot.elf into virtual disk image (sector 2)
    164         dd if=build/boot/boot.elf of=$@ seek=2 conv=notrunc
     154$(DISK_IMAGE):
     155        ./create_dmg create $(basename $(DISK_IMAGE))
    165156
    166157### mapping compilation
     
    455446        rm -rf build/transpose/*
    456447        rm -rf build/map.bin
    457         rm -rf hdd/virt_hdd/*
     448
     449distclean: clean
    458450        rm -rf hdd/virt_hdd.dmg
  • soft/giet_vm/create_dmg

    r300 r302  
    4242
    4343                        if [[ -z $2 ]]; then
    44                                 echo "Create action need second argument: <srcdir_path>"
     44                                echo "Create action need second argument: <disk_image>"
    4545                                exit 1;
    4646                        fi;
    47 
    48                         if [[ -z $3 ]]; then
    49                                 echo "Create action need third argument: <disk_image>"
    50                                 exit 1;
    51                         fi;
    52 
    53                         # RAW DISK IMAGE READ-ONLY
    54                         # The not used space is not considered (smaller disk image)
    55                         # format="UDRO"
    56 
    57                         # RAW DISK IMAGE READ-WRITE
    58                         # None compression is made
    59                         format="UDRW"
    6047
    6148                        # -F FAT type = 32 (FAT32)
     
    6451                        # -r reserved sectors
    6552                        # -k backup boot sector (VBR and FS INFO) = 0xffff (no backup)
    66                         echo "Creating partition file $3.dmg from $2 directory"
     53                        echo "Creating empty disk image: $2.dmg"
    6754                        fsargs="-F32 -c $sectors_per_cluster -n 1 -r $reserved_sectors -k 0xffff"
     55
     56                        # -layout = NONE (No partition scheme. Hence no Master Boot Record)
    6857                        hdiutil create \
    6958                                -fs MS-DOS \
    7059                                -volname virtualdisk \
    71                                 -srcfolder $2 \
     60                                -layout NONE \
    7261                                -sectors $sectors \
    7362                                -ov \
    7463                                -fsargs "$fsargs" \
    75                                 -format $format \
    76                                 $3;
    77 #                               -verbose \
    78 
    79                         echo "Removing first sector of diskimage"
    80 
    81                         if [[ -e "/tmp" ]]; then
    82                                 if [[ -e "/tmp/diskimage" ]]; then
    83                                         echo "Warning /tmp/diskimage exists already. Rename it or"
    84                                         echo "remove it before executing this script"
    85                                         exit
    86                                 fi;
    87 
    88                                 dd if=$3.dmg of=/tmp/diskimage iseek=1 oseek=0
    89                                 mv /tmp/diskimage $3.dmg
    90                         fi;;
     64                                -type "UDIF" \
     65                                $2;
     66                        ;;
    9167
    9268                attach )
    9369                        # Attach created disk image to the system and mount it
    94                         hdiutil attach $2;;
     70                        hdiutil attach $2
     71                        ;;
    9572
    9673                detach )
    9774                        # Detach attached device. Must pass as parameter the /dev/<device>
    98                         hdiutil detach $2;;
     75                        hdiutil detach $2
     76                        ;;
    9977
    10078                info )
    101                         hdiutil imageinfo $2;;
     79                        hdiutil imageinfo $2
     80                        ;;
    10281
    10382                * )
    10483                        echo "Pass the command as the first parameter: "
    10584                        echo "  - create: create disk image"
    106                         echo "            First parameter after create action is the path"
    107                     echo "            of the directory to copy in the created "
    108                         echo "            partition"
    10985                        echo "  - attach: attach created disk image to the system and "
    11086                        echo "            mount it (arg: path to disk_image)"
     
    11591                        echo ""
    11692                        echo "EXAMPLES:"
    117                         echo " ./create_diskimage.sh create /path/to/source_dir disk_image"
     93                        echo " ./create_diskimage.sh create disk_image"
    11894                        echo " ./create_diskimage.sh attach /path/to/disk_image.dmg"
    11995                        echo " ./create_diskimage.sh detach /dev/disk5"
    12096                        echo " ./create_diskimage.sh info   /path/to/disk_image.dmg"
     97                        ;;
    12198        esac;
    12299
     
    124101        case $1 in
    125102                create )
     103
    126104                        if [[ -z $2 ]]; then
    127                                 echo "Create action need second argument: <srcdir_path>"
     105                                echo "Create action need second argument: <disk_image>"
    128106                                exit 1;
    129107                        fi;
    130108
    131                         if [[ -z $3 ]]; then
    132                                 echo "Create action need third argument: <disk_image>"
    133                                 exit 1;
    134                         fi;
    135 
    136                         echo "Creating partition file: $3"
     109                        echo "Creating empty disk image: $2"
    137110
    138111                        let "sectors = (sectors - 1) / 2"
     
    145118                                -s $sectors_per_cluster \
    146119                                -v \
    147                                 $3.dmg $sectors
    148 
    149                         if [[ -e $2 ]]; then
    150                                 echo "Copying files from $2 into partition"
    151                                 mcopy -s -i $3.dmg $2/* :://
    152                         fi;;
     120                                $2.dmg $sectors
     121                        ;;
    153122
    154123                * )
    155124                        echo "Pass the command as the first parameter: "
    156125                        echo "  - create: create disk image"
    157                         echo "            First parameter after create action is the path"
    158                     echo "            of the directory to copy in the created "
    159                         echo "            partition"
    160126                        echo ""
    161127                        echo "EXAMPLES:"
    162                         echo " ./create_diskimage.sh create /path/to/source_dir disk_image"
     128                        echo " ./create_diskimage.sh create disk_image"
     129                        ;;
    163130        esac;
    164131
Note: See TracChangeset for help on using the changeset viewer.