LINUX.ORG.RU

Armbian, перенос /boot в другой раздел

 , , , ,


0

1

Всем привет! Простите, что надоедаю с этим armbian, но тема как по мне достойна внимания. В общем и целом собрал ядро, загрузчик - все работает отлично. Тут захотелось перенести /boot в другой раздел на карточке. Сказано - сделано. Вот такая карта раздлов на данный момент получилась:

ice     Boot    Start      End  Sectors  Size Id Type
/dev/sdc1           8192 61220863 61212672 29,2G 83 Linux
/dev/sdc2  *    61220864 62332927  1112064  543M 83 Linux

sdc2 - это boot-раздел. Да, не очень очевидно, но так уж вышло. Разделу задан флаг boot.

Затер весь boot.cmd и напиал следующее

load mmc 0:2 0x43400000 uInitrd
load mmc 0:2 0x42000000 zImage
load mmc 0:2 0x43000000 dtb/sun8i-h3-orangepi-pc.dtb
bootz 0x42000000 0x43400000 0x43000000

Система стартует, начинается работа initramfs и …

done.
Begin: Mounting root file system ... Begin: Running /scripts/local-top ... done.
Begin: Running /scripts/local-premount ... Scanning for Btrfs filesystems
done.
Begin: Will now check root file system ... fsck from util-linux 2.37.2
[/usr/sbin/fsck.ext4 (1) -- /dev/mmcblk0p2] fsck.ext4 -a -C0 /dev/mmcblk0p2 
armbi_boot: clean, 265/34800 files, 19851/139008 blocks
done.
done.
Begin: Running /scripts/local-bottom ... done.
Begin: Running /scripts/init-bottom ... mount: mounting /dev on /root/dev failed: No such file or directory
mount: mounting /dev on /root/dev failed: No such file or directory
done.
mount: mounting /run on /root/run failed: No such file or directory
run-init: can't execute '/sbin/init': No such file or directory
Target filesystem doesn't have requested /sbin/init.
run-init: can't execute '/sbin/init': No such file or directory
run-init: can't execute '/etc/init': No such file or directory
run-init: can't execute '/bin/init': No such file or directory
run-init: can't execute '/bin/sh': No such file or directory
run-init: can't execute '': No such file or directory
No init found. Try passing init= bootarg.

Распаковал uInitrd, что-бы посмотреть, что-же там такое.

dd if=uInitrd-5.15.80-sunxi of=uInitrd-5.15.80-sunxi.img.gz bs=64 skip=1
gunzip uInitrd-5.15.80-sunxi.img.gz 
mkdir uInitrd && cd uInitrd
cpio -i < ../uInitrd-5.15.48-sunxi.img

Но что-то понять не могу, где ему сказать, что система находится в /dev/mmcblk0p1???

P.S. Если что, в системе не забыл создать папку /boot и fstab указал, что ее нужно монтировать по такому-то UUID.

UPD. Я идиот и не верно истолковал понятие rootdev, посчитав, что там файлы загрузки должны быть. Поправил boot.cmd

setenv rootdev "/dev/mmcblk0p1"
setenv rootfstype "ext4"
setenv consoleargs "console=ttyS0,115200"
setenv verbosity "1"
setenv disp_mode "1920x1080p60"

part uuid mmc 0:2 partuuid;
setenv rootdev "/dev/mmcblk0p1"

setenv bootargs "root=/dev/mmcblk0p1 rootwait rootfstype=${rootfstype} ${consoleargs} hdmi.audio=EDID:0 disp.screen0_output_mode=${disp_mode} consoleblank=0 loglevel=${verbosity} ubootpart=${partuuid} ubootsource=mmc usb-storage.quirks=${usbstoragequirks} ${extraargs} ${extraboardargs}"


load mmc 0:2 0x43400000 uInitrd
load mmc 0:2 0x42000000 zImage
load mmc 0:2 0x43000000 dtb/sun8i-h3-orangepi-pc.dtb
bootz 0x42000000 0x43400000 0x43000000

Система стала загружаться.. Вывод df -h

┌──(fck😈fuck)-[ 📂/home/fck ] 
└─> df -h
Filesystem      Size  Used Avail Use% Mounted on
tmpfs           100M  3.3M   97M   4% /run
/dev/mmcblk0p1   29G  1.5G   27G   6% /
tmpfs           500M     0  500M   0% /dev/shm
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           500M     0  500M   0% /tmp
/dev/mmcblk0p2  519M   53M  428M  11% /boot
/dev/zram1       47M  2.5M   41M   6% /var/log
tmpfs           100M     0  100M   0% /run/user/1000



Последнее исправление: Redfern89 (всего исправлений: 1)

Ответ на: комментарий от drl

Вобще это довольно тупой костыль, всё можно и нужно записывать в переменные самого u-boot, это удобнее хотябы тем, что не нужно будет кономучаться, когда тестовое ядро не грузиться

burato ★★★★★
()
Ответ на: комментарий от burato

Так дело то не в ядре, вернее даже суть вопроса. Я чисто случайно догадался, что initrramfs берет все переменные из самого загрузчика и трогать его вовсе и не нужно))) на сам файл boot.cmd пока не смотрите, просплюсь, днем поправлю, как нужно))

Redfern89
() автор топика
Ответ на: комментарий от Redfern89

Он не нужен, без него всё отлично будет грузиться.о

Ядро грузит сам u-boot. У меня ни на одном арме нет initrd

burato ★★★★★
()
Последнее исправление: burato (всего исправлений: 1)
Ответ на: комментарий от Redfern89

Пожалуйста, десктоп основной:

bur@khadas ~ $ ls /boot/
android.dts  dtb2  dtb5   dtb78.dtb  dtb.dts     dts-to-dtb  image_stbl  khadas311   odroid.dts   ugos.dtb  vim3.dts
dtb          dtb3  dtb6   dtb78.dts  dtbtest     gtpro       image_test  khadas.dts  s78          ugos.dts
dtb1         dtb4  dtb78  dtbb       dtb-to-dts  image       khadas3     odroid      testdtb.dts  vim2.dtb

burato ★★★★★
()
Ответ на: комментарий от burato

Не грузится оно, дальше что?

Сталкивался с таким (висит на Starting Kernel и все). Честно - не знаю. Я в линуксе всего ничего. Каково Ваше мнение на этот счет? что нужно делать?

Redfern89
() автор топика
Ответ на: комментарий от Redfern89

А это косяк концепции U-boot с конфиг файлом, если что-то не так, то всё, ничего не сделать, если это тесты и баловство на sd карточке, то ясно дело её вытащить и вернуть стабильное ядро, но если (у меня нигде нет sd карточек, система всегда на emmc), то выход был бы труден.

U-boot позволяет сохранять переменные в самом себе, а если его собираешь сам, то можно на этапе сборки выкинуть почти все переменные по умолчанию, они не нужны и мешают при работе с ним.

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

Есть ещё более продвинутый вариант, использовать bootmenu, там я сделал 4 варианта, стабильное ядро, стаибльное дтб, тестовое ядро и стабильное дтб, потом стабильное ядро и тестовое дтб и оба тестовых, ну и пятый вариант это войти в консоль, как освоил бутменю понял, что оно даже круче любого GRUB-а.

burato ★★★★★
()