Ubuntu16.04 在更新kernel之後,輸入帳號密碼登入時,畫面凍結不能操作 [論壇 - Ubuntu安裝問題]


正在瀏覽:   1 名遊客


 到底部   前一個主題   下一個主題  [無發表權] 請登錄或者註冊



Ubuntu16.04 在更新kernel之後,輸入帳號密碼登入時,畫面凍結不能操作
會員一級
註冊日期:
2014/4/11 15:25
所屬群組:
已註冊使用者
等級: 1
HP : 0 / 2
MP : 1 / 75
EXP: 10
離線
在更新到kernel 版本4.10.0-32-generic後,在每次開機或重開機,就常發生輸入完帳號密碼登入後,在進入桌面畫面就卡死不能操作,滑鼠,鍵盤都沒有反應,而且也無法使用ctrl + alt + F1 切換到 文字模式,只能強制長按開機鍵關機再重開機。

目前使用的方式是在開機選單選擇其他版本的kernel(4.8.0-58-generic)來啟動系統登入,似乎可以正常登入。

請問要從哪個部份來找出錯誤的地方進行修正??

Ubuntu版本:16.04
硬體:lenovo p50
如需提供其他資訊再煩請指導,非常感謝。

2017/8/12 11:50
應用擴展 工具箱
回覆: Ubuntu16.04 在更新kernel之後,輸入帳號密碼登入時,畫面凍結不能操作
會員五級
註冊日期:
2012/4/22 10:50
所屬群組:
已註冊使用者
等級: 37
HP : 0 / 905
MP : 679 / 30231
EXP: 23
離線
wxwri 寫到:
在更新到kernel 版本4.10.0-32-generic後,在每次開機或重開機,就常發生輸入完帳號密碼登入後,在進入桌面畫面就卡死不能操作,滑鼠,鍵盤都沒有反應,而且也無法使用ctrl + alt + F1 切換到 文字模式,只能強制長按開機鍵關機再重開機。

目前使用的方式是在開機選單選擇其他版本的kernel(4.8.0-58-generic)來啟動系統登入,似乎可以正常登入。

請問要從哪個部份來找出錯誤的地方進行修正??

Ubuntu版本:16.04
硬體:lenovo p50
如需提供其他資訊再煩請指導,非常感謝。


================================================================================

先聲明,我對這部份的議題,有些還沒研究透徹,
所以也只能給您一些瑣碎的線索,讓您有探索的起點。


因為我很少去折騰這一段,都是有了問題,或是這個論壇有人問到相關的,才會再去稍微的折騰一下 :p

================================================================================

首先,我在「這篇」和「這篇」的下方,
有列一些log檔的檔案路徑,您可以先從那些檔案探索起。

* /var/log/Xorg.0.log
* /var/log/lightdm/lightdm.log
* /var/log/lightdm/x-0.log

================================================================================

再來根據您的描述,

wxwri 寫到:
目前使用的方式是在開機選單選擇其他版本的kernel(4.8.0-58-generic)來啟動系統登入,似乎可以正常登入。



我個人猜測,應該是跟顯示卡的驅動有關,

一個方式,您可以從上面提到的log檔去找看看有沒有線索。

另一個我想到的方式,您可以執行類似下面的指令,來做實驗,
觀看您說的有問題那個kernel套件整個安裝流程,出現的一些訊息。

印象中,過程中好像有編譯一些其他模組的流程。

執行


$ sudo apt-get install linux-image-4.4.0-91-generic --reinstall



顯示類似如下的訊息


