Дешёвые ARM смартбуки в 2023 — есть ли перспективы? Ремонтируем и находим им применение в наши дни

image

Практически каждое поколение портативных устройств производители чипов на архитектуре ARM пытаются втиснуться в рынок полноценных десктопных компьютеров и получить себе место под солнцем в качестве рабочих станций, серверов, а то и простых мультимедийных ПК. Последний десяток лет им это удаётся особенно хорошо, и в первую очередь — благодаря выходу чипа Apple M1. Даже Qualcomm, в сотрудничестве с Microsoft, выпустили нетбуки на полноценной Windows 10 For ARM с эмулятором x86, который и игрушки неплохо тянет. Однако яблочные устройства стоят огромных денег: 100+ тысяч рублей может потратить далеко не каждый энтузиаст, который хотел бы себе портативный компьютер на ARM. А вот 500–2.500 рублей вполне! Предлагаю в этой статье глянуть на ARM-смартбуки прошлых лет и оценить их перспективы тогда и сейчас!

Предыстория


На самом деле, эра портативных ПК на ARM началась не с выхода M1, как кто-то может считать, а ещё с самого начала нулевых. Параллельно обычной версии Windows для x86-совместимых систем, Microsoft разрабатывала и успешно продвигала Windows CE — версию ОС для встраиваемых систем, для которой характерны различные архитектуры (MIPS, PPC, ARM) и ограниченные ресурсы (от 5 МБ ОЗУ для запуска GUI окружения, для CLI можно и меньше). Портативная версия системы от Microsoft могла похвастаться интерфейсом а-ля десктопной Windows, идентичным форматом exe и возможностью загрузки динамических библиотек, поддержкой «ООП на уровне системы» — т.е COM и ActiveX, и API, которое очень напоминало обычное WinAPI с некоторыми особенностями (выкинули ANSI версии функций, выкинули слои совместимости с 16-ти битными приложениями). Чуть позже даже подвезли почти полную поддержку .NET Compact Framework — т.е. под встраиваемые системы была возможность писать на C# и VB.NET, а приложения, спроектированные с учетом особенностей CE, могли работать без изменений и на обычных ПК!

image


Скорее всего, Вы хоть раз встречали в своей жизни WinCE: её повсеместно использовали в автомобильных навигаторах (помним звук «блюм»?), терминалах самообслуживания (POS), станках управления ЧПУ, телефонах (коммуникаторы на базе Windows Mobile), КПК или даже планшетах! Система действительно имела хорошую популярность, и в не последнюю очередь благодаря уже наработанной базе разработчиков, знакомых с API обычной Windows. Благодаря этому, в разные времена выходили разные устройства, которые были призваны играть роль портативных ПК, на которых можно было бы выполнять различные задачи: просматривать и редактировать документы, слушать музыку, выходить в сеть, использовать программы, написанные сторонними разработчиками. Как вам, например, планшет на WinCE из 2003 года?

EB2000:

image


Одним из самых популярных классов подобных устройств были карманные персональные компьютеры — т.е КПК. Их название говорило само за себя. Такое устройство могло было выполнять довольно обширный круг задач обычного ПК: слушать музыку, заниматься теми же самыми документами, играть, сёрфить ранний WEB2.0, а иногда и выводить картинку на телевизор. А ещё можно было всегда держать связь с «большим братом» — т.е обычным ПК, и синхронизировать всю работу, выполненную на устройстве.

Сталкерам привет!

image


Тем не менее, «под капотом» Windows NT и CE сильно отличались: CE была написана так, чтобы её легко можно было портировать между любыми устройствами, где нет чёткой спецификации «что и как должно работать», как это происходит на обычных x86 ПК. Если на обычных компьютерах у нас гарантированно есть BIOS, который может предоставить функции для работы с дисками/флоппиками/cd-rom и что-то вывести на экран, есть стандартизированный способ общения с видеокартой и вывода 2D изображения (VESA), есть четко фиксированные порты ввода-вывода для работы с клавиатурой и мышкой, то на портативных устройствах у вас есть только голое железо, под которое вы сами должны написать Board Support Package (BSP) и адаптировать систему под конкретно эту плату/платформу — сделать опрос физических кнопок, выводить картинку на экран, обрабатывать ввод с тачскрина и т.п. Этим и обеспечивался большой парк поддерживаемых устройств.

