Message ID | 20210407053419.449796-1-gregkh@linuxfoundation.org (mailing list archive) |
---|---|
Headers | show |
Series | kbuild: unify the install.sh script usage | expand |
Hi Greg, Thanks for your series! On Wed, Apr 7, 2021 at 7:34 AM Greg Kroah-Hartman <gregkh@linuxfoundation.org> wrote: > Almost every architecture has copied the "install.sh" script that > originally came with i386, and modified it in very tiny ways. This > patch series unifies all of these scripts into one single script to > allow people to understand how to correctly install a kernel, and fixes > up some issues regarding trying to install a kernel to a path with > spaces in it. > > Note that not all architectures actually seem to have any type of way to > install a kernel, they must rely on external scripts or tools which > feels odd as everything should be included here in the main repository. > I'll work on trying to figure out the missing architecture issues > afterward. I'll bite ;-) Does anyone actually use these scripts (outside of x86)? I assume the architectures that have them, only have them because they were copied from x86 while doing the initial ports ("oh, a file I don't have to modify at all."). But installing the kernel can be very platform-specific. Do you need the vmlinux, vmlinux.gz, Image, zImage, uImage, ...? With separate or appended DTB? Even on x86, the script will bail out with "Cannot find LILO." if you're using Grub. Anyway, having less of them is good. Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds
On Wed, Apr 07, 2021 at 09:18:11AM +0200, Geert Uytterhoeven wrote: > Hi Greg, > > Thanks for your series! > > On Wed, Apr 7, 2021 at 7:34 AM Greg Kroah-Hartman > <gregkh@linuxfoundation.org> wrote: > > Almost every architecture has copied the "install.sh" script that > > originally came with i386, and modified it in very tiny ways. This > > patch series unifies all of these scripts into one single script to > > allow people to understand how to correctly install a kernel, and fixes > > up some issues regarding trying to install a kernel to a path with > > spaces in it. > > > > Note that not all architectures actually seem to have any type of way to > > install a kernel, they must rely on external scripts or tools which > > feels odd as everything should be included here in the main repository. > > I'll work on trying to figure out the missing architecture issues > > afterward. > > I'll bite ;-) > > Does anyone actually use these scripts (outside of x86)? I think so, if not then what do they use? Ok, I'll answer that, Before this week, I used my own script, a horrible hack I've drug along for years: https://github.com/gregkh/gregkh-linux/blob/master/scripts/install but for almost everyone else, they just use /sbin/installkernel that is provided by their distro. But this feels really odd given that we should include the logic to install the kernel in the kernel source itself, otherwise everyone has to rely on an external package that no one knows where it is. > I assume the architectures that have them, only have them because they > were copied from x86 while doing the initial ports ("oh, a file I don't > have to modify at all."). > But installing the kernel can be very platform-specific. > Do you need the vmlinux, vmlinux.gz, Image, zImage, uImage, ...? > With separate or appended DTB? That seems handled already by the arch/ARCH/boot/Makefile logic today, so I do not think we need to change that. > Even on x86, the script will bail out with "Cannot find LILO." if you're > using Grub. The last change in this series tries to "soften" that language so that isn't really an issue anymore. I want to turn this into something that everyone can use, so we do not have to rely on distro-specific or other external programs, as trying to explain how to install a kernel to someone new to kernel development is a real pain. > Anyway, having less of them is good. Agreed, thanks for the review :) greg k-h
On Wed, Apr 07, 2021 at 09:46:18AM +0200, Greg Kroah-Hartman wrote: > On Wed, Apr 07, 2021 at 09:18:11AM +0200, Geert Uytterhoeven wrote: > > Hi Greg, > > > > Thanks for your series! > > > > On Wed, Apr 7, 2021 at 7:34 AM Greg Kroah-Hartman > > <gregkh@linuxfoundation.org> wrote: > > > Almost every architecture has copied the "install.sh" script that > > > originally came with i386, and modified it in very tiny ways. This > > > patch series unifies all of these scripts into one single script to > > > allow people to understand how to correctly install a kernel, and fixes > > > up some issues regarding trying to install a kernel to a path with > > > spaces in it. > > > > > > Note that not all architectures actually seem to have any type of way to > > > install a kernel, they must rely on external scripts or tools which > > > feels odd as everything should be included here in the main repository. > > > I'll work on trying to figure out the missing architecture issues > > > afterward. > > > > I'll bite ;-) > > > > Does anyone actually use these scripts (outside of x86)? Yes, every time I build a kernel. My kernel build system involves typing "kbuild <flags> <dirname> <machines...>" and the kernel gets built in ../build/<dirname>. When the build completes, it gets installed into ~/systems/<dirname>, tar'd up, and copied to the destination machines, unpacked, installed as appropriate, and the machine rebooted if requested. The installation step is done via the ~/bin/installkernel script. > > I assume the architectures that have them, only have them because they > > were copied from x86 while doing the initial ports ("oh, a file I don't > > have to modify at all."). > > But installing the kernel can be very platform-specific. > > Do you need the vmlinux, vmlinux.gz, Image, zImage, uImage, ...? > > With separate or appended DTB? My scripts deal with all that. However, I haven't been able to review the changes that are being made because I have no visibility of the common "scripts" version. Provided it offers exactly the same functionality as the arm32 version, I'm happy. If it doesn't, it may cause a regression, and I will be reporting that.
On Wed, Apr 07, 2021 at 09:02:29AM +0100, Russell King - ARM Linux admin wrote: > On Wed, Apr 07, 2021 at 09:46:18AM +0200, Greg Kroah-Hartman wrote: > > On Wed, Apr 07, 2021 at 09:18:11AM +0200, Geert Uytterhoeven wrote: > > > Hi Greg, > > > > > > Thanks for your series! > > > > > > On Wed, Apr 7, 2021 at 7:34 AM Greg Kroah-Hartman > > > <gregkh@linuxfoundation.org> wrote: > > > > Almost every architecture has copied the "install.sh" script that > > > > originally came with i386, and modified it in very tiny ways. This > > > > patch series unifies all of these scripts into one single script to > > > > allow people to understand how to correctly install a kernel, and fixes > > > > up some issues regarding trying to install a kernel to a path with > > > > spaces in it. > > > > > > > > Note that not all architectures actually seem to have any type of way to > > > > install a kernel, they must rely on external scripts or tools which > > > > feels odd as everything should be included here in the main repository. > > > > I'll work on trying to figure out the missing architecture issues > > > > afterward. > > > > > > I'll bite ;-) > > > > > > Does anyone actually use these scripts (outside of x86)? > > Yes, every time I build a kernel. My kernel build system involves > typing "kbuild <flags> <dirname> <machines...>" and the kernel gets > built in ../build/<dirname>. When the build completes, it gets > installed into ~/systems/<dirname>, tar'd up, and copied to the > destination machines, unpacked, installed as appropriate, and > the machine rebooted if requested. > > The installation step is done via the ~/bin/installkernel script. So you don't use install.sh at all except to invoke your local script. > > > I assume the architectures that have them, only have them because they > > > were copied from x86 while doing the initial ports ("oh, a file I don't > > > have to modify at all."). > > > But installing the kernel can be very platform-specific. > > > Do you need the vmlinux, vmlinux.gz, Image, zImage, uImage, ...? > > > With separate or appended DTB? > > My scripts deal with all that. > > However, I haven't been able to review the changes that are being > made because I have no visibility of the common "scripts" version. > Provided it offers exactly the same functionality as the arm32 > version, I'm happy. If it doesn't, it may cause a regression, and > I will be reporting that. It should be identical, if I got something wrong please let me know. thanks, greg k-h
On Wed, Apr 07, 2021 at 10:07:29AM +0200, Greg Kroah-Hartman wrote: > On Wed, Apr 07, 2021 at 09:02:29AM +0100, Russell King - ARM Linux admin wrote: > > On Wed, Apr 07, 2021 at 09:46:18AM +0200, Greg Kroah-Hartman wrote: > > > On Wed, Apr 07, 2021 at 09:18:11AM +0200, Geert Uytterhoeven wrote: > > > > Hi Greg, > > > > > > > > Thanks for your series! > > > > > > > > On Wed, Apr 7, 2021 at 7:34 AM Greg Kroah-Hartman > > > > <gregkh@linuxfoundation.org> wrote: > > > > > Almost every architecture has copied the "install.sh" script that > > > > > originally came with i386, and modified it in very tiny ways. This > > > > > patch series unifies all of these scripts into one single script to > > > > > allow people to understand how to correctly install a kernel, and fixes > > > > > up some issues regarding trying to install a kernel to a path with > > > > > spaces in it. > > > > > > > > > > Note that not all architectures actually seem to have any type of way to > > > > > install a kernel, they must rely on external scripts or tools which > > > > > feels odd as everything should be included here in the main repository. > > > > > I'll work on trying to figure out the missing architecture issues > > > > > afterward. > > > > > > > > I'll bite ;-) > > > > > > > > Does anyone actually use these scripts (outside of x86)? > > > > Yes, every time I build a kernel. My kernel build system involves > > typing "kbuild <flags> <dirname> <machines...>" and the kernel gets > > built in ../build/<dirname>. When the build completes, it gets > > installed into ~/systems/<dirname>, tar'd up, and copied to the > > destination machines, unpacked, installed as appropriate, and > > the machine rebooted if requested. > > > > The installation step is done via the ~/bin/installkernel script. > > So you don't use install.sh at all except to invoke your local script. It depends where the kernel is being built; it has been used in the past (one will notice that the arm32 version is not a direct copy of the x86 version, and never was - it was modified from day 1.) It's placement and naming of the files in /boot is still used today, which is slightly different from the x86 version.
On Wed, Apr 07, 2021 at 09:14:36AM +0100, Russell King - ARM Linux admin wrote: > On Wed, Apr 07, 2021 at 10:07:29AM +0200, Greg Kroah-Hartman wrote: > > On Wed, Apr 07, 2021 at 09:02:29AM +0100, Russell King - ARM Linux admin wrote: > > > On Wed, Apr 07, 2021 at 09:46:18AM +0200, Greg Kroah-Hartman wrote: > > > > On Wed, Apr 07, 2021 at 09:18:11AM +0200, Geert Uytterhoeven wrote: > > > > > Hi Greg, > > > > > > > > > > Thanks for your series! > > > > > > > > > > On Wed, Apr 7, 2021 at 7:34 AM Greg Kroah-Hartman > > > > > <gregkh@linuxfoundation.org> wrote: > > > > > > Almost every architecture has copied the "install.sh" script that > > > > > > originally came with i386, and modified it in very tiny ways. This > > > > > > patch series unifies all of these scripts into one single script to > > > > > > allow people to understand how to correctly install a kernel, and fixes > > > > > > up some issues regarding trying to install a kernel to a path with > > > > > > spaces in it. > > > > > > > > > > > > Note that not all architectures actually seem to have any type of way to > > > > > > install a kernel, they must rely on external scripts or tools which > > > > > > feels odd as everything should be included here in the main repository. > > > > > > I'll work on trying to figure out the missing architecture issues > > > > > > afterward. > > > > > > > > > > I'll bite ;-) > > > > > > > > > > Does anyone actually use these scripts (outside of x86)? > > > > > > Yes, every time I build a kernel. My kernel build system involves > > > typing "kbuild <flags> <dirname> <machines...>" and the kernel gets > > > built in ../build/<dirname>. When the build completes, it gets > > > installed into ~/systems/<dirname>, tar'd up, and copied to the > > > destination machines, unpacked, installed as appropriate, and > > > the machine rebooted if requested. > > > > > > The installation step is done via the ~/bin/installkernel script. > > > > So you don't use install.sh at all except to invoke your local script. > > It depends where the kernel is being built; it has been used in the > past (one will notice that the arm32 version is not a direct copy of > the x86 version, and never was - it was modified from day 1.) It's > placement and naming of the files in /boot is still used today, which > is slightly different from the x86 version. The placement depends on the caller to the script, so that's not an issue here. The name for the output does differ from x86, but the "common" script handles all of that (or it should, if not I messed up.) Attached below is the common scripts/install.sh that this patch series produces at the end of it, if you want to check to see if I missed anything for your arch. thanks, greg k-h
On Wed, Apr 7, 2021 at 5:37 PM Greg Kroah-Hartman <gregkh@linuxfoundation.org> wrote: > > On Wed, Apr 07, 2021 at 09:14:36AM +0100, Russell King - ARM Linux admin wrote: > > On Wed, Apr 07, 2021 at 10:07:29AM +0200, Greg Kroah-Hartman wrote: > > > On Wed, Apr 07, 2021 at 09:02:29AM +0100, Russell King - ARM Linux admin wrote: > > > > On Wed, Apr 07, 2021 at 09:46:18AM +0200, Greg Kroah-Hartman wrote: > > > > > On Wed, Apr 07, 2021 at 09:18:11AM +0200, Geert Uytterhoeven wrote: > > > > > > Hi Greg, > > > > > > > > > > > > Thanks for your series! > > > > > > > > > > > > On Wed, Apr 7, 2021 at 7:34 AM Greg Kroah-Hartman > > > > > > <gregkh@linuxfoundation.org> wrote: > > > > > > > Almost every architecture has copied the "install.sh" script that > > > > > > > originally came with i386, and modified it in very tiny ways. This > > > > > > > patch series unifies all of these scripts into one single script to > > > > > > > allow people to understand how to correctly install a kernel, and fixes > > > > > > > up some issues regarding trying to install a kernel to a path with > > > > > > > spaces in it. > > > > > > > > > > > > > > Note that not all architectures actually seem to have any type of way to > > > > > > > install a kernel, they must rely on external scripts or tools which > > > > > > > feels odd as everything should be included here in the main repository. > > > > > > > I'll work on trying to figure out the missing architecture issues > > > > > > > afterward. > > > > > > > > > > > > I'll bite ;-) > > > > > > > > > > > > Does anyone actually use these scripts (outside of x86)? > > > > > > > > Yes, every time I build a kernel. My kernel build system involves > > > > typing "kbuild <flags> <dirname> <machines...>" and the kernel gets > > > > built in ../build/<dirname>. When the build completes, it gets > > > > installed into ~/systems/<dirname>, tar'd up, and copied to the > > > > destination machines, unpacked, installed as appropriate, and > > > > the machine rebooted if requested. > > > > > > > > The installation step is done via the ~/bin/installkernel script. > > > > > > So you don't use install.sh at all except to invoke your local script. > > > > It depends where the kernel is being built; it has been used in the > > past (one will notice that the arm32 version is not a direct copy of > > the x86 version, and never was - it was modified from day 1.) It's > > placement and naming of the files in /boot is still used today, which > > is slightly different from the x86 version. > > The placement depends on the caller to the script, so that's not an > issue here. The name for the output does differ from x86, but the > "common" script handles all of that (or it should, if not I messed up.) > > Attached below is the common scripts/install.sh that this patch series > produces at the end of it, if you want to check to see if I missed > anything for your arch. > > thanks, > > greg k-h Thanks for nice cleanups! I will give some nit-picking comments to individual patches. Overall, this series looks nice.
On Wed, Apr 07, 2021 at 07:33:59AM +0200, Greg Kroah-Hartman wrote: > Almost every architecture has copied the "install.sh" script that > originally came with i386, and modified it in very tiny ways. This > patch series unifies all of these scripts into one single script to > allow people to understand how to correctly install a kernel, and fixes > up some issues regarding trying to install a kernel to a path with > spaces in it. Yay consolidation! Thanks for digging into this. I sent Reviewed-by:s for a bunch of these, and agree with the things Masahiro has suggested with regard to quoting, etc. I look forward to v2. -Kees