Advertisement
Guest User

2_pack_firmware.sh

a guest
Feb 20th, 2021
200
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 3.72 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. # pack extracted root to CPIO file
  4. cd extracted_root
  5. #pax -w -x sv4cpio -s '>^\.>>' . > ../working_dir/new_main_container_filesystem.cpio # Kernel panic - not syncing: junk in compressed archive
  6. #find . | awk 'length($0) > 2' | cpio --reproducible --quiet -R 0:0 -o -H newc > ../working_dir/new_main_container_filesystem.cpio # junk in compressed archive
  7. #find . | cpio -oLv > ../working_dir/new_main_container_filesystem.cpio # no CPIO magic
  8. #find . | cpio -oLv -H newc > ../working_dir/new_main_container_filesystem.cpio # not syncing: XZ-compressed data is corrupt
  9. #pax -w -x cpio -s '~^[/]*~~' . > ../working_dir/new_main_container_filesystem.cpio #incorrect cpio method used: use -H newc option
  10. #pax -w -x sv4cpio -s '~^[/]*~~' . > ../working_dir/new_main_container_filesystem.cpio # junk in compressed archive
  11. #find . | cpio -o -H newc > ../working_dir/new_main_container_filesystem.cpio # Kernel panic - not syncing: junk in compressed archive
  12. #pax -w -x sv4cpio  . > ../working_dir/new_main_container_filesystem.cpio #not syncing: junk in compressed archive
  13. #find . | awk 'length($0) > 2' | cpio -o --device-independent -H newc > ../working_dir/new_main_container_filesystem.cpio #Kernel panic - not syncing: junk in compressed archive
  14. #find . | awk 'length($0) > 2' | cpio -ov -H newc > ../working_dir/new_main_container_filesystem.cpio # Kernel panic - not syncing: junk in compressed archive
  15. #find . | awk 'length($0) > 2' | cpio -ov -H newc -0 > ../working_dir/new_main_container_filesystem.cpio # Kernel panic - not syncing: junk in compressed archive
  16. #find . | awk 'length($0) > 2' | cpio -o -c > ../working_dir/new_main_container_filesystem.cpio # Kernel panic - not syncing: incorrect cpio method used: use -H newc option
  17. #find . | cpio -H newc -o > ../working_dir/new_main_container_filesystem.cpio # Kernel panic - not syncing: junk in compressed archive
  18. #find . -print -depth | awk 'length($0) > 1' | cpio -o -H newc > ../working_dir/new_main_container_filesystem.cpio # Kernel panic - not syncing: junk in compressed archive
  19. #find . | cpio -H newc -o -B > ../working_dir/new_main_container_filesystem.cpio
  20. #find . -print0 | cpio --null -ov --format=newc  --device-independent --ignore-devno --swap > ../working_dir/new_main_container_filesystem.cpio
  21. find . | cpio -o --format=newc  --device-independent --ignore-devno > ../working_dir/new_main_container_filesystem.cpio
  22. cd ..
  23.  
  24. # ERROR IS IN PACKING TO CPIO
  25.  
  26. # just workaround to test pakcing
  27. #cp working_dir/main_container_filesystem  working_dir/new_main_container_filesystem.cpio
  28.  
  29. # compress CPIO to XZ file
  30. cd working_dir/
  31. xz --compress --check=crc32 --lzma2=dict=1024KiB --keep new_main_container_filesystem.cpio
  32. mv new_main_container_filesystem.cpio.xz new_main_container_filesystem.xz
  33. cd ..
  34.  
  35. # create merged container
  36. cat working_dir/main_container_header.bin working_dir/new_main_container_filesystem.xz > working_dir/new_main_container_extracted.bin
  37.  
  38. # pack container using LZMA
  39. lzma --compress --keep working_dir/new_main_container_extracted.bin
  40. mv working_dir/new_main_container_extracted.bin.lzma working_dir/new_main_container.lzma
  41.  
  42. # create uImage header
  43. mkimage -A MIPS -O linux -T kernel -C lzma -a 0x80000000 -e 0x8000C150 -n "Linux Kernel Image" -d working_dir/new_main_container.lzma working_dir/new_uimage_with_lzma.bin
  44.  
  45. # merge bootloader, uImage header and firmware
  46. cat working_dir/u-boot.bin working_dir/new_uimage_with_lzma.bin > working_dir/tmp_merged_firmware.bin
  47.  
  48. # create final flash file with padding
  49. dd if=/dev/zero ibs=1k count=4096 | tr "\000" "\377" > new_firmware.bin
  50. dd if=working_dir/tmp_merged_firmware.bin of=new_firmware.bin conv=notrunc
  51.  
  52. # clean up
  53. rm working_dir/tmp_merged_firmware.bin
  54. cp new_firmware.bin /home/archont/new_firmware.bin
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement