{"type":"rich","version":"1.0","provider_name":"phorkie","provider_url":"https:\/\/p.cweiske.de\/","title":"Razer Forge TV: Scripts to unpack and re-pack a boot.img file","author_name":"Christian Weiske","cache_age":86400,"width":900,"height":900,"html":"<!-- embedding all files of https:\/\/p.cweiske.de\/853 -->\n<link rel=\"stylesheet\" href=\"https:\/\/p.cweiske.de\/css\/embed.css\"\/>\n<div class=\"phork\" id=\"853\">\n    <div class=\"phork-file\">\n <div class=\"phork-content\">\n  \n<div class=\"document\">\n\n\n<p>See <a class=\"reference external\" href=\"https:\/\/cweiske.de\/tagebuch\/forge-bootimg.htm\">https:\/\/cweiske.de\/tagebuch\/forge-bootimg.htm<\/a><\/p>\n<p>In comparison to other Android devices, <tt class=\"docutils literal\">cpio<\/tt> cannot be used to pack the files.<\/p>\n<\/div>\n\n <\/div>\n <div class=\"phork-meta\">\n  <a href=\"https:\/\/p.cweiske.de\/853\/rev-raw\/a3f0f1b52298d44d4fc1097c76b9a29f1697c307\/README.rst\" style=\"float: right\">view raw source<\/a>\n  <a href=\"https:\/\/p.cweiske.de\/853#README.rst\">README.rst<\/a>\n <\/div>\n<\/div>\n    <div class=\"phork-file\">\n <div class=\"phork-content\">\n  <style type=\"text\/css\">\/**\n * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2014 Benny Baumann\n * (http:\/\/qbnz.com\/highlighter\/ and http:\/\/geshi.org\/)\n *\/\n.bash .de1, .bash .de2 {font: normal normal 1em\/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;}\n.bash  {font-family:monospace;}\n.bash .imp {font-weight: bold; color: red;}\n.bash li, .bash .li1 {color: #DDD;}\n.bash .ln {width:1px;text-align:right;margin:0;padding:0 2px;vertical-align:top;}\n.bash .kw1 {color: #000000; font-weight: bold;}\n.bash .kw2 {color: #c20cb9; font-weight: bold;}\n.bash .kw3 {color: #7a0874; font-weight: bold;}\n.bash .co0 {color: #666666; font-style: italic;}\n.bash .co1 {color: #800000;}\n.bash .co2 {color: #cc0000; font-style: italic;}\n.bash .co3 {color: #000000; font-weight: bold;}\n.bash .co4 {color: #666666;}\n.bash .es1 {color: #000099; font-weight: bold;}\n.bash .es2 {color: #007800;}\n.bash .es3 {color: #007800;}\n.bash .es4 {color: #007800;}\n.bash .es5 {color: #780078;}\n.bash .es_h {color: #000099; font-weight: bold;}\n.bash .br0 {color: #7a0874; font-weight: bold;}\n.bash .sy0 {color: #000000; font-weight: bold;}\n.bash .st0 {color: #ff0000;}\n.bash .st_h {color: #ff0000;}\n.bash .nu0 {color: #000000;}\n.bash .re0 {color: #007800;}\n.bash .re1 {color: #007800;}\n.bash .re2 {color: #007800;}\n.bash .re4 {color: #007800;}\n.bash .re5 {color: #660033;}\n.bash span.xtra { display:block; }\n<\/style><div class=\"code\"><table class=\"bash\"><tbody><tr class=\"li1\"><td class=\"ln\"><pre class=\"de1\">1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n12\n<\/pre><\/td><td class=\"de1\"><pre class=\"de1\"><span class=\"kw2\">mkdir<\/span> m-<span class=\"nu0\">144<\/span>\n<span class=\"kw3\">cd<\/span> m-<span class=\"nu0\">144<\/span>\n<span class=\"kw2\">unzip<\/span> ..<span class=\"sy0\">\/<\/span>image-forge-m-<span class=\"nu0\">144<\/span>.zip\n..<span class=\"sy0\">\/<\/span>unpack-boot.img.sh\n&#160;\n<span class=\"co0\"># modify default.prop<\/span>\n..<span class=\"sy0\">\/<\/span>repack-boot.img.sh\n&#160;\n<span class=\"co0\"># disconnect HDMI cable from Forge TV and connect power to get into fastboot mode<\/span>\nfastboot flash boot my-boot.img\n<span class=\"co0\"># connect HDMI cable to Forge TV<\/span>\nfastboot reboot<\/pre><\/td><\/tr><\/tbody><\/table><\/div>\n <\/div>\n <div class=\"phork-meta\">\n  <a href=\"https:\/\/p.cweiske.de\/853\/rev-raw\/a3f0f1b52298d44d4fc1097c76b9a29f1697c307\/howto.sh\" style=\"float: right\">view raw source<\/a>\n  <a href=\"https:\/\/p.cweiske.de\/853#howto.sh\">howto.sh<\/a>\n <\/div>\n<\/div>\n    <div class=\"phork-file\">\n <div class=\"phork-content\">\n  <style type=\"text\/css\">\/**\n * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2014 Benny Baumann\n * (http:\/\/qbnz.com\/highlighter\/ and http:\/\/geshi.org\/)\n *\/\n.bash .de1, .bash .de2 {font: normal normal 1em\/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;}\n.bash  {font-family:monospace;}\n.bash .imp {font-weight: bold; color: red;}\n.bash li, .bash .li1 {color: #DDD;}\n.bash .ln {width:1px;text-align:right;margin:0;padding:0 2px;vertical-align:top;}\n.bash .kw1 {color: #000000; font-weight: bold;}\n.bash .kw2 {color: #c20cb9; font-weight: bold;}\n.bash .kw3 {color: #7a0874; font-weight: bold;}\n.bash .co0 {color: #666666; font-style: italic;}\n.bash .co1 {color: #800000;}\n.bash .co2 {color: #cc0000; font-style: italic;}\n.bash .co3 {color: #000000; font-weight: bold;}\n.bash .co4 {color: #666666;}\n.bash .es1 {color: #000099; font-weight: bold;}\n.bash .es2 {color: #007800;}\n.bash .es3 {color: #007800;}\n.bash .es4 {color: #007800;}\n.bash .es5 {color: #780078;}\n.bash .es_h {color: #000099; font-weight: bold;}\n.bash .br0 {color: #7a0874; font-weight: bold;}\n.bash .sy0 {color: #000000; font-weight: bold;}\n.bash .st0 {color: #ff0000;}\n.bash .st_h {color: #ff0000;}\n.bash .nu0 {color: #000000;}\n.bash .re0 {color: #007800;}\n.bash .re1 {color: #007800;}\n.bash .re2 {color: #007800;}\n.bash .re4 {color: #007800;}\n.bash .re5 {color: #660033;}\n.bash span.xtra { display:block; }\n<\/style><div class=\"code\"><table class=\"bash\"><tbody><tr class=\"li1\"><td class=\"ln\"><pre class=\"de1\">1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22\n23\n24\n25\n26\n27\n28\n29\n<\/pre><\/td><td class=\"de1\"><pre class=\"de1\"><span class=\"co0\">#!\/bin\/sh<\/span>\n<span class=\"co0\"># Generate a boot.img for the Razer Forge TV from an unpacked one<\/span>\n<span class=\"kw1\">set<\/span> <span class=\"re5\">-e<\/span>\n&#160;\n<span class=\"re2\">bootimgfile<\/span>=<span class=\"co1\">${1:-my-boot.img}<\/span>\n<span class=\"re2\">outdir<\/span>=<span class=\"co1\">${2:-mybootimg}<\/span>\n&#160;\n<span class=\"kw3\">cd<\/span> <span class=\"st0\">&quot;<span class=\"es2\">$outdir<\/span>\/ramdisk&quot;<\/span>\n<span class=\"kw2\">find<\/span> \\\n&#160; &#160; <span class=\"sy0\">|<\/span> <span class=\"kw2\">grep<\/span> <span class=\"re5\">-v<\/span> <span class=\"st_h\">'^.$'<\/span>\\\n&#160; &#160; <span class=\"sy0\">|<\/span> <span class=\"kw2\">sort<\/span>\\\n&#160; &#160; <span class=\"sy0\">|<\/span> pax <span class=\"re5\">-w<\/span> <span class=\"re5\">-x<\/span> sv4cpio <span class=\"re5\">-M<\/span> mtime <span class=\"re5\">-M<\/span> uidgid <span class=\"re5\">-s<\/span> <span class=\"st_h\">'#^.\/##'<\/span> <span class=\"re5\">-d<\/span> <span class=\"re5\">-f<\/span> ..<span class=\"sy0\">\/<\/span>myinitrd.cpio\n&#160;\n<span class=\"kw3\">cd<\/span> ..\n<span class=\"kw2\">cat<\/span> myinitrd.cpio <span class=\"sy0\">|<\/span> <span class=\"kw2\">gzip<\/span> <span class=\"sy0\">&gt;<\/span> myinitrd.img\n&#160;\n<span class=\"kw3\">cd<\/span> ..\n&#160;\n<span class=\"kw3\">echo<\/span> <span class=\"st0\">&quot;Generating new boot image: <span class=\"es2\">$bootimgfile<\/span>&quot;<\/span>\n..<span class=\"sy0\">\/<\/span>mkbootimg.py\\\n&#160; &#160; <span class=\"re5\">--kernel<\/span> <span class=\"st0\">&quot;<span class=\"es2\">$outdir<\/span>\/zImage&quot;<\/span>\\\n&#160; &#160; <span class=\"re5\">--ramdisk<\/span> <span class=\"st0\">&quot;<span class=\"es2\">$outdir<\/span>\/myinitrd.img&quot;<\/span>\\\n&#160; &#160; <span class=\"re5\">--cmdline<\/span> <span class=\"st0\">&quot;console=ttyHSL0,115200,n8 androidboot.console=ttyHSL0 androidboot.hardware=qcom user_debug=31 msm_rtb.filter=0x3b7 dwc3_msm.cpu_to_affin=1&quot;<\/span>\\\n&#160; &#160; <span class=\"re5\">--pagesize<\/span> 0x1000\\\n&#160; &#160; --kernel_offset 0x8000\\\n&#160; &#160; --ramdisk_offset 0x1000000\\\n&#160; &#160; --tags_offset 0x100\\\n&#160; &#160; <span class=\"re5\">-o<\/span> <span class=\"st0\">&quot;<span class=\"es2\">$bootimgfile<\/span>&quot;<\/span>\n&#160;<\/pre><\/td><\/tr><\/tbody><\/table><\/div>\n <\/div>\n <div class=\"phork-meta\">\n  <a href=\"https:\/\/p.cweiske.de\/853\/rev-raw\/a3f0f1b52298d44d4fc1097c76b9a29f1697c307\/repack-boot.img.sh\" style=\"float: right\">view raw source<\/a>\n  <a href=\"https:\/\/p.cweiske.de\/853#repack-boot.img.sh\">repack-boot.img.sh<\/a>\n <\/div>\n<\/div>\n    <div class=\"phork-file\">\n <div class=\"phork-content\">\n  <style type=\"text\/css\">\/**\n * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2014 Benny Baumann\n * (http:\/\/qbnz.com\/highlighter\/ and http:\/\/geshi.org\/)\n *\/\n.bash .de1, .bash .de2 {font: normal normal 1em\/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;}\n.bash  {font-family:monospace;}\n.bash .imp {font-weight: bold; color: red;}\n.bash li, .bash .li1 {color: #DDD;}\n.bash .ln {width:1px;text-align:right;margin:0;padding:0 2px;vertical-align:top;}\n.bash .kw1 {color: #000000; font-weight: bold;}\n.bash .kw2 {color: #c20cb9; font-weight: bold;}\n.bash .kw3 {color: #7a0874; font-weight: bold;}\n.bash .co0 {color: #666666; font-style: italic;}\n.bash .co1 {color: #800000;}\n.bash .co2 {color: #cc0000; font-style: italic;}\n.bash .co3 {color: #000000; font-weight: bold;}\n.bash .co4 {color: #666666;}\n.bash .es1 {color: #000099; font-weight: bold;}\n.bash .es2 {color: #007800;}\n.bash .es3 {color: #007800;}\n.bash .es4 {color: #007800;}\n.bash .es5 {color: #780078;}\n.bash .es_h {color: #000099; font-weight: bold;}\n.bash .br0 {color: #7a0874; font-weight: bold;}\n.bash .sy0 {color: #000000; font-weight: bold;}\n.bash .st0 {color: #ff0000;}\n.bash .st_h {color: #ff0000;}\n.bash .nu0 {color: #000000;}\n.bash .re0 {color: #007800;}\n.bash .re1 {color: #007800;}\n.bash .re2 {color: #007800;}\n.bash .re4 {color: #007800;}\n.bash .re5 {color: #660033;}\n.bash span.xtra { display:block; }\n<\/style><div class=\"code\"><table class=\"bash\"><tbody><tr class=\"li1\"><td class=\"ln\"><pre class=\"de1\">1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n<\/pre><\/td><td class=\"de1\"><pre class=\"de1\"><span class=\"co0\">#!\/bin\/sh<\/span>\n<span class=\"co0\"># Unpack a Razer Forge TV boot.img file so we can modify default.prop<\/span>\n<span class=\"kw1\">set<\/span> <span class=\"re5\">-e<\/span>\n&#160;\n<span class=\"re2\">bootimgfile<\/span>=<span class=\"co1\">${1:-boot.img}<\/span>\n<span class=\"re2\">outdir<\/span>=<span class=\"co1\">${2:-mybootimg}<\/span>\n&#160;\n<span class=\"kw1\">if<\/span> <span class=\"br0\">&#91;<\/span> <span class=\"re5\">-d<\/span> <span class=\"st0\">&quot;<span class=\"es2\">$outdir<\/span>&quot;<\/span> <span class=\"br0\">&#93;<\/span>; <span class=\"kw1\">then<\/span>\n&#160; &#160; <span class=\"kw2\">rm<\/span> <span class=\"re5\">-rf<\/span> <span class=\"st0\">&quot;<span class=\"es2\">$outdir<\/span>&quot;<\/span>\n<span class=\"kw1\">fi<\/span>\n&#160;\n<span class=\"kw3\">echo<\/span> <span class=\"st0\">&quot;Unpacking <span class=\"es2\">$bootimgfile<\/span> into <span class=\"es2\">$outdir<\/span>&quot;<\/span>\n<span class=\"kw2\">mkdir<\/span> <span class=\"st0\">&quot;<span class=\"es2\">$outdir<\/span>&quot;<\/span>\n<span class=\"kw3\">cd<\/span> <span class=\"st0\">&quot;<span class=\"es2\">$outdir<\/span>&quot;<\/span>\nabootimg <span class=\"re5\">-x<\/span> <span class=\"st0\">&quot;..\/<span class=\"es2\">$bootimgfile<\/span>&quot;<\/span>\n&#160;\n<span class=\"kw3\">echo<\/span> <span class=\"st0\">&quot;Unpacking initrd.img into ramdisk\/&quot;<\/span>\nabootimg-unpack-initrd initrd.img ramdisk\n&#160;<\/pre><\/td><\/tr><\/tbody><\/table><\/div>\n <\/div>\n <div class=\"phork-meta\">\n  <a href=\"https:\/\/p.cweiske.de\/853\/rev-raw\/a3f0f1b52298d44d4fc1097c76b9a29f1697c307\/unpack-boot.img.sh\" style=\"float: right\">view raw source<\/a>\n  <a href=\"https:\/\/p.cweiske.de\/853#unpack-boot.img.sh\">unpack-boot.img.sh<\/a>\n <\/div>\n<\/div>\n<\/div>\n"}
