Difference between revisions of "User:Oogwaymaki/Kernel Installation"
Oogwaymaki (talk | contribs) |
Oogwaymaki (talk | contribs) |
||
Line 150: | Line 150: | ||
<pre> | <pre> | ||
if test ${mmc_bootdev} -eq 0; then | if test ${mmc_bootdev} -eq 0; then | ||
echo "Booting from SD" | |||
setenv linux_mmcdev 0 | |||
else | else | ||
echo "Booting from eMMC" | |||
setenv linux_mmcdev 1 | |||
fi | fi | ||
setenv | setenv bootdir /boot | ||
setenv ftdfile /boot/board.dtb | |||
setenv bootargs console=ttyS0,115200 no_console_suspend panic=10 consoleblank=0 loglevel=7 root=/dev/mmcblk${linux_mmcdev}p${rootpart} rw splash plymouth.ignore-serial-consoles vt.global_cursor_default=0 | setenv bootargs console=ttyS0,115200 no_console_suspend panic=10 consoleblank=0 loglevel=7 root=/dev/mmcblk${linux_mmcdev}p${rootpart} rw splash plymouth.ignore-serial-consoles vt.global_cursor_default=0 | ||
Line 182: | Line 181: | ||
echo "Booting..." | echo "Booting..." | ||
booti ${kernel_addr_r} ${ramdisk_addr_r}:0x${ramdisk_size} ${fdt_addr_r} | booti ${kernel_addr_r} ${ramdisk_addr_r}:0x${ramdisk_size} ${fdt_addr_r} | ||
</pre> | </pre> | ||
Revision as of 00:20, 30 June 2020
Installing Megi's pre-compiled kernel
This tutorial is based on Debian Linux package management:
prereqs:
You'll need a uart or a way to connect to your device to call
depmod -a
Install dependencies:
- u-boot-tools allows you to make images
- rsync allows you to copy and backup
# apt-get update # apt-get install rsync u-boot-tools
First, download the the PinePhone CE (1.2) Kernel:
# wget https://xff.cz/kernels/5.8/pp2.tar.gz
Extract the kernel:
Create a separate folder for organization and separation: Extract the a "tar" "gz" file using tar.
# tar -zxvf pp2.tar.gz
A default Mobian Installation looks like this:
Device Boot Start End Sectors Size Id Type /dev/sda1 * 1953 250000 248048 121.1M 83 Linux /dev/sda2 250001 7421874 7171874 3.4G 83 Linux
Notice the small size on the /boot partition.
This means we probably will have to, either kill the partition or resize both partitions:
Easiest thing to do:
Please all all the new files on the /dev/sda2 (they'll probably be more than 121 M)
Next we need to update the initrd image, to have the new modules, (the initrd image is a RAM disk helping the system to boot and needs kernel drivers while booting):
How to get and update initrd image:
Mount Mobian boot image: Make sure your the root user for this for ease of installation: Delete the old kernel modules and put the new latest ones there
# mkdir debianboot # mount /dev/sda1 /media/debianboot # cd /usr/src # mkdir initrd # cd /usr/src/initrd # cp /media/debianboot/initrd.img-5.7-pinephone . # zcat initrd.img-5.7-pinephone | cpio -idmv # rm initrd.img-5.7-pinephone # cd /usr/src/initrd/lib/modules # rm -rf /usr/src/initrd/lib/modules/5.7-pinephone # rsync -avh pp2-5.8/modules/lib/modules/ initrd/lib/modules/
Repackage the Mobian Boot Image after new kernel modules installed and copy over to main mobian image now
# find . | cpio -o -c | gzip -9 > initrd.img-5.8-pinephone # mkdir /media/mobianroot # mount /dev/sda2 /media/mobianroot # cp initrd/initrd.img-5.8-pinephone /media/mobianroot/boot/
Copy the pp 2.8 kernel and dab definition files to Mobian boot folder and update the boot.scr
# cp pp2-5.8/board.dtb /media/mobianroot/boot/ # cp pp2-5.8/Image /media/mobianroot/boot/ # cd /media/mobianroot/boot # gzip Image # cd /media/mobian/root/boot
Change the old boot.cmd to the new settings:
if test ${mmc_bootdev} -eq 0; then echo "Booting from SD" setenv linux_mmcdev 0 else echo "Booting from eMMC" setenv linux_mmcdev 2 fi # If we have at least 2 partitions, then the 1st one is /boot, and / is #2 if fstype mmc ${mmc_bootdev}:2; then setenv rootpart 2 else setenv rootpart 1 setenv bootdir "/boot" fi setenv bootargs console=ttyS0,115200 no_console_suspend panic=10 consoleblank=0 loglevel=7 root=/dev/mmcblk${linux_mmcdev}p${rootpart} rw splash plymouth.ignore-serial-consoles vt.global_cursor_default=0 led 1 on echo "Loading kernel..." load mmc ${mmc_bootdev}:1 ${ramdisk_addr_r} ${bootdir}/Image.gz echo "Uncompressing kernel..." unzip ${ramdisk_addr_r} ${kernel_addr_r} echo "Loading initramfs..." load mmc ${mmc_bootdev}:1 ${ramdisk_addr_r} ${bootdir}/initrd.img setenv ramdisk_size ${filesize} echo "Loading dtb..." load mmc ${mmc_bootdev}:1 ${fdt_addr_r} ${bootdir}/dtb/${fdtfile} led 2 on echo "Booting..." booti ${kernel_addr_r} ${ramdisk_addr_r}:0x${ramdisk_size} ${fdt_addr_r}
Remove the old boot.cmd
# rm boot.cmd
to this, we removed the configuration of the first disk we won't be using it we also pointed everything to second disk for kernel and boot images
if test ${mmc_bootdev} -eq 0; then echo "Booting from SD" setenv linux_mmcdev 0 else echo "Booting from eMMC" setenv linux_mmcdev 1 fi setenv bootdir /boot setenv ftdfile /boot/board.dtb setenv bootargs console=ttyS0,115200 no_console_suspend panic=10 consoleblank=0 loglevel=7 root=/dev/mmcblk${linux_mmcdev}p${rootpart} rw splash plymouth.ignore-serial-consoles vt.global_cursor_default=0 led 1 on echo "Loading kernel..." load mmc ${mmc_bootdev}:2 ${ramdisk_addr_r} ${bootdir}/Image.gz echo "Uncompressing kernel..." unzip ${ramdisk_addr_r} ${kernel_addr_r} echo "Loading initramfs..." load mmc ${mmc_bootdev}:2 ${ramdisk_addr_r} ${bootdir}/initrd.img setenv ramdisk_size ${filesize} echo "Loading dtb..." load mmc ${mmc_bootdev}:2 ${fdt_addr_r} ${ftdfile} led 2 on echo "Booting..." booti ${kernel_addr_r} ${ramdisk_addr_r}:0x${ramdisk_size} ${fdt_addr_r}
Save new boot.cmd to /dev/sda1 root folder (where the old boot.cmd was)
- cd /media/mobianboot
# mkimage -C none -A arm64 -T script -d boot.cmd boot.scr root@wifirouter:/media/mobianboot# mkimage -C none -A arm64 -T script -d boot.cmd boot.scr Image Name: Created: Mon Jun 29 19:13:19 2020 Image Type: AArch64 Linux Script (uncompressed) Data Size: 876 Bytes = 0.86 KiB = 0.00 MiB Load Address: 00000000 Entry Point: 00000000 Contents: Image 0: 868 Bytes = 0.85 KiB = 0.00 MiB
reboot