Пользователь
0,0
рейтинг
21 апреля 2013 в 16:50

Администрирование → Самый медленный компьютер на Linux перевод

image
Часто люди, только купившие себе новенький восьмибитный микроконтроллер интересуются, как запустить на нём Linux. Но обычно они становятся лишь объектом насмешек. А на форумах по Linux'у порой проскакивают вопросы, мол какие нужны минимальные харрактеристики для запуска операционки. Самый частый ответ — 32 битная архитектура, MMU и как минимум 1 мб оперативной памяти. Мой проект ломает эти стереотипы. Компьютер основан на ATmega1284p. Я даже сделал ещё один на ATmega644a, и он тоже работал. Нет больше никакого процессора или других спрятанных частей. Всё это работает на версии ядра 2.6.34, и даже (если у вас есть на это время), грузит полноценную Ubuntu, с X сервером и Gnome.


Оперативная память


Да, LInux требует мегабайты оперативки и 32 битную архитектуру процессора с MMU. Тут всё это есть.
Мне пришлось использовать старинную тридцатипиновую планку SIMM типа. Для справки: такая память использовалась в 286'ых компьютерах.
Насколько она быстрая? Примерно 300 килобайт в секунду. Маловато, но всё же.

Хранилище файлов


Это для меня проблемой не было. С SD карточками легко работать по SPI, и именно этот метод я и использовал. Карточка на 1 гигабайт работает нормально, но для Ubuntu Jaunty, может хватить и 512 мегабайт. У ATmega есть хардварный SPI модуль, и не составило трудов заставить карту работать. Довольно медленно — около 200 килобайт в секунду.
image

Процессор


Как уже говорилось раньше, нам нужна 32-битная архитектура и поддержка MMU. А AVR восьмибитный, и MMU естественно тоже не поддерживает. Я написал эмулятор ARM. ARM довольно похож на AVR, и написать эмулятор было не так уж и сложно, несмотря на то, что подобных проектов я не нашел.
image

Другие возможности


Компьютер связывается с внешним миром по serial порту. Сейчас я общаюсь при помощи minicom на моём компьютере, но я планирую подключить клавиатуру и символьный дисплей, чтобы сделать всё автономнее. Ещё у меня стоит два светодиода, которые показывают обращения к SD карте(один чтение, другой запись). Сам микроконтроллер со стандартных 20 разогнан до 24 мегагерц.
image

Насколько же всё это медленное?!


Два часа на базовую загрузку(init=/bin/bash). Ещё 4, чтобы войти в Ubuntu(exec init), и потом залогиниться. Запуск иксов ещё дольше. Эмулированная скорость около 6.5 килогерц. Как ни странно, но после загрузки, система даже порой юзабельна. Ответ на команду в терминале приходит примерно через минуту. SD карточка форматировалась день. Я думаю, что это самый медленный, дешёвый и легкособираемый компьютер на Linux'е.
Перевод: Dmitry Grinberg
@ubunterro
карма
13,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Администрирование

