Recentemente ho acquistato un Netgear Stora, un NAS molto versatile con 2 slot da 3.5″ SATAII.

Ho cominciato a “riempirlo” con 2 HDD in configurazione RAID “JBOD” ottenendo 3TB di spazio in rete ( 2TB + 1TB), ma ovviamente non mi sono fermato qui: ho analizzato un po’ il sistema e ho trovato qualche guida per ottenere i permessi di root su questo “mini-pc” e così ho scoperto che ha un versatile sistema unix ArmV5, con il supporto a optware e ipkg, rendendolo in grado di avviare qualunque software (codice sorgente permettendo).

Date le mie esigenze di spazio ho spostato tutti i miei dati sul NAS , Ma avendo una console con JTAG/RGH ben presto mi sono sentito “azzoppato” dalla necessità di avere per forza un altro pc che estraesse le iso con xiso-extract per me, visto che il NAS non era in grado di farlo… Ma chi lo ha detto questo?

Mi sono detto: E’ linux no? Quindi basta compilare il programma e dargli le dipendenze giuste!

Detto fatto: in poco tempo ho recuperato tutti i tools e le dipendenze che mi servivano e sono riuscito ad ottenere una versione perfettamente funzionante di extract-xiso 2.7.0 (modificata per le XGD3).

 

Adesso il problema si è ripresentato con ABGX360: non mi andava di affidarmi ad un altro PC quando il NAS poteva virtualmente controllare e svolgere tutte le mansioni che si fanno di norma dal PC: il problema era installare correttamente tutte le dipendenze di ABGX360 e farlo avviare correttamente.

 