Preparing to unpack .../linux-image-4.4.0-91-generic_4.4.0-91.114_amd64.deb ...
Examining /etc/kernel/preinst.d/
run-parts: executing /etc/kernel/preinst.d/intel-microcode 4.4.0-91-generic /boot/vmlinuz-4.4.0-91-generic
Done.
Unpacking linux-image-4.4.0-91-generic (4.4.0-91.114) over (4.4.0-91.114) ...
Examining /etc/kernel/postrm.d .
run-parts: executing /etc/kernel/postrm.d/initramfs-tools 4.4.0-91-generic /boot/vmlinuz-4.4.0-91-generic
run-parts: executing /etc/kernel/postrm.d/zz-update-grub 4.4.0-91-generic /boot/vmlinuz-4.4.0-91-generic
Setting up linux-image-4.4.0-91-generic (4.4.0-91.114) ...
Running depmod.
update-initramfs: deferring update (hook will be called later)
Not updating initrd symbolic links since we are being updated/reinstalled
(4.4.0-91.114 was configured last, according to dpkg)
Not updating image symbolic links since we are being updated/reinstalled
(4.4.0-91.114 was configured last, according to dpkg)
Examining /etc/kernel/postinst.d.
run-parts: executing /etc/kernel/postinst.d/apt-auto-removal 4.4.0-91-generic /boot/vmlinuz-4.4.0-91-generic
run-parts: executing /etc/kernel/postinst.d/dkms 4.4.0-91-generic /boot/vmlinuz-4.4.0-91-generic
run-parts: executing /etc/kernel/postinst.d/initramfs-tools 4.4.0-91-generic /boot/vmlinuz-4.4.0-91-generic
update-initramfs: Generating /boot/initrd.img-4.4.0-91-generic
live-boot: core filesystems devices utils udev wget blockdev.
run-parts: executing /etc/kernel/postinst.d/pm-utils 4.4.0-91-generic /boot/vmlinuz-4.4.0-91-generic
run-parts: executing /etc/kernel/postinst.d/unattended-upgrades 4.4.0-91-generic /boot/vmlinuz-4.4.0-91-generic
run-parts: executing /etc/kernel/postinst.d/update-notifier 4.4.0-91-generic /boot/vmlinuz-4.4.0-91-generic
run-parts: executing /etc/kernel/postinst.d/zz-update-grub 4.4.0-91-generic /boot/vmlinuz-4.4.0-91-generic
Generating grub configuration file ...
Found theme: /boot/grub/themes/main/theme.txt
Found background image: /boot/grub/themes/main/background.png
Found linux image: /boot/vmlinuz-4.4.0-91-generic
Found initrd image: /boot/initrd.img-4.4.0-91-generic
Found linux image: /boot/vmlinuz-4.4.0-83-generic
Found initrd image: /boot/initrd.img-4.4.0-83-generic
Found linux image: /boot/vmlinuz-4.4.0-81-generic
Found initrd image: /boot/initrd.img-4.4.0-81-generic
Found linux image: /boot/vmlinuz-4.4.0-45-generic
Found initrd image: /boot/initrd.img-4.4.0-45-generic
Found memtest86+ image: /boot/memtest86+.elf
Found memtest86+ image: /boot/memtest86+.bin
Found Ubuntu 14.04.5 LTS (14.04) on /dev/sda6
Found Ubuntu 16.04 LTS (16.04) on /dev/sdb3
done



我的系統是「Xubuntu 16.04 amd64 英文界面」
上面的「linux-image-4.4.0-91-generic」是我目前使用的,請更改成您的。

如何找尋,只要執行


$ uname -r



顯示


4.4.0-91-generic



接著執行


$ dpkg -l '*linux*' | grep 4.4.0-91-generic



顯示


ii linux-headers-4.4.0-91-generic 4.4.0-91.114 amd64 Linux kernel headers for version 4.4.0 on 64 bit x86 SMP
ii linux-image-4.4.0-91-generic 4.4.0-91.114 amd64 Linux kernel image for version 4.4.0 on 64 bit x86 SMP
ii linux-image-extra-4.4.0-91-generic 4.4.0-91.114 amd64 Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP
ii linux-tools-4.4.0-91-generic 4.4.0-91.114 amd64 Linux kernel version specific tools for version 4.4.0-91



上面的其中兩行指令也可以合成一行如下,顯示內容就會跟上面一樣


