The Mac OS X boot process involves several stages, in which the operating system performs various tasks to prepare the system for use.
When the Mac is powered on, the firmware (a low-level software that controls the hardware) performs a power-on self-test (POST) to check the hardware components.
The firmware loads the bootloader, which is responsible for loading the operating system kernel and transferring control to it. In Mac OS X, the bootloader is called the boot.efi file.
The operating system kernel, which is the core of the operating system, initializes the system and starts the system services.
The system services, such as the device drivers, are loaded and initialized.
The operating system loads the user profile and starts the user interface, such as the desktop or the login screen.
The user can log in and start using the system.
This is a general overview of the Mac OS X boot process. The exact sequence of events may vary depending on the specific version of Mac OS X and the hardware configuration of the system.
Boot ROM
Firmware. Part of Hardware system BootROM firmware is activated
POST
Power-On Self Test initializes some hardware interfaces and verifies that sufficient memory is available and in a good state.
EFI
Extensible Firmware Interface EFI does basic hardware initialization and selects which operating system to use.
BOOTX
boot.efi boot loader load the kernel environment
Rooting/Kernel
The init routine of the kernel is executed boot loader starts the kernel’s initialization procedure Various Mach/BSD data structures are initialized by the kernel. The I/O Kit is initialized. The kernel starts /sbin/mach_init
Run Level
mach_init starts /sbin/init init determines the runlevel, and runs /etc/rc.boot, which sets up the machine enough to run single-user. rc.boot figures out the type of boot (Multi-User, Safe, CD-ROM, Network etc.)
Power is turned on.
Open Firmware code is executed.
Hardware information is collected and hardware is initialized.
Something (usually the OS, but also things like the Apple Hardware Test, etc.) is selected to boot. The user may be prompted to select what to boot.
Control passes to /System/Library/CoreServices/BootX, the boot loader. BootX loads the kernel and also draws the OS badges, if any.
BootX tries to load a previously cached list of device drivers (created/updated by /usr/sbin/kextcache). Such a cache is of the type mkext and contains the info dictionaries and binary files for multiple kernel extensions. Note that if the mkext cache is corrupt or missing, BootX would look in /System/Library/Extensions for extensions that are needed in the current scenario (as determined by the value of the OSBundleRequired property in the Info.plist file of the extension’s bundle.
The init routine of the kernel is executed. The root device of the booting system is determined. At this point, Open Firmware is not accessible any more.
Various Mach/BSD data structures are initialized by the kernel.
The I/O Kit is initialized.
The kernel starts /sbin/mach_init, the Mach service naming (bootstrap) daemon. mach_init maintains mappings between service names and the Mach ports that provide access to those services.
From here on, the startup becomes user-level:
mach_init starts /sbin/init, the traditional BSD init process. init determines the runlevel, and runs /etc/rc.boot, which sets up the machine enough to run single-user.
rc.boot figures out the type of boot (Multi-User, Safe, CD-ROM, Network etc.). In case of a network boot (the sysctl variable kern.netboot will be set to 1 in which case), it runs /etc/rc.netboot with a start argument.
Get 20% off Google Google Workspace (Google Meet) Standard Plan with the following codes: 96DRHDRA9J7GTN6 Get 20% off Google Workspace (Google Meet) Business Plan (AMERICAS): M9HNXHX3WC9H7YE (Email us for more codes)
The result is a compressed file named sysdiagnose_YYYY.MM.DD_HH-MM-SS-TTTT.tar.gz and it contains the following: Accessibility BluetoothTraceFile.pklg DiagnosticMessages Etienne’s SystemConfiguration airport_info.txt apsd-status.txt bc_stats.txt bootstamps.txt brctl.tar.gz breadcrumbs.txt crashes_and_spins darwinup.txt dig-results.txt disks.txt diskutil.txt error_log.txt filecoordination_dump.txt footprint-all.txt fs_usage.txt fsck_hfs_user.log fsck_hfs_var.log gpt.txt ifconfig.txt ioreg ipconfig.txt kextstat.txt launchctl-list.txt locale.txt logs lsappinfo.txt lsmp.txt lsof.txt lsregister.txt microstackshots microstackshots_lastday.txt microstackshots_lasthour.txt microstackshots_lastminute.txt mount.txt netstat nfsstat.txt odutil.txt pluginkit.txt pmset_everything.txt powermetrics.txt ps.txt ps_thread.txt reachability-info.txt resolv.conf scutil.txt smcDiagnose.txt spindump.txt stackshot-last-sym.log sysctl.txt sysdiagnose.log system_profiler.spx talagent.txt taskinfo.txt thermal.txt top.txt var_run_resolv.conf vm_stat.txt zprint.txt
You can use the top command to monitor the resources of your Macbook in real-time. The top command is a built-in utility that shows the processes that are currently running on the system, along with information about their CPU and memory usage.
To use the top command, open a terminal window and type top. The output will show the list of processes, sorted by their CPU usage, with the most CPU-intensive processes at the top. You can use the q key to exit the top command.
Here are some of the key options you can use with the top command:
Get 20% off Google Google Workspace (Google Meet) Standard Plan with the following codes: 96DRHDRA9J7GTN6 Get 20% off Google Workspace (Google Meet) Business Plan (AMERICAS): M9HNXHX3WC9H7YE (Email us for more codes)
-o: sort the processes by a particular resource, such as CPU usage or memory usage. For example, top -o cpu will sort the processes by CPU usage.
-s: specify the delay between updates. For example, top -s 2 will update the display every 2 seconds.
-u: show the process for a particular user. For example, top -u username will show the processes for the user with the specified username.
You can use these options in combination to customize the output of the top command. For example, to monitor the CPU usage of the processes owned by a particular user, you can use the following command:
Today I Learned (TIL) You learn something new every day; what did you learn today? Submit interesting and specific facts about something that you just found out here.
submitted by /u/DennisHoffmanOqng [link] [comments]
Reddit Science This community is a place to share and discuss new scientific research. Read about the latest advances in astronomy, biology, medicine, physics, social science, and more. Find and submit new publications and popular science coverage of current research.