2016-03-15 64 views
3

再次讀取WP針,我有以下udev規則掛載SD卡到/ mnt/SD卡的第一個分區。SD卡:如何強制內核不刪除SD卡

KERNEL=="mmcblk0p1", SUBSYSTEMS=="mmc", ATTRS{name}=="?*", ATTRS{serial}=="?*", ENV{ID_NAME}="$attr{name}", ENV{ID_SERIAL}="$attr{serial}", SYMLINK+="sdcard", RUN+="/usr/bin/mount_sdcard" 

KERNEL=="mmcblk0", ACTION=="remove", RUN+="/usr/bin/unmount_sdcard" 

/usr/bin/mount_sdcard可執行文件是:

#!/bin/sh 

# log event 
logger -t mount_sdcard -p user.warn "New SD Card detected" 

# mount to /mnt/sdcard 
mount_result=`mount $DEVNAME /mnt/sdcard 2>&1` 

# On errors, send error to log 
echo $mount_result | logger -t mount_sdcard -p user.error 

if [ "x$mount_result" = "x" ] 
then 
    # print filesystem type 
    stat -f /mnt/sdcard | grep Type | cut -d: -f4 | logger -t mount_sdcard -p user.warn 

    # print space left on device 
    df -h /dev/sdcard | logger -t mount_sdcard -p user.warn 
fi 

此代碼是否正常工作和分隔安裝讀寫(RW)當SD卡被插入。

但如果SD卡已經出現在開機後,分區掛載只讀(RO)。

在這種情況下,我不能而不移除和重新插入手動SD卡掛載分區讀寫。

我試圖卸載,然後重新安裝。我試圖用裝載選項:mount -o remount,rw /dev/mmcblk0p1這似乎是工作,但在運行mount命令時,該分區仍被標記爲RO:

/dev/mmcblk0p1 on /mnt/sdcard type ext4 (ro,relatime,data=ordered) 

更新:

的問題是更精確: 這位於定製硬件上,ARM處理器上的WP(寫保護)引腳連接到處理器的輸出。

在引導時,該輸出設置SD卡控制器以只讀模式和初始化後,該輸出反轉,允許寫入SD卡。 的問題是,內核將嘗試讀取這個WP引腳只在啓動時以及在插入存儲卡。

==>在啓動內核SD卡控制器設置卡作爲RO:

kernel: [ 1.723728] mmc0: new high speed SD card at address 59b4 
kernel: [ 1.738262] mmcblk0: mmc0:59b4 USD 1.87 GiB (ro) 

而WP引腳變化和卡後刪除/重新插上,內核SD卡控制器將設置卡作爲rw:

kernel: [ 527.931457] mmc0: new high speed SD card at address 59b4 
kernel: [ 527.943988] mmcblk0: mmc0:59b4 USD 1.87 GiB 

我的問題變化:如何強制內核再次讀取WP引腳而不刪除SD卡?

+0

你有沒有試過,mount_result ='$安裝DEVNAME到/ mnt/SD卡-o RW 2>&1' –

回答

2

我能夠通過此卡使用這些命令控制器復位再次讀取WP引腳:

首先得到該控制器:

$ readlink /sys/block/mmcblk0 
../devices/soc0/soc/2100000.aips-bus/2194000.usdhc/mmc_host/mmc0/mmc0:59b4/block 

然後解除綁定和綁定卡:

$ echo 2194000.usdhc > /sys/bus/platform/drivers/sdhci-esdhc-imx/unbind 
$ echo 2194000.usdhc > /sys/bus/platform/drivers/sdhci-esdhc-imx/bind 
1

有幾件事情我會嘗試:

  • 運行fsck /dev/mmcblk0p1。在rw模式下未能掛載分區通常是不乾淨的文件系統狀態的標誌。這裏可能不是這種情況,因爲您可以通過重新插卡來安裝它,但最好是安全的。

  • 嘗試通過/etc/fstab安裝/dev/mmcblk0p1以查看是否有效。我知道這不是一個明確的解決方案,但至少你可以從udev的問題中分離出mount的問題。

  • 比較dmesg在開機時輸出有關SD卡的信息,dmesg之後重新插入卡時輸出。看起來控制器在引導時未能正確初始化,但問題在以後消失。找出那些間歇性問題可能會爲你解決。

+1

感謝外,fsck和fstab點沒有工作。但問題是:啓動後WP引腳更改。現在我需要知道如何在不拔出SD卡的情況下強制內核重新加載sdcard。 –

+0

@ leszek.hanusz嘿,我很高興你解決了你的問題。並感謝您分享您的解決方案。希望upvotes會盡快退還您的賞金! –