Вопрос или проблема
Я пошел и купил Steam Deck, и решил приобрести SD-карту – это была штука Hunyeiz из магазина Kodak. После неудачного опыта случайного неправильного форматирования, поспешной ввода консольных команд, которые мне подсказали на Reddit в попытке отформатировать её вручную, и многократных попыток переформатировать, я оказался в захватывающем ожидании, когда ни консоль, ни моя линуксовая система на компьютере не распознают карту, помещенную в систему.
Проверка dmesg показывало сообщение
mmc0: card never left busy state
.
Теперь я понимаю, что когда такое происходит, карту следует выбросить – она больше никому не нужна. Но когда я вставляю её в свою Windows-партцию, она издает мелодию и предлагает отформатировать её. Форматирование для Windows работает, и ей присваивается красивое имя диска и метка, и она открывается в проводнике. Это не изменило того, как любую из Линукс-систем с ней обращается – обе показывают мне то же самое сообщение.
Что я могу сделать, чтобы она заработала на Linux? Могу ли я что-то сделать? Мне не так уж нужна SD-карта для Windows (хотя если все совсем плохо, я подумаю о возврате – я предполагаю, что большинство камер и т.д. будут использовать её нормально?)
Я перечислю шаги, которые я предпринял, чтобы довести карту до этого состояния, если это поможет.
- Я вставил карту, зашел в настройки Steam Deck, кликнул на вкладку хранилище и увидел, что моя карта зарегистрирована. Она предложила мне отформатировать диск. Я нажал на эту кнопку. Появился экран загрузки.
- Спустя некоторое время, экран загрузки исчез. SD-карта также не распознавалась на этой вкладке. Я перезагрузил свой девайс.
- Перезагрузка девайса заняла очень много времени. Я не знал, что вызывало это, поэтому после некоторых поисков в Google решил принудительно выключить его, удерживая кнопку питания в течение 6 секунд.
- SD-карта по-прежнему не отображалась. Я в панике переключился в режим рабочего стола, где она была указана, но при нажатии на неё возникало сообщение об ошибке:
Error mounting /dev/mmcblk0p1 at (какой-то путь): wrong fa type, bad option, bad superblock on /dev/mmcblk0p1, missing codepage or helper program, or other error
. Это казалось плохим знаком. На этом этапе я начал волноваться, что сломал SD-карту, перезагрузив её слишком рано. - Поиск в интернете подсказывал мне попробовать запустить fsck на /dev/mmcblk0p1. Я запустил его на /dev/mmcblk0 и получил сообщение об ошибке, которую не помню. Кажется, он пытался примонтировать её, но не смог.
- На этом этапе я нашел быстрый способ сбросить диск – запустив
dd if=/dev/zero of=/dev/mmcblk0
. Мне сказали, что я могу запустить его на минуту или около того, а затем отменить. Я так и сделал. - Перезагрузив устройство снова, я увидел, что SD-карта снова стала видимой на странице хранилища Steam Deck. Думая, что моя проблема в том, что я перезагрузил слишком рано, я снова запустил форматирование. Она снова сделала то же самое, что и в прошлый раз – SD-карта исчезла из списка хранилища Steam.
- Затем я снова переключился в режим рабочего стола. SD-карта снова была видна в списке дисков, но при нажатии на неё возникла та же ошибка, что и раньше –
Error mounting /dev/mmcblk0p1 at (какой-то путь): wrong fa type, bad option, bad superblock on /dev/mmcblk0p1, missing codepage or helper program, or other error
. Это было раздражающе – я предположил, что система форматирования Steam Deck вызывает это. - В поисках в интернете я нашел один случайный пост на Reddit, который рекомендовал ввести
sudo fsck.ext4 /dev/mmcblk0p1
и ответить “да” на все подсказки. Я так и сделал. Он сообщил, что успешно отформатировал диск и упомянул замену журнала на диске. - Теперь SD-карта даже больше не отображалась даже в разделе монтирования в режиме рабочего стола. Я снова перезагрузил. Она по-прежнему не отображалась. Я проверил dmesg, и тогда я понял, что он давал мне сообщение
mmc0: card never left busy state
. - Я собирался сдаться, но затем вставил SD-карту в свою Windows-партцию и обнаружил, что она работает прекрасно. Я подумал, может быть, форматирование в Windows, а затем повторная вставка в девайс поможет, но ничего не изменилось – Steam Deck и моя линуксовая парция даже не признают её существование.
В любом случае – спасибо за чтение! Есть ли что-то, что я могу сделать? Если бы это была аппаратная проблема, я не понимаю, почему она работает нормально на другой операционной системе. Похоже, я просто сломал SD-карту, но я снова хочу верить, что смогу это исправить (она была дорогой).
Ответ или решение
Как решить проблему "mmc0: card never left busy state" с SD-картой в Linux
Введение
Вы столкнулись с распространенной проблемой, связанной с SD-картами в Linux, когда система сообщает ошибку "mmc0: card never left busy state". Ваша SD-карта, несмотря на успешное распознавание и форматирование в Windows, не работает в вашей среде Linux, включая Steam Deck и ваш компьютер. Давайте рассмотрим, что можно сделать для решения этой проблемы.
Описание проблемы
Вы описали несколько шагов, которые привели к нынешнему состоянию вашей SD-карты. Ключевые моменты включают:
- Ошибка после форматирования: SD-карта не отображается после попытки форматирования на Steam Deck.
- Ошибки монтирования: Полученные ошибки при попытке доступа к устройству (
wrong ftype, bad option or missing codepage
). - Состояние "busy": Появление ошибки "mmc0: card never left busy state" в dmesg при подключении карты в Linux.
Эти ошибки могут указывать на повреждение файловой системы, неправильное разделение или аппаратные проблемы.
Шаги по устранению неполадок
-
Проверка состояния карты с помощью
dmesg
После подключения SD-карты откройте терминал и выполните команду:dmesg | tail -n 20
Это даст вам последние сообщения ядра, которые могут указать на конкретные проблемы с картой.
-
Использование
fdisk
для проверки разделов
Запуститеfdisk
для просмотра текущих разделов на карте:sudo fdisk -l /dev/mmcblk0
Вы можете увидеть, какие разделы находятся на карте. Если разделы отсутствуют или отображаются неправильно, это может быть признаком повреждения.
-
Попробуйте полное затирание карты
Выполнение командыdd
, которую вы использовали, может помочь, но важно использовать её правильно:sudo dd if=/dev/zero of=/dev/mmcblk0 bs=4M status=progress
Обратите внимание: это удалит все данные на SD-карте. Убедитесь, что вы выбрали правильное устройство!
-
Создание новой таблицы разделов
После затирания карты попробуйте снова создать таблицу разделов, используяfdisk
илиgparted
, и создайте новую файловую систему:sudo fdisk /dev/mmcblk0
Это позволит вам создать новый раздел, который будет совместим с Linux.
-
Форматирование карты в Linux
После создания нового раздела выполните форматирование:sudo mkfs.ext4 /dev/mmcblk0p1
Замените
ext4
на желаемую файловую систему (например,vfat
для совместимости с Windows). -
Проверка на наличие ошибок с
fsck
После форматирования запустите:sudo fsck /dev/mmcblk0p1
Это проверит раздел на наличие ошибок и исправит их.
-
Переподключение карты
Выньте и снова вставьте SD-карту, затем проверьте, видит ли Linux устройство:lsblk
Заключение
Если все эти шаги не помогли решить проблему, возможно, стоит рассмотреть возможность замены SD-карты или возврат к производителю. Кроме того, если карта продолжает работать в Windows, это может указывать на аппаратную проблему с совместимостью карты и Linux. Удачи вам в решении этой проблемы, и надеюсь, ваши усилия будут вознаграждены.