You are not logged in.
I'm happily running a 64bit kernel with 32bit userland, but I was wondering whether there is any way to let pacman allow me to install the 64bit kernel (manually downloaded) without me needing to edit pacman.conf. I sometimes forget to set the arch to i686 again causing me to install 64bit packages.
If there is no such option, I'll script something for myself, but I wanted to be sure I didn't miss something (maybe an undocumented option?).
Offline
Seems like something like this would actually be suitable for an AUR package (basically duplicate the 64-bit kernel and call it kernel26-64 or something). Compiling it would be 'fun' though. I suppose you wish to use Arch's pre-compiled kernels, in which case no, I don't think its possible. You could ask Allan what scripts he uses for this, I know he runs such a system.
Allan-Volunteer on the (topic being discussed) mailn lists. You never get the people who matters attention on the forums.
jasonwryan-Installing Arch is a measure of your literacy. Maintaining Arch is a measure of your diligence. Contributing to Arch is a measure of your competence.
Griemak-Bleeding edge, not bleeding flat. Edge denotes falls will occur from time to time. Bring your own parachute.
Offline
It's quite documented.
--arch <arch> Specify an alternate architecture.
How could I miss that... I did the check the man page though.
Anyway, this works fairly well, the only hiccup being that with the arch set to i686 in pacman.conf and no explicit arch in my mirrorlist, pacman still wants to download the i686 pkg when --arch x86_64 is specified. Maybe this is a bug and I should report it.
Offline
also, from man pacman.conf
Architecture = auto | i686 | x86_64 | ...
If set, pacman will only allow installation of packages of the given architecture (e.g. i686, x86_64, etc). The special value auto will use the system architecture, provided by in “uname -m”. If
unset, no architecture checks are made.
Offline
just thinking about this, if it's using "uname -m" then you can trick pacman using "linux32" or "linux64" before the pacman command
Offline
also, from man pacman.conf
Architecture = auto | i686 | x86_64 | ... If set, pacman will only allow installation of packages of the given architecture (e.g. i686, x86_64, etc). The special value auto will use the system architecture, provided by in “uname -m”. If unset, no architecture checks are made.
Yeah, but:
* using auto makes everything 64bit, but I want everything but the kernel to be 32bit.
* not setting Architecture makes the $arch variable in the mirrorlist invalid and thus I'll have to choose to either set i686 or x86_64 explicitly and cannot specify --arch x86_64 when installing the kernel (enabling both 32bit and 64bit doesn't work either).
Ideally I'd just want pacman to install i686 pkgs by default but allow me to install x86_64 pkgs when I specify it with --arch. Even better would be if pacman would by default just take the same arch as the previous pkg when upgrading, maybe I should take a look at the pacman source code and see if this would be feasible
Offline
I have the Architecture line commented out of my pacman.conf, but that is because I am too lazy to upgrade the kernel using --arch. That and I use "i686" in my mirror url and am fairly sure I will never change it to x86_64 by accident...
Anyway, these are the changes I made to /etc/inittab. Just added linux32 in lots of places.
# -8 options fixes umlauts problem on login
c1:2345:respawn:linux32 /sbin/agetty -8 38400 tty1 linux
c2:2345:respawn:linux32 /sbin/agetty -8 38400 tty2 linux
c3:2345:respawn:linux32 /sbin/agetty -8 38400 tty3 linux
c4:2345:respawn:linux32 /sbin/agetty -8 38400 tty4 linux
c5:2345:respawn:linux32 /sbin/agetty -8 38400 tty5 linux
c6:2345:respawn:linux32 /sbin/agetty -8 38400 tty6 linux
# Hypervisor Virtual Console for Xen and KVM
#h0:2345:respawn:/sbin/agetty -8 38400 hvc0 linux
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
# Example lines for starting a login manager
#x:5:respawn:/usr/bin/xdm -nodaemon
#x:5:respawn:/usr/sbin/gdm -nodaemon
#x:5:respawn:/usr/bin/kdm -nodaemon
#x:5:respawn:linux32 /usr/bin/slim >& /dev/null
x:5:respawn:linux32 /usr/sbin/lxdm >& /dev/null
Do that, and you will never know that you are running an x86_64 kernel and can keep Architecture=auto if you wish.
Offline
@bangkok_manouel: Nice idea, but not working unfortunately:
sudo linux64 pacman --arch x86_64 -S kernel26
warning: downgrading package kernel26 (2.6.38.1-1 => 2.6.37.5-1)
error: failed to prepare transaction (package architecture is not valid)
:: package kernel26-2.6.37.5-1-i686 does not have a valid architecture
and the same without the --arch, Architecture is set to auto.
@Allan: How do you upgrade the kernel then? By manually downloading the package and using -U? If so I think using --arch to install is less intrusive (I might someday convert this system to full 64bit and that'll be easier if I don't have linux32 references all over the place).
Do you perhaps know whether pacman is supposed to download pkgs with the architecture specified by --arch or is --arch only supposed to influence the architecture check when installing?
Offline
I'm bumping this thread, maybe i should open a new one but i did the following to install linux-ck-kx on a 32bit system (its kinda cleaner since the repo only has kernel stuff and optimised kernels).
As Allan did, i put i686 in my mirrorlist and in pacman.conf i put x86_64 in repo-ck. Then i synced and tried to install but pacman complained that "package architecture is not valid".
Solved that by removing the repo-ck sync db and resyncing, but with the stock kernel that is not possible since the package is in the core repo. So i guess the best way would be to put i686 in mirrorlist to make sure something won'r break and install the kernel manually.
If it ain't broke, broke it then fix it.
Offline