Почти Win95!

image


Кроме WinCE, были и другие системы для embedded устройств: QNX (BlackBerry OS), Palm, Symbian (EKA) и они тоже использовались на весьма обширном числе устройств, но Symbian в первую очередь была предназначена для смартфонов, Palm — для КПК и, позже, коммуникаторов, но была однозадачной, а QNX была проприетарной. Поглазеть исходники WinCE мог любой: Platform Builder с полным исходным кодом как UI, так и ядра, можно было скачать свободно, но чтобы использовать в коммерческих целях, нужно было платить…
Но что насчёт чего-то свободного? Тут приходит Linux, который вполне неплохо работал на ARM уже тогда. Вспомнить только Sharp Zaurus, или серию интернет-планшетов от Nokia а-ля N810, которые не просто работали на Linux как Android, но и использовали типичное *nix окружение в виде glibc/xorg. А ещё всё это было полностью свободным, производитель обязан был выпустить исходный код ядра устройства, благодаря чему моддить его мог кто угодно!

image


Шло время, в КПК стали появляться радиомодули, что превращало их в коммуникаторы, а у коммуникаторов росли дисплеи и становилось меньше хардварных кнопок, что превращало их в смартфоны и планшеты. Чипсеты портативных ПК серьезно нарастили свою мощь: уже в 2010 году, в мобильном мире, чипы с частотой 600 мгц-1 ггц и мобильным GPU были вполне себе нормой, и они практически не выделяли тепло, а потребляли сравнительно мало. С момента выхода первого iPad, интернет-планшеты потихоньку начали заменять некоторым людям нетбуки, а благодаря китайским производителям и чипмейкерам, через год-два цены уже упали ниже 200$ за полноценный Android-планшет в кармане, который может запустить что-то вроде Asphalt 6.

image


Примерно в тоже время, как выходили первые интернет планшеты, производители решили поэкспериментировать и выпустить небольшие ARM-смартбуки! Это эдакие предшественники хромбуков, только ориентировались они не на веб, а на мобильные приложения. Уже тогда у Android была довольно большая база приложений, а сама система поддерживала мышку с клавиатурой в качестве устройств ввода. Перспективы были большими, ведь ARM-чипы стоили в разы дешевле, однако разные производители пошли разными путями…

Кто на что горазд


Один из самых популярных смартбуков своих лет, Toshiba AC-100, работал на базе мощнейшего, по своим годам, чипсета Nvidia Tegra, имел 512 МБ ОЗУ (что было неплохо по меркам планшета, но мало по меркам десктопа) и 8 ГБ ПЗУ. Всё это удовольствие стоило около 150$ в розницу — или ~4.000 рублей по тем деньгам. Очень недорого, согласитесь? EEEPC на x86 стоил не меньше 8–9 тысяч, или 280$, а тут смартбук с весьма годным железом, которое гораздо лучше справляется с мультимедийными задачами, стоит почти в два раза дешевле!
Так уж получилось, что AC-100 мне подарил читатель с хабра под ником — inkvizitor68sl и именно поэтому, данный девайс станет первым из тех, что будут участвовать в нашем сравнении.

image

С завода смартбук работал на базе Android 2.1, а вышел в конце 2010 года — прошло почти 13 лет с момента его выхода! Благодаря низкой цене и массовости (в своё время, на форуме linux.org.ru люди строили большие планы на подобные девайсы), а также относительной лояльности Nvidia к open-source (исходники ядра были открыты, но драйвера на видео и, вероятно, другие мультимедийные модули, были в виде «блобов»), на смартбук довольно быстро портировали обычную Ubuntu. Причём разработчики порта откровенно жаловались на Nvidia, объясняя их решения примерно как «накидали всё подряд, чтобы работало как-то, а нам разгребать». Глюков в свое время было куча — то звук отвалится или хрипит, то с видео проблемы. Nv стабильно держала планку касательно поддержки Linux.

image

Вторыми по популярности стали китайские смартбуки на чипе WonderMedia WM8650. Тут уж китайцы перепрыгнули сами себя: полноценный девайс с клавиатурой, дисплеем, тачпадом, Ethernet, Wi-Fi, аккумулятором и USB-хабом стоили всего ~1.500 рублей, что равняется ~50–60$. 50 БАКСОВ ЗА НЕТБУК, КАРЛ! Это был эдакий ответ на OLPC, производился очень долго (примерно до 2014–2015 года, по некоторым данным — до 2018), а работать мог на 3-х разных ОС, две из которых предоставлял производитель: Windows CE (стоковый), Android 2.1 (тоже от производителя) и обычный Linux.

