📄 sash.patch
字号:
--- linux-2.2.13/arch/ppc/config.in.ORIG Sun Jan 9 11:57:17 2000+++ linux-2.2.13/arch/ppc/config.in Sun Jan 9 13:11:36 2000@@ -48,6 +48,10 @@ if [ "$CONFIG_8xx" = "y" ]; then bool 'Math emulation' CONFIG_MATH_EMULATION+ bool 'Standalone Shell' CONFIG_SASH+ if [ "$CONFIG_SASH" = "y" ]; then+ string ' Shell Path' CONFIG_SASH_PATH /bin/sh+ fi else if [ "$CONFIG_PPC64" != "y" ];then define_bool CONFIG_6xx y--- linux-2.2.13/init/main.c.ORIG Tue Oct 19 23:35:58 1999+++ linux-2.2.13/init/main.c Sun Jan 9 12:47:09 2000@@ -375,8 +375,13 @@ int root_mountflags = MS_RDONLY; char *execute_command = NULL; +#ifdef CONFIG_SASH+static char * argv_init[MAX_INIT_ARGS+2] = { "sash", NULL, };+static char * envp_init[MAX_INIT_ENVS+2] = { "HOME=/", "TERM=linux", NULL, };+#else static char * argv_init[MAX_INIT_ARGS+2] = { "init", NULL, }; static char * envp_init[MAX_INIT_ENVS+2] = { "HOME=/", "TERM=linux", NULL, };+#endif char *get_options(char *str, int *ints) {@@ -1254,6 +1259,18 @@ } #endif +#ifdef CONFIG_SASH+static int do_linux_sash(void *unused)+{+ close(0);close(1);close(2);+ setsid();+ (void) open("/dev/console",O_RDWR,0);+ (void) dup(0);+ (void) dup(0);+ return execve(CONFIG_SASH_PATH, argv_init, envp_init);+}+#endif+ struct task_struct *child_reaper = &init_task; /*@@ -1396,6 +1413,16 @@ */ free_initmem(); unlock_kernel();+#ifdef CONFIG_SASH+ {+ int i, pid;++ pid = kernel_thread(do_linux_sash, "sash", SIGCHLD);+ if (pid > 0)+ while (pid != wait(&i));+ }+ printk ("SASH terminated\n");+#else if (open("/dev/console", O_RDWR, 0) < 0) printk("Warning: unable to open an initial console.\n");@@ -1416,5 +1443,6 @@ execve("/etc/init",argv_init,envp_init); execve("/bin/init",argv_init,envp_init); execve("/bin/sh",argv_init,envp_init);+#endif panic("No init found. Try passing init= option to kernel."); }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -