# I'm interested in studying operating systems



## Jared Manning (Aug 23, 2015)

Specifically UNIX-like administration and (eventually) low-level development.  I'm currently studying for my CCNA Routing & Switching and the like to get me in the job market.  There is no way I can currently consider taking out a college loan in the US, so I'm looking for books or online courses that can teach me the same stuff.  Although I'm not inclined to look in their direction, I am also curious about the colleges and universities that offer such courses and are highly renowned.

Thanks in advance for the responses.


----------



## Beastie7 (Aug 23, 2015)

FreeBSD has very structured and highly consistent documentation; better than any other OS out there... Linux, OpenBSD, whatever. The FreeBSD handbook and the man pages is really all you need for learning the entire base system for administration. The man pages goes more into detail of capabilities and command line syntax of various tools, utilities, etc. The FreeBSD Handbook is HUGE so take your time to learn the concepts, don't just sift through it. For Systems development (what it's actually called) I'd get the book by Dr. Mckusick & Watson.

Also, one easier way I've found to learning FreeBSD while in-shell (meaning in, while the OS is running) is to use sysutils/tmux. Create two panes, one for executing commands, and the other for navigation man pages. This has greatly simplified the learning experience for me, and is more immersive than using the man pages web site.


----------



## danger@ (Aug 23, 2015)

https://forums.freebsd.org/threads/freebsd-development-books-papers-slides.1566/ and you may want to start with some operating systems book by Tanenbaum


----------



## Jared Manning (Aug 23, 2015)

Thank you both for the quick replies! I've got a pretty good reading list made now. I'm looking forward to it!


----------



## xavi (Aug 24, 2015)

Jared Manning said:


> UNIX-like administration and (eventually) low-level development



I've found the following UNIX-like resources interesting for low-level development:

https://en.wikipedia.org/wiki/Xv6
http://pdos.csail.mit.edu/6.828/2014/xv6.html

http://compsci.hunter.cuny.edu/~sweiss/course_materials/csci493.66/csci493.66_spr12.php
http://wps.prenhall.com/esm_molay_UNIXProg_1/


----------



## SirDice (Aug 24, 2015)

Not too long ago a new edition of "The Design and Implementation of the FreeBSD Operating System" came out. I don't have the book myself but I am thinking about ordering it.

http://www.amazon.com/Design-Implementation-FreeBSD-Operating-Edition/dp/0321968972


----------



## fnoyanisi (Aug 31, 2015)

When I was still a student, I remember borrowing Advanced Progamming Environment in the UNIX Envirenment from the library week after another. I used the second edition of the book, though.

The book is quite useful, especially if you want to deal with system level programming. Of course, there is always man pages you can refer to.

Any _*Operating Systems*_ book (several mentioned in previous posts), would give you an idea about file systems, memory management, process management, race conditions etc... 

Not sure if Tanenbaum is still fond of microkernels and RISC architecture, but his predictions about OS kernel architecure and CPU hardware are all irrelevant now. His foresight about "_80x86, not the way to go_" would make *BSD/Net-2 -> 386BSD -> FreeBSD* path irrelevant as well.


----------



## sossego (Sep 2, 2015)

Approach this inquiry from a different perspective: What [will be/is] the purpose of the system you are [building/using/developing]?

The operating system should be compliant with the CPU architecture; and, the CPU architecture should be compliant with the type of math you are going to use. Since a database is a type of matrix system, and, being that [SPARC64/SunV*] is scalable, then you would use an OS based upon this. OpenBSD was started on the SPARC platform and is known for its integrity. NASA released 4S as a partial program. A virtual processor for databases. 

Development and learning from a dynamically changing yet stable environment of FreeBSD is best suited for the POWER - backwards compatibility at 32 bits - systems.

These are examples.


----------



## Beastie7 (Sep 2, 2015)

I'd be nice if the Foundation could spawn a curriculum and testing program for systems development and systems administration. It could help ease the barrier to entry to FreeBSD whilst providing another source of revenue for the project. I'm not sure if this would affect their non-profit status, but if the Linux Foundation can do it, why can't we?