image
Фотка выглядит конечно странно, но какой-то шарм в ней есть :)

Судя по референсной схеме, WonderMedia сама проектировала и планшеты, и нетбуки, отдавая готовые схемы производителям на производство. Спроектировали устройство в конце 2010 года. Первый чипсет компании — WM8505, увидел свет в конце 2009 года и имел много общего с 8650 — это были ARMv5 одноядерные процессоры на частоте 600 мгц, которые похожи на процессоры для обычных КПК. Из-за того, что WinCE был популярнее Android в 2009–2010 году, изначально вендор портировал именно её.

Чипсет не имел встроенного GPU, поэтому Android на нём работал весьма медленно, однако в нём был модуль для декодирования видео в h264, позволявший смотреть кино с комфортом. Кроме того, устройство относительно адекватно переваривало веб тех лет, что делало из него отличную машинку для серфинга, или, например, сисадминам по объекту бегать. В целом, причина их популярности понятна сразу: дешево, кастомизируемо, доступно (они очень часто светились на главной странице китайских магазинов).

image

Нетбуков на базе чипсетов WonderMedia у меня целых два: второй из них на WM8880, который я купил почти новым, с родной коробочкой. Через несколько лет после выхода подобных ультрабуков, WonderMedia активно метила в рынок ультрадешевых планшетов и даже добилась некоторых успехов, но основной рынок занял AllWinner/RockChip, а затем пальму первенства перехватил MediaTek.

В сравнение можно было бы добавить популярные в прошлом «планшеты с клавиатурами» от китайцев — эдакие трансформеры по 2 тыщи, —, но это будет не совсем честно: мы ведь смотрим на полноценные смартбуки!

Итак, у нас есть аж три девайса, которые мы будем сравнивать, но по каким критериям? В 2023 году, нам нужны будут как минимум три вещи:

  • Мультимедийные возможности — просмотр кино, прослушивание музыки, опционально — DLNA сервер
  • Серфинг — сможет ли устройство выйти в сеть и насколько хорошо у него это получится. Одно дело linux.org.ru листать, другое «тяжелый» Хабр читать
  • Возможности администрирования — поскольку мои статьи всегда были с уклоном в техническую часть, весьма немалый процент моих читателей — потенциальные сисадмины, которые могут рассматривать подобное устройство к покупке. Попытаемся узнать, можно ли подключиться по VNC к серверу, или админить сервак с SSH
  • Удобство использования — сюда я причисляю такие характеристики, как качество дисплея, качество динамиков, плавность работы, время жизни от аккумулятора. Тут уже моя личная субъективщина — для кого-то TN матрицы после Galaxy S22 вырвиглазные, а мне норм!


Такие устройства сейчас можно найти на барахолках за копейки. В среднем, их цена 500–1.500 рублей (не забываем про торг! Можно попытаться сбить ещё ниже), но иногда продавцы наглеют и просят больше цены нового (!). Т.е., условно, AC-100 стоил 4.000 рублей новым по тому курсу 13 лет назад, а сейчас её пытаются впаривать за 5.000. Тоже самое с ноутами на вондермедии: они стоили 1.500 рублей, а кто-то пытается впарить за 2.000 рублей. Но цену можно легко скинуть, если указать продавцам на цену нового девайса 10 лет назад: обычно люди соглашаются.

image


Обслуживание


Первым делом, мы обслужим нетбук на WM8650, благо требовал он только замену АКБ и перепрошивку. Предыдущий владелец успел установить тормозной кастом с кучей софта: благо с прошивками тут всё хорошо. Поскольку эти смартбуки были почти идентичным в хардварном плане (дисплеи — TTL, тачскринов не было, контроллеры тачпада/клавиатуры — идентичные), то подходит одна единая прошивка «для всего». Прошить их очень легко: кидаем прошивку на заранее отформатированную в FAT SD-флэшку, вставляем в смартбук и включаем его. Дальше он сделает всё сам!

image

