Changeset 5861


Ignore:
Timestamp:
Sep 19, 2017, 2:21:55 PM (2 years ago)
Author:
mabarracus
Message:

Build system for RaspberryPi3 with full filesystem
Copy optimizations

Location:
n4d-lliurexberry/trunk/fuentes
Files:
1 added
2 deleted
4 edited

Legend:

Unmodified
Added
Removed
  • n4d-lliurexberry/trunk/fuentes/debian/changelog

    r3604 r5861  
     1n4d-lliurexberry (0.23) xenial; urgency=medium
     2
     3  * Build system for RaspberryPi3 with full filesystem
     4  * Copy optimizations
     5
     6 -- M.Angel Juan <m.angel.juan@gmail.com>  Mon, 18 Sep 2017 18:17:48 +0200
     7
    18n4d-lliurexberry (0.22-2) xenial; urgency=medium
    29
  • n4d-lliurexberry/trunk/fuentes/install/usr/sbin/create_llxberry_sd

    r398 r5861  
    11#!/bin/bash
     2today=$(date '+%Y%m%d')
     3data_version=$(dpkg-query -f='${Version}' -W lliurexberry-data|tr -c '[:alnum:]' '_')
     4diff_version=$(dpkg-query -f='${Version}' -W n4d-lliurexberry|tr -c '[:alnum:]' '_')
     5
     6temp_dir="/tmp/llxberry_${today}_${data_version}_${diff_version}"
     7
     8if [ -f "${temp_dir}/.lock" ];then
     9    logger "Unable to run 'create_llxberry_sd', ${temp_dir} is locked!"
     10    exit 1
     11else
     12    if [ ! -d "${temp_dir}" ]; then
     13        mkdir -p ${temp_dir}/fs
     14    fi
     15    touch ${temp_dir}/.lock
     16fi
     17
     18
    219if [ ! -e /var/run/remove_partitions ]; then
    320        echo "not exists /var/run/remove_partitions."
     21        rm ${temp_dir}/.lock
    422        exit 1
    523fi
     
    1129if [ ! -e "$token_name" ]; then
    1230        echo "not exists /var/run/remove_partitions."
     31        rm ${temp_dir}/.lock
    1332        exit 1
    1433fi
     
    5574parted -s $device mklabel msdos
    5675# Create vfat 35 Mb partition with boot flag
    57 parted -s $device unit MB mkpart primary fat32 0 150
    58 parted -s $device set 1 boot on
     76parted -a minimal -s $device mkpart primary fat32 '0%' 50
     77parted -a minimal -s $device set 1 boot on
     78parted -a minimal -s $device mkpart primary ext4 50 '100%'
    5979# Format partition
    60 partition=`get_first_partition $device`
    61 if [ "$partition" = "" ];then
     80partition_boot=$(get_first_partition $device boot)
     81partition_system=$(get_first_partition $device system)
     82if [ "$partition_boot" = "" -o "$partition_system" = "" ];then
    6283        echo "error"
    6384        exit 1
    6485fi
    65 mkfs.vfat -F 32 ${partition}
     86mkfs.vfat -F 32 ${partition_boot}
     87mkfs.ext4 -F ${partition_system}
    6688# Mount partition
    6789path_sd="/media/llxberry_$RANDOM"
    6890mkdir -p $path_sd
    69 mount ${partition} $path_sd
    70 data_path=$(llx-berry-manager)
     91mount ${partition_system} $path_sd
     92mkdir -p $path_sd/boot
     93mount ${partition_boot} $path_sd/boot
     94
     95if [ ! -d "${temp_dir}/fs/etc" ]; then
     96    data_path=$(llx-berry-manager ${temp_dir}/fs/)
     97else
     98    data_path=$temp_dir/fs/
     99fi
    71100
    72101# Cp berryboot files
    73 cp "$data_path"/* $path_sd
     102rsync -aHAXS "$data_path"/ $path_sd/
    74103
    75104# TODO
     
    81110sync
    82111
    83 umount $path_sd
     112umount $path_sd/boot
     113umount $path_sd
    84114rm -rf $path_sd
    85115
    86116rm /var/run/remove_partitions
     117rm $temp_dir/.lock
    87118# This line is very important to n4d clients
    88119echo "Ok"
  • n4d-lliurexberry/trunk/fuentes/install/usr/sbin/get_first_partition

    r398 r5861  
    66
    77try:
    8         device = parted.device.Device(sys.argv[1])
    9         disk = parted.Disk(device)
    10         print disk.partitions[0].path
     8    if len(sys.argv) > 2:
     9        if sys.argv[2] == 'system':
     10            part_order=1
     11        elif sys.argv[2] == 'boot':
     12            part_order=0
     13        else:
     14            sys.exit(1)
     15    else:
     16        part_order=0
     17    device = parted.device.Device(sys.argv[1])
     18    disk = parted.Disk(device)
     19    print disk.partitions[part_order].path
    1120except:
    12         pass
     21    pass
  • n4d-lliurexberry/trunk/fuentes/install/usr/sbin/llx-berry-manager

    r398 r5861  
    33import os
    44import tempfile
     5import sys
    56
    67class BerryManager:
    78       
    8         def __init__(self):
     9        def __init__(self,tmp_dir):
    910               
     11                self.tmp_dir=tmp_dir
    1012                self.base_dir="/usr/share/n4d-lliurexberry/"
    11                 self.orig_data_file=self.base_dir+"/orig-data/berryterminal-standalone-20150618.zip"
     13                self.orig_data_file=self.base_dir+"/orig-data/fs.tar.xz"
    1214                self.llx_data_dir=self.base_dir+"/llx-data/"
    1315               
    1416        #def __init__
    1517       
    16         def unzip(self,data_file=None):
     18        def unzip(self,data_file=None,tmp_dir=None):
    1719               
    1820                if data_file==None:
    1921                        data_file=self.orig_data_file
    2022               
    21                 tmp_dir=tempfile.mkdtemp()
    22                 cmd="unzip %s -d %s 1>/dev/null  2>/dev/null"%(data_file,tmp_dir)
     23                cmd="tar xfJ %s -C %s 1>/dev/null  2>/dev/null"%(data_file,tmp_dir)
    2324                os.system(cmd)
    2425               
     
    2829       
    2930       
    30         def gunzip_cpio(self,unzipped_path,v=None):
    31                
    32                 if v==None:
    33                         v=""
    34                        
    35                
    36                 tmp_dir=tempfile.mkdtemp()
    37                 cmd="cp %s/berryterminal%s.img %s/uncompressed_berryterminal.gz 2>/dev/null"%(unzipped_path,v,tmp_dir)
    38                 os.system(cmd)
    39                 cmd="gunzip %s/uncompressed_berryterminal.gz 1>/dev/null  2>/dev/null; rm -rf %s/uncompressed_berryterminal.gz 2>/dev/null"%(tmp_dir,tmp_dir)
    40                 os.system(cmd)
    41                 cmd="cd %s; cpio --quiet -id < %s/uncompressed_berryterminal; rm -rf %s/uncompressed_berryterminal 2>/dev/null"%(tmp_dir,tmp_dir,tmp_dir)
    42                 os.system(cmd)
    43                
    44                 return tmp_dir
    45                
    46         #def gunzip_cpio
     31#       def gunzip_cpio(self,unzipped_path,v=None):
     32#               
     33#               if v==None:
     34#                       v=""
     35#                       
     36#               
     37#               tmp_dir=tempfile.mkdtemp()
     38#               cmd="cp %s/berryterminal%s.img %s/uncompressed_berryterminal.gz 2>/dev/null"%(unzipped_path,v,tmp_dir)
     39#               os.system(cmd)
     40#               cmd="gunzip %s/uncompressed_berryterminal.gz 1>/dev/null  2>/dev/null; rm -rf %s/uncompressed_berryterminal.gz 2>/dev/null"%(tmp_dir,tmp_dir)
     41#               os.system(cmd)
     42#               cmd="cd %s; cpio --quiet -id < %s/uncompressed_berryterminal; rm -rf %s/uncompressed_berryterminal 2>/dev/null"%(tmp_dir,tmp_dir,tmp_dir)
     43#               os.system(cmd)
     44#               
     45#               return tmp_dir
     46#               
     47#       #def gunzip_cpio
    4748       
    4849       
    49         def copy_lliurex_files(self,tmp_boot_path,tmp_cpio_path):
     50        def copy_lliurex_files(self,tmp_path):
    5051               
    51                 cmd="cp -r %s/boot/* %s"%(self.llx_data_dir,tmp_boot_path)
    52                 os.system(cmd)
    53                 cmd="cp -r %s/cpio/* %s"%(self.llx_data_dir,tmp_cpio_path)
     52                cmd="rsync -aHAXS %s/fs/ %s/"%(self.llx_data_dir,tmp_path)
    5453                os.system(cmd)
    5554               
     
    5756       
    5857       
    59         def regenerate_cpio(self,boot_path,cpio_path,v=None):
    60                
    61                 if v==None:
    62                         v=""
    63 
    64                 cmd="cd %s; find . | cpio --quiet --create --format='newc' > %s/newinitrd && gzip %s/newinitrd 1>/dev/null  2>/dev/null; mv %s/newinitrd.gz %s/berryterminal%s.img"%(cpio_path,boot_path,boot_path,boot_path,boot_path,v)
    65                 os.system(cmd)
    66 
    67         #def regenerate_cpio
     58#       def regenerate_cpio(self,boot_path,cpio_path,v=None):
     59#               
     60#               if v==None:
     61#                       v=""
     62#
     63#               cmd="cd %s; find . | cpio --quiet --create --format='newc' > %s/newinitrd && gzip %s/newinitrd 1>/dev/null  2>/dev/null; mv %s/newinitrd.gz %s/berryterminal%s.img"%(cpio_path,boot_path,boot_path,boot_path,boot_path,v)
     64#               os.system(cmd)
     65#
     66#       #def regenerate_cpio
    6867
    6968
     
    7170        def generate_llxberry_files(self,data_file=None):
    7271               
    73                 boot_path=self.unzip(data_file)
    74                
     72                decompressed_path=self.unzip(data_file,self.tmp_dir)
     73                self.copy_lliurex_files(decompressed_path)
    7574                #Rpi v1
    76                 cpio_path=self.gunzip_cpio(boot_path,1)
    77                 self.copy_lliurex_files(boot_path,cpio_path)
    78                 self.regenerate_cpio(boot_path,cpio_path,1)
    79                 os.system("rm -rf %s"%cpio_path)
     75#               cpio_path=self.gunzip_cpio(boot_path,1)
     76#               self.copy_lliurex_files(boot_path,cpio_path)
     77#               self.regenerate_cpio(boot_path,cpio_path,1)
     78#               os.system("rm -rf %s"%cpio_path)
    8079               
    8180                #Rpi v2
    8281               
    83                 cpio_path=self.gunzip_cpio(boot_path,2)
    84                 self.copy_lliurex_files(boot_path,cpio_path)
    85                 self.regenerate_cpio(boot_path,cpio_path,2)
    86                 os.system("rm -rf %s"%cpio_path)
     82#               cpio_path=self.gunzip_cpio(boot_path,2)
     83#               self.copy_lliurex_files(boot_path,cpio_path)
     84#               self.regenerate_cpio(boot_path,cpio_path,2)
     85#               os.system("rm -rf %s"%cpio_path)
    8786
    88                 return boot_path
     87                return decompressed_path
    8988               
    9089        #def generate_llxberry_files
     
    9594
    9695if __name__=="__main__":
    97 
    98         bm=BerryManager()
     96        if len(sys.argv) != 2:
     97            sys.exit(1)
     98        bm=BerryManager(sys.argv[1])
    9999        print bm.generate_llxberry_files()
    100100
Note: See TracChangeset for help on using the changeset viewer.