----------



## Jared Manning (Sep 3, 2015)

sossego said:


> Approach this inquiry from a different perspective: What [will be/is] the purpose of the system you are [building/using/developing]?
> 
> The operating system should be compliant with the CPU architecture; and, the CPU architecture should be compliant with the type of math you are going to use. Since a database is a type of matrix system, and, being that [SPARC64/SunV*] is scalable, then you would use an OS based upon this. OpenBSD was started on the SPARC platform and is known for its integrity. NASA released 4S as a partial program. A virtual processor for databases.
> 
> ...


I never thought of it like that. Thanks!



Beastie7 said:


> I'd be nice if the Foundation could spawn a curriculum and testing program for systems development and systems administration. It could help ease the barrier to entry to FreeBSD whilst providing another source of revenue for the project. I'm not sure if this would affect their non-profit status, but if the Linux Foundation can do it, why can't we?


As far as I know, the closest thing we've got to a curriculum is the Handbook. I have learned a BOAT LOAD just from sitting down and going though it page by page. Really good info there. There is an organization out there that has certification exams for the *BSDs. You can find out more here: http://www.bsdcertification.org/


----------



## sidetone (Sep 3, 2015)

danger@ said:


> https://forums.freebsd.org/threads/freebsd-development-books-papers-slides.1566/ and you may want to start with some operating systems book by Tanenbaum



That's a good list. I've been interested in the book BSD UNIX TOOLBOX. There's also "FreeBSD 6 Unleashed" which introduces Shell scripting, and Perl. "Network administration with FreeBSD 7" is also good.

I've done a search before, and found Classic Shell Scripting: Hidden Commands that Unlock the Power of Unix . Most books on scripting are on zsh and irrelevant here Bash.

Individual college courses may be helpful. There may be an overlap of using a Linux OS (with teachings not specific to Linux) that carry over into BSD, mostly on a basic shell. My guess is that BSD UNIX TOOLBOX could replace a lot of this.


----------



## cpm@ (Sep 3, 2015)

SirDice said:


> Not too long ago a new edition of "The Design and Implementation of the FreeBSD Operating System" came out. I don't have the book myself but I am thinking about ordering it.
> 
> http://www.amazon.com/Design-Implementation-FreeBSD-Operating-Edition/dp/0321968972



Also I'm interested to purchase it.

https://www.reddit.com/r/freebsd/comments/2gozvc/the_design_and_implementation_of_the_freebsd/


----------



## Jared Manning (Sep 3, 2015)

cpm said:


> Also I'm interested to purchase it.


It's on the top of my xmas list!



sidetone said:


> That's a good list. I've been interested in the book BSD UNIX TOOLBOX. There's also "FreeBSD 6 Unleashed" which introduces Shell scripting, and Perl. "Network administration with FreeBSD 7" is also good.
> 
> I've done a search before, and found Classic Shell Scripting: Hidden Commands that Unlock the Power of Unix . Most books on scripting are on zsh and irrelevant here Bash.


I'll have to check those out too. I'm slightly confused about what you said on ZSH and Bash. From my understanding, ZSH is and extended/improved Bash, no? Is Bash one of those linuxisms?


----------



## cpm@ (Sep 3, 2015)

Yes, this book is a _must read_ if you like FreeBSD. It is now in my ToDo read 

I recommend you to read "Explaining BSD" article authored by Greg Lehey.


----------



## kpa (Sep 3, 2015)

Jared Manning said:


> It's on the top of my xmas list!
> 
> 
> I'll have to check those out too. I'm slightly confused about what you said on ZSH and Bash. From my understanding, ZSH is and extended/improved Bash, no? Is Bash one of those linuxisms?



Both bash and zsh are attempts to improve the classic bourne shell but they were developed independent of each other. Bash tends to be a "linuxism" in a way that script writers assume that /bin/sh is bash(1) but this is only true on Linux distributions (with some exceptions). Zsh is very rarely used as /bin/sh and scripts writers never make the same mistake with Zsh.