Questa guida è applicabile, con le giuste conoscenze, a tutti i sistemi Linux, nel mio caso sto trattando con un ArmV5 (Linux axentraserver********* 2.6.22.18-Netgear #16 Sun Jun 13 19:54:46 EDT 2010 armv5tejl armv5tejl armv5tejl GNU/Linux) di un Netgear STORA, su alcuni sistemi (specialmente quelli che sono dotati di optware e quindi del supporto al tool “ipkg” i passaggi rimangono identici).

 

Cominciamo con scaricare i giusti files sorgente per linux:

Recatevi QUI e scaricate il file abgx360-1.0.6.tar.gz sotto la parte Linux/BSD.

Una volta ottenuto il file passatelo dove volete nel vostro NAS/Sistema LINUX e scompattatelo con:

tar -zxvf abgx360-1.0.6.tar.gz

 

spostatevi nella cartella appena creata con:

cd abgx360-1.0.6

Perfetto: verificate di essere nella directory con un semplice comando “ls”.

Dovreste vedere in output tutti i files della cartella, tra cui “configure”.

 

Lanciate adesso:

./configure

Se la vostra macchina è configurata bene il processo andrà a buon fine, in caso contrario gli errori comuni sono “gcc not found”, “make not found”, “zlib not found” oppure “curl not usable/not found”.

Perchè le dipendenze di abgx sono proprio queste: curl,make,gcc (o un altro compilatore C) e zlib.

Vediamo come risolvere:

Visto che trattiamo di NAS, il passo piu’ semplice è installare tutto quello che ci serve in un sol colpo con ipkg:

ipkg install gcc make curl-dev zlib

L’errore piu’ comune è credere che qualunque versione di curl vada bene: la versione utile a abgx360 è la “dev”, quindi occhio!!

Adesso che avete tutto il necessario rilanciate pure “./configure” e stavolta dovrebbe andare a buon fine, ecco il log del mio NAS:

-bash-3.2# ./configure
checking for a BSD-compatible install… /usr/bin/install -c
checking whether build environment is sane… yes
checking for a thread-safe mkdir -p… /bin/mkdir -p
checking for gawk… gawk
checking whether make sets $(MAKE)… yes
checking for gcc… gcc
checking for C compiler default output file name… a.out
checking whether the C compiler works… yes
checking whether we are cross compiling… no
checking for suffix of executables…
checking for suffix of object files… o
checking whether we are using the GNU C compiler… yes
checking whether gcc accepts -g… yes
checking for gcc option to accept ISO C89… none needed
checking for style of include used by make… GNU
checking dependency style of gcc… gcc3
checking how to run the C preprocessor… gcc -E
checking for grep that handles long lines and -e… /bin/grep
checking for egrep… /bin/grep -E
checking whether gcc needs -traditional… no
checking for crc32 in -lz… yes
checking for gawk… (cached) gawk
checking for curl-config… /opt/bin/curl-config
checking for the version of libcurl… 7.21.7
checking for libcurl >= version 7.7.2… yes
checking whether libcurl is usable… yes
checking for curl_free… yes
checking for dirent.h that defines DIR… yes
checking for library containing opendir… none required
checking for ANSI C header files… yes
checking zlib.h usability… yes
checking zlib.h presence… yes
checking for zlib.h… yes
checking curl/curl.h usability… yes
checking curl/curl.h presence… yes
checking for curl/curl.h… yes
checking fnmatch.h usability… yes
checking fnmatch.h presence… yes
checking for fnmatch.h… yes
checking pwd.h usability… yes
checking pwd.h presence… yes
checking for pwd.h… yes
checking limits.h usability… yes
checking limits.h presence… yes
checking for limits.h… yes
checking malloc.h usability… yes
checking malloc.h presence… yes
checking for malloc.h… yes
checking stddef.h usability… yes
checking stddef.h presence… yes
checking for stddef.h… yes
checking stdlib.h usability… yes
checking stdlib.h presence… yes
checking for stdlib.h… yes
checking string.h usability… yes
checking string.h presence… yes
checking for string.h… yes
checking strings.h usability… yes
checking strings.h presence… yes
checking for strings.h… yes
checking sys/time.h usability… yes
checking sys/time.h presence… yes
checking for sys/time.h… yes
checking termios.h usability… yes
checking termios.h presence… yes
checking for termios.h… yes
checking unistd.h usability… yes
checking unistd.h presence… yes
checking for unistd.h… yes
checking fcntl.h usability… yes
checking fcntl.h presence… yes
checking for fcntl.h… yes
checking for stdbool.h that conforms to C99… yes
checking for _Bool… yes
checking for an ANSI C-conforming const… yes
checking for working volatile… yes
checking for size_t… yes
checking for off_t… yes
checking for int32_t… yes
checking whether time.h and sys/time.h may both be included… yes
checking for ptrdiff_t… yes
checking whether closedir returns void… no
checking for working alloca.h… yes
checking for alloca… yes
checking for mbstate_t… yes
checking for working POSIX fnmatch… yes
checking for _LARGEFILE_SOURCE value needed for large files… no
checking for working memcmp… yes
checking for stdlib.h… (cached) yes
checking for GNU libc compatible realloc… yes
checking whether lstat dereferences a symlink specified with a trailing slash… no
checking whether stat accepts an empty string… yes
checking for error_at_line… yes
checking for vprintf… yes
checking for _doprnt… no
checking for atexit… yes
checking for gettimeofday… yes
checking for memset… yes
checking for strcasecmp… yes
checking for strerror… yes
checking for strncasecmp… yes
checking for strtol… yes
checking for strtoul… yes
checking for strstr… yes
checking for mkdir… yes
checking for pow… yes
configure: creating ./config.status
config.status: creating Makefile
config.status: creating config.h
config.status: executing depfiles commands

 

Perfetto: significa che non ci sono problemi, e finalmente il Makefile corretto è stato creato!

I prossimi step riguardano la compilazione del programma e l’installazione in modo da poterlo richiamare in qualunque cartella voi siate.

sudo make

Questo comando dovrebbe restituire correttamente il programma compilato, non preoccupatevi di quanto tempo impiegherà a farlo, basta che non dia errori, ecco il mio log:

-bash-3.2# make
make all-am
make[1]: Entering directory `/home/angel/abgx/abgx360-1.0.6′
gcc -DHAVE_CONFIG_H -I. -Wall -W -g -O2 -I/opt/include -MT abgx360-abgx360.o -MD -MP -MF .deps/abgx360-abgx360.Tpo -c -o abgx360-abgx360.o `test -f ‘src/abgx360.c’ || echo ‘./’`src/abgx360.c
mv -f .deps/abgx360-abgx360.Tpo .deps/abgx360-abgx360.Po
gcc -DHAVE_CONFIG_H -I. -Wall -W -g -O2 -I/opt/include -MT abgx360-rijndael-alg-fst.o -MD -MP -MF .deps/abgx360-rijndael-alg-fst.Tpo -c -o abgx360-rijndael-alg-fst.o `test -f ‘src/rijndael-alg-fst.c’ || echo ‘./’`src/rijndael-alg-fst.c
mv -f .deps/abgx360-rijndael-alg-fst.Tpo .deps/abgx360-rijndael-alg-fst.Po
gcc -DHAVE_CONFIG_H -I. -Wall -W -g -O2 -I/opt/include -MT abgx360-sha1.o -MD -MP -MF .deps/abgx360-sha1.Tpo -c -o abgx360-sha1.o `test -f ‘src/sha1.c’ || echo ‘./’`src/sha1.c
mv -f .deps/abgx360-sha1.Tpo .deps/abgx360-sha1.Po
gcc -DHAVE_CONFIG_H -I. -Wall -W -g -O2 -I/opt/include -MT abgx360-lzxd.o -MD -MP -MF .deps/abgx360-lzxd.Tpo -c -o abgx360-lzxd.o `test -f ‘src/mspack/lzxd.c’ || echo ‘./’`src/mspack/lzxd.c
mv -f .deps/abgx360-lzxd.Tpo .deps/abgx360-lzxd.Po
gcc -DHAVE_CONFIG_H -I. -Wall -W -g -O2 -I/opt/include -MT abgx360-system.o -MD -MP -MF .deps/abgx360-system.Tpo -c -o abgx360-system.o `test -f ‘src/mspack/system.c’ || echo ‘./’`src/mspack/system.c
mv -f .deps/abgx360-system.Tpo .deps/abgx360-system.Po
gcc -Wall -W -g -O2 -I/opt/include -o abgx360 abgx360-abgx360.o abgx360-rijndael-alg-fst.o abgx360-sha1.o abgx360-lzxd.o abgx360-system.o -L/opt/lib -lcurl -L/home/slug/optware/cs08q1armel/staging/opt/lib -Wl,-rpath,/opt/lib -Wl,-rpath-link,/home/slug/optware/cs08q1armel/staging/opt/lib -lssl -L/home/slug/optware/cs08q1armel/staging/lib -L/home/slug/optware/cs08q1armel/staging/lib -lz -lm
make[1]: Leaving directory `/home/angel/abgx/abgx360-1.0.6′

Perfetto! Adesso facendo

sudo make install

 

Un brevissimo script sposterà il programma compilato in una variabile di ambiente, cosi’ da poter richiamare abgx360 da qualunque posizione.

 

Avete finito, verificate adesso che scrivendo “abgx360″ vi compaiano le consuete scritte di utilizzo del programma:

-bash-3.2# abgx360
——————————————————————————-
\\//\\//\\//\\// _ |_ _ \ \/ /_ _ _ \\//\\//\\//\\//\\//\\//\\//\\//\\//\\
//\\//\\//\\//\\ (_||_)(_|/ /\ \_||_ | | //\\//\\//\\//\\//\\//\\//\\//\\//\\//
————————_|——_||_||_|–v1.0.6——-[http://abgx360.net]—-

Usage: abgx360 [options] <input file(s)>

<input file(s)> can be Xbox 360 ISOs, Xex’s, or SS/Stealth files – abgx360 will
recognize them automatically and only process the appropriate options.

Short options can be combined into one argument (Ex: “abgx360 -vw IMAGE.000″)

Options:

– this is a special option that needs to come after
[options] but before <input file(s)> if any filenames
begin with a hyphen
-v, –verbose high verbosity
-n, –noverbose low verbosity
-t, –terminal use Terminal font characters
-c, –corrupt always check for AnyDVD style game data corruption
-h, –html output html (Ex: “abgx360 -vhiw IMAGE.000 > IMAGE.html”)
–showfiles display ISO filesystem
-p, –padding check/fix Video zero padding (doesn’t affect stealth)
–pL0 if using -p or –padding, this option is also needed to
enable fixing XGD2 L0 zero padding (don’t add this option
until you’ve read the message that comes up when XGD2 L0
padding is not blank)
-s, –stripcolors strips colors (useful if you’re directing output to a
text file)
-d, –nodvdcheck don’t check for/create valid .dvd file
-r, –regioncheck check the region code only (no stealth check)
–noverify don’t attempt to verify against the verified database
(local or online) if stealth passes
–noupdate don’t check for updates
–csv include GameNameLookup.csv in the check for updates
-o, –stayoffline disable all online functions and prevent AutoFix/Verify
from looking in the online database for verified files
-w, –nowrite disable all writes to the input file(s) (for when you
just want to check files without modifying them)
-e, –ach show achievements
–achs show achievements but hide secret ones
–aa show avatar awards
-i, –images extract images from the Xex (recommended for html output)
–embed embed images in html source code for better portability

Game Partition CRC (default behavior is to check it only when needed):

–gamecrc always check it
-g, –nogamecrc never check it

AutoFix Threshold (use only one option, higher levels include lower ones):

-a, –af3, –autofixalways level 3: AutoFix if stealth passes but fails
verification
[default threshold] level 2: AutoFix if stealth is uncertain and
fails verification
–af1, –autofixfailed level 1: AutoFix only if stealth fails
-f, –af0, –noautofix level 0: Do not AutoFix

Where should AutoFix and Verification look for verified files:

[default setting] check the the online database for updated inis and
get new stealth files from it when needed
–localonly check the local StealthFiles folder only for inis
and stealth files

Rebuilding Method (choose the method for rebuilding an ISO if it’s missing
space for a video partition):

[default method] requires 7 – 7.5 GB free space on the partition
your ISO is located
-l, –rebuildlowspace only requires 253 MB free space but will corrupt
your ISO if it fails or is aborted during the
rebuilding process
-b, –norebuild don’t rebuild
-k, –keeporiginaliso don’t delete the original ISO after rebuilding
(applies to the default method only)

Manually patch or extract files:

–p-video <file> patch video from <file>
–p-pfi <file> patch PFI from <file>
–p-dmi <file> patch DMI from <file>
–p-ss <file> patch SS from <file>
–patchitanyway patch files even if stealth passes (default behavior
is to patch only if stealth fails and isn’t AutoFixed,
or stealth is uncertain and isn’t verified/AutoFixed)
–patchgarbage patch files even if they’re invalid
–e-video <file> extract video to <file>
–e-pfi <file> extract PFI to <file>
–e-dmi <file> extract DMI to <file>
–e-ss <file> extract SS to <file>
–clobber overwrite extracted files without prompting

Misc:

–lang <number> choose a preferred language to use when displaying
strings from the title id resource (default=1)
1 = English 2 = Japanese
3 = German 4 = French
5 = Spanish 6 = Italian
7 = Korean 8 = Traditional Chinese
9 = Portuguese 10 = Simplified Chinese
11 = Polish 12 = Russian
–skiplb skip checking the layerbreak on burned dvds
(useful if your drive doesn’t support checking it)
–notrust don’t trust SS v2 angles
–nofixdrt don’t fix SS C/R table if data is invalid
–dev <deviation> fix angles that deviate more than <deviation>
degrees from their CCRT targets (default=3)
–nofixdev don’t fix any deviating angles
-x, –fixangle359 change any 359 degree angles to 0 for compatibility
with iXtreme versions previous to v1.4
–rgn <code> tell abgx360 your console’s region so it can display
your game’s region code in the appropriate color.
use multiple regions if you have multiple consoles.
Ex codes: 000000FF (NTSC/U), 00FE0000 (PAL Europe),
00FE01FF (PAL Europe, NTSC/J Japan and NTSC/U)
–truncate <size> truncate or extend input file to <size> bytes
be very careful with this!
–retries <number> change the number of retries before a read/write
error is considered unrecoverable (default=20)
–nettimeout <secs> change the connection timeout to <secs> seconds
(default=20; 0=use the system’s internal timeout)
–dvdtimeout <secs> change the timeout for DVD Drive I/O requests to
<secs> seconds (default=20)
–devkey use the devkit AES key when decrypting an Xex
–help display this message (or just use “abgx360″
with no arguments)

 

 

Ecco qui un esempio del comando da lanciare (in questo comando c’e’ tutto quello che piace a me: verbosità al massimo per capire se è tutto ok, aggiornamento dei CSV e lingua impostata su Italiano, autofix al livello massimo).

-bash-3.2$ abgx360 –v –csv –gamecrc –af3 –lang 6 sp-srtt.iso
——————————————————————————-
\\//\\//\\//\\// _ |_ _ \ \/ /_ _ _ \\//\\//\\//\\//\\//\\//\\//\\//\\//\\
//\\//\\//\\//\\ (_||_)(_|/ /\ \_||_ | | //\\//\\//\\//\\//\\//\\//\\//\\//\\//
————————_|——_||_||_|–v1.0.6——-[http://abgx360.net]—-

 

Checking for updates to GameNameLookup.csv and abgx360.dat…
Server file GameNameLookup.csv no newer than local file – not retrieving
Server file abgx360.dat no newer than local file – not retrieving

sp-srtt.dvd is valid

Checking Game
ISO: “sp-srtt.iso”
Size: 8738846720 bytes
Files in ISO: 85, Folders in ISO: 3
Total bytes used: 7438838249 (85.88%)
Game appears to have random padding

Checking default.xex
Original PE Filename: sr3_rc_xbox2_release_final_dvd_emu.exe
Original PE Timestamp: 2011/09/20 00:39:31
Min Kernel Required: v2.0.13599.0
Game Name: Saints Row: The Third
Avatar Awards: 5 Avatar Awards
Achievements: 50 Achievements totaling 1000 Gamerscore
XEX CRC = BF6EAD6D
XEX Media ID: 5D8615E08EB2E64437FFE0D4-4F438D81

Checking Game CRC… (press Q to cancel)
Percent Elapsed Estimated Time Average Current Errors Total
Done Time Time Left Speed Speed Recovered Retries
100% 3:46 3:46 0:00 36.5 MB/s 39.2 MB/s

AnyDVD style corruption was not detected
Game CRC = D7F10B11

Saints Row: The Third

Region Code: 0xFFFFFFFF
Region Free!

Checking topology data
The first 12 sectors of topology data are blank!
Querying the online database to find the appropriate verified data to use…
Topology information was downloaded successfully

Looking for TOP_XGD3-DID-F87A804E_v1.sha1 in the online verified database
Server file TOP_XGD3-DID-F87A804E_v1.sha1 no newer than local file – not retrieving
Your topology data doesn’t match the file in the database!
Attempting to fix the topology data
Looking for TOP_XGD3-DID-F87A804E_v1.bin in the online verified database
Server file TOP_XGD3-DID-F87A804E_v1.bin no newer than local file – not retrieving

Writing fixed topology data to this ISO
Topology data was successfully fixed!

Checking SS
Timestamp of Authoring: 2011/09/23 00:00:00
Timestamp of Mastering: 2011/10/18 01:13:40
SS Version: 2 (trusted)
SS CRC = 910F318F (RawSS = 75EA32D7)
SS Media ID: 5D8615E08EB2E64437FFE0D4-4F438D81 (matches game)
SS looks valid

Checking DMI
Timestamp of Authoring: 2011/09/23 00:00:00 (matches SS)
DMI CRC = C1097D02
DMI Media ID: 5D8615E08EB2E64437FFE0D4-4F438D81 (matches game)
DMI looks valid

Checking PFI
PFI CRC = 26AF4C58
PFI matches known data (XGD3)

Video partition found
Video CRC = 2810B4E1 (V0 = CC198B17, V1 = 563325D0)

Basic Stealth check passed!

Starting Verification
Looking for 910F318FBF6EAD6D.ini in the online verified database
There is no verified rip of this Xex/SS combination in the online database
Failed to find a verified ini file for this Xex/SS combination
Verification failed

Starting AutoFix
Looking for Xex_BF6EAD6D.ini in the online verified database
Downloading Xex_BF6EAD6D.ini
100% [================================>] 9
Xex_BF6EAD6D.ini was downloaded successfully
Looking for 2FC6BB1CBF6EAD6D.ini in the online verified database
Downloading 2FC6BB1CBF6EAD6D.ini
100% [================================>] 334 326.2 KB/s ETA 00:00
2FC6BB1CBF6EAD6D.ini was downloaded successfully

Using 2FC6BB1CBF6EAD6D.ini (334 bytes)
Looking for SS_2FC6BB1C.bin in the online verified database
Downloading SS_2FC6BB1C.bin
100% [================================>] 1,573 1.5 MB/s ETA 00:00
SS_2FC6BB1C.bin was downloaded successfully
Verifying SS_2FC6BB1C.bin is valid before using it for AutoFix

Checking SS
Timestamp of Authoring: 2011/09/23 00:00:00
Timestamp of Mastering: 2011/12/03 21:49:45
SS Version: 2 (trusted)
SS CRC = 2FC6BB1C (RawSS = 9135EDFF)
SS Media ID: 5D8615E08EB2E64437FFE0D4-4F438D81 (matches game)
SS looks valid

Looking for DMI_3A801DAD.bin in the online verified database
Downloading DMI_3A801DAD.bin
100% [================================>] 562 548.8 KB/s ETA 00:00
DMI_3A801DAD.bin was downloaded successfully
Verifying DMI_3A801DAD.bin is valid before using it for AutoFix

Checking DMI
Timestamp of Authoring: 2011/09/23 00:00:00 (matches SS)
DMI CRC = 3A801DAD
DMI Media ID: 5D8615E08EB2E64437FFE0D4-4F438D81 (matches game)
DMI looks valid

Automatically patching stealth files…
Patching DMI from DMI_3A801DAD.bin
Patching SS from SS_2FC6BB1C.bin
Stealth files patched successfully!
Game partition CRC matches the verified ini!
AutoFix was successful!