$ dpkg -l '*linux*' | grep $(uname -r)



================================================================================

上面提示訊息,有顯示兩個資料夾,可以注意的

* /etc/kernel/preinst.d/
* /etc/kernel/postinst.d/

如何找到這一段,可以執行


$ dpkg-query --control-path linux-image-4.4.0-91-generic



顯示


/var/lib/dpkg/info/linux-image-4.4.0-91-generic.prerm
/var/lib/dpkg/info/linux-image-4.4.0-91-generic.postinst
/var/lib/dpkg/info/linux-image-4.4.0-91-generic.preinst
/var/lib/dpkg/info/linux-image-4.4.0-91-generic.postrm
/var/lib/dpkg/info/linux-image-4.4.0-91-generic.md5sums



就可以找到「linux-image-4.4.0-91-generic」這個套件的「MaintainerScript」的路徑。

然後您可以在「/var/lib/dpkg/info/linux-image-4.4.0-91-generic.preinst」這個檔案,找到下面這一段程式碼(perl)。


## Run user hook script here, if any
if (-x "$preinst_hook") {
  &run_hook("preinst", $preinst_hook);
}
if (-d "/etc/kernel/preinst.d") {
  print STDERR "Examining /etc/kernel/preinst.d/\n";
  system ("run-parts --verbose --exit-on-error --arg=$version" .
          " --arg=$realimageloc$kimage-$version" .
          " /etc/kernel/preinst.d") &&
            die "Failed to process /etc/kernel/preinst.d";
}
if (-d "/etc/kernel/preinst.d/$version") {
  print STDERR "Examining /etc/kernel/preinst.d/$version.\n";
  system ("run-parts --verbose --exit-on-error --arg=$version" .
          " --arg=$realimageloc$kimage-$version" .
          " /etc/kernel/preinst.d/$version") &&
            die "Failed to process /etc/kernel/preinst.d/$version";
}
print STDERR "Done.\n";



然後您可以在「/var/lib/dpkg/info/linux-image-4.4.0-91-generic.postinst」這個檔案,找到下面這一段程式碼(perl)。


## Run user hook script here, if any
if ($postinst_hook) {
  &run_hook("postinst", $postinst_hook);
}

if (-d "/etc/kernel/postinst.d") {
  print STDERR "Examining /etc/kernel/postinst.d.\n";
  system ("run-parts --verbose --exit-on-error --arg=$version " .
          "--arg=$realimageloc$kimage-$version " .
          "/etc/kernel/postinst.d") &&
            die "Failed to process /etc/kernel/postinst.d";
}

if (-d "/etc/kernel/postinst.d/$version") {
  print STDERR "Examining /etc/kernel/postinst.d/$version.\n";
  system ("run-parts --verbose --exit-on-error --arg=$version " .
          "--arg=$realimageloc$kimage-$version " .
          "/etc/kernel/postinst.d/$version") &&
            die "Failed to process /etc/kernel/postinst.d/$version";
}



主要就是透過「run-parts」這個指令,來執行相關資料夾裡面的腳本。

================================================================================

可以執行下面指令來瞭解「/etc/kernel/preinst.d」有那些腳本可執行


$ run-parts --list /etc/kernel/preinst.d



顯示


/etc/kernel/preinst.d/intel-microcode



可以執行下面指令來瞭解「/etc/kernel/postinst.d」有那些腳本可執行


$ run-parts --list /etc/kernel/postinst.d



顯示


/etc/kernel/postinst.d/apt-auto-removal
/etc/kernel/postinst.d/dkms
/etc/kernel/postinst.d/initramfs-tools
/etc/kernel/postinst.d/pm-utils
/etc/kernel/postinst.d/unattended-upgrades
/etc/kernel/postinst.d/update-notifier
/etc/kernel/postinst.d/zz-update-grub



================================================================================

## 相關的討論 (以下不見得有直接關係)

### 登入機制

