sitelogo

By

Установка Linux на VIA VT8500 WM8505 WM8650 Часть 2

Итак, мне все же удалось на днях воткнуть Debian во внутреннюю флеш память, подключенную через USB. Работает вполне нормально, наконец кардридер освободился. Как обещал, теперь расскажу об процессе установки Linux на USB диск, кстати, это пригодится и тем, кто собрался устанавливать на USB и на других платформах, т.к. есть некоторые подводные камни.

Кстати, отвечаю, почему нельзя поставить Ubuntu: несмотря на то, что у них имеется armel порт — он поддерживает только процессоры ARMv7 и выше. WM8505 же относится к ARMv5.

Шаг 1. Работаем из под SD карты

Нужно для начала найти рабочую rootfs, которую мы распакуем на внутренний диск USB. Если мы уже имеем рабочую rootfs, которая загружается с SD диска, то мы можем сделать ее архив и использовать ее. Можно скачать готовый архив, который я подготовил для установки на wm8505 (см. ниже). Для всех действий на rootfs для SD диска должны быть установлены пакеты:

  1. parted
  2. reiserfsprogs
  3. dosfstools
  4. bar (прогресс-бар, не обязательно)
  5. xz, gz, tar, etc…

Далее, загрузившись с SD карты, мы можем иметь доступ ко внутреннему диску нетбука. Разметим диск похожим образом, как и на SD карте, с помощью утилиты parted (допустим, в вашем случае внутренний диск будет sda):

1
:~$ parted /dev/sda

Тип разметки: MS-DOS\IBM PC
Первый раздел 5Мб, начало 512B, конец 5Мб
Второй раздел: начало 5Мб, конец: размер флешки минус 200Мб.
Третий раздел: последние 200Мб диска. (не обязательно)

Форматируем разделы:

1
2
3
:~$ mkfs.vfat /dev/sda1
:~$ mkfs.reiserfs /dev/sda2
:~$ mkswap /dev/sda3

Хотя, можно раздел swap не создавать. Лично я так и делаю. Потому что мне как то легче найти нормальный браузер и открывать там вкладок поменьше, чем протирать дырку на флешке swap’ом. Как мы знаем, Linux очень гибкая система и swap раздел можно будет настроить даже на внешний быстрый USB диск.

Далее нужно распаковать полученную rootfs на раздел sda2:

1
:~$ mount /dev/sda2 /mnt

Мне нравится использовать консольную утилиту bar, чтобы видеть процесс распаковки:

1
2
:~$ cd /mnt
:~$ bar <путь к файлу.tar.xz> | xz -d | tar -x

И наблюдаем за прогрессом. Убеждаемся, что все распаковалось и перейдем к диску с u-boot:

1
2
:~$ umount /dev/sda2
:~$ mount /dev/sda1 /mnt

Копируем в /mnt образ ядра uImage (всего на этом диске лежит один лишь этот файл). Его мы берем с SD диска, откуда работает текущая система.

Шаг 2. Заставляем все это загружаться

Это, наверное, самое сложное. Во-первых, ваш u-boot должен поддерживать загрузку с USB дисков. Если вы до этого не ставили никаких Android’ов, и прочего, что могло неграмотно затереть оригинальный загрузчик, то скорее всего, у вас уже прошита стандартная прошивка u-boot, тогда ничего делать не нужно. Если же прошивка затерта, вам нужно вернуть прошивку с поддержкой USB обратно.

ВНИМАНИЕ! Не прошивайте u-boot от других версий чипсета! Прошивайте только в том случае, если точно знаете, что у вас, например, WM8505, а прошивка которую хотите залить, предназначена именно для WM8505! При невнимательном подходе к этому, вы рискуете превратить «спасательную капсулу» в «инструмент для окирпичивания» вашего нетбука. Это всеравно, что заниматься прошивкой BIOS’а в обычных ПК. Восстановить кирпич потом можно будет только с помощью программатора.

Я приготовил архив, который должен облегчить установку:

