首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >升级linux内核后挂起/sbin/init

升级linux内核后挂起/sbin/init
EN

Unix & Linux用户
提问于 2017-07-17 20:04:00
回答 1查看 1.2K关注 0票数 0

我正在使用ARM SOC (AT91SAM9G25)将内核从3.2升级到4.4。这是一个系统系统。前面的3.2运行良好,但是在引导4.4内核时,它挂在/sbin/init的执行部分之后。我可以在prompt引导程序上指定'init=/bin/sh‘,它成功地执行shell (我得到一个shell提示符)。从这里看,事情是正确的;我可以挂载/proc,验证rootfs是否已经挂载,打开一个NIC接口等等。

我在运行不同ARM SOC (AT91SAM9G45)的不同平台上成功地完成了这一升级。我比较了这个正在工作的其他平台和挂起的平台之间的内核信任。唯一的区别是那些与不同的国有企业有关的。内核配置差异如下:

代码语言:javascript
复制
300,301c300,301
< CONFIG_PLATFORM_SLK1=y
< # CONFIG_PLATFORM_SLK2 is not set
---
> # CONFIG_PLATFORM_SLK1 is not set
> CONFIG_PLATFORM_SLK2=y
421c421
< CONFIG_ARM_APPENDED_DTB_FILE="arch/arm/boot/dts/slk1.dtb"
---
> CONFIG_ARM_APPENDED_DTB_FILE="arch/arm/boot/dts/slk2.dtb"
1061c1061
< # CONFIG_MTD_M25P80 is not set
---
> CONFIG_MTD_M25P80=y
1311,1314c1311
< CONFIG_NET_VENDOR_MICREL=y
< # CONFIG_KS8842 is not set
< # CONFIG_KS8851 is not set
< # CONFIG_KS8851_MLL is not set
---
> # CONFIG_NET_VENDOR_MICREL is not set
2414c2411,2450
< # CONFIG_USB_GADGET is not set
---
> CONFIG_USB_GADGET=y
> # CONFIG_USB_GADGET_DEBUG is not set
> # CONFIG_USB_GADGET_DEBUG_FILES is not set
> # CONFIG_USB_GADGET_DEBUG_FS is not set
> CONFIG_USB_GADGET_VBUS_DRAW=2
> CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2
> 
> #
> # USB Peripheral Controller
> #
> # CONFIG_USB_AT91 is not set
> CONFIG_USB_ATMEL_USBA=y
> # CONFIG_USB_FUSB300 is not set
> # CONFIG_USB_FOTG210_UDC is not set
> # CONFIG_USB_GR_UDC is not set
> # CONFIG_USB_R8A66597 is not set
> # CONFIG_USB_PXA27X is not set
> # CONFIG_USB_MV_UDC is not set
> # CONFIG_USB_MV_U3D is not set
> # CONFIG_USB_M66592 is not set
> # CONFIG_USB_BDC_UDC is not set
> # CONFIG_USB_NET2272 is not set
> # CONFIG_USB_GADGET_XILINX is not set
> # CONFIG_USB_DUMMY_HCD is not set
> # CONFIG_USB_CONFIGFS is not set
> # CONFIG_USB_ZERO is not set
> # CONFIG_USB_AUDIO is not set
> # CONFIG_USB_ETH is not set
> # CONFIG_USB_G_NCM is not set
> # CONFIG_USB_GADGETFS is not set
> # CONFIG_USB_FUNCTIONFS is not set
> # CONFIG_USB_MASS_STORAGE is not set
> # CONFIG_USB_G_SERIAL is not set
> # CONFIG_USB_MIDI_GADGET is not set
> # CONFIG_USB_G_PRINTER is not set
> # CONFIG_USB_CDC_COMPOSITE is not set
> # CONFIG_USB_G_ACM_MS is not set
> # CONFIG_USB_G_MULTI is not set
> # CONFIG_USB_G_HID is not set
> # CONFIG_USB_G_DBGP is not set
2584,2585c2620,2621
< # CONFIG_RTC_DRV_AT91RM9200 is not set
< CONFIG_RTC_DRV_AT91SAM9=y
---
> CONFIG_RTC_DRV_AT91RM9200=y
> # CONFIG_RTC_DRV_AT91SAM9 is not set
2599c2635
< # CONFIG_AT_HDMAC is not set
---
> CONFIG_AT_HDMAC=y
3058c3094
< CONFIG_DEBUG_UART_PHYS=0xffffee00
---
> CONFIG_DEBUG_UART_PHYS=0xfffff200

如果我引导到一个shell (使用init=/bin/sh),我可以运行'/sbin/init -i‘,并且系统通常会启动(init的PID值不是1)。但是,“exec /sbin/init”或“exec/sbin/init-i”挂起。

对如何找出它挂在哪里有什么想法吗?

EN

回答 1

Unix & Linux用户

发布于 2017-07-21 18:13:52

我想我已经找到这个内核挂的原因了。当init关闭控制台设备(/dev/ atmel_serial )时,UART驱动程序将禁用UART发射器。然后,内核中的下一个printk挂起,忙着等待THR为空。此错误已在上游4.4-at 91分支(https://github.com/linux4sam/linux-at91/commit/0a1757cfa5ba3b46f6ee7a74ddb7a5c0bd5d7c2f)中修复。

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/379113

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档