Тут у нас появилась неплохая новая ФС, которая f2fs, эта фс разработана специально для флешек. Кроме того, я тут нашёл старый нетбук типа amilo mini ui 3520
В этом чуде китайской инженерной мысли установлен HDD формфактора 1.8, который по слухам стучит с момента покупки. Ну факт в том, что оно у меня отстучало. Вместе с тормозной вендой, что там была в комплекте.
Ну по такому поводу я и задумал туда поставить слаку на флешке, благо текущая версия слаки содержит ядро 3.9.9-smp, которое без бубнов умеет f2fs.
Я хотел конечно отформатировать флешку целиком, но к сожалению у меня это не получилось, потому пришлось сделать два раздела:
Хоть ядро и поддерживает f2fs, но вот к сожалению отформатировать-то и нечем. Я взял авторскую f2fs-tools (это ссылка на git репозиторий). Кроме того, я нагуглил и слакобилд. Собрав mkfs.f2fs, я уже смог отформатировать флешку в этой новой ФС.
Однако, ставил я слаку на другую флешку, отформатированную в ext4. Смонтировать просто так не получается, необходимо обязательно указывать тип ФС
В этом чуде китайской инженерной мысли установлен HDD формфактора 1.8, который по слухам стучит с момента покупки. Ну факт в том, что оно у меня отстучало. Вместе с тормозной вендой, что там была в комплекте.
Ну по такому поводу я и задумал туда поставить слаку на флешке, благо текущая версия слаки содержит ядро 3.9.9-smp, которое без бубнов умеет f2fs.
Я хотел конечно отформатировать флешку целиком, но к сожалению у меня это не получилось, потому пришлось сделать два раздела:
- /dev/sda1 /boot/ 118M /ext2/
- /dev/sda2 / (rootfs) 7.2GB
Хоть ядро и поддерживает f2fs, но вот к сожалению отформатировать-то и нечем. Я взял авторскую f2fs-tools (это ссылка на git репозиторий). Кроме того, я нагуглил и слакобилд. Собрав mkfs.f2fs, я уже смог отформатировать флешку в этой новой ФС.
Однако, ставил я слаку на другую флешку, отформатированную в ext4. Смонтировать просто так не получается, необходимо обязательно указывать тип ФС
mount -t f2fs /dev/sdb2 /mnt/x
Вот примерно так.
initrd
Естественно, у меня ничего не взлетело(кто-бы сомневался!), опыта в этой области у мну явно недостаточно. Впрочем, я разобрался: для загрузки ОС нужно несколько модулей, которые можно в принципе вкомпиллить в ядро. Но это не наш путь. Куда как разумнее создать маленький ramdisk прямо в памяти, откуда их и подключить. Связано это даже не с кривой ФС, а с тем, что флешки это вообще говоря совсем не простой HDD/SSD, хотя с виду и не отличимы (глядя изнутри компа).
Что-бы выяснить, какие нужны модули, я загрузился с флешки, любезно приготовленной Патрегом. В моём случае понадобилось
- ehci_hcd, ehci_pci -- USB2.0
- hid, hid_generic, hidusb -- поддержка клавиатуры USB. У меня ещё и родная клава сломалась. Впрочем, если есть ГАРАНТИЯ, что всё будет хорошо, то эти модули мне не нужны. Однако, если всё будет плохо, я могу исправить, пользуясь внешней клавой.
- loop тащем-то не нужен, но полезен при аварии -- монтировать разные образы.
- usb_storage, usb_realtek -- это как раз та самая прокладка, которое делает из USB некое подобие HDD(точнее скази).
Но для начала нужно собрать этот initrd. Собирается он специальным скриптом mkinitrd. В принципе, нам нужно только знать, где у нас будет корневая система, когда мы будем в initrd. Ну и модули конечно(см. выше). Собирается initrd в chroot'е, т.е. в такой встроенной виртуальной машине. Вот как-то так:
# сначала монтируем будущий корень mount -t f2fs /dev/sda2 /mnt/floppy # теперь монтируем туда спец. систему proc из хозяйской машины mount -t proc /proc /mnt/floppy/proc # теперь монтируем загрузочный каталог mount /dev/sda1 /mnt/floppy/boot # переходим в новый корень chroot /mnt/floppy # и отсюда идём в загрузочный каталог cd /boot # теперь можно создавать промежуточную корневую систему initrd mkinitrd -c -k 3.9.9-smp -m ehci_pci:ums_realtek:hid_generic:usbhid:loop:f2fs -f f2fs -r /dev/sda2 -w 5Описание ключей:
- -c очистка прежнего корневого дерева /boot/initrd-tree/
- -k 3.9.9-smp Задаёт версию ядра. Нужен для поиска в /lib/modules, именно оттуда будут браться модули в initrd. У меня атом вместо процессора, но за то там HT. Потому я беру вариант smp (естественно ядро должно соответствовать)
- -m Список модулей через двоеточие (см. выше)
- -f f2fs Тип ФС
- -r /dev/sda2 расположение корневой системы
- -w 5 Задержка перед монтированием. Флешки определяются не мгновенно(задержка в секундах, и у меня слишком много. Можно уменьшить в моём случае)
lilo
Загрузчик состоит из двух частей, первая часть древняя, и занимает всего один сектор в 512 байт. Вторая часть это то, что не влезло в первую. Я использую самый простой загрузчик lilo. Он настолько прост, что не понимает ни одной ФС. Фактически, он просто загружает заданные сектора носителя, и передаёт им управление.
Для настройки загрузчика используется файл /etc/lilo.conf, вот он, с вырезанными коменнтами
boot = /dev/sdb compact # faster, but won't work on all systems. bitmap = /boot/slack.bmp bmp-colors = 255,0,255,0,255,0 bmp-table = 60,6,1,16 bmp-timer = 65,27,0,255 append=" vt.default_utf8=1" prompt timeout = 50 vga = normal image = /boot/vmlinuz initrd = /boot/initrd.gz root = /dev/sda2 label = Linux read-only # Partitions should be mounted read-only for checkingКонфиг самый простой:
- boot = /dev/sdb -- Место, куда ставится загрузчик. В момент настройки, а не работы. В данном случае ставится в MBR.
- compact объединяет запросы к носителю вместе. ОЧЕНЬ сильно экономит время загрузки, и в особенности на флешках(очевидно потому, что на флешках страницы большие)
- image = /boot/vmlinuz имя симлинка, указывающего на образ ядра
- initrd = /boot/initrd.gz имя образа initrd
- label = Linux стандартное имя опции выбора в приглашении загрузчика
- read-only стандартная опция загрузки корневой системы
fstab
К сожалению, Kim Jaegeuk на сегодня ещё не доделал fsck, потому обходимся без проверки корневой системы. Как он доделает, будем проверять(а работы ведутся полным ходом прямо сейчас) Посему пока вот такой fstab
# монтируем корень без проверки /dev/sda2 / f2fs defaults 1 0 # монтируем /boot/ /dev/sda1 /boot ext2 defaults 1 2 #/dev/cdrom /mnt/cdrom auto noauto,owner,ro,comment=x-gvfs-show 0 0 /dev/fd0 /mnt/floppy auto noauto,owner 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 proc /proc proc defaults 0 0 tmpfs /dev/shm tmpfs defaults 0 0 # у меня всего 1015Мб памяти, потому для /tmp выделена половина(макс) tmpfs /tmp tmpfs nodev,nosuid,size=500M 0 0Необходимость выделить отдельный /boot/ тоже является временной. Проблема в том, что инсталлятор загрузчика /sbin/lilo на сегодня не понимает f2fs. Работы в этом направлении тоже ведутся, т.ч. в скором времени нам отдельный раздел /boot/ будет не нужен(на самом деле он и сейчас не нужен, если ручками сформировать карту. Но, т.к. я ленивый, то я просто использовал пока ext2. Это не на что не влияет, кроме разве что занятого места)
Удачи!
UPD: сижу вот тут с этим нетбуком. УМВР. Не тормозит как slax, это не live, нормальная годная система. Конечно пруфпик надо приложить:
вот, это я на лоре с гентушниками срусь. Ну гентушники они в своём репертуаре -- вроде всё есть, да нихрена не работает :)
UPD2: немного запоздало ПОЗДРАВЛЯЮ ВСЕХ с двадцатилетним юбилеем Slackware Linux. Если-бы не она, так бы и компилял ядро всю жизнь. И не было-бы у меня ни детей, ни жены ;)
К счастью, есть OS которая ПРОСТО РАБОТАЕТ. Это главное.
Комментариев нет:
Отправить комментарий