From iOS programming to Linux system programming

Hello.
I like Linux and C programming language. Allways wanted to understand kernel and become a Linux system programmer. And I also like Objective-C and iOS. These two programming areas have relations:

  1. Linux and iOS are UNIX-like systems, POSIX compliant.
  2. It is useful to know C language for iOS programmer.

And I have these questions:
1) Is it useful for usual iOS web/GUI/game programmer to know UNIX/FreeBSD programming?
2) Is it useful for usual iOS web/GUI/game programmer to know iOS kernel and iOS system programming?
3) Is it difficult to transit from iOS programming to Linux system programming?

1) I'd say barely. It is useful since underlying platform is a lot similar to Unix and it gives you better understanding of how things work under the hood but -as an iOS programmer- you do not have direct access nor control of the OS, and all tasks *MUST* be performed with Cocoa/CocoaTouch framework tools.
Don't expect to be using SSH, grep, netstat, nfs, df, bash buit-ins, etc in any of your programs.

2) Again, you won't be dealing with syscalls, forking, IRQs, etc. It's not necessary at all; however it's a good plus. Even if you're into multi-threaded programming, Cocoa handles everything without (much) hassle.

3) I'm not a Linux programmer myself but if you are already proficient with Objective-C you're most certainly a capable C programmer so you'd at least be able to "talk" in same language. Now you'd only need to learn the internals of Linux and get familiar with its code.

No. But would not hurt.

No. But would not hurt.

Yes. Very different.