Под «капотом» всё работает достаточно просто: в качестве загрузчика используется обычный U-Boot (записанный в SPI-памяти), который выполняет роль BIOS. При старте он ищет скрипт wmt_scriptcmd в корне флэшки, и если находит, то начинает исполнять команды из него. Скрипт очень простой: по сути, он напрямую загружает файлы в память (стандартные образы nb0) и записывает их в внутреннюю память. Затем u-boot запускает свежую, но ещё чистую систему, копирует все программы во внутреннюю память и отправляет систему в ребут. Благодаря такой свободе действий, можно напрямую грузить систему с SD-флэшек/USB-флэшек, да хоть по сети, если такая поддержка есть в U-Boot. А исходники U-Boot ведь доступны любому!

image

Теперь время разобрать смартбук и заменить АКБ. После разборки я немного удивился: обычно в подобных лэптопах используется стандартная 3.7В аккумулятор, но в этом смартбуке было два элемента 7.4В, связанных изолентой в «динамитную шашку» :). Поскольку места в «поддоне» много, я решил заменить их на довольно ёмкие аккумуляторы от битых телефонов.

image

Сделать АКБ «по заводу» своими руками не выйдет, поэтому я вынес плату контроллера отдельно (выглядит не очень, т.к не хотел ничего клеить, да и тканевого скотча под рукой не оказалось). Осторожнее с полярностью, контроллер не уйдет в защиту при переполюсовке! Если после подключения АКБ у вас отсутствует напряжение на выводах, то отверткой можно аккуратно позамыкать все ножки у контроллера АКБ, и он начнёт работать (справедливо для любых аккумуляторов).

image
За кадром я привел хаос из проводов в порядок.

Давайте посмотрим на плату устройства поближе. По сути, основная плата с чипсетом, памятью и всей обвязкой, припаяна к дополнительной плате с контроллером сети, аудиокодеком, USB-хабом и.т.п. Сделано это, скорее всего, для удешевления: заведомо рабочие «чипсетные модули» при бракованных платах можно будет просто перепаять, а ещё эти модули могли продавать и другим разработчикам железа, например, ЧПУ станков.

На плате очень много подписанных (!) диагностических пятачков, благодаря чему можно подпаяться к UART и общаться с нетбуком через COM-порт в WinCE, или попробовать подключить внешние девайсы к шине SPI/I2C (насчёт их использования в юзермоде WinCE я не уверен). Для самоделок, такой нетбук может оказаться просто незаменимой панелью управления!

image

Его более «свежий» брат на WM8880 (произведенный аж в 2018 году) уже работал исключительно на Android 4.4 KitKat и был скорее планшетом без тачскрина и с клавиатурой. Он не требовал никакого обслуживания, кроме замены АКБ, которая тут была пухлой как батон! Благо, она съёмная — что несомненный плюсик производителю.

image

Этот нетбук уже ценный тем, что работает от обычного 3.7В АКБ и потребляет не очень много энергии, что при небольшом моддинге позволяет вынести мощный аккумулятор за корпус и получить автономный девайс. Пятачки у них обычно тоже подписаны, и с условной Arduino/ESP32 можно попытаться «общаться» через UART. Кроме того, он довольно ремонтопригоден: например, дисплей тут универсальный, 7-дюймовый, с TTL-интерфейсом от планшетов и стоит по 200–300 рублей.

image

AC-100 же требовал только переустановки ОС и работал из коробки, даже аккумулятор живой. Разве что кнопка Backspace отвалилась со временем, но это мелочи. На нём уже была установлена Ubuntu 12.04 моим читателем, но в ней были глюки со звуком, а ещё забыт пароль (в single user загрузиться нельзя, или я не понял как).

image

Благо найти образ ОС и переустановить её легко и сейчас. Берём отсюда presintalled bootimg и tar.gz — это ядро с рамдиском и установщик системы. Подключаем выключенный нетбук к ПК с MiniUSB кабелем, нажимаем Ctrl + Esc и нажимаем кнопку включения. Нетбук перейдет в режим загрузки: надо установить драйвера nvflash и сам nvflash. Закидываем bootimg в «Program Files/NVIDIA Corporation\tegra_froyo_20101105», открываем командную строку и пишем:

nvflash --bl bootloader.bin --download 6 «lubuntu-12.10-preinstalled-desktop-armhf+ac100.bootimg»

image