* #2 回覆: Ubuntu 自動登入
* #18 回覆: 登入畫面 輸入密碼處 中文部分出現方格
* #2 回覆: Ubuntu 14.04 圖形化界面無法登入

### MaintainerScript

* #10 回覆: 文字界面開機
* #11 回覆: 文字界面開機

### dkms

* #4 回覆: 請問如何查找驅動程式
* #5 回覆: 關於WIFI 無線網路 RTL8192CU 驅動安裝 softAP
* #2 回覆: 關於RTL8192ce and RTL8192cu 補丁.更新.安裝驅動

### driver

* #21 回覆: linux mint 安裝顯示卡問題
* #4 回覆: ubuntu 12.10 安裝完nvidia驅動 登入後畫面整個黑的

================================================================================

## 相關索引

* [索引] 套件操作實務
* [索引] 驅動程式
* [索引] 開機流程

================================================================================

以上探索方法提供參考

報告完畢


2017/8/15 15:35
應用擴展 工具箱
回覆: Ubuntu16.04 在更新kernel之後,輸入帳號密碼登入時,畫面凍結不能操作
會員一級
註冊日期:
2014/4/11 15:25
所屬群組:
已註冊使用者
等級: 1
HP : 0 / 2
MP : 1 / 75
EXP: 10
離線
非常感謝大大整理了那麼多資料提供參考,
我有先檢查了這三個log檔
* /var/log/Xorg.0.log
* /var/log/lightdm/lightdm.log
* /var/log/lightdm/x-0.log

看不出來錯誤會在哪裡出現,不過在 /var/log/auth.log檔裡發現

PAM unable to dlopen(pam_kwallet.so): /lib/security/pam_kwallet.so: cannot open shared object file: No such file or directory


參考了這篇的提問的解決方法。

安裝了兩個套件
$ sudo apt-get install libpam-kwallet4 libpam-kwallet5


/var/log/auth.log檔的錯誤就沒出現了,
另外在輸入帳密登入後畫面會卡住的問題,到目前都還沒出現。
雖然還是不知道問題出在哪,不過暫時先這樣使用了= = |
等重要的資料備份再來照大大提供重裝KERNEL的方法試試,再回覆結果。

再次感謝大大無私的指導。

2017/8/16 16:22
應用擴展 工具箱
回覆: Ubuntu16.04 在更新kernel之後,輸入帳號密碼登入時,畫面凍結不能操作
會員五級
註冊日期:
2012/4/22 10:50
所屬群組:
已註冊使用者
等級: 37
HP : 0 / 905
MP : 679 / 30231
EXP: 23
離線
wxwri 寫到:
非常感謝大大整理了那麼多資料提供參考,
我有先檢查了這三個log檔
* /var/log/Xorg.0.log
* /var/log/lightdm/lightdm.log
* /var/log/lightdm/x-0.log

看不出來錯誤會在哪裡出現,不過在 /var/log/auth.log檔裡發現

PAM unable to dlopen(pam_kwallet.so): /lib/security/pam_kwallet.so: cannot open shared object file: No such file or directory


參考了這篇的提問的解決方法。

安裝了兩個套件
$ sudo apt-get install libpam-kwallet4 libpam-kwallet5


/var/log/auth.log檔的錯誤就沒出現了,
另外在輸入帳密登入後畫面會卡住的問題,到目前都還沒出現。
雖然還是不知道問題出在哪,不過暫時先這樣使用了= = |
等重要的資料備份再來照大大提供重裝KERNEL的方法試試,再回覆結果。

再次感謝大大無私的指導。



恭喜您解決問題了。

並且也非常感謝您的回覆,這樣未來有遇到相同問題的人,也就有跡可尋了。


雖然我還不瞭解確切的源頭出在那個環節,

我原本猜測是「顯示卡driver」那個環節導致的,

不過因為您的回覆,我剛想了一下,

既然「lightdm」都能顯示運作了,那「顯示卡drvier」導致出錯的機率應該是小的。

還好您得到的結果是好的,不然我就誤導您了 Orz...

