First of all, doing a file-by-file conversion of a 4TB db is going to be very painful. I would try to stay with Solaris if I could - the systems are much more robust in terms of sheer CPU and I/O performance. But, companies don't always make the right choices.
I would test this a couple of times before I would call it good. That being said, start here:
I just done the same migration few months later (difference it was to exadata)
I would suggest you to use TTS (transportable tablespace) it is the most effective way.
You should use the MOS note below
How to Move Tablespaces Across Platforms Using Transportable Tablespaces With RMAN [ID 371556.1]
- Check platform
SQL> COLUMN PLATFORM_NAME FORMAT A32
SQL> SELECT * FROM V$TRANSPORTABLE_PLATFORM;
PLATFORM_ID PLATFORM_NAME ENDIAN_FORMAT
----------- -------------------------------- --------------
1 Solaris[tm] OE (32-bit) Big
2 Solaris[tm] OE (64-bit) Big
7 Microsoft Windows IA (32-bit) Little
10 Linux IA (32-bit) Little
6 AIX-Based Systems (64-bit) Big
3 HP-UX (64-bit) Big
5 HP Tru64 UNIX Little
4 HP-UX IA (64-bit) Big
11 Linux IA (64-bit) Little
15 HP Open VMS Little
8 Microsoft Windows IA (64-bit) Little
9 IBM zSeries Based Linux Big
13 Linux 64-bit for AMD Little
16 Apple Mac OS Big
12 Microsoft Windows 64-bit for AMD Little
17 Solaris Operating System (x86) Little
To convert datafiles you should use RMAN CONVERT
TO PLATFORM="Linux x86 64-bit"
FROM PLATFORM="HP-UX IA (64-bit)"
It is not a complicated procedure but you shoulday attention in every step in order to convert the database from Solaris to Linux.
I wrote a full step by step to do this migration however it is in portuguese.