Ядро записано. Теперь берем любую USB-флэшку, просто кидаем в корень tar.gz (не распаковывая), вставляем в нетбук и перезагружаем его долгим зажатием кнопки питания и повторным включением. Нетбук сам распакует rootfs и начнёт установку, дальше процесс идентичен установке десктопной Ubuntu.

image

Система устанавливается ~10 минут. Но это ещё не все: репозитории с софтом давно перемещены на old-release, поэтому сразу после загрузки открываем /etc/apt/sources.list в nano/vi/abiword и меняем ports.ubuntu.com, на old-releases.ubuntu.com. Выполняем apt-get update, ждём и всё: теперь мы можем устанавливать софт из репозиториев, но только для архитектуры armhf (есть ещё armel, но это другое ABI без поддержки FPU).

image

Мультимедиа


image

Первым делом заценим мультимедийные возможности нетбука на WinCE. И тут все в целом ничего: есть стерео-звук (правда достаточно тихий), благодаря Windows Media Player поддерживаются многие форматы музыки, а хардварный видео-декодер полностью работает. Есть ещё и TCPMP плеер, судя по всему, есть поддержка воспроизведения с удаленного сервера. Удобно!

image

Правда, стоит быть готовым к тому, что видео придется переконвертировать при необходимости: настроек для принудительного включения программного декодера я не нашёл. В целом — посмотреть киношку в mp4/h263 можно без проблем. Для музыки его можно использовать только нетребовательным пользователям: WinCE вроде-бы не поддерживает внешние аудио-DAC, поэтому в качестве полноценной аудиосистемы его использовать не выйдет.

Острого недостатка в софте под WinCE не чувствуется: ещё в нулевых выходили устройства, которые назывались HPC (Handheld Personal Computer), под которые и вышло основное число программ. Плюс, здесь запускаются некоторые программы и игры от WinMobile, но только в полноэкранном режиме.

image


Ситуация с AC-100 же ровно наоборот: у него гораздо более качественный стереозвук, обилие самых разных плееров (mplayer, vlc и кучу других), есть возможность переконвертировать видео прямо на устройстве (ffmpeg), но несмотря на присутствие блобов… 720p видео он всё равно декодирует софтварно! Чипсет точно умеет до 1080p, но поддержки декодера в системе нет. В качестве грязного хака, можно сделать дуалбут с Android’ом и для просмотра видео использовать его — там точно всё будет работать.

image

А вот музыку на нём слушать очень даже неплохо! Плюс, DLNA-сервер из него развернуть не будет проблемой.

image

Малыш, благодаря Android на борту, оказался самым функциональным: тут есть и кучу плееров, и эквалайзеры, и аудиоредакторы. Кроме того, есть DLNA-сервер.
Видео он переваривает без каких либо проблем.

Сёрфинг


Не стоит ожидать, что такие нетбуки смогут больше, чем устройства на Atom. Их максимум — лампово полистать opennet, зайти на linux.org.ru, или почитать rss Хабра. Никаких ютубчиков, вкшечек и прочего: лучше всего они работали на выходе с вебом времен HTML4.

Вот так это выглядит с AC100. Тут у нас есть Chromium и FireFox, не исключаю, что можно попытаться собрать и более свежие версии браузеров, но как они будут работать на 512 МБ ОЗУ? Вот то-то же…

image

Относительно неплохо идут дела у нетбука на WM8650. В качестве браузера тут Pocket IE, который Вы можете помнить по коммуникаторам на Windows Mobile, и есть альтернатива в виде Opera Mobile, но всё равно — работает так себе.

image

Малыш тут показывает себя лучше всего. Можно накатить последний доступны на KitKat Google Chrome (правда работает он так себе), а можно остановиться на Opera Mini, который еще переваривает большинство сайтов для «почитать».

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


У всех устройств с этим всё хорошо: под WinCE есть VNC-клиент, RDP-клиент для Windows и порт Putty (который может слушать в том числе и COM-порты).

Под Ubuntu всё максимально очевидно: TightVNC есть, ssh из коробки есть, а под Android разработаны самые разные клиенты, про некоторые я рассказывал в статьях о превращении «сонерика» в тонкий клиент и Galaxy J3 за 500 рублей в сервер. Всё тоже самое — только с клавиатурой!

Личные ощущения


image