所以您未來研究的方向,也許可以朝「libpam-kwallet4」,「libpam-kwallet5」和「lightdm」認證那一段的關聯。

不過之前我有提到,這一段尚未研究透徹,所以先暫記。

那天有研究,有心得了,再來補充。

或是其他大德對這一段有深究的人,也可以來補充說明,感恩先。

並且再次感恩樓主您的測試結果回報。




===========================================================

## 以下暫記

以下執行環境是「Xubuntu 16.04 amd64 英文界面」

執行


$ ps aux | grep lightdm



顯示


root 1269 0.0 0.1 276648 6200 ? Ssl 17:18 0:00 /usr/sbin/lightdm
...略...



執行


$ sudo lsof -p 1269 | grep log



顯示


lightdm 1269 root 6w REG 8,18 9129 133775 /var/log/lightdm/lightdm.log




執行


$ sudo lsof | grep '/var/log'



============================================================

執行


$ apt-cache show lightdm | grep '^Depends:'



顯示


Depends: debconf (>= 0.5) | debconf-2.0, lsb-base (>= 4.1+Debian11ubuntu7), libc6 (>= 2.14), libgcrypt20 (>= 1.6.0), libglib2.0-0 (>= 2.37.3), libpam0g (>= 0.99.7.1), libxcb1, libxdmcp6, libpam-runtime (>= 0.76-14), libpam-modules, adduser, libglib2.0-bin, dbus, plymouth (>= 0.8.8-0ubuntu18), bash (>= 4.3)




執行


$ apt-cache search libpam



執行


$ apt-cache show libpam-kwallet4



執行


$ apt-cache show libpam-kwallet5




執行


$ apt-cache showsrc libpam-kwallet4 | grep '^Binary:' -B 1



顯示


Package: kwallet-pam
Binary: libpam-kwallet4, libpam-kwallet5



執行


$ apt-cache showsrc libpam-runtime | grep '^Binary:' -B 1



顯示


Package: pam
Binary: libpam0g, libpam-modules, libpam-modules-bin, libpam-runtime, libpam0g-dev, libpam-cracklib, libpam-doc



執行


$ dpkg -l '*libpam*'



執行


$ dpkg -L libpam-runtime



顯示


/.
/etc
/etc/pam.conf

/etc/pam.d/other
...略...



執行


$ ls /etc/pam.d/ -1 | grep lightdm



顯示


lightdm
lightdm-autologin
lightdm-greeter



執行


$ dpkg -S /etc/pam.d/lightdm



顯示


lightdm: /etc/pam.d/lightdm



執行


$ dpkg -S /etc/pam.d/lightdm-autologin



顯示


lightdm: /etc/pam.d/lightdm-autologin



執行


$ dpkg -S /etc/pam.d/lightdm-greeter



顯示


lightdm: /etc/pam.d/lightdm-greeter



執行


$ dpkg -L lightdm | grep pam



顯示


/etc/pam.d
/etc/pam.d/lightdm-greeter
/etc/pam.d/lightdm
/etc/pam.d/lightdm-autologin



執行


$ dpkg -S /etc/pam.d



執行


$ grep kwallet /etc/pam.d/* -R -n



顯示


/etc/pam.d/lightdm:6:auth    optional        pam_kwallet.so
/etc/pam.d/lightdm:7:auth    optional        pam_kwallet5.so
/etc/pam.d/lightdm:15:session optional        pam_kwallet.so auto_start
/etc/pam.d/lightdm:16:session optional        pam_kwallet5.so auto_start
/etc/pam.d/lightdm-greeter:4:auth    optional        pam_kwallet.so
/etc/pam.d/lightdm-greeter:5:auth    optional        pam_kwallet5.so
/etc/pam.d/lightdm-greeter:12:session optional        pam_kwallet.so auto_start
/etc/pam.d/lightdm-greeter:13:session optional        pam_kwallet5.so auto_start




執行


$ dpkg -L libpam-runtime | grep '/man/man.*/' | sort



