Куча говна / Говнокод #27836 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
Disk /dev/sdc: 14,46 GiB, 15523119104 bytes, 30318592 sectors
Disk model: Storage Device
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000000

Device     Boot   Start     End Sectors   Size Id Type
/dev/sdc1       1009664 7802879 6793216   3,2G  b W95 FAT32
/dev/sdc2  *      73728  139263   65536    32M  6 FAT16
/dev/sdc3             1 1009664 1009664   493M 85 Linux extended
/dev/sdc5        139264  172031   32768    16M 83 Linux
/dev/sdc6        172032  204799   32768    16M 83 Linux
/dev/sdc7        204800  275455   70656  34,5M 83 Linux
/dev/sdc8        275456  776191  500736 244,5M 83 Linux
/dev/sdc9        776192  976895  200704    98M 83 Linux
/dev/sdc10       976896 1009663   32768    16M 83 Linux

Изначально хотел запихнуть в старый PocketBook515 флешку побольше. Она там хитрая, с линуксом, просто так поменять нельзя. Столкнулся с тем, что не могу parted подвинуть границы раздела, потому что overlapping partitions запрещены. Что делать? вот

fdisk -l


Хочу пореверсинжинирить это всё, извлек изнутри sd-карту, покопировал dd на другую флешку. Пока со своей загрузиться не могу, устройство виснет без объяснений. Возможно где-то прописаны гуиды флешки или что-то такое. Но при прямом чтении вижу всякие разделы с кишками кастрированного линукса. Конечная цель -- запустить на этой фигне vim с подключенной клавой. В целом прошивка закрытая, есть блобы. Но много и конфигов и шелл-скриптов в чистом виде, так что поменять можно многое. Плюс раньше был для них ещё какой-то дохлый sdk но уже очень давно. Хотя текстовый редактор думаю написать можно будет, если не удастся обуздать этот линукс.

Если кому-то пиздец как не лень, вот dd родной флешки
https://disk.yandex.ru/d/L08isezHHoZCOQ

Буду крайне рад, если кто-то поглядит что там вообще в целом.

Завтра если кто-то отзовётся поскидываю ещё скринов и содержимое скриптов.

Запостил: vistefan vistefan, (Updated )

