View previous topic :: View next topic |
Author |
Message |
mikefot l33t
![l33t l33t](/images/ranks/rank_rect_4.gif)
Joined: 19 Nov 2014 Posts: 709
|
Posted: Sun May 19, 2019 10:49 am Post subject: compiling a kernel for debian in gentoo [UNSOLVED] |
|
|
Dear All,
I notice that it is possible to compile kernels for a different architecture in gentoo.
I belive this is termed cross compiling:
https://wiki.gentoo.org/wiki/Cross_build_environment
Most of the discussions about this seem to be about making a kernel that would run on a mobile phone etc.
Suppose that I would want to make a kernel that I could run in the debian installation I have alongside
gentoo on the amd64 kaveri box I currently use.
I am running gentoo stable and debian buster.
If I would install a new kernel in debian I would follow the instructions here:
https://kernel-team.pages.debian.net/kernel-handbook/ch-common-tasks.html#s-common-official
Supposing I copied the debian kernel config file I am using in debian buster to my gentoo install.
Could I use it with the kernel compilation tools in portage to make a kernel that would run successfully in debian buster?
What would be the best way to do that?
Also is it possible to do the equivalent of the command you would run in portage in some way to produce the linux-image.deb
file that you install in debian with the command?
Then I could copy the new kernel image file over to the debian install and then install it.
I think that gentoo is a good environment in which to obtain new kernels and configure them.
Comments appreciated.
Regards
Michael Fothergill
Last edited by mikefot on Thu May 30, 2019 3:05 pm; edited 1 time in total |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
NeddySeagoon Administrator
![Administrator Administrator](/images/ranks/rank-admin.gif)
![](images/avatars/3946266373f47d606a2db3.jpg)
Joined: 05 Jul 2003 Posts: 54848 Location: 56N 3W
|
Posted: Sun May 19, 2019 11:16 am Post subject: |
|
|
mikefot,
Your dual boot system is not a different arch, so you don't cross compile.
To save your sanity either make a complete copy of your existing kernel tree or use different kernel version for debian.
If you go with the copy, edit the top of the makefile in the copy
Code: | # SPDX-License-Identifier: GPL-2.0
VERSION = 5
PATCHLEVEL = 1
SUBLEVEL = 1
EXTRAVERSION = -gentoo
NAME = Shy Crocodile | by changing the EXTRAVERSION. This prevents the modules from the different kernels being mixed up.
Do a in this copy, as any left over binaries will be tagged as 5.1.1-gentoo.
Add your config of choice then build the kernel.
What do you mean Quote: | kernel compilation tools in portage | genkernel?
genkernel will build and install the kernel and an initrd but you don't want the install.
The kernel make system has some interesting targets.
make help: | ...
Kernel packaging:
rpm-pkg - Build both source and binary RPM kernel packages
binrpm-pkg - Build only the binary kernel RPM package
deb-pkg - Build both source and binary deb kernel packages
bindeb-pkg - Build only the binary kernel deb package
... |
but that won't build or package the initrd. I expect that it will include the kernel modules, so you can install the resulting .deb.
Now you need the matching initrd, if you need an initrd at all.
-- edit --
You may be able to cheat a little and build the initrd into the kernel. I'm sure thats a whole new world of pain.
My initrd is kernel agnostic (no kernel modules), I built it when the system was new in 2009 and it still works. _________________ Regards,
NeddySeagoon
Computer users fall into two groups:-
those that do backups
those that have never had a hard drive fail. |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
mikefot l33t
![l33t l33t](/images/ranks/rank_rect_4.gif)
Joined: 19 Nov 2014 Posts: 709
|
Posted: Sun May 19, 2019 3:05 pm Post subject: |
|
|
Many thanks for your comments.
When I said that I was interested in making use of portage to do the kernel compilation etc I think I caused a bit of confusion.
What I meant was that I think that gentoo is advantageous for the building of kernels in general.
Thus the manual kernel configuration and compilation methods in gentoo are well oiled tools.
You would use gcc to compile the kernel not portage e.g. in the manual approach
here:
https://wiki.gentoo.org/wiki/Handbook:X86/Installation/Kernel
The command Code: | make && make modules_install | and are using directly
not portage and the emerge command etc.....
But the suggestion you made about genkernel is interesting.
Presumably I could do a manual configuration (if needed) and compilation of the new kernel using current approach (but also making use of the EXTRAVERSION setting)
and then run genkernel not to compile the kernel but to take the new manually compiled kernel binary and make a debian linux-image .deb file out of it.
That would be useful.
I looked to see what the debian OS does about the initrd problem.
I found these sites:
https://kernel-team.pages.debian.net/kernel-handbook/ch-initramfs.html
https://wiki.debian.org/Initrd
It seems to suggest that the initrd set up is created by the OS after the kernel is installed.
If you have problems you can possibly cure them by running this command in debian after installing the
new kernel image:
Code: | # dpkg-reconfigure linux-image |
But perhaps relying on debian to fix this problem after creating the new kernel image
is a bit clunky; we would do better to fix the initrd problem in gentoo somehow before
moving the image file to the debian install.
Comments appreciated.
Regards
MF |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
NeddySeagoon Administrator
![Administrator Administrator](/images/ranks/rank-admin.gif)
![](images/avatars/3946266373f47d606a2db3.jpg)
Joined: 05 Jul 2003 Posts: 54848 Location: 56N 3W
|
Posted: Sun May 19, 2019 3:46 pm Post subject: |
|
|
mikefot,
Don't even think about genkernel, except maybe for the initrd.
Turning the initrd into a deb is left as an exercise for the reader :)
For the kernel and modules, try or even
It will build the kernel using the .config at the top of the kernel tree and spit out your debs.
The make targets in the kernel are kernel tools, not Gentoo tools. _________________ Regards,
NeddySeagoon
Computer users fall into two groups:-
those that do backups
those that have never had a hard drive fail. |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
mikefot l33t
![l33t l33t](/images/ranks/rank_rect_4.gif)
Joined: 19 Nov 2014 Posts: 709
|
Posted: Mon May 20, 2019 9:45 am Post subject: |
|
|
Many thanks again.
I tried to obtain the latest kernel here:
https://packages.gentoo.org/packages/sys-kernel/gentoo-sources
I did the following:
Code: | root@storm /home/mikef/Downloads # emerge =sys-kernel/gentoo-sources-5.1.3
Calculating dependencies... done!
emerge: there are no ebuilds to satisfy "=sys-kernel/gentoo-sources-5.1.3" |
Here is the current available kernel:
Code: | root@storm /home/mikef/Downloads # eselect kernel list
Available kernel symlink targets:
[1] linux-4.19.27-gentoo-r1 * |
My internet connection is working OK.
Am I making some simple mistake here?
Regards
MF |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
NeddySeagoon Administrator
![Administrator Administrator](/images/ranks/rank-admin.gif)
![](images/avatars/3946266373f47d606a2db3.jpg)
Joined: 05 Jul 2003 Posts: 54848 Location: 56N 3W
|
Posted: Mon May 20, 2019 9:53 am Post subject: |
|
|
mikefot,
You want the latest testing kernel. Only the LTS kernels ever go stable on Gentoo and 4.19 is the newest stable series. _________________ Regards,
NeddySeagoon
Computer users fall into two groups:-
those that do backups
those that have never had a hard drive fail. |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
mikefot l33t
![l33t l33t](/images/ranks/rank_rect_4.gif)
Joined: 19 Nov 2014 Posts: 709
|
Posted: Mon May 20, 2019 10:24 am Post subject: |
|
|
Many thanks again.
I created a file in Code: | /etc/portage/package.accept_keywords |
called testing-kernels.
I put the name of the package I wanted to be able to use in testing mode and the testing flag for amd64 gentoo into it:.
Code: | root@storm /etc/portage/package.accept_keywords # more testing-kernels
sys-kernel/gentoo-sources ~amd64 |
I updated the source profile
and ran
Code: | emerge =sys-kernel/gentoo-sources-5.1.3
Calculating dependencies... done!
emerge: there are no ebuilds to satisfy "=sys-kernel/gentoo-sources-5.1.3 |
and got the same error again.
What am I doing wrong here?
Regards
MF |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
NeddySeagoon Administrator
![Administrator Administrator](/images/ranks/rank-admin.gif)
![](images/avatars/3946266373f47d606a2db3.jpg)
Joined: 05 Jul 2003 Posts: 54848 Location: 56N 3W
|
Posted: Mon May 20, 2019 2:48 pm Post subject: |
|
|
mikefot,
That should work. Do you need to
Check if you have the gentoo-sources-5.1.3 ebuild _________________ Regards,
NeddySeagoon
Computer users fall into two groups:-
those that do backups
those that have never had a hard drive fail. |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
mikefot l33t
![l33t l33t](/images/ranks/rank_rect_4.gif)
Joined: 19 Nov 2014 Posts: 709
|
Posted: Tue May 21, 2019 10:48 am Post subject: |
|
|
Many thanks again.
I ran and did a world update.
I now have the 5.1.3 kernel.
Before I obtained the 5.1.3 kernel I compiled the newest gentoo stable kernel:
When I booted into it, I got an error message about not existing etc.
It was not caused by me forgetting to run Code: | rc-update add net.eth0 default. |
I think it is because I need to add an extra kernel setting to include the network card setup in kernel itself
and not in a separate module etc.
The output from is here:
http://dpaste.com/1CAMD65
The kernel config file I used is here:
http://dpaste.com/063ZQ9R
I plan to install the 5.1.3 kernel in gentoo itself first and fix the network card problem.
Once I can see it is running properly, then I will recompile it with the parameter set to cf etc.
If I can make a sensible .deb file out of it I will then copy it over to debian and see if it runs OK there too.
Regards
MF
PS
The output of lspci is
Code: | root@storm /home/mikef/Downloads # lspci
00:00.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 15h (Models 30h-3fh) Processor Root Complex
00:00.2 IOMMU: Advanced Micro Devices, Inc. [AMD] Family 15h (Models 30h-3fh) I/O Memory Management Unit
00:01.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Kaveri [Radeon R7 Graphics]
00:01.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Kaveri HDMI/DP Audio Controller
00:02.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 15h (Models 30h-3fh) Processor Root Port
00:03.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 15h (Models 30h-3fh) Processor Root Port
00:03.1 PCI bridge: Advanced Micro Devices, Inc. [AMD] Family 15h (Models 30h-3fh) Processor Root Port
00:04.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 15h (Models 30h-3fh) Processor Root Port
00:10.0 USB controller: Advanced Micro Devices, Inc. [AMD] FCH USB XHCI Controller (rev 09)
00:10.1 USB controller: Advanced Micro Devices, Inc. [AMD] FCH USB XHCI Controller (rev 09)
00:11.0 SATA controller: Advanced Micro Devices, Inc. [AMD] FCH SATA Controller [AHCI mode] (rev 40)
00:12.0 USB controller: Advanced Micro Devices, Inc. [AMD] FCH USB OHCI Controller (rev 11)
00:12.2 USB controller: Advanced Micro Devices, Inc. [AMD] FCH USB EHCI Controller (rev 11)
00:13.0 USB controller: Advanced Micro Devices, Inc. [AMD] FCH USB OHCI Controller (rev 11)
00:13.2 USB controller: Advanced Micro Devices, Inc. [AMD] FCH USB EHCI Controller (rev 11)
00:14.0 SMBus: Advanced Micro Devices, Inc. [AMD] FCH SMBus Controller (rev 16)
00:14.1 IDE interface: Advanced Micro Devices, Inc. [AMD] FCH IDE Controller
00:14.2 Audio device: Advanced Micro Devices, Inc. [AMD] FCH Azalia Controller (rev 01)
00:14.3 ISA bridge: Advanced Micro Devices, Inc. [AMD] FCH LPC Bridge (rev 11)
00:14.4 PCI bridge: Advanced Micro Devices, Inc. [AMD] FCH PCI Bridge (rev 40)
00:14.5 USB controller: Advanced Micro Devices, Inc. [AMD] FCH USB OHCI Controller (rev 11)
00:18.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 15h (Models 30h-3fh) Processor Function 0
00:18.1 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 15h (Models 30h-3fh) Processor Function 1
00:18.2 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 15h (Models 30h-3fh) Processor Function 2
00:18.3 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 15h (Models 30h-3fh) Processor Function 3
00:18.4 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 15h (Models 30h-3fh) Processor Function 4
00:18.5 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 15h (Models 30h-3fh) Processor Function 5
01:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 06)
root@storm /home/mikef/Downloads # |
PPS
I ran the ethtool check:
Code: | root@storm /home/mikef/Downloads # ethtool eth0
Settings for eth0:
Cannot get device settings: No such device
Cannot get wake-on-lan settings: No such device
Cannot get message level: No such device
Cannot get link status: No such device
No data available
root@storm /home/mikef/Downloads # |
I need to fix this. |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
NeddySeagoon Administrator
![Administrator Administrator](/images/ranks/rank-admin.gif)
![](images/avatars/3946266373f47d606a2db3.jpg)
Joined: 05 Jul 2003 Posts: 54848 Location: 56N 3W
|
Posted: Tue May 21, 2019 6:30 pm Post subject: |
|
|
mikefot,
lspci: | 01:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 06) |
That's r8169 to the kernel.
You are suffering from persistent device renaming.
dmesg: | [ 8.292674] libphy: r8169: probed
[ 8.293084] r8169 0000:01:00.0 eth0: RTL8168evl/8111evl, 74:d4:35:b2:0d:2c, XID 2c900800, IRQ 31
[ 8.293087] r8169 0000:01:00.0 eth0: jumbo features [frames: 9200 bytes, tx checksumming: ko]
[ 8.331338] r8169 0000:01:00.0 enp1s0: renamed from eth0 |
As soon as eth0 appeared udev ripped its head off , so no operations on eth0 work. _________________ Regards,
NeddySeagoon
Computer users fall into two groups:-
those that do backups
those that have never had a hard drive fail. |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
mikefot l33t
![l33t l33t](/images/ranks/rank_rect_4.gif)
Joined: 19 Nov 2014 Posts: 709
|
Posted: Wed May 22, 2019 2:34 pm Post subject: |
|
|
Many thanks again.
I reran the kernel compilation with the 5.1.3 kernel.
I think I have turned on the r8169 network flag on with a star so it should be built in etc.
But it still doesn't find the eth0 device and the internet connection has to be set up manually by running dhcpcd.
I looked at the networking section of the kernel entries and noticed that ipv6 is set to M.
Should it be not set to star (*)?
Could that be a problem?
My latest config file is here:
http://dpaste.com/2FMHKN3
Regards
MF |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
NeddySeagoon Administrator
![Administrator Administrator](/images/ranks/rank-admin.gif)
![](images/avatars/3946266373f47d606a2db3.jpg)
Joined: 05 Jul 2003 Posts: 54848 Location: 56N 3W
|
Posted: Wed May 22, 2019 10:34 pm Post subject: |
|
|
mikefot,
You don't have an eth0.
Look at _________________ Regards,
NeddySeagoon
Computer users fall into two groups:-
those that do backups
those that have never had a hard drive fail. |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
Tony0945 Watchman
![Watchman Watchman](/images/ranks/rank-G-2-watchman.gif)
Joined: 25 Jul 2006 Posts: 5127 Location: Illinois, USA
|
Posted: Wed May 22, 2019 11:28 pm Post subject: |
|
|
Mikefot, if you want eth0 you have to pass net.ifnames=0 to the kernel as it boots.
An example from /boot/grub/grub.conf (grub legacy)
Code: | title=Gentoo LongTerm (4.14.90-gentoo)
root (hd0,0)
kernel /boot/vmlinuz-4.14.90-gentoo root=/dev/sda3 vga=0x365 net.ifnames=0
| The net.ifnames=0 is the part you have to duplicate.
And on reFind from /boot/refind_linux.conf Code: | "Boot by PARTUUID" "root=PARTUUID=54fee329-ff75-4879-bdbb-93268b470f32 vga=0x365 net.ifnames=0 "
"Boot by /dev/sdXn" "root=/dev/sda2 vga=0x365 net.ifnames=0" | Again the relevant part is ifnames=0.
A third way is in 'make menuconfig' set Code: | CONFIG_CMDLINE="root=/dev/sda2 vga=0x365 net.ifnames=0" | with the usual caveat. In all three examples you can do a partial parameter set and add more parameters with another method. For example just set CONFIG_CMDLINE=" net.ifnames=0" and set root and vga in grub.conf or vice versa.
These are actual examples from my systems. I only boot with grub legacy or reFind. I would imagine that grub2 would be similar but I can't verify that.
If you are sure you always have just one ethernet device, I suggest using the kernel CONFIG_CMDLINE. If you think you might add another sometime, use your boot manager's facilities. Many people just take the line of least resistance and just use net.enp1so or whatever instead of net.eth0, but I'm a traditionalist and a stubborn cuss. |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
mikefot l33t
![l33t l33t](/images/ranks/rank_rect_4.gif)
Joined: 19 Nov 2014 Posts: 709
|
Posted: Thu May 23, 2019 10:45 am Post subject: |
|
|
Many thanks for the advice.
I used the CMDLINE= option in the kernel and it worked.
Eth0 runs on booting.
I am now trying to get the sound working.
I thought I had set everything correctly but I am not getting any sound on a youtube video I am running.
I ran the alsa command:
Code: | root@storm /home/mikef # aplay -L
null
Discard all samples (playback) or generate zero samples (capture)
jack
JACK Audio Connection Kit
pulse
PulseAudio Sound Server
hdmi:CARD=HDMI,DEV=0
HDA ATI HDMI, HDMI 0
HDMI Audio Output
usbstream:CARD=HDMI
HDA ATI HDMI
USB Stream Output
default:CARD=Generic
HD-Audio Generic, ALC887-VD Analog
Default Audio Device
sysdefault:CARD=Generic
HD-Audio Generic, ALC887-VD Analog
Default Audio Device
front:CARD=Generic,DEV=0
HD-Audio Generic, ALC887-VD Analog
Front speakers
surround21:CARD=Generic,DEV=0
HD-Audio Generic, ALC887-VD Analog
2.1 Surround output to Front and Subwoofer speakers
surround40:CARD=Generic,DEV=0
HD-Audio Generic, ALC887-VD Analog
4.0 Surround output to Front and Rear speakers
surround41:CARD=Generic,DEV=0
HD-Audio Generic, ALC887-VD Analog
4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=Generic,DEV=0
HD-Audio Generic, ALC887-VD Analog
5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=Generic,DEV=0
HD-Audio Generic, ALC887-VD Analog
5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=Generic,DEV=0
HD-Audio Generic, ALC887-VD Analog
7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
iec958:CARD=Generic,DEV=0
HD-Audio Generic, ALC887-VD Digital
IEC958 (S/PDIF) Digital Audio Output
usbstream:CARD=Generic
HD-Audio Generic
USB Stream Output
root@storm /home/mikef # |
I do not have a .asound local file:
Code: | root@storm /home/mikef # more ~/.asoundrc
more: stat of /root/.asoundrc failed: No such file or directory |
Comments appreciated
Regards
MF
PS
The video sound is now working.
I insatlled Code: | mediaplugs/alsa-plugins | and Code: | media-video/mplayer | .
This has helped.
Cheers
PPS
The speaker test doesn't work however:
Code: | root@storm /home/mikef # !493
speaker-test -Dsurroundaudio -c 6
speaker-test 1.1.8
Playback device is surroundaudio
Stream parameters are 48000Hz, S16_LE, 6 channels
Using 16 octaves of pink noise
ALSA lib /var/tmp/portage/media-libs/alsa-lib-1.1.8/work/alsa-lib-1.1.8/src/pcm/pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM surroundaudio
Playback open error: -2,No such file or directory
root@storm /home/mikef # |
PPPS
If I would try the debian kernel compilation then presumably as was suggested by NS in an earlier post I should do in the
directory and then edit the that lives in it.
I would create a new version with the parameter set to.
When the kernel has been compiled and installed I assume that it will be parked in /boot.
Is that correct?
If so, then if I would into the boot area then I could run and then the file should be created.
Then I can copy it over to the debian install and test it.
Comments appreciated.
Regards
MF |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
NeddySeagoon Administrator
![Administrator Administrator](/images/ranks/rank-admin.gif)
![](images/avatars/3946266373f47d606a2db3.jpg)
Joined: 05 Jul 2003 Posts: 54848 Location: 56N 3W
|
Posted: Thu May 23, 2019 6:44 pm Post subject: |
|
|
mikefot,
To preserve your sanity make a copy of the kernel tree. Don't point /usr/src/linux at it. That will make your head hurt later.
cd to this new kernel tree.
Edit the EXTRAVERSION
Configure it as you will
Build it with X is the number of threads to use for the build
When its done, you should have two .deb packages. One is the sources and one the binary. _________________ Regards,
NeddySeagoon
Computer users fall into two groups:-
those that do backups
those that have never had a hard drive fail. |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
mikefot l33t
![l33t l33t](/images/ranks/rank_rect_4.gif)
Joined: 19 Nov 2014 Posts: 709
|
Posted: Fri May 24, 2019 9:08 am Post subject: |
|
|
Many thanks for the advice again.
I have looked up the command for copying an entire directory on google.
I found a discussion here that seemed helpful:
https://askubuntu.com/questions/86822/how-can-i-copy-the-contents-of-a-folder-to-another-folder-in-a-different-directo
Should I use the command
Code: | cp -a /source/. /dest/ |
it recommends or should I use the
type command instead?
The discussion says that the command preserves symlinks etc.
But your last post suggests that I don't want to be creating or keeping old symlinks with this kernel tree copy.
Hence I am asking about thecommand alternative.
I am thinking to run a command like this:
Code: | cp -a /usr/src/linux/ . /usr/src/temp-kernel-tree |
and if the debian kernel compilation works then I could in theory delete
the temp-kernel-tree directory after I have successfully installed and tested
the new kernel in debian.
Or I could overwrite the entire temp-kernel-tree directory with a new copy
of the gentoo kernel tree directory after e.g. I installed a newer kernel in the
future that I wanted to use in both gentoo and debian etc.
Comments appreciated.
Regards
MF |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
NeddySeagoon Administrator
![Administrator Administrator](/images/ranks/rank-admin.gif)
![](images/avatars/3946266373f47d606a2db3.jpg)
Joined: 05 Jul 2003 Posts: 54848 Location: 56N 3W
|
Posted: Fri May 24, 2019 8:12 pm Post subject: |
|
|
mikefot,
is worth a read.
For the kernel, cp -a and cp -r both work.
Be careful with your spaces.
Code: | cp -a /usr/src/linux/ . /usr/src/temp-kernel-tree |
That command will recursively copy /usr/src/linux/ and recursively copy the current directory, the single dot, into /usr/src/temp-kernel-tree
You won't like the result anyway. _________________ Regards,
NeddySeagoon
Computer users fall into two groups:-
those that do backups
those that have never had a hard drive fail. |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
Hu Administrator
![Administrator Administrator](/images/ranks/rank-admin.gif)
Joined: 06 Mar 2007 Posts: 23100
|
Posted: Sat May 25, 2019 12:32 am Post subject: |
|
|
If you would prefer not to copy the kernel tree, there are ways to build multiple kernels from a single tree by setting certain environment variables ($KBUILD_OUTPUT, $INSTALL_PATH, $INSTALL_MOD_PATH). Copying is simpler though. |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
mikefot l33t
![l33t l33t](/images/ranks/rank_rect_4.gif)
Joined: 19 Nov 2014 Posts: 709
|
Posted: Sat May 25, 2019 2:20 pm Post subject: |
|
|
Many thanks for the help again.
I found an old thread in this area:
https://forums.gentoo.org/viewtopic-t-850681-start-0.html
In it a script was put forward by Hu:
Code: | #!/bin/bash
TDIR="$1"; shift
if [ -z "${TDIR}" ]; then
TDIR="$(uname -r)"
echo 'No release specified. Defaulting to '"\"$TDIR\""'.'
fi
TKERN="${TDIR/*_}"
BDIR="$HOME"/kernel/
KSRC="${1:-/usr/src/linux-"${TKERN}"}"; shift
export KBUILD_OUTPUT="${BDIR}${TDIR}/"
export INSTALL_PATH="${BDIR}install/${TDIR}/boot/"
export INSTALL_MOD_PATH="${BDIR}install/${TDIR}/"
if [ ! -d "$KSRC" ]; then
echo 'Directory '"$KSRC"' does not exist.' >&2
exit 1
fi
for a in "$KBUILD_OUTPUT" "$INSTALL_PATH"; do
if [ ! -d "$a" ]; then
mkdir -p "$a" || exit $?
echo "Created $a"
fi
done
echo KBUILD_OUTPUT="${KBUILD_OUTPUT}"
echo INSTALL_PATH="${INSTALL_PATH}"
echo INSTALL_MOD_PATH="${INSTALL_MOD_PATH}"
cd "$KSRC"
exec /bin/bash |
The script assumes that the directory that contains the kernel source would be named /usr/src/linux-gentoo-5.1.3 or something like that.
The script file would be named setup-build.sh. It would be run like this: ./setup-build.sh gentoo-5.1.3 etc.
But in my case I have not named the kernel source directory in that way. It is simply called /usr/src/linux even though it contains the source for the 5.1.3 kernel......
The script checks to see if there is a release number ie etc. If it does not find any release number it then runs the uname -r command to get the current installed kernel and then uses that.
ie
Code: | root@storm /usr/src/linux # uname -r
5.1.3-gentoo
|
I need to modify it so that it doesn't look for an extension of the kernel directory using the kernel name and number, but it lilkely would use a kernel name+number specified as an argument that would be written to the newly compiled kernel.
Comments appreciated.
Regards
MF |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
Hu Administrator
![Administrator Administrator](/images/ranks/rank-admin.gif)
Joined: 06 Mar 2007 Posts: 23100
|
Posted: Sat May 25, 2019 5:27 pm Post subject: |
|
|
Portage installs the source under a version-qualified path, then maintains a symlink pointing the unqualified name to the one of the qualified names. The automatic qualification should do the right thing when you want the source for the current kernel, and can be overridden to pick a different version if you want to work on sources for an upcoming kernel. If you don't want the default, remove the [ -z "${TDIR}" ] block. |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
mikefot l33t
![l33t l33t](/images/ranks/rank_rect_4.gif)
Joined: 19 Nov 2014 Posts: 709
|
Posted: Sun May 26, 2019 1:25 pm Post subject: |
|
|
Many thanks for your help again.
If I understand you correctly, the script is not looking for a modified directory name, it still uses plain old etc.
The extension is part of the symlink/kernel name+number assignation system not the kernel tree directory structure etc.
Or something like that.
In that case, the script looks pretty good as it is to me.
So, to recap then, I will log in to the gentoo install create a file called .
I would then put the script code in to it. The file could be kept in my user home directory (is that correct?).
I would run the script as follows Code: | ./setup-build.sh gentoo-5.1.3 | .
Then I would edit the in the kernel source directory and modify
the parameter in it.
It would be set to not as it as present.
I would then run
and the new kernel will be put in my
user directory in a sub directory called (Please correct me if I am wrong here).
The kernel name+number within it ought to be not
Comments appreciated.
Regards
MF |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
NeddySeagoon Administrator
![Administrator Administrator](/images/ranks/rank-admin.gif)
![](images/avatars/3946266373f47d606a2db3.jpg)
Joined: 05 Jul 2003 Posts: 54848 Location: 56N 3W
|
Posted: Sun May 26, 2019 4:06 pm Post subject: |
|
|
mikefot,
Experiment is the spice of life.
Do it and tells us all about it.
If your Gentoo is converted to a complete debian install, you may have made a typo. :) _________________ Regards,
NeddySeagoon
Computer users fall into two groups:-
those that do backups
those that have never had a hard drive fail. |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
mikefot l33t
![l33t l33t](/images/ranks/rank_rect_4.gif)
Joined: 19 Nov 2014 Posts: 709
|
Posted: Sun May 26, 2019 4:28 pm Post subject: |
|
|
Many thanks for the encouragement.
I booted up the gentoo install and created the (including chmod +x) script and ran:
Code: | root@storm /home/mikef # ./setup-build.sh gentoo-5.1.3
Directory /usr/src/linux-gentoo-5.1.3 does not exist.
root@storm /home/mikef # pwd
/home/mikef |
Comments appreciated.
Regards
MF
PS No newdirectory has been created in my user home directory.
It seems as if it is looking for a real directory name not a symlink........ |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
Hu Administrator
![Administrator Administrator](/images/ranks/rank-admin.gif)
Joined: 06 Mar 2007 Posts: 23100
|
Posted: Sun May 26, 2019 4:43 pm Post subject: |
|
|
mikefot wrote: | If I understand you correctly, the script is not looking for a modified directory name, it still uses plain old etc. | Not exactly. It uses a qualified directory name. It never looks at the bare /usr/src/linux. It's your choice whether to let it guess the qualified name or to specify one explicitly. mikefot wrote: | The extension is part of the symlink/kernel name+number assignation system not the kernel tree directory structure etc. | Portage assigns that suffix to the name of the directory containing the kernel source. The symlink is there to let you ignore that detail. mikefot wrote: | I would then put the script code in to it. The file could be kept in my user home directory (is that correct?). | Yes. mikefot wrote: | I would run the script as follows Code: | ./setup-build.sh gentoo-5.1.3 | . | Yes. mikefot wrote: | Then I would edit the in the kernel source directory and modify
the parameter in it. | Instead of editing the Makefile, you could configure a localversion suffix in make menuconfig. mikefot wrote: | I would then run | I don't know, but that seems reasonable.
mikefot wrote: | and the new kernel will be put in my
user directory in a sub directory called (Please correct me if I am wrong here). | I believe so. You can edit the wrapper script if you prefer some other location.
mikefot wrote: | Code: | root@storm /home/mikef # ./setup-build.sh gentoo-5.1.3
Directory /usr/src/linux-gentoo-5.1.3 does not exist.
root@storm /home/mikef # pwd
/home/mikef |
| What is the output of ls -la /usr/src/? mikefot wrote: |
PS No newdirectory has been created in my user home directory. | Per the script, that happens after it verifies you have a valid kernel source directory. In your case, it didn't find a kernel directory, so it exited early. Also, note that if you run the script as root, $HOME likely refers to root's home directory. Part of the point of this script is to let you build without being root. |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
mikefot l33t
![l33t l33t](/images/ranks/rank_rect_4.gif)
Joined: 19 Nov 2014 Posts: 709
|
Posted: Sun May 26, 2019 5:00 pm Post subject: |
|
|
Many thanks for your helpful advice.
I tried running the script with no argument.
Here is the result:
Code: | root@storm /home/mikef # ./setup-build.sh
No release specified. Defaulting to "5.1.3-gentoo".
Created /root/kernel/5.1.3-gentoo/
Created /root/kernel/install/5.1.3-gentoo/boot/
KBUILD_OUTPUT=/root/kernel/5.1.3-gentoo/
INSTALL_PATH=/root/kernel/install/5.1.3-gentoo/boot/
INSTALL_MOD_PATH=/root/kernel/install/5.1.3-gentoo/
root@storm /usr/src/linux-5.1.3-gentoo #
|
I thought it would use the kernel name it got from and then moan that Code: | /usr/src/linux-5.1.3-gentoo | does not exist.
But it didn't do that. It really is sniffing out symlinks and kernel id's etc as you said........
It has moved me into the Code: | /usr/src/linux-5.1.3-gentoo | directory (has it renamed the to Code: | /usr/src/linux-5.1.3 | ?).
The kernel tree is there.
I am going to try compiling the kernel.
Regards
MF
PS
I ran the following command after setting the EXTRAVERSION parameter in Makefile to -debian:
Code: | root@storm /usr/src/linux-5.1.3-gentoo # make -j5 deb-pkg
make[1]: Entering directory '/root/kernel/5.1.3-gentoo'
Error: kernelrelease not valid - run 'make prepare' to update it
UPD include/config/kernel.release
make clean
make[3]: *** No rule to make target 'clean'. Stop.
make[2]: *** [/usr/src/linux-5.1.3-gentoo/scripts/package/Makefile:70: deb-pkg] Error 2
make[1]: *** [/usr/src/linux-5.1.3-gentoo/Makefile:1396: deb-pkg] Error 2
make[1]: Leaving directory '/root/kernel/5.1.3-gentoo'
make: *** [Makefile:169: sub-make] Error 2
root@storm /usr/src/linux-5.1.3-gentoo # |
Should I run make prepare as it says?
Comments appreciated.
PS
I booted into the gentoo install again and went into the /usr/src directory.
Sure enough some new directories have been created:
Code: | drwxr-xr-x 4 root root 4096 May 27 11:12 .
drwxr-xr-x 13 root root 4096 Apr 27 13:42 ..
-rw-r--r-- 1 root root 0 Apr 24 22:52 .keep
lrwxrwxrwx 1 root root 18 May 22 16:09 linux -> linux-5.1.3-gentoo
drwxr-xr-x 23 root root 4096 May 20 23:35 linux-4.19.27-gentoo-r1
-rw-r--r-- 1 root root 170330757 May 27 11:12 linux-5.1.3-debian_.orig.tar.gz
drwxr-xr-x 26 root root 4096 May 27 11:12 linux-5.1.3-gentoo
root@storm /usr/src # |
I ran the compilation command again:
make -j5 deb-pkg
Unfortunately I don't have the output from the first time I ran it. The compilation itself seemed to run OKish but there were problems with making the debian package.
I ran the command again here:
Code: | root@storm /usr/src/linux-5.1.3-gentoo # !515
make -j5 deb-pkg
make clean
/bin/sh ./scripts/package/mkdebian
Using default distribution of 'unstable' in the changelog
Install lsb-release or set $KDEB_CHANGELOG_DIST explicitly
TAR linux-5.1.3-debian.tar.gz
origversion=$(dpkg-parsechangelog -SVersion |sed 's/-[^-]*$//');\
mv linux-5.1.3-debian.tar.gz ../linux-5.1.3-debian_${origversion}.orig.tar.gz
/bin/sh: dpkg-parsechangelog: command not found
dpkg-buildpackage -r"fakeroot -u" -a$(cat debian/arch) -i.git -us -uc
/bin/sh: dpkg-buildpackage: command not found
make[1]: *** [scripts/package/Makefile:74: deb-pkg] Error 127
make: *** [Makefile:1396: deb-pkg] Error 2
root@storm /usr/src/linux-5.1.3-gentoo # |
I looked in the newly created directory.
Code: | root@storm ~/kernel/5.1.3-gentoo/include/config # ls -la
total 12
drwxr-xr-x 2 root root 4096 May 26 19:01 .
drwxr-xr-x 3 root root 4096 May 26 19:01 ..
-rw-r--r-- 1 root root 13 May 26 19:01 kernel.release |
The kernel release is given here:
Code: | root@storm ~/kernel/5.1.3-gentoo/include/config # more kernel.release
5.1.3-debian
root@storm ~/kernel/5.1.3-gentoo/include/config # |
There is also another directory present that has been created that currently is empty:
Code: | root@storm ~/kernel/5.1.3-gentoo/scripts/package # ls -l
total 0
root@storm ~/kernel/5.1.3-gentoo/scripts/package # |
This file sitting in /usr/src seems to have been created by the kernel compilation:
Code: | -rw-r--r-- 1 root root 170330757 May 27 11:12 linux-5.1.3-debian_.orig.tar.gz |
Could it be a new kernel?
Comments apprecaited.
Regards
MF
PPS
I also tried running the make bindeb-pkg command:
Code: | root@storm /usr/src/linux-5.1.3-gentoo # make -j5 bindeb-pkg
/bin/sh ./scripts/package/mkdebian
Using default distribution of 'unstable' in the changelog
Install lsb-release or set $KDEB_CHANGELOG_DIST explicitly
dpkg-buildpackage -r"fakeroot -u" -a$(cat debian/arch) -b -nc -uc
/bin/sh: dpkg-buildpackage: command not found
make[1]: *** [scripts/package/Makefile:79: bindeb-pkg] Error 127
make: *** [Makefile:1396: bindeb-pkg] Error 2
root@storm /usr/src/linux-5.1.3-gentoo # |
It also fails.
The error here:
Code: | dpkg-buildpackage -r"fakeroot -u" -a$(cat debian/arch) -i.git -us -uc
/bin/sh: dpkg-buildpackage: command not found |
could be caused by a package that needs to be installed in gentoo:
see discussion here:
https://forums.gentoo.org/viewtopic-t-26266-start-0.html
There seem to be a couple of relevant packages:
and Code: | sys-apps/fakeroot-ng |
I will check to see if either is installed.
Apparently is not installed.
I have emerged it.
I reran the two make commands.
Unfortunately they both gave the identical set of error messages.
I also tried emerging
But it didn't solve the problem.
Code: | root@storm /usr/src/linux-5.1.3-gentoo # !487
make -j5 bindeb-pkg
/bin/sh ./scripts/package/mkdebian
Using default distribution of 'unstable' in the changelog
Install lsb-release or set $KDEB_CHANGELOG_DIST explicitly
dpkg-buildpackage -r"fakeroot -u" -a$(cat debian/arch) -b -nc -uc
dpkg-buildpackage: warning: using a gain-root-command while being root
dpkg-buildpackage: info: source package linux-5.1.3-debian
dpkg-buildpackage: info: source version 5.1.3-debian-3
dpkg-buildpackage: info: source distribution unstable
dpkg-buildpackage: info: source changed by root <root@storm>
dpkg-architecture: warning: specified GNU system type x86_64-linux-gnu does not match CC system type x86_64-pc-linux-gnu, try setting a correct CC environment variable
dpkg-buildpackage: info: host architecture amd64
dpkg-source --before-build linux-5.1.3-gentoo
dpkg-checkbuilddeps: error: cannot open /var/lib/dpkg/status: No such file or directory
dpkg-buildpackage: warning: build dependencies/conflicts unsatisfied; aborting
dpkg-buildpackage: warning: (Use -d flag to override.)
make[1]: *** [scripts/package/Makefile:79: bindeb-pkg] Error 3
make: *** [Makefile:1396: bindeb-pkg] Error 2 |
and
Code: | root@storm /usr/src/linux-5.1.3-gentoo # !499
make -j5 deb-pkg
make clean
/bin/sh ./scripts/package/mkdebian
Using default distribution of 'unstable' in the changelog
Install lsb-release or set $KDEB_CHANGELOG_DIST explicitly
TAR linux-5.1.3-debian.tar.gz
origversion=$(dpkg-parsechangelog -SVersion |sed 's/-[^-]*$//');\
mv linux-5.1.3-debian.tar.gz ../linux-5.1.3-debian_${origversion}.orig.tar.gz
dpkg-buildpackage -r"fakeroot -u" -a$(cat debian/arch) -i.git -us -uc
dpkg-buildpackage: warning: using a gain-root-command while being root
dpkg-buildpackage: info: source package linux-5.1.3-debian
dpkg-buildpackage: info: source version 5.1.3-debian-3
dpkg-buildpackage: info: source distribution unstable
dpkg-buildpackage: info: source changed by root <root@storm>
dpkg-architecture: warning: specified GNU system type x86_64-linux-gnu does not match CC system type x86_64-pc-linux-gnu, try setting a correct CC environment variable
dpkg-buildpackage: info: host architecture amd64
dpkg-source -i.git --before-build linux-5.1.3-gentoo
dpkg-checkbuilddeps: error: cannot open /var/lib/dpkg/status: No such file or directory
dpkg-buildpackage: warning: build dependencies/conflicts unsatisfied; aborting
dpkg-buildpackage: warning: (Use -d flag to override.)
make[1]: *** [scripts/package/Makefile:74: deb-pkg] Error 3
make: *** [Makefile:1396: deb-pkg] Error 2 |
Comments appreciated
PPS
I ran make -j5 alone.
The compilation seemed to run OK.
The last bit of the output is here:
Code: | LD [M] net/ipv6/xfrm6_mode_tunnel.ko
LD [M] net/netfilter/ipset/ip_set.ko
LD [M] net/netfilter/ipvs/ip_vs.ko
LD [M] net/netfilter/nf_log_common.ko
LD [M] net/netfilter/nf_nat.ko
LD [M] net/netfilter/nf_nat_ftp.ko
LD [M] net/netfilter/nf_nat_irc.ko
LD [M] net/netfilter/xt_LOG.ko
LD [M] net/netfilter/nf_nat_sip.ko
LD [M] net/netfilter/xt_TCPMSS.ko
LD [M] net/netfilter/xt_comment.ko
LD [M] net/netfilter/xt_addrtype.ko
LD [M] net/netfilter/xt_hl.ko
LD [M] net/netfilter/xt_limit.ko
LD [M] net/netfilter/xt_mark.ko
LD [M] net/netfilter/xt_multiport.ko
LD [M] net/netfilter/xt_nat.ko
LD [M] net/netfilter/xt_recent.ko
LD [M] net/xfrm/xfrm_ipcomp.ko
MKPIGGY arch/x86/boot/compressed/piggy.S
AS arch/x86/boot/compressed/piggy.o
LD arch/x86/boot/compressed/vmlinux
ld: arch/x86/boot/compressed/head_64.o: warning: relocation in read-only section `.head.text'
ld: warning: creating a DT_TEXTREL in object
ZOFFSET arch/x86/boot/zoffset.h
OBJCOPY arch/x86/boot/vmlinux.bin
AS arch/x86/boot/header.o
LD arch/x86/boot/setup.elf
OBJCOPY arch/x86/boot/setup.bin
BUILD arch/x86/boot/bzImage
Setup is 16028 bytes (padded to 16384 bytes).
System is 10049 kB
CRC e1f71926
Kernel: arch/x86/boot/bzImage is ready (#4)
root@storm /usr/src/linux-5.1.3-gentoo #
|
I am going to try running make-deb separately and see what happens.
I am also investigating the electron-builder package.
MF
PPPS
Unfortunately it is still generating the same errors:
Code: | root@storm /usr/src/linux-5.1.3-gentoo # make deb-pkg
make clean
CLEAN .
CLEAN arch/x86/entry/vdso
CLEAN arch/x86/kernel/cpu
CLEAN arch/x86/kernel
CLEAN arch/x86/realmode/rm
CLEAN arch/x86/lib
CLEAN certs
CLEAN drivers/base/firmware_loader/builtin
CLEAN drivers/gpu/drm/radeon
CLEAN drivers/scsi
CLEAN drivers/tty/vt
CLEAN kernel
CLEAN lib
CLEAN net/wireless
CLEAN security/selinux
CLEAN usr
CLEAN arch/x86/boot/compressed
CLEAN arch/x86/boot
CLEAN arch/x86/tools
CLEAN .tmp_versions
/bin/sh ./scripts/package/mkdebian
Using default distribution of 'unstable' in the changelog
Install lsb-release or set $KDEB_CHANGELOG_DIST explicitly
TAR linux-5.1.3-debian.tar.gz
origversion=$(dpkg-parsechangelog -SVersion |sed 's/-[^-]*$//');\
mv linux-5.1.3-debian.tar.gz ../linux-5.1.3-debian_${origversion}.orig.tar.gz
dpkg-buildpackage -r"fakeroot -u" -a$(cat debian/arch) -i.git -us -uc
dpkg-buildpackage: warning: using a gain-root-command while being root
dpkg-buildpackage: info: source package linux-5.1.3-debian
dpkg-buildpackage: info: source version 5.1.3-debian-4
dpkg-buildpackage: info: source distribution unstable
dpkg-buildpackage: info: source changed by root <root@storm>
dpkg-architecture: warning: specified GNU system type x86_64-linux-gnu does not match CC system type x86_64-pc-linux-gnu, try setting a correct CC environment variable
dpkg-buildpackage: info: host architecture amd64
dpkg-source -i.git --before-build linux-5.1.3-gentoo
dpkg-checkbuilddeps: error: cannot open /var/lib/dpkg/status: No such file or directory
dpkg-buildpackage: warning: build dependencies/conflicts unsatisfied; aborting
dpkg-buildpackage: warning: (Use -d flag to override.)
make[1]: *** [scripts/package/Makefile:74: deb-pkg] Error 3
make: *** [Makefile:1396: deb-pkg] Error 2
root@storm /usr/src/linux-5.1.3-gentoo # ^C
root@storm /usr/src/linux-5.1.3-gentoo # |
I am going to try changing directory to arch/x86/boot and run make deb-pkg on the bzimage file
Regards
MF |
|
Back to top |
|
![](templates/gentoo/images/spacer.gif) |
|