----------



## sidetone (Sep 3, 2015)

sh(1) is the Bourne Shell. csh alias on FreeBSD is tcsh(1) (C language based shell). You can see some shells that are run from looking at /etc/passwd, and at the top of many executable scripts that call a shell. FreeBSD programs tend to use sh, and the user command line interface tends to use tcsh.

BASH is the Bourne Again Shell, which is correctly mentioned as a "Linuxism". shells/zsh is supposed to be an improved Unix shell with features from tcsh and bash.

There are free internet resources on shells. There is a newer book than the one I mentioned above, so I'll scratch that one out.


----------



## Jared Manning (Sep 3, 2015)

sidetone said:


> BASH is the Bourne Again Shell, which is correctly mentioned as a "Linuxism". shells/zsh is supposed to be an improved Unix shell with features from tcsh and bash.


Ah, that makes sense. Thanks!


----------



## Beastie7 (Sep 4, 2015)

Jared Manning said:


> I never thought of it like that. Thanks!
> 
> 
> As far as I know, the closest thing we've got to a curriculum is the Handbook. I have learned a BOAT LOAD just from sitting down and going though it page by page. Really good info there. There is an organization out there that has certification exams for the *BSDs. You can find out more here: http://www.bsdcertification.org/



I'm thinking of taking their exams, but being tested on four different operation systems (two of which are useless) is absolutely insane. Their lack of clear exam objectives is frustrating also.


----------



## Jared Manning (Sep 4, 2015)

Beastie7 said:


> I'm thinking of taking their exams, but being tested on four different operation systems (two of which are useless) is absolutely insane. Their lack of clear exam objectives is frustrating also.


I feel the same way. Apparently for the second level of the exams, professional, you choose which specific *BSD to be tested on.


----------



## cpm@ (Sep 4, 2015)

Beastie7 said:


> I'm thinking of taking their exams, but being tested on four different operation systems (two of which are useless) is absolutely insane. Their lack of clear exam objectives is frustrating also.



Dru Lavigne <dru@FreeBSD.org> coordinates the BSDCG organization. Please, feel free to contact her to solve any doubt.

https://www.ixsystems.com/whats-new/developers-corner-dru-lavigne/


----------



## sidetone (Nov 3, 2015)

I now have the book, 'BSD UNIX Toolbox'. It has a lot of shortcuts for commonly used commands. For computer scripting it focuses on Bash. It has information on basic file systems, their attributes, and typical maintenance. There's information on editing music, text, and images from the command line. There's a chapter on security, but it seems inadequate compared to other books. Still it is a useful book. It has similarities, as I predicted, to what would be taught in a UNIX/Linux college course.

For free online courses, check out MIT OpenCourseWare, and search for UNIX. There's a few good choices, but maybe they'll add something more specific one day.

*edit, 'BSD UNIX Toolbox' section on security goes in depth on protecting the system from your own computer users. In the firewall section, the author either made a mistake or didn't explain why it enables both IPF and IPFW using the same configuration file. There's some thing on network services, and useful programs.


----------



## fnoyanisi (Nov 3, 2015)

sidetone said:


> I now have the book, 'BSD UNIX Toolbox'. It has a lot of shortcuts for commonly used commands. For computer scripting it focuses on Bash...


And why on earth would any "BSD UNIX" book focus on Bash?

csh(1)/tcsh(1) usage with a bit of sh(1) scripting would be a better combination I reckon.


----------



## cpm@ (Nov 4, 2015)

fnoyanisi said:


> And why on earth would any "BSD UNIX" book focus on Bash?



In some case, the book author(s) explains why he chooses a specific shell. Here's an example.


----------



## fnoyanisi (Nov 4, 2015)

cpm said:


> In some case, the book author(s) explains why he chooses a specific shell. Here's an example.


Yay, my Spanish is not good enough to translate the book 

Well....I am OK with Bourne Shell, as I mentioned it is the way to go for scripting, but not bash on BSD I reckon.


----------



## sidetone (Nov 4, 2015)