Комментарии (72)

  • –30
    Есть практическое применение данной мега мощи?
    • +13
      Сомневаюсь, но всё равно забавно)
      • +24
        Нагло ворую комментоместо:

        Было больше года назад. habrahabr.ru/post/141174/
        Я уж было думал память шалит.
        • –4
          Новое — это хорошо забытое старое :)
          • 0
            Интересно, что людям так не нравится в этой фразе? Я тоже помню этот пост и мне нравится что он появился вновь, по этому и сказал о хорошо забытом старом.
    • +97
      Есть. Это эталонный «троллейбус», его надо выставлять в палате мер и весов.
      • +5
        — Доктор, когда я касаюсь кончиком языка фольги, в которой пекли картошку, у меня покалывает за левым ухом! Что бы это могло означать?
        — Что у вас, батенька, очень много свободного времени :)
        • 0
          — Доктор, я феномен?
          — Нет [...]
    • +8
      Уж точно не майнить биткоины.
    • +9
      Тренировать свою терпеливость?
    • +16
      Собрать кластер. Сейчас это модно.
    • +14
      Хорошо бы, чтобы люди, которые пишут приложение с использованием фреймворка под виртуальную машину, написанную на языке высокого уровня, задумались о том, что задачи, которые будет решать их приложение, можно решать в контроллере дверной ручки от устаревшего холодильника, если только подумать получше.
      • +5
        Можно-то оно можно (особенно если забыть про юзабилити, красивости и т. п.), но нужно ли?
        • 0
          Смотря о чем говорить. Наша фирма платит за 1 «станцию», состоящую из ПК и PCI платы для приема сигналов по радио около 2к$ + WIndows 7, однако ATMega легко справится с поставленными задачами.
          • –1
            Что, прямо из коробки?
    • –1
      Как ни странно я могу придумать один способ практического применения такого медленного компьютера — проверять пароли. Когда-то была (и до сих пор не потеряла актуальности в некоторых применениях) практика брать хеш от хеша от хеша от хеша и так много раз при проверке пароля. Задача — чтобы пароль проверялся настолько долго, что брутфорс черезчур быстрыми компьютерами становился бессмыслененым, была даже аксиома такая, что пароль не должен проходить валидацию быстрее чем за секунду. Как анти-брутфорс данный компьютер вполне торт.
      • +2
        Проще sleep вставить.

        Added: А вот для получения навыков оптимизации… Чтобы синдром «семнадцати мгновений весны» с младых лет не создавать…
      • +2
        А поставить задержку перед проверкой пароля, не? Или только хардкор?
        • –1
          Даже прыщавый малолетний хакер в лицо посмеется над вашими наивными задержками и sleep — одним переходом лечится. А когда в софте железобетонная числомолотилка, а результат вычислений — это часть смещения в памяти на разблокирующий софт функцию — это уже проблема даже для суровых дядек.
          В доинтернетовские времена это отлично работало.
          • +2
            Вы что курите? Обычно «ввод пароля» это удалённое действо, без физического доступа к железу и софту… А если есть физический доступ, то сделайте не sleep, а 1000000000 SHA1 или чего угодно…
            • +1
              Кажется я именно про это и написал ))
            • +2
              sleep лечится асинхронным многопоточным брутфорсером. 1000000000 SHA1 уменьшает количество вариантов на много порядков, прямой путь к DOS. чем вам не нравится хранить в памяти некоторое время количество неправильных попыток?
              • 0
                Вы провоцируете классический спор «броня против снаряда». Не не не, таки лучше в каком-нибудь профильном посте про брутфорс и хеширование, или типа «Как правильно тормозить для борьбы с брутфорсом» :) Кстати, неплохое название для поста, кто возмется?
  • +2
    А возможено ли подобное сделать под stm32f4?
    • +64
      Нет, невозможно. Он будет работать быстрее avr и самый медленный компьютер с linux не получится. Хотя… Если написать на нем эмулятор avr и свести задачу к предыдущей…
      • +5
        Вы заставили мои руки чесаться…
  • +27
    Почему переведена только половина исходной статьи, а все самое интересное (технические детали по эмулятору, а главное — исходники) опущено?
  • +38
    У ATmega нет хардварного SPI модуля

    O RLY.

    Вообще материал более чем годовой давности, и публикация на хабре уже была.
    • +2
      The ATmega does have a hardware SPI module, but for whatever reason, it didn't quite work out, so I am bit-banging the interface.

      просто немного неточный перевод
      • –1
        Ох, точно, проглядел.
        • +16
          Это вы так исправили? =)
          «У ATmega есть хардварного SPI модуля»
          • +8
            Боже, надо больше спать =)
          • +3
            Вы хочете хардварного SPI модуля? Его есть у нас!
    • +24
      За что заплюсовали статью? За неумение пользоваться поиском по хабру? Давайте все будем дублировать старые статьи.
      • +11
        Я, например, не читал предыдущую статью, и не думаю, что прочитал бы в будущем. Мне было интересно, я получил удовольствие за чтение. За это я и поставил плюс.
        • +13
          Как в старом анекдоте.
          Он: — Я помню чудное мгновение!…

          Она: — Ты это сам сочинил? Правда?
          Он: — Ну… Да… Слушай, я тебе сейчас столько стихов насочиняю!..

          Читали про про приватный монитор своими руками? А про марсоход? Нет? Я вам столько сейчас напишу статей!..

          Я понимаю, если статью было бы трудно откопать в недрах хабра… Но заголовок чуть ли не слово в слово совпадает!
          • 0
            Вообще это не анекдот, а одна из самых рейтинговых цитат баша.
            • +1
              Точно, я просто забыл, где прочитал это.
              • +28
                Ну вот. Ведь можно бы было столько анекдотов понасочинять…
            • +2
              Я бы даже сказал, что этот «анекдот» был ещё у Высоцкого:
              Вот две строки — я гений, прочь сомненья,
              Даешь восторги, лавры и цветы:
              «Я помню это чудное мгновенье,
              Когда передо мной явилась ты»!
              • 0
                Это песня о плагиаторе… Вы её вообще целиком слышали?
                • +2
                  Конечно, раз написал :)

                  Мой комментарий нисколько не противоречит вашему, а даже наоборот. Впрочем, они оба слишком отклонились от темы топика.
            • 0
              Вообще, помнится, был такой советский юношеский фильм, где-то середины 80-х (вроде не «Чучело», по что-то похожее), где мальчик «писал» стихи девочке, а она принимала их за его произведения. Может анекдот в основу лег, может наоборот, но в любом случае старше баша.
      • +1
        Вы переоцениваете ответственность, которую возлагает на себя читатель, плюсующий статью.
  • +17
    Биткоины майнить не пробовали на нём? )
  • +6
    А если в качестве оперативки тоже использовать SD карточку? )) Еще компактней, еще медленней, да еще и энергонезависимая) Если это возможно, я не в теме…
    • +2
      флоппи-диск)
  • +1
    А как же uClinux? Он как раз работает там, где нет MMU.
    • 0
      Это слишком легко и потому не так интересно.
  • +23
    Автор метода — Чак Норрис какой-то. «Как уже говорилось раньше, нам нужна 32-битная архитектура и поддержка MMU. Поэтому я написал эмулятор ARM.»
    Внушает уважение и ужос.
    • +5
      Более того, для него это семечки же:
      написать эмулятор было не так уж и сложно, несмотря на то, что подобных проектов я не нашел
  • –12
    Автор, зачем дедульку насилуешь?
  • –19
    А на форумах по Linux'у порою проскакивают вопросы

    Промотал вниз, посмотреть автора. Не Мицгол. Странно.
  • –14
    Лучге бы вы затраченное на это время употребили на что-нибудь действительно полезное для развития Linux…
    • +9
      Ну да, а то создание ARM-эмулятора для ATmega вредно для развития Linux.
  • +5
    Этот посту вручется золотая буханка в виде троллейбуса!
  • +1
    Занятно, да. Сразу пришла мысль, а если написать эмулятор x86-64 для 8086 и запустить Windows 7 на IBM PC/XT? Ну да, придётся повозиться с памятью, например эмулировать HDD как RAM, также надо как то подключить другой диск, большой, гигабайт на 16, ещё эмулировать современную графическую карту на CGA. Не, так совсем изврат получается…
    • 0
      эмулировать HDD как RAM, также надо как то подключить другой диск, большой, гигабайт на 16

      Скорее придется решать противоположную задачу. В рамках 1Мб адресуемой памяти на 8086/88 реализовать через HDD хотя бы 4 Гб доступных для 80386. HDD наподключать можно кучу и в рамках эмулятора объединить их в один. Хотя, может и уткнемся в ограничения «кучи» не добравшись до минимальных требований хотя бы XP.
      ещё эмулировать современную графическую карту на CGA. Не, так совсем изврат получается…
      Для монохромных тем необязательно, простейший вью-порт можно реализовать.
  • 0
    Лучше скажите какая закономерность между разрядностью и эмулируемой частотой.
    Например, какой AVR нужен будет для того что бы просто повторить какой-нибудь Pentium.
    Такие характеристики для AVR вообще чисто теоретический достижимы?

    P.S. Автор настоящий «хакер» просто слов нет. Все перевернулось в мире на фразе
    «Я написал эмулятор ARM. ARM довольно похож на AVR»… Мужику надо премию какую-то
    академическую дать — просто за исследование и трудоустроить в VMWare или Parallels ;)
    • НЛО прилетело и опубликовало эту надпись здесь
  • 0
    Да забавно, оригинал на английском несколько подробнее.
    • +2
      Вы отредактировали свой комментарий и мой стал неактуальным :(
      • +5
        Весьма любопытный способ общения.
  • +1
    Респект, конечно, но если не ставилась цель создать самый медленный компьютер, то я бы пошел по пути создания кросскомпилятора, поставь мне кто такую задачу.

    А вообще почему-то ожидал пост о портировании Linux на 8080 (К580ВМ80) -based машину.
  • +12
    Операционная система нереального времени!
  • 0
    почти эмуляция взаимодействия с марсоходом )
  • 0
    А как проблему с регенерацией SIMM-модулей решали?
    • 0
      I wrote the code to access it as well as refresh it within spec (SDRAM requires constant refreshing to avoid losing data). How fast it is? The refresh interrupt happens every 62ms and takes up 1.5ms, thus eating under 3% of the CPU.
  • 0
    Было бы интересно еще какой нибудь FreeDOS увидеть на подобной системе. Глядишь ворочилось бы сносно.
  • +2
    По-прежнему остаюсь при своем мнении, что в качестве процессора следовало бы выбрать какой-нибудь из кортексов.
    Аппаратная поддержка SD-карточки бы была, 32-разрядность тоже, а все остальное бы реализовал как и в случае с АВР, эмуляцией. Сложности и вычурности задачи это бы не убавило, а результат бы получился куда более красивым.
    • 0
      Но это ведь не так спортивно!
      • 0
        >Сложности и вычурности задачи это бы не убавило

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.