Самой крошечкой, которую при желании можно закинуть даже в сумку или карман зимней куртки, оказался нетбук на WM8880. В целом, он не только крохотный, но и весьма добротно собран. В целом, при желании им можно пользоваться даже стоя, держа его в одной руке, а работая второй рукой: такое качество может пригодится сисадминам, которые бегают по объекту.

image

У него есть полноценный Ethernet-контроллер на 100 мб/с, Wi-Fi, и он поддерживает 3G модемы. Тачпад здесь всего на одно касание, без возможности скроллинга, но из-за специфики Android, весь скроллинг производится «зажал кнопку и потянул». Кроме того, у него есть 2 полноценных USB разъёма, 3.5 разъемы для наушников/микрофона, слот для SD-карт и полноценный HDMI для вывода картинки на монитор (правда, только в разрешении экрана — т.е 480p).

image

Кроме того, у него весьма ёмкая АКБ и он питается от 5В, что позволяет путём нехитрых манипуляций сделать зарядку от повербанка. Жаль, что у устройства нет тачскрина, хотя-бы резистивного — он был бы очень кстати. Дисплей, хоть и TN, весьма низкого разрешения, но неплох в повседневной работе — с такого расстояния явных пикселей не видно, да и есть серьезный плюс — как я уже говорил, сюда подойдут обычные TTL матрицы с планшетов по 300 рублей, так что даже разбитый экран не будет означать конец нетбуку!

Девайс на WinCE оказался очень тонким и слегка косит на MacBook. Несмотря на то, что нетбук пытается казаться «большим» (хотя есть подобные буки и с 7» дисплеями — как и WM8880), рамки у него очень здоровые. Зато всё гораздо лучше в плане дисплея: HD TN матрица с неплохими характеристиками: скажу честно, у многих нетбуков за 10–12 тысяч рублей ситуация в разы хуже. Однако, такие матрицы и минус: если её повредить, то замена на алике будет стоить ~2.000 рублей, а найти её больше нигде не представляется возможным.

Качество сборки у него неплохое — даже после нескольких разборок у него не рассыпались клипсы, и он чувствует себя уверенно. Однако пластик оказался слегка скрипучим (впрочем, нетбук явно многое повидал). Что мне понравилось — так это клавиатура. Она здесь действительно ничего, как и тачпад, зато не понравились динамики — очень тихие (возможно «сели»). Для WinCE здесь просто огромный объём ОЗУ: аж 200 мегабайт почти свободно! Для Android это нормальный объём, но не более: какой-то хорошей многозадачности ожидать не придётся.

image

Тошиба же чувствуется как гораздо более дорогое устройство. Скажем так, явно не на 5 тысяч рублей: классный рельефный корпус, отличная сборка без люфтов и скрипов, АКБ продолжает жить спустя 13 лет. От клавиатуры весьма неплохие тактильные ощущения, хотя кому-то кнопки могут показаться великоватыми. Мне же нормально, понравилось, привык почти сразу (хотя читатель, подаривший мне устройство, назвал клавиатуру неудобной). В теории, даже замену при желании можно будет попытаться найти.

У Toshiba весьма достойный HD дисплей 10», также выполненный по технологии TN. В целом, у него, пожалуй, лучшая матрица: никаких особых искажений не видно, даже при работе в разных положениях. Мне лично понравился. Звук из его динамиков заметно чище и громче.

Заключение


Ещё 13 лет назад, смартбуки на ARM были достаточно функциональными и при этом очень дешевыми устройствами. Они легко выполняли многие повседневные задачи пользователя в те годы: мультимедиа, какие-то игры, серфинг в интернете. Но это не значит, что спустя 10 лет они стали бесполезными — подобный нетбук вполне подойдет на дачу, в гараж, или даже в качестве небольшого сервера. Кроме того, из них можно сделать отличные терминалы для самоделок: например, панель для умного дома.

Так может, для успеха нужен дешевый open-source нетбук до 2 тысяч рублей, с доступными схемами и исходниками загрузчика/ядра хотя бы с блобами? Ведь ТВ-приставки захватили сегмент дешевых устройств с мощным железом, почему бы не добавить этим приставкам дисплей и клавиатуру?! А вы как считаете? Жду ваше мнение в комментариях!

mxuanbovcusqgmqdgugvpnql8vq.jpeg

Habrahabr.ru прочитано 64923 раза