811/* This is a non _ init function. force it to be noinline otherwise gcc 812 * makes it inline to Init () and it becomes part of init. Text Section 813 */ 814 static noinline int init_post (void) 815 _ Releases (kernel_lock) 816 { 817/* need to finish all async _ init code before freeing the memory */ 818 async_synchronize_full (); 819 free_initmem (); 820 unlock_kernel (); 821 mark_rodata_ro (); 822 system_state = system_running; 823 numa_default_policy (); 824 825 826 current-> signal-> flags | = signal_unkillable; 827 828 if (ramdisk_execute_command ){ 829 run_init_process (ramdisk_execute_command ); 830 printk (kern_warning "failed to execute % s/n ", 831 ramdisk_execute_command ); 832} 833 834 /* 835 * We try each of these until one succeeds. 836 * 837 * The Bourne shell can be used instead of init if we are 838 * trying to recover a really broken machine. 839 */ 840 if (execute_command ){ 841 run_init_process (execute_command ); 842 printk (kern_warning "failed to execute % S. Attempting" 843 "defaults.../N", execute_command ); 844} 845 run_init_process ("/sbin/init "); 846 run_init_process ("/etc/init "); 847 run_init_process ("/bin/init "); 848 run_init_process ("/bin/sh "); 849 850 panic ("No init found. Try passing init = option to kernel ." 851 "see Linux documentation/init.txt for guidance ."); 852} |