顯示


/usr/share/man/man5/pam.conf.5.gz
/usr/share/man/man5/pam.d.5.gz
/usr/share/man/man7/pam.7.gz
/usr/share/man/man7/PAM.7.gz
/usr/share/man/man8/pam-auth-update.8.gz
/usr/share/man/man8/pam_getenv.8.gz



$ man 5 pam.conf
$ man 5 pam.d
$ man 7 pam
$ man 8 pam-auth-update
$ man 8 pam_getenv


* http://linux.vbird.org/linux_basic/0410accountmanager.php#usershell
* http://linux.vbird.org/linux_basic/0410accountmanager/0410accountmanager-fc4.php#usershell
* http://linux.vbird.org/linux_server/0410vsftpd.php

============================================================

2017/8/16 18:13
應用擴展 工具箱
回覆: Ubuntu16.04 在更新kernel之後,輸入帳號密碼登入時,畫面凍結不能操作
會員一級
註冊日期:
2014/4/11 15:25
所屬群組:
已註冊使用者
等級: 1
HP : 0 / 2
MP : 1 / 75
EXP: 10
離線
前輩不好意思,我再回覆一下,我發現我可能找錯解決問題的方向了。
剛剛我把
lightdm pam_kwallet freeze
這幾個字丟到GOOGLE 搜尋。
搜尋結果中這一篇提問所遇到的狀況跟我遇到還滿像的,
而且在九樓的回覆中針對樓主所PO出的kernel.log 出現
ACPI Warning: SystemIO range 0x0000000000000B00-0x0000000000000B07 conflicts with OpRegion 0x0000000000000B00-0x0000000000000B0F (_SB_.PCI0.SMB_.SMB0) (20150930/utaddress-254)
的警告說明
Problem # 1: There are known ACPI problems in Lenovo's BIOS code.

Firmware Bug: ACPI:
and

ACPI Warning: SystemIO range 0x0000000000000B00-0x0000000000000B07 conflicts with OpRegion 0x0000000000000B00-0x0000000000000B0F (SB.PCI0.SMB_.SMB0) (20150930/utaddress-254)
You might want to try the kernel option "acpi_enforce_resources=lax" to get around some of the problems. If the ACPI code in the BIOS really sets up two different pieces of hardware at overlapping addresses then that is bad news.

To add the kernel option you would edit "/etc/default/grub" and add "acpi_enforce_resources=lax" to either GRUB_CMDLINE_LINUX_DEFAULT= or GRUB_CMDLINE_LINUX=.

There have been a number of kernel bug reports opened about Lenovo hardware.


於是我檢查了我的kernel.log 發現每次開機都有出現
Aug 16 21:53:47 sam-ThinkPad-P50 kernel: [ 1.073982] ACPI Warning: \_SB.PCI0.GFX0._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20160930/nsarguments-95)
Aug 16 21:53:47 sam-ThinkPad-P50 kernel: [ 1.074089] ACPI Warning: \_SB.PCI0.PEG0.PEGP._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20160930/nsarguments-95)
Aug 16 21:53:47 sam-ThinkPad-P50 kernel: [ 1.074174] ACPI Warning: \_SB.PCI0.PEG0.PEGP._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20160930/nsarguments-95)


另外我補充一下我應該要說明的硬體的部份,我筆電裡面有裝兩顆一樣型號的SSD,一顆裝ubuntu系統,一顆裝windows。
而在這位前輩說明這是lenovo bios 的bug,雖然不是很懂他的意思,但應該是在說硬碟位址被覆寫而造成問題的樣子吧@@。
希望這個補充說明能夠有幫助。 

2017/8/16 23:01
應用擴展 工具箱


 [無發表權] 請登錄或者註冊


可以查看帖子.
不可發帖.
不可回覆.
不可編輯自己的帖子.
不可刪除自己的帖子.
不可發起投票調查.
不可在投票調查中投票.
不可上傳附件.
不可不經審核直接發帖.