Комментарии (106) RSS

  • Там что, внутри спрятана обычная SD-карта в картридерном креплении?
    Ответить
    • Меня кстати неимоверно бесит, что в картридерах жмотятся сделать механизм-эжектор.
      Ответить
  • Попробуй на маленькую флешку скопировать, возможно эта хреновина SDHC не понимает.
    Ответить
    • Возможно, Вы имели в виду SDXC?

      16 гигов — это уже SDHC как минимум.

      Даже на 4 гига SD без HC приходится разыскивать с собаками. Четырёхгиговые карточки без HC ещё остались на складах, но их продают втридорога.
      Ответить
        • Я вспомнил, как нашёл четырёхгиговую SD для фотоаппарата, потому что по инструкции SDHC не поддерживается. Потом случайно вставил 16-гиговую SDHC... и она заработала.

          Полез гуглить. На официальном форуме производителя один чувак спросил, как же так, SDHC с этой моделью работает, а в инструкции написано другое. Производитель ответил, да, работает, но мы всё равно не рекомендуем использовать, мы рекомендуем купить новый фотоаппарат.
          Ответить
          • > не рекомендуем использовать

            Ну что логично. Они на момент выхода фотика не тестировали такие карты, поэтому ты юзаешь на свой страх и риск. В целом оно работает, но на каких-то нюансах запросто может заглючить. Например памяти на список файлов не хватит, лол. Вот и отмазываются.
            Ответить
            • Кстати, четырёхгиговые бывают SDHC и без HC. В той модели обе работают, но производитель не рекомендует использовать SDHC, потому что совместимость не тестировал. Длина списка файлов одинаковая, как понимаешь.
              Ответить
              • Ну ты писал, что ты пихал 16...

                А так то да, если драйвер SD'шек понимает SDHC, то при том же объёме никаких проблем не должно вылезти. При большем объёме софт и скрипты могут просто охуеть, тут никаких гарантий.
                Ответить
                • Да, пихал и 16... Может охуеть счётчик фотографий. На экране счётчик свободного места показывает четырёхзначное число. Начиная с определённого размера носителя (как раз с 16 гигов), он показывает, что есть свободное место для 9999 фотографий, хотя на самом деле места больше.

                  Хорошо, что переполнения переменных при этом не происходит...

                  Гипотетически после 10-тысячной фотографии счётчик в имени файла может перейти через ноль, и начнут затираться старые фотографии или он перестанет снимать.
                  Ответить
                  • По идее, там новую папку создают, когда переходишь через 10к.
                    Мне кажется, алгоритм 9999 все используют один и тот же, только префикс/постфикс добавляют индивидуальный. Я помню, где-то сделали пять цифр, но ноль просто вшили в префикс. 09999 переходило в 00000 или 00001.
                    Ответить
                    • Конкретно на том аппарате сделали проще: там имена файлов типа 100_0000.JPG. Просто после 100_9999.JPG создастся 101_0000.JPG. Фактически всего шесть цифр, а не четыре.

                      Я не знаю, может ли меняться первая цифра.
                      Ответить
    • Не, флеха которая там изначально внутри на 4гб, тоже помечена как sdhc
      Ответить
    • Попробую, чтобы отсечь проблему с размером флешки, если вдруг заработает.
      Хоть и не в HC дело.
      Ответить
    • Ещё одна, кстати, разница между родной флешкой и копией кроме размера в классе скорости, у родной 4, у копии 10. Насколько вероятно, что в этом причина?
      Ответить
      • Да вряд ли, у тебя же лучше карта... И это больше для фотиков важно, чем для книжек.
        Ответить
  • Раздел sdc3 наложен поверх других разделов? А как это вообще работает? Разделы же должны портить друг друга, если они не ридонли. Или там определённые кластеры помечены как зарезервированные?
    Ответить
        • В прыщах принято размечать primary разделами с очень давних времен, может даже с самого начала.
          Ответить
        • fdisk как раз не ругается, показывает себе спокойно список разделов. А ругается parted, которым я хочу один из разделов ресайзнуть. Ну или чем-то ещё
          Ответить
    • Но ведь он реально пересекается с sdc1... Походу чуваки на 1 сектор накосячили когда образ генерили.
      Ответить
        • Не ебу, если честно... лет 10 фдиск не юзала.

          Но судя по остальным разделам включительно.
          Ответить
        • Хрен знает, уменьшить sdc3 на 1 сектор чтобы оно больше не слипалось с sdc1?

          Бекап только полный сделай, раз с копии не грузится и есть шанс закирпичить нахуй... Ну и почитай что именно показывает fdisk перед тем как лезть.
          Ответить
          • Ну оригинальную флешку-то мне трогать резона нет, я как раз с копией работаю, и надо добиться, чтобы с неё грузилось.
            Ответить
            • Нету готовых статеек, где чуваки уже изучали процесс загрузки этой байды или ей подобных?

              А то вдруг там от SD карты юзается её "secure" часть и ты соснул с заменой.
              Ответить
              • Интегрируем

                f(-1) = 1
                f(0) = !f(x-1) = 0
                f(1) = !f(x-1) = 1
                f(x) = x mod 2 != 0
                lim x->inf fx = 1 && 0 = 0
                Ответить
                • Какой-то кусок, доступный только копирастам. Не знаю как это работает, в официальной публичной спеке он не описан.
                  Ответить
              • Судя по всему юзается некий U-Boot, всё датировано говном мамонта, но если пойму что это вообще такое, попробую что-то собрать

                https://linux-sunxi.org/PocketBook_Touch_Lux_2_(626)#Images
                Вот здесь есть какие-то наводки, модель другая, но на таком же процессоре sunxi A13
                Ответить
                • > sunxi

                  Лол, тут даже говнокоды про этот SoC были.

                  Ну вот u-boot загрузить было бы прикольно, если ему будет куда консольку показать.

                  > что это

                  Да обычный embedded загрузчик, считай что grub без наворотов и с уклоном в инициализацию железа (т.к. bios/uefi который за тебя все сделает нету).
                  Ответить
                  • Понятно. Судя по этой вики коммьюнити sunxi, моя модель (она называется правильно PocketBook 515 Mini) есть как раз в списке поддерживаемых этим u-boot, вероятно взлетит. Пока что понятия не имею, что делать дальше, для начала попробую купить флешку с классом скорости 4 и всё же попытаться получить рабочий клон оригинальной прошивки, иначе будет слишком много неизвестных почему ничего не взлетело.
                    Ответить
    • Ну какие-то там внутри устройства явно как ro монтируюся.
      Вот его внутренний fstab
      none			/proc		  proc	  defaults  0 0
      none			/dev/pts	  devpts  mode=0622 0 0
      tmpfs			/dev/shm	  tmpfs	  defaults  0 0
      /dev/mmcblk0p8          /ebrmain          auto    ro        0 0
      /dev/mmcblk0p9          /mnt/secure       auto    defaults  0 0
      /ebrmain/cramfs.img	/ebrmain/cramfs	  auto	  defaults,loop 0 0
      Ответить
      • А вот в init.d лежит rcS
        #! /bin/sh
        
        PATH=/sbin:/bin:/usr/bin:
        runlevel=S
        prevlevel=N
        umask 022
        export PATH runlevel prevlevel
        
        trap ":" INT QUIT TSTP
        
        /bin/mount -o remount,ro rootfs /
        /bin/mount -t proc  none  /proc
        /bin/mount -t tmpfs none  /var -o size=48M
        /bin/mount -t sysfs none  /sys
        
        /bin/mkdir -p /var/dev /var/lib /var/run /var/log /var/tmp /var/lock
        chmod 1777 /var/tmp
        
        tar xf /usr/dev.tar -C /dev
        
        echo interactive > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
        echo 400000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
        
        mount -o ro,noatime,dirsync,noexec,uid=0,gid=0,umask=022 /dev/mmcblk0p2 /boot
        insmod /lib/modules/epdc.ko
        
        #temporary link pvi_ioc to /dev/zero
        mv /dev/pvi_ioc /dev/pvi_ioc.prev
        ln -s /dev/zero /dev/pvi_ioc
        
        /bin/hostname pocketbook
        
        /bin/hwclock -w
        
        mount -a
        
        #RUNNING AP
        if [ -f /ebrmain/pocketbook ]; then
        	cd /ebrmain
        	export QT_QPA_PLATFORM=pocketbook
        	./pocketbook
        	cd /
        else
        	echo "no ebrmain executable - starting automatic update"
        	/bin/swupdate -u -y &
        fi
        Ответить
        • И действительно, все файлы устройств для /dev/ лежат в тар-мячике
          Ответить
          • >tar xf /usr/dev.tar -C /dev
            > mv /dev/pvi_ioc /dev/pvi_ioc.prev
            > ln -s /dev/zero /dev/pvi_ioc
            А что, так можно? Я думал, /dev/zero это какбэ виртуальне фс, файлы в которой создают система и драйвера...

            > #temporary link pvi_ioc to /dev/zero
            > #temporary
            А обратно вернуть забыли
            Ответить
            • /dev/zero — это просто специальный файл (inode) с атрибутом «символьное устройство», в котором хранится пара цифр, указывающая на то, с каким драйвером он связан. В Линуксе, например, это пара (1, 5), которая означает, что ввод-вывод в этот файл будет направляться не в ту файловую систему, в которой он лежит, а в драйвер «zero».

              Можно самому создать inode с теми же (1, 5), тогда из него будут читаться нули.

              В новых Линуксах inode в директории /dev создаются демоном udev. В старых Линуксах такие файлы создавали вручную.

              Вроде ничего не напутал?
              Ответить
                  • Скоро будет ядро, systemd и прикладной софт. Ничего лишнего.
                    Ответить
                    • прикладного софта не будет. Будет systemd-appd
                      Ответить
                      • В контейнерах которого исполняется софт со всеми его зависимостями, примерно как сейчас в докере или снапе.
                        Ответить
                          • конечно
                            <?php
                            class Controller
                            {
                                private $model;
                                public function __construct($model) {
                                    $this->model = $model;
                                }
                            }
                            Ответить
                        • > контроллеры с systemd

                          Raspberry Pi и её клоны во всю юзают... По крайней мере для прототипов и поделок.

                          В общем-то даже в пылесосах линукс.
                          Ответить
                          • > Raspberry Pi и её клоны

                            У меня более суровые контроллеры, без MMU.
                            Ответить
                          • Да и даже если взять мой wifi роутер с MIPS, перепрошитый на OpenWRT - там хоть и есть MMU и ядро Linux, никакого systemd нет.

                            А если взять те контроллеры, с которыми я сталкиваюсь - на некоторые думаю можно поставить Linux ценой долгого пердолинга, но зачем? Ядро Linux дает какие-то там абстракции, типа у меня будут какие-то процессы, какие-то сигналы, файловая система, какие-то пайпы, какая-то хуйня в /dev/ и какие-то системные вызовы... нахуя мне это, если можно делать всё намного более напрямую? И вообще, надо чтоб "история одного байта".
                            Ответить
                            • > зачем

                              Time to market.

                              Мозги того же пылесоса, разумеется, можно впердолить в какую-нибудь stm'ку с внешней dram. Но конкуренты в это время хуяк-хуяк и выпустят на прыщах с готовыми либами...
                              Ответить
                              • http://www.delphikingdom.com/asp/viewitem.asp?catalogid=254

                                > Ценный конечный продукт (ЦКП) – это параметр, по которому (в частности) судят об эффективности любого специалиста. ЦКП программиста – это качественная и эффективная программа. ЦКП менеджера – это прибыль. Фича в том, что менеджер нанимает программиста, а не наоборот. И мы получаем приоритет прибыли над качеством. И мы жрем это дерьмо с кончика лопаты. И будем продолжать жрать, пока будет существовать этот приоритет.

                                Поэтому я за пет-проекты и опенсорс без всяких говноменеджеров со всякими там "time to market".
                                Ответить
                                • вы так говорите, как будто в опенсорсе важно качество
                                  Ответить
                                • > ЦКП программиста – это качественная и эффективная программа.
                                  Внимание, вопрос. У кого будет качественнее и эффективнее,
                                  * у программиста, который пердолится под микроко-ко-контроллер, для каждой новой модели пишет новый код , создавая дорогие неподдерживаемые модели, которые мало кто хочет купить,
                                  * у программиста, который имеет поддерживаемый код на ЯВУ с использованием стандартных модулей, который может легко переиспользоваться в новых версиях устройств или обновляться сразу для всей линейки устройств?

                                  Обычный пользователь с бОльшим удовольствием купит девайс, на который могут прийти обновления вроде нейропитушни для распознавания узоров ковра, ведь для производителя это импорт библиотечки и выставление минималок.

                                  Энтузиаст с бОльшим удовольствием купит девайс, в который можно будет впаять побольше памяти/флешку, переустановить луникс, прихреначить дисплей и играть на нём в Тетрис.
                                  Ответить
                                  • >Обычный пользователь с бОльшим удовольствием купит девайс, на который могут прийти обновления в

                                    Тогда почему все пользователи постоянно ищут "как отключить обновления в винде" и ноют, что nokia 3310 грузилась и работала быстрее и батарейку меньше ела, чем айфон?
                                    Ответить
                                    • Потому, что вместо ожидаемых обновлений по сути (новые быстрые программы, функция караоке, расширение объёма диска в 2 раза, питушня для обмена лиц на фотографиях) приходит всякая ерунда (обновления безопасности, новые нескучные обои и кнопка пуск посередине экрана), а ифоны и правда тормозят и много жрут.
                                      Однако это наиболее оптимальная питушня. Другие варианты мы ругали бы больше.
                                      Ответить
                                      • Иногда еще приходит исправление правописания для казахского языка, исправление ошибки при проигрывании DVD "белоснежка и семь гномов" и обновление безопасности для флеш плеера.

                                        потом надо сорок три минуты ждать после перезагрузки пока установится
                                        Ответить
                                        • > перезагрузки

                                          Виндобляди соснули! Вот в линуксе проги сходу обновляются.

                                          Правда фф вечно от этого охуевает, разваливается и хочет рестарт (не системы конечно). Но это реально быстрее и меньше бесит, чем полный ребут и ждать процентики.
                                          Ответить
                              • >на прыщах с готовыми либами...
                                с веб инитерфейсом на пхп который будет зависать, глючить, и через который поломают твой пылесос в итоге
                                Ответить
                                • Ну собственно так на него кастомная прошивка и заливается...

                                  Причем там не то чтобы дыра какая-то в протоколе или скриптах, просто "ключ" для "подписи" заливаемой прошивки захардкожен.

                                  У чуваков на борту была убунта с openssl, gpg и чем угодно ещё, но они замутили какое-то самодельное говнище.

                                  З.Ы. Такое ощущение, что эти дыры сознательно оставляют для моддеров.
                                  Ответить
                                  • Инженер: Это превосходный пылесос! Отличная проходимость, много памяти, взаимодействие с ПК, куча датчиков... Не могу дождаться, когда на ютубе появятся ролики с демонстрацией кастомных прошивок. Да на его базе самодельщики будут своих роботов клепать!
                                    CEO: «нужно сделать чтобы он принимал только наши лицензионные прошивки.»
                                    Инженер: «... ОК ...»
                                    Ответить
                                  • Анскилябры могли не уметь в TLS.

                                    Я видел как питушок реально тужился и высирал свой способ "шифрования" (примерно на шифре цезаря) чтобы его хакир не заснифил.
                                    Ответить
                                    • > TLS

                                      Имхо, пакеты лучше локально проверять перед установкой.

                                      Я бы не стала полагаться на TLS.
                                      Ответить
                                      • В моем кейсе он шифровал траффик.

                                        В случае с установкой пакетов и их подпиской конечно нужно пилить PKI: в устройство вшиваешь публичные ключи какого-то своего CA.

                                        Перед запуском проверяешь CRL этого CA.
                                        Потом проверяешь подпись пакета.

                                        Не факт, что нужно именно опенссл, но PKI точно нужен
                                        Ответить
                                        • Просто мне при слове "проверить подпись по-быстрому" почему-то приходят в голову openssl или gpg, а не кривожопый недо-hmac на базе md5, как этим ребятам...
                                          Ответить
                                          • наколенное говно не нужно, угу
                                            Ответить
                                            • Да его и писать дольше, чем засунуть в скриптик gpg --verify... Ну реально.
                                              Ответить
                                              • сколько вообще квадратно колёсного говна понаписано питухами чисто по причине анскилябрности?
                                                Ответить
                            • >Да и даже если взять мой wifi роутер с MIPS, перепрошитый на OpenWRT - там хоть и есть MMU и ядро Linux, никакого systemd нет.


                              да, в бизибокс и alpine еще не насрали, но уже скоро
                              Ответить
              • В целом да.

                В классическом юниксе у inode был тип (файл, папка, устройство или fifo pipe).
                У устройства был мажорный номер, минорный номер и тип "блочное" или "символьное" (в блочное устройство писали блоками по 512 и через буфер, но разделение на блочные и символьные уже частично устарело, в некоторых OS его совсем нет)

                Драйвер связявался с мажорным номером, сообщая ядру что вызывать при посылке в это устройство ioctl и всяких write, open итд.

                на прыще это делалось так
                int register_chrdev(unsigned int major, const char *name,
                      struct file_operations *fops);

                name это имя устройства в /proc/devices.

                Это идеология everything is file.

                Создавать файлы устройств (записи в тапблице файлов) можно было через mknod, а на линуксе еще был скрипт ``MAKEDEV`` который большинство устройств умел создавать.

                С ядра 2.4 появился devfs, и стало можно делать так:
                devfs_handle_t devfs_mk_dir (devfs_handle_t dir,
                  const char *name, void *info);

                Тут уже name это устройство в /dev/, то есть драйвер стал сам создавать устройство (примерно как в винде), причем ебаться с номерами стало не нужно: их назначали автоматически.

                (продолжение ниже)
                Ответить
                • Тут набижали питухи, и сказали, что им не нравится как устройства называются в devfs, и они хотят сами их называть как удобно, чтобы например карточка с таким-то макадресом всегда была ``eth_wan`` а не ethN, где N зависит от количества других карточек.

                  Кроме того хотелось уметь загружать/удалять модули при вставке нужных устройств.

                  стало понятно, что харкдодить такую сложную логику в ядро не нужно.

                  Тогда запилили udev: ядро стало сообщать про устройства через специальный инетфейс юзердемону, а уже он стал создавать устройства и называть их как настроит пользователь, а также загружать нужные им драйверы динамически (почти как в винде)

                  Потом пришел поцтеринг и унес udev в systemd-udev.
                  Потом пришел Девуан и форкнул udev.
                  Ответить
                  • > Тут набижали питухи, и сказали, что им не нравится как устройства называются в devfs, и они хотят сами их называть как удобно, чтобы например карточка с таким-то макадресом всегда была ``eth_wan`` а не ethN, где N зависит от количества других карточек.

                    Молодцы питухи. Скорее бы добрались до винды и сделали что-то адекватное вместо/поверх c:, d:, e:.
                    Ответить
                    • А в NT все эти C:, D:, E: не нужны. Их держат только для совместимости с досовскими программами и с программами для Win95, Win3.x.

                      В NT любое устройство можно смонтировать в любой путь.
                      Ответить
                      • > Их держат только для совместимости с досовскими программами и с программами для Win95, Win3.x.

                        Их еще держат для совместимости с пользователями винды, которые привыкли, что есть какие-то диски C: D: E:
                        и для совместимости со всяким скриптоговном, написанным васянами(не имеющим отношения ни к Win95, ни к Win3.x), в которое захардкожены какие-то говнопути к диску C: и которое никто переписывать не будет.
                        Ответить
                        • > для совместимости со всяким скриптоговном, написанным васянами(не имеющим отношения ни к Win95, ни к Win3.x), в которое захардкожены какие-то говнопути к диску C: и которое никто переписывать не будет.

                          Справедливости ради, в Линуксе ты тоже имена системных каталогов просто так не поменяешь по этой же причине.
                          Ответить
                        • Я кстати недавно выяснил что замечательный способ троллить людей - это спрашивать зачем им вообще что-то кроме С:
                          Ответить
                        • да, по этой причине они не могут переименовать system32

                          оно уже не 32, но миллард бат файлов не могут ошибаться
                          Ответить
                      • Верно

                        Имена дисков тянутся из тех времен, когда они были частью API прерываний BIOS.

                        У NT они ссылки на \Device\HarddiskVolume1, которые насрал менеджер томов
                        Ответить
                        • Эм, в прерываниях они же просто циферками были... Диск 0, диск 1, дискета 128 (или наоборот?)... Какие ещё буквы?
                          Ответить
                • Здорово, спасибо.
                  Но как же работает tar -x ... -С /dev ? Или при создании файла в /dev ему автоматически прописывается тип "устройство"? Чтобы все последующие открытия файла уже относились не к данным файла, в которые записаны при первом обращении мажор-минор, а к драйверу?
                  Ответить
                  • Ну точно так же делает mknod. Видимо фиксированных major/minor им тут хватает, никакая динамика не нужна.
                    Ответить
                  • [ванишд]

                    я думал, ты про архивирование файлов
                    Ответить
                  • Запакуй таром файл в /dev, и распакуй его в домшнюю папку

                    ты увидишь там мажорный и минорный номера и тип файла и ошибку
                    ```
                    ar: mem: Cannot mknod: Operation not permitted
                    tar: Exiting with failure status due to previous errors
                    ```

                    так что при созданеии файла со спец типом само ядро делает mknod
                    Ответить
                      • верно, mknod упадет

                        зато теперь в домашней папке у меня есть файл устройства)
                        Ответить
                    • > ядро

                      Да не ядро, а сам tar вроде правильные аргументы передает в правильный сисколл? Вряд ли он это через creat делает.

                      Просто вот такой вот архиватор, знающий про особенности системы. Zip так не умеет, емнип.
                      Ответить
                      • да, ты прав
                        mknodat(AT_FDCWD, "mem", S_IFCHR|0600, makedev(0x1, 0x1))
                        Ответить
            • Дополню, что /dev в большинстве дистрибов -- это просто tmpfs.

              В отличие от /sys, /proc и т.п. куда реально монтируется волшебная файлуха с интерфейсами ядра.
              Ответить
              • Я с помощью команды mknod в обычных файлухах создавал волшебные ноды. Прикольно, когда у тебя файл с именем pituh, из которого читаются случайные байты.
                Ответить
  • Бамп обсосу прыщеблядей!
    Ответить

Добавить комментарий для guest Отменить ответ

Из-за тебя ушел bormand, guest!

    А не использовать ли нам bbcode?


    8