Podstawową zasadą przyświecającą autorom tworzącym Linuksa było wydzielenie części zależnych i niezależnych od platformy sprzętowej. Części zależne winny być jak najmniejsze, aby zaadaptowanie systemu do nowego sprzętu było jak najmniej praco- i czasochłonne.
Zaskakujące jest, jak dobrze powiodło się to w części odpowiedzialnej za zarządzanie pamięcią, zważywszy że większość platform sprzętowych zarządza pamięcią na swój własny sposób. Duże partie kodu są napisane na wysokim poziomie abstrakcji, niezależnym od sprzętu. Przeniesienie Linuksa na nową platformę sprzętową sprowadza się do napisania pewnej rozsądnej liczby funkcji i makrodefinicji specyficznych dla tej platformy.
Oczywiście jądro Linuksa stawia sprzętowi pewne wymagania i jeśli nie są one spełnione, to przeniesienie systemu na tę platformę nie jest możliwe. Oto niektóre z wymagań: procesor powinien mieć przynajmniej 32-bitową przestrzeń adresową; musi wspierać mechanizm stronicowania i pamięci wirtualnej; musi także zapewniać przynajmniej dwa poziomy uprzywilejowania -- tzw. tryb jądra (spotykane jest także określenie tryb nadzorcy) i tryb użytkownika.
Linux działa na procesorach 32- i 64-bitowych (np. x86 oraz AlphaAXP). Procesor nie musi wspierać mechanizmu segmentacji, chociaż mechanizm ten jest wykorzystywany przez Linuksa np. dla architektury x86. Nowsze architektury nie wspierają już tego mechanizmu (np. AlphaAXP).
Podejście nastawione na uniezależnienie od platformy sprzętowej ma w przypadku systemu operacyjnego jedną wadę -- nie daje kodu optymalnego dla danego procesora i nie zawsze wykorzystuje wszystkie cechy udostępniane przez sprzęt.15.3