Страница загрузки

Он включает в себя все необходимое — от автоматической прошивки u-boot в USB до рабочей rootfs для системы Debian. Если решили воспользоваться моей прошивкой, порядок примерно такой:
1) Если нужно прошить u-boot, то распаковываем на первый раздел SD флешки содержимое архива uboot+usb-reflash-wm8505.tar.xz, загружаемся.
2) После перепрошивки распаковываете на первый раздел SD содержимое debian-squeeze-livesd-uboot-wm8505.tar.xz, на второй — debian-squeeze-livesd-rootfs-wm8505.tar.xz.
3) После загрузки с Live-SD, создаете все разделы, как описано выше, и распаковываете в Linux раздел debian-squeeze-rootfs-lxde-wm8505.tar.xz.

EDIT:

Вот содержимое моего скрипта для LiveSD:

1
2
3
4
5
6
7
8
9
lcdinit
textout -1 -1 "Configuring u-boot default variables to load from USB" ffffff
setenv bootcmd lcdinit\;usbinit\;textout -1 -1 "Loading from USB..." ffffff\;fatload usb 0:1 0 uImage\;bootm 0
setenv bootargs root=/dev/sda2 rootdelay=5
saveenv
textout -1 -1 "Loading Live SD..." ffffff
fatload mmc 0 0 /script/uImage
setenv bootargs root=/dev/mmcblk0p2
bootm 0

Переменные u-boot «bootcmd» и «bootargs» как раз и отвечают за загрузку в случае, когда мы вынимаем SD диск. К параметрам ядра добавлена опция rootdelay=5, чтобы USB разделы успели примонтироваться прежде чем начнется загрузка системы.

Итак, вот что у меня получилось:

screen1

2012-02-05-193726_800x480_scrot

По моим оценкам, получившаяся система вполне неплохо работает, если учесть что она работает из под 300 Мгц процессора и 128 Мб памяти, из которой остается около 90Мб под всякие браузеры и прочее… Рабочий стол минималистичен и прост, гораздо привычнее, чем например, на Android и ни следа от китайских иероглифов. Благодаря переходу на 3.х ядро улучшились некоторые характеристики, с помощью легковесного браузера Midori мне удавалось заходить даже в социальную сеть Вконтакте, с оригинальной прошивкой Windows CE от китайцев нереально было даже по русски печатать…

Увы, для владельцев WM8650 пока нет нормальной поддержки со стороны официального Linux, а значит, пока приходится довольствоваться результатами работы китайцев. WM8505 слишком слаб, данный аппарат можно использовать лишь в качестве роутера для раздачи интернета и сетевой шары, ну и как отличная площадка для играния с архитектурой ARM. При наличии драйвера на звуковой кодек, данное устройство можно приспособить для прослушивания музыки. Поэтому, ждите ;). Разработка для этих устройств сейчас ведется тут (я в этом принимаю свое маленькое участие):

http://groups.google.com/group/vt8500-wm8505-linux-kernel



