What is the kernel die message
来自个人维基
2019年11月20日 (三) 16:23free6d1823(讨论 | 贡献)的版本
error
[ 36.735247] ufshcd-hi3660 ff3b0000.ufs: set TX_EQUALIZER 3.5db [ 36.743489] ufshcd-hi3660 ff3b0000.ufs: check TX_EQUALIZER DB value lane0 = 0x1 [ 36.750709] ufshcd-hi3660 ff3b0000.ufs: TX_EQUALIZER DB value lane1 = 0x1 [ 36.757552] ufshcd-hi3660 ff3b0000.ufs: ufshcd_print_pwr_info:[RX, TX]: gear=[3, 3], lane[2, 2], pwr[FAST MODE, FAST MODE], rate = 2 [ 36.769752] VFS: Cannot open root device "sdd10" or unknown-block(0,0): error -6 [ 36.777071] Please append a correct "root=" boot option; here are the available partitions: [ 36.785478] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0) [ 36.793786] CPU: 7 PID: 1 Comm: swapper/0 Tainted: G S 4.14.0-rc7-linaro-hikey960+ #2 [ 36.802802] Hardware name: HiKey960 (DT) [ 36.806789] Call trace: [ 36.809316] [<ffff000008088be0>] dump_backtrace+0x0/0x370 [ 36.814770] [<ffff000008088f64>] show_stack+0x14/0x20 [ 36.819887] [<ffff000008a72780>] dump_stack+0x9c/0xbc [ 36.825003] [<ffff0000080c78d8>] panic+0x11c/0x28c [ 36.829861] [<ffff000008f41158>] mount_block_root+0x190/0x264 [ 36.835667] [<ffff000008f41348>] mount_root+0x11c/0x134 [ 36.840962] [<ffff000008f41498>] prepare_namespace+0x138/0x180 [ 36.846854] [<ffff000008f40d8c>] kernel_init_freeable+0x208/0x22c [ 36.853013] [<ffff000008a84c68>] kernel_init+0x10/0x100 [ 36.858301] [<ffff000008084b58>] ret_from_fork+0x10/0x18 [ 36.863683] SMP: stopping secondary CPUs [ 36.867703] Kernel Offset: disabled [ 36.871221] CPU features: 0x082004 [ 36.874688] Memory Limit: none [ 36.877816] ---[ end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
init\do_mount.c
void __init prepare_namespace(void) { int is_floppy; md_run_setup(); if (saved_root_name[0]) { root_device_name = saved_root_name; if (!strncmp(root_device_name, "mtd", 3) || !strncmp(root_device_name, "ubi", 3)) { mount_block_root(root_device_name, root_mountflags); goto out; } ROOT_DEV = name_to_dev_t(root_device_name); if (strncmp(root_device_name, "/dev/", 5) == 0) root_device_name += 5; } mount_root(); } void __init mount_root(void) { int err = create_dev("/dev/root", ROOT_DEV); if (err < 0) pr_emerg("Failed to create /dev/root: %d\n", err); mount_block_root("/dev/root", root_mountflags); } void __init mount_block_root(char *name, int flags) //name shouldn't be sdd10 struct page *page = alloc_page(GFP_KERNEL | __GFP_NOTRACK_FALSE_POSITIVE); char *fs_names = page_address(page); char *p; char b[BDEVNAME_SIZE]; get_fs_names(fs_names); retry: for (p = fs_names; *p; p += strlen(p)+1) { int err = do_mount_root(name, p, flags, root_mount_data);//SYS_MOUNT(name, "/root",fs) error switch (err) { case 0: goto out; case -EACCES: case -EINVAL: continue; } /* * Allow the user to distinguish between failed sys_open * and bad superblock on root device. * and give them a list of the available devices */ #ifdef CONFIG_BLOCK __bdevname(ROOT_DEV, b); //ROOT_DEV=0 #endif printk("VFS: Cannot open root device \"%s\" or %s: error %d\n", root_device_name, b, err); //VFS: Cannot open root device "sdd10" or unknown-block(0,0): error -6 printk("Please append a correct \"root=\" boot option; here are the available partitions:\n"); //Please append a correct "root=" boot option; here are the available partitions: printk_all_partitions();//NO OUTPUT #ifdef CONFIG_DEBUG_BLOCK_EXT_DEVT printk("DEBUG_BLOCK_EXT_DEVT is enabled, you need to specify " "explicit textual name for \"root=\" boot option.\n"); #endif panic("VFS: Unable to mount root fs on %s", b); // VFS: Unable to mount root fs on unknown-block(0,0) } if (!(flags & SB_RDONLY)) { flags |= SB_RDONLY; goto retry; } printk("List of all partitions:\n"); printk_all_partitions(); printk("No filesystem could mount root, tried: "); for (p = fs_names; *p; p += strlen(p)+1) printk(" %s", p); printk("\n"); #ifdef CONFIG_BLOCK __bdevname(ROOT_DEV, b); #endif panic("VFS: Unable to mount root fs on %s", b); out: put_page(page); } static int __init do_mount_root(char *name, char *fs, int flags, void *data) { struct super_block *s; int err = sys_mount(name, "/root", fs, flags, data); if (err) return err; sys_chdir("/root"); s = current->fs->pwd.dentry->d_sb; ROOT_DEV = s->s_dev; printk(KERN_INFO "VFS: Mounted root (%s filesystem)%s on device %u:%u.\n", s->s_type->name, sb_rdonly(s) ? " readonly" : "", MAJOR(ROOT_DEV), MINOR(ROOT_DEV)); return 0; }