To make the best of Linux's capabilities in embedded systems, you need background in all the following topics, which in many books are treated distinctly:
You need to be familiar with the development, programming, and debugging of embedded systems in general, from both the software and hardware perspectives.
You need to be able to tend to various system administration tasks such as hardware configuration, system setup, maintenance, and using shell scripts to automate tasks.
You need to know how to develop and debug various kinds of Linux device drivers.
You need to understand as much as possible how the kernel operates.
You need to be able to make efficient use of the GNU tools. This includes understanding many of the options and utilities often considered to be "arcane."
In this book, I assume that you are familiar with at least the basic concepts of each topic. On the other hand, you don't need to know how to create Linux device drivers to read this book, for example, or know everything about embedded system development. As you read through this book and progress in your use of Linux in embedded systems, you are likely to feel the need to obtain more information regarding certain aspects of Linux's use. In addition to the references to other books scattered through this book, take a look at Appendix B for a list of books you may find useful for getting more information regarding the topics listed above.
Though this book discusses only the use of Linux in embedded systems, part of this discussion can certainly be useful to developers who intend to use one of the BSD variants in their embedded system. Many of the explanations included here will, however, need to be reinterpreted in light of the differences between BSD and Linux.