46 Responses to Установка Linux на VIA VT8500 WM8505 WM8650 Часть 2

  1. Альтаир пишет:

    Доброго времени суток!
    Возможно ли в ближайшем будущем создать «прошивку» Linux для данного нетбука, чтобы ее могли без проблем установить «чайники»? (Вставил SD карту и после загрузки сразу пользуйся Linux).
    Сам недавно приобрел нетбук на ЦП WM8650. Параллельно начал осваивать Linux на стационарном ПК. Так что опыта работы с Linux очень мало.
    Заранее спасибо за ответ!

    • viron пишет:

      Здравствуйте, сделать можно все, главное чтобы время свободное было и желание. Я лично пока оставил эту затею, у меня этот нетбук сейчас работает как wifi точка доступа и файлохранилище, большего в принципе я от него не жду. По поводу Вашего вопроса — сделать установщик трудно из-за наличия разновидностей этих нетбуков. Один и тот же WM8505 может поставляться как с USB флешем так и с NAND MTD, а это сильно все меняет. Не говорю про отсутствие драйверов под звук и прочее.

  2. Luiz Gustavo пишет:

    Привет Друг!
    Спасибо за учебник, Его версия была единственной, которая работает для меня… Но я должен был взять Flash USB и вручную форматировать PC, Действительно дали работу!… Но у меня проблема, не знаю, Имя пользователя и пароль, чтобы Войти, Не могли бы вы мне помочь??
    Извините за орфографические ошибки! Я бразильская (с помощью Google переводчик).

    • viron пишет:

      Hi, Luiz
      You just need a common procedure for Linux to reset the password in /etc/shadow. Please see the first part of this article on the site or just google. How do you understand Russian? ;)

      • Luiz пишет:

        Привет V1ron!

        спасибо. Вы решили проблему пароль, Только у меня возникают сообщения об ошибках вот так:
        “User’s $HOME/.dmrc” file is being ignored. This prevents the default session and language from being saved. File should be owned by user and have 644 permission. User $HOME directory must be owned by user and not writable by other users

        а также это:

        » GDM could not write your authorization file . This
        could mean that you are out of disk space or that your
        home directory could not be opened for writing . In any
        case it is not possible to login. Contact system administrator .»

        И после этого я вернусь к экрану входа. Я думал, что это недостаток пространства затем сменил мой FlashUSB на 8 Гб. Но проблема остается. не могли бы вы мне помочь?
        в любом случае, спасибо, Его версия является единственной, которая работает для меня.
        PS: Я использую переводчика ….

      • Luiz пишет:

        Hi V1ron!!

        I managed to log in after add the permissions to users with the command chmod 777 /tmp, However processor usage never lower than 100%. I waited about 16 minutes after the desktop appears but the CPU usage does not go down! PS: the error «User’s $ HOME / .dmrc» file is being ignored ……. «this error still persists and the desktop backgroun color still dark… Sorry to bother you with this, That’s what I really want to see my netbook working with linux…
        Thanks for your attention.
        A) Luiz

  3. Luiz пишет:

    Hi v1ron!!

    I solved my problem using the folowing comands: Loged with root: «chmod 777 /tmp» after «chown v1ron /home/v1ron» and loged with V1ron user type «chmod 700 /home/v1ron»
    If anyone has the same problem this is the solution….
    Hey V1ron Lot of thanks for all, you gave a breath of life in my netbook… :)

    A) Luiz Gustavo.

  4. Luiz Gustavo пишет:

    Hey v1ron!

    is possible to use the wifi? I typed the command iwconfig eth0 and iwconfig wlan0 but nothing was found! is necessary to activate it before?

    • viron пишет:

      Yes, it is possible. My 8505 works now as a wifi access point + nfs share. You need to power up the wifi module using GPIO. Read the GPIO manual from Linux, find the correct GPIO number (usually 0…8) and enable it. You should see a new USB device attached in the console. After that, install or use the driver for your wifi module. The Ralink modules are fully supported in the official Linux kernels.

  5. олег55 пишет:

    админ, подскажи пожалуйста, если смартбук не грузит с карты, вместо загрузки с карты вылазит лого вин ЦЕ (как обычно). но дальше не грузит, тупо висит лого и все. что может быть? что в идеальном случае он должен выдать на экран при нормальной загрузке с карты, на которую залит дебиан?

    • viron пишет:

      Не знаю про какую карту идет речь, там может быть 2 вида карт — MTD и обычная USB флешка внутри. Если у вас WinCE не загружается это может означать только что она запорота или вы просто недостаточно долго ждете :) Вам нужно скачать установщик от китайцев для вашей модели и переустановить, что проблематично, либо добро пожаловать в кампанию по установке линукс на китайцев. Вы наверное что-то не так сделали при установке дебиана (если пользовались моими статьями), или у вас флеш MTD.

    • viron пишет:

      Если у вас флеш MTD то вы всеравно можете грузиться с внешних usb флешек после перепрошивки uboot и установки правильных команд. Либо грузитесь всегда с SD карты.

  6. Roman пишет:

    Привет!
    Спасибо за подробный ман и дистриб!!!
    Действительно изначально запорол загрузчик прошивкой ведроида, который хотел записаться в NAND Flash, беда оказалась в том, что китайцы вместо NAND Flash запилили микруху от флешки на внутренний USB-порт. Ведроид не стал, загрузчик слетел. С помощью представленного архива смог восстановить загрузчик — пишет Loading from USB или что-то в этом духе, но не могу распаковать нормально линуха — ругается на символические ссылки в архиве и на одну циклическую ссылку в rootfs-архиве.

    • viron пишет:

      Странно, у меня вроде все распаковывалось нормально, я вроде распаковывал прямо в консоли нетбука командами xz и tar -xcf < архив>

      • Roman пишет:

        Спасибо за быстрый ответ, действительно сам наплужил с tar’ом. Распаковал образ на SD-карту, загрузился :)
        Дай Б-г тебе здоровья и успеха во всём!!!

        • viron пишет:

          Спасибо, и Вам того же, SDHC карты работают на моем, так что думаю ограничений нет. У меня щас 500 G жесткий диск там воткнут.

  7. Roman пишет:

    Скажи-ка, друг любезный, а какой максимальный объем флешки можно впихнуть? Есть ли ограничения на дисковое пространство?

  8. Владимир пишет:

    Можете поделится собранным ядром от ProjectGus в котором уже есть поддержка вашего драйвера для ES8328?

    • viron пишет:

      Ох… оказывается даже в этом ядре нет этого драйвера. Помню только, один англоязычный товарищ смог сам пропатчить ядро и собрать, в итоге звук у него заработал. Я постараюсь пересобрать, если конечно это ядро от ProjectGus еще существует. Пока что вот тут можно взять патч и глянуть дискуссию:
      https://groups.google.com/forum/#!topic/vt8500-wm8505-linux-kernel/nAowjPM_vmc

      • Владимир пишет:

        Ядро существует оно тут — https://github.com/projectgus/kernel_wm8505 но я не представляю как его собрать. Рад что вы готовы помочь, буду ждать новостей.

      • Владимир пишет:

        Получилось собрать? Я попробовал, но так и не смог подобрать компилятор

        • viron пишет:

          Собрать-то получилось, но ядро это такое древнее китайское старьё, что на нём даже Systemd не работает. Нету опции open by fhandle. И патч на это ядро не подходит, может быть он для стокового. Поковыряюсь еще, может получится прикрутить. https://github.com/v1ron/kernel-wm8505

        • viron пишет:

          Прикрутил звук, выложил архив со скомпиленным ядром и rootfs с установленным MPlayer. Драйвер написан криво, и поэтому работает стабильно :). Mplayer почему-то жрет под 80% процессора, когда играет MP3, но это не из-за драйвера. Надо будет из этих двух статей одну нормальную сделать.

          • Владимир пишет:

            Спасибо!
            Звук работает, но почему то только через аудиовыход.
            И не работает вайфай, похоже что отсутствует нужный модуль в /lib/modules ядро собрано без него? В другом ядре подгружался rt3070sta.ko

          • viron пишет:

            Там GPIO вроде, чтобы динамичек включить. Я вроде так до сих пор его и не включал, больно уж он ущербный :). Вафля у меня работала (внешний адаптер TP7200WN), CONFIG_RT2870=y. Её кстати тоже надо включить через GPIO, если она встроенная.

          • Владимир пишет:

            Встроенный вайфай очень нужен :)
            Сейчас посмотрел GPIO, там их всего 7. У 2го и 7го в value стоит 0, но когда пытаюсь изменить значения например так:
            echo 1 > value
            то пишет — Operation not permitted
            Как их включить?

          • viron пишет:

            echo out > direction

          • Владимир пишет:

            Встроенный вайфай заработал, но не стабильно. Часто появляется ошибка вида «Bulk In Failed. Status=-71» как я понял это проблема с драйвером для ralink

          • viron пишет:

            У меня нормально внешний ралинковский адаптер работает клиентом. Скорее всего USB борохлит — по питанию не держит или еще чего. Не стоит от китайского ядра стабильности ожидать. Единственное его преимущество сейчас перед ванильным — на нём звук можно поднять.

          • Владимир пишет:

            Выяснил что вайфай работает как надо, если подключатся не сразу как модуль подгрузился, а через пару минут. Наверно не успевает что нибудь загрузится.
            Я включил встроенный динамик, для тех кто еще захочет , оставлю тут пару строк:
            echo out > /sys/class/gpio/gpio3/direction
            echo 0 > /sys/class/gpio/gpio3/value
            и если использовать плеер mpg123 то загрузка проца всего 20%
            В общем с этим ядром работает всё, лучшее что есть для этих устройств!

  9. Вадим пишет:

    Надеюсь сайт не заброшен? Возникли вопросы по установке.

    • viron пишет:

      Нормально, у меня до сих пор пашет точка доступа на wm8650.
      Вы правы, хороших обновлений давно не было. Не остаётся времени на энтузиазм…

      • Вадим пишет:

        Здравствуйте! Большое спасибо за Ваш труд. Это единственная нормальная информация которую удалось найти в сети. Но во время установки вашей сборки ядра возникли проблемы. Все манипуляции я делаю в дистрибутиве Mint. Разбивку SD-карты делаю gparted. SD-карта у меня это MicroSD+переходник на SD. Первый раздел я сделал FAT16, а второй etx2(делал и другие вариации). Я прошил загрузчик содержимым архива uboot+usb-reflash-wm8505 до надписи: «Вы можете отключить питание и извлечь карту(перевод текста по памяти)». Потом скопировал в первый раздел squeeze-livesd-uboot-wm8505, а во второй debian-squeeze-livesd-rootfs-wm8505. При запуске получил вот это — http://imgur.com/ry7islf (при клике картинка увеличится). Если извлечь SD-карту и запустить девайс, то появляется надпись Loading from USB… Все, на этом процесс остановился. Подскажите пожалуйста, что сделать, чтобы продвинутся дальше? Спасибо!

        • viron пишет:

          Добрый день, попробуйте reiserfs форматнуть. Дело в том, что на обычных компах используется initramfs, в данном случае этого нет, на этапе загрузки доступны только драйвера, скомпилированные в образ ядра. По скриншоту у вас reiserfs, vfat, msdos, fuseblk. То есть, форматните второй раздел в reiserfs, и будет загружаться. Да, это такое упущение, что в ядро встроено так мало файловых систем.

          • Вадим пишет:

            Действительно проблема была с файловой системой. Система загрузилась. Спасибо за подсказку. Я воткнул кабель, но интернет не работает. А он необходим, чтобы установить parted для разметки внутреннего диска. Нужно править конфиги?

          • viron пишет:

            WiFi через GPIO включается. Ethernet там китайский, помнится, не во всех свитчах линк загорался. Драйвер должен быть… ifconfig нужно смотреть видит ли карту, lsusb\lspci\dmesg. Ну а дальше обыкновенная настройка сети под каждый дистрибутив своя.

          • Вадим пишет:

            Дело в том, что ifconfig нету в системе. Команда dmesg | grep eth ничего не выводит. Ping не проходит. Насчет я верно понял Вас, что GPIO это директория /sys/class/gpio (на данный момент отсутствует в сборке) ?

          • viron пишет:

            Да, директория та самая. Про GPIO можно почитать — оно везде одинаково работает в линуксе. Поставить значит ifconfig надо из deb пакета с сд карты вручную. Обычно сразу должен им выводиться eth0. Если нет, то либо с адаптером что-то нехорошее, либо в ядре нет драйвера. Может modprobe надо сделать, я не помню, какие модули там имеются. Называется карта VIA Velocity или Rhine, должны быть в dmesg.

          • Вадим пишет:

            Здравствуйте!
            К сожалению упоминания об Velocity и Rhine в dmesg нету. Я перенес в сборку livesd директорию /sbin из сборки lxde тем самым получил набор нужных утилит (parted, fdisk, ifconfig (который по сути не нужен был так как присутствовал пакет iproute2 в котором есть отличная утилита ip) и другие). Удалось установить node.js 0.12.0 спец сборка для arm v5 (https://github.com/needforspeed/Nodejs-ARM-builder), но Ethernet так и не определил (под Windows CE 6.0 он работал, что значить с ним все в порядке). Я разобрался с GPIO и нашел Wi-Fi на gpio2, но вот когда делаю reboot системы или выключаю её, то папка gpio2 с директории /sys/class/gpio пропадает и нужно делать все по новой. Хотя другие настройки в системе сохраняются.

          • viron пишет:

            Может быть, драйвер на Velocity оказался отключен в конфиге, когда я компилил вторую версию со звуком… У меня тогда не было возможности проверить это — только WiFi использую. Попробую на днях, обновлю может образ. Для gpio нужно скрипт в автозапуск, на арче с systemd у меня настроено. Rootfs брал без изменений с дебиановских источников, согласен что слишком мало утилит в него включено по умолчанию. Соответственно размер второй версии гораздо меньше.

          • Вадим пишет:

            Возможно. Будет отлично, если сможете обновить образ. Также очень интересно почему так много ОЗУ ( целых ~95mb ) потребляет система в режиме простоя. Свободно остается всего ~10mb. У меня есть VDS и там установлен Debian 7 minimal и режиме простоя потребляет всего — 4mb.

  10. Вадим пишет:

    Установил пакет Htop и он показал совсем другую информацию чем перед этим top и free. По htop занято 8мб и свободно 98мб озу. Даже очень отлично. Подскажите, а по какой инструкции вы компилируете ядро для arm v5? Хочу попробовать собрать wheezy на этот «девайс» :)

    • viron пишет:

      В первой части есть про компиляцию. Не сильно другой процесс сборки, если сравнивать с Mainline. Из-за различных костыльных драйверов, надо дополнительные параметры прописывать вроде «make via_obj». Некоторые версии gcc собирают нерабочий образ. Проше всего в ArchLinux собирать — там toolchain arm-none-eabi ставится из репозитория одной командой. Как завернуть bzImage в u-boot образ у меня тоже написано в статье про Mainline. ProjectGus ядро + прикрученный звук лежат на моём гитхабе.

  11. Дима пишет:

    Здравствуйте!
    Установил вашу сборку Wm8505 Projectgus Firmware. Начал нестабильно работать интернет. Поднимаю wifi через gpio. Начал получать спам в консоль ошибкой:
    phy0 -> rt2x00usb_vendor_request: Errror — Vendor Request 0x07 failed for offset 0x101c with error -71
    Ошибка возникла неожиданно и причина не ясна. Достаточно выполнить: echo 1 > /sys/gpio/gpio2/value не подключаясь к роутеру и через 1-3минуты идет эта ошибка и чтобы снова подключится нужно echo 0 > /sys/gpio/gpio2/value и повторить действия выше. Вы сталкивались? В гугле советы по поводу отключать управление питанием iwconfig wlan0 power off, но результата нет. Замена ядра ошибку не решает.

    • viron пишет:

      Добрый день, это недостатки китайского ядра, бывает что-нибудь да криво работает. У меня на mainline эта ошибка возникает, если вытащить из USB порта адаптер WiFi, который раздаёт интернет через hostapd. Или через gpio отключить работающий девайс. После перезагрузки восстанавливается. Если ничего не трогать, то работает сутками.

      • Дима пишет:

        Дело в том, что и на новом ядре тоже самое. Ничего не трогаю. Само начинает спамить.

Добавить комментарий

Ваш e-mail не будет опубликован.