The author of that book writes a lot of stuff on Linux, it's his background. It's probably his choice of shell. Obviously, some of it is transferable, but I'd have preferred if it were sh(1).


----------



## ronaldlees (Dec 7, 2015)

cpm said:


> Also I'm interested to purchase it.
> 
> https://www.reddit.com/r/freebsd/comments/2gozvc/the_design_and_implementation_of_the_freebsd/



I'm interested in that book myself, so I took a gander at the book in the local bookstore this weekend.  In the time allotment that you're allowed before the clerks give you the evil eye, I picked up a few things, including that about thirty percent of the book is never-before published material, updated to include not just the original 4.x but now 5.x thru 11.x FreeBSD.   It looks good.  Kinda pricey, but you're probably not "official" until you have this one.


----------



## cpm@ (Dec 11, 2015)

ronaldlees said:


> I'm interested in that book myself, so I took a gander at the book in the local bookstore this weekend.  In the time allotment that you're allowed before the clerks give you the evil eye, I picked up a few things, including that about thirty percent of the book is never-before published material, updated to include not just the original 4.x but now 5.x thru 11.x FreeBSD.   It looks good.  Kinda pricey, but you're probably not "official" until you have this one.



ronaldlees

Thank you so much for the suitable information. I will make a note


----------



## sidetone (Jan 24, 2016)

'Sams Teach Yourself Shell Programming in 24 Hours', is a good book, and it covers differences between major shells.


----------



## Jared Manning (Jan 24, 2016)

These are all on my reading list, as well as a book on the C programming language (http://c.learncodethehardway.org/).

I've been very lucky to be given another chance at college. I'm well underway with my general courses already. Hopefully by this fall or next spring, I should be ready to transfer to LSU to study software engineering. I don't think there are any courses specific to unix-like operating systems, so I'm going to start looking for graduate school programs that focuses on that.

Thank you all for your responses. Cheers


----------



## drhowarddrfine (Jan 25, 2016)

Jared Manning said:


> I don't think there are any courses specific to unix-like operating systems


Then you're going to a school for amateurs. Drop out immediately and go to a real college.


----------



## Jared Manning (Jan 25, 2016)

drhowarddrfine said:


> Then you're going to a school for amateurs. Drop out immediately and go to a real college.



Could you recommend some schools that offer such courses? I've been unable to find any with my Google-fu.


----------



## cpm@ (Jan 26, 2016)

A set of courses for students and software practitioners by _Robert N. M. Watson_ and _George V. Neville-Neil._

https://github.com/teachbsd/course


----------



## Jared Manning (Jan 26, 2016)

cpm said:


> A set of courses for students and software practitioners by _Robert N. M. Watson_ and _George V. Neville-Neil._
> 
> https://github.com/teachbsd/course



This looks fantastic!! Thank you so much for sharing!


----------



## drhowarddrfine (Jan 26, 2016)

Jared Manning said:


> Could you recommend some schools that offer such courses? I've been unable to find any with my Google-fu.


Washington University in St. Louis One of the top science schools in the country
University of Missouri

Those are two I have direct knowledge of. Mine no longer has an engineering school. I'm not aware of any real college/university that doesn't have C as part of their curriculum though I heard it depends on whether Microsoft gives them free Windows software. Then real science and learning goes down the drain in favor of product placement.


----------



## Jared Manning (Jan 26, 2016)

drhowarddrfine said:


> Washington University in St. Louis One of the top science schools in the country
> University of Missouri
> 
> Those are two I have direct knowledge of. Mine no longer has an engineering school. I'm not aware of any real college/university that doesn't have C as part of their curriculum though I heard it depends on whether Microsoft gives them free Windows software. Then real science and learning goes down the drain in favor of product placement.



I remember when I took an "Intro to Programming" class as a post-secondary option at my local university while I was in high school. We were taught Visual Basic, and it proved to be absolutely useless to me after I had finished the class.

I really appreciate the links to those programs. I've taken a look at both of them and I'm definitely liking what they offer in comparison to what is offered at the local universities.


----------

