Discussion:
[arch-general] syslinux.cfg
Ralf Mardorf
2017-02-16 02:09:23 UTC
Permalink
Hi,

is the no way to get a menu


Arch kernel 1
Arch Kernel 2
Foo Kernel 1
Foo Kernel 2


when using syslinux?

Or even while booting another Linux requires chainloading, there's a
feature to chose between all available kernels of another Linux by the
"main" menu?

IIUC chainloading only could provide


Arch kernel 1
Arch Kernel 2
Foo


and just when selecting Foo I can chose between


Foo Kernel 1
Foo Kernel 2

and perhaps

Arch


so assuming I then decide to go back to the Arch menu, I need to
chainload Arch from the chainloaded other Foo Linux?

Regards,
Ralf
David Rosenstrauch
2017-02-16 02:59:55 UTC
Permalink
Post by Ralf Mardorf
Hi,
is the no way to get a menu
Arch kernel 1
Arch Kernel 2
Foo Kernel 1
Foo Kernel 2
when using syslinux?
Or even while booting another Linux requires chainloading, there's a
feature to chose between all available kernels of another Linux by the
"main" menu?
IIUC chainloading only could provide
Arch kernel 1
Arch Kernel 2
Foo
and just when selecting Foo I can chose between
Foo Kernel 1
Foo Kernel 2
and perhaps
Arch
so assuming I then decide to go back to the Arch menu, I need to
chainload Arch from the chainloaded other Foo Linux?
Regards,
Ralf
Not sure exactly what you're trying to do. I have my syslinux showing
the following menu choices at boot:

Arch Linux
Arch Linux - single user
Arch Linux - fallback
Arch Linux - LTS kernel
Arch Linux - LTS kernel, single user
Arch Linux - LTS kernel, fallback
Windows 7
hdt
reboot

Not sure if that's what you're aiming for or not. If it is, I'm happy
to send you a copy of my syslinux.cfg.

Best,

DR
Leonid Isaev
2017-02-16 03:38:05 UTC
Permalink
Post by Ralf Mardorf
Hi,
is the no way to get a menu
Arch kernel 1
Arch Kernel 2
Foo Kernel 1
Foo Kernel 2
when using syslinux?
Or even while booting another Linux requires chainloading, there's a
feature to chose between all available kernels of another Linux by the
"main" menu?
IIUC chainloading only could provide
Arch kernel 1
Arch Kernel 2
Foo
and just when selecting Foo I can chose between
Foo Kernel 1
Foo Kernel 2
and perhaps
Arch
so assuming I then decide to go back to the Arch menu, I need to
chainload Arch from the chainloaded other Foo Linux?
No, you only need chainloading in special cases, for instance if syslinux can't
boot from a filesystem containing Foo kernels, or windows.

Let's assume that you have the following:
* /dev/sda1 -- mounted at /boot when you boot your ArchLinux system
* /dev/sdb1 -- the same for Foo
* syslinux is installed on /dev/sda1 (it is bootable).

What I usually do, is mkdir /dev/sda1/{arch,foo} and rsync kernels/initrds from
/dev/sda1 to arch/ and from /dev/sdb1 to foo/. Then, modify syslinux.cfg so
that entries like LINUX ../vmlinuz-linux become LINUX ../arch/vmlinuz-linux and
similarly for INITRD. Finally, in your Arch's and Foo's fstabs, bind-mount
arch/ and foo/ to respective /boot's (if desired of course, as you don't need
to have /boot mounted). This way you get the menu that you mentioned first.

You no longer need data in /dev/sdb1 and can free the partition.

HTH,
--
Leonid Isaev
Ralf Mardorf
2017-02-16 10:20:58 UTC
Permalink
Post by Leonid Isaev
* /dev/sda1 -- mounted at /boot when you boot your ArchLinux system
* /dev/sdb1 -- the same for Foo
* syslinux is installed on /dev/sda1 (it is bootable).
What I usually do, is mkdir /dev/sda1/{arch,foo} and rsync
kernels/initrds from /dev/sda1 to arch/ and from /dev/sdb1 to foo/.
Then, modify syslinux.cfg so that entries like LINUX ../vmlinuz-linux
become LINUX ../arch/vmlinuz-linux and similarly for INITRD. Finally,
in your Arch's and Foo's fstabs, bind-mount arch/ and foo/ to
respective /boot's (if desired of course, as you don't need to
have /boot mounted). This way you get the menu that you mentioned
first.
You no longer need data in /dev/sdb1 and can free the partition.
Thank you,

that is nice workaround, with just one pitfall.
If I want to maintain the other Linux in a systemd-nspawn container, I
won't be able to upgrade the kernel anymore [1]. Is there a workaround
for this, too? Perhaps I'm just using systemd-nspawn incorrect :D. I
should read more about systemd-nspawn ;).

I wonder how systemd-nspawn works, if e.g. /home would be on a
separated partition. Some days back I needed to use chroot, because
installing GRUB (GRUB itself, not the grub package/s) didn't work with
systemd-nspawn in the way I'm using systemd-nspawn.

However, I most likely will use the workaround you mentioned.

Regards,
Ralf

[1]
[***@archlinux ~]# grep PRETTY /etc/os-release
PRETTY_NAME="Arch Linux"
[***@archlinux ~]# grep -v ^# /etc/fstab
/dev/sda9 / ext4 rw,relatime,data=ordered 0 1

/dev/sda10 none swap defaults 0 0

/dev/sda11 /mnt/music ext4 defaults,noatime 0 2
/dev/sda5 /home/s1.music ext4 defaults,noatime 0 2

[***@archlinux ~]# systemd-nspawn -qD /mnt/moonstudio
[***@moonstudio ~]# grep PRETTY /etc/os-release
PRETTY_NAME="Ubuntu 16.04.2 LTS"
[***@moonstudio ~]# grep -v ^# /etc/fstab

/dev/sdb11 / ext4 rw,relatime 0 1
/dev/sda10 none swap sw 0 0
/dev/sdb7 none swap sw 0 0
/dev/sda9 /mnt/archlinux ext4 defaults 0 2
/dev/sdb15 /mnt/winos7 ext4 defaults,noatime 0 2
[***@moonstudio ~]# ls -hl /mnt/archlinux/
total 0
[***@moonstudio ~]# logout
[***@archlinux ~]# systemd-nspawn -bqD /mnt/moonstudio
[snip]
[***@moonstudio ~]# ls -hl /mnt/archlinux/
total 0
[***@moonstudio ~]# ls -hl /mnt/winos7/
total 0
Leonid Isaev
2017-02-17 01:20:43 UTC
Permalink
Post by Ralf Mardorf
If I want to maintain the other Linux in a systemd-nspawn container, I
won't be able to upgrade the kernel anymore [1]. Is there a workaround
for this, too? Perhaps I'm just using systemd-nspawn incorrect :D. I
should read more about systemd-nspawn ;).
If your linux installation has a non-trivial fstab, for instance separate /var
or /var/log, I don't think a container would even boot because the devices
/dev/sdXY are not there. So, you'll need to find a way to properly mount all
necessary filesystems inside the container.

I have never used nspawn, but the above is possible with LXC because one can
write a container configuration file. If nspawn has a decent configuration
syntax, then good...

I also wouldn't make a habit of maintaining another linux distro like that
especially if it is systemd-based. Systemd may not run smth if it detect a
container virtualization.

Cheers,
--
Leonid Isaev
Ralf Mardorf
2017-02-16 13:40:45 UTC
Permalink
Post by Leonid Isaev
What I usually do, is mkdir /dev/sda1/{arch,foo} and rsync
kernels/initrds from /dev/sda1 to arch/ and from /dev/sdb1 to foo/.
Hi,

I kept Arch's /boot and will move other Linux /boot to an Arch
directory named /.boot.

A test done with one Linux already works, just the issue with installing
and removing another Linux' kernels when maintaining it in a
systemd-nspawn container isn't solved.

Regards,
Ralf

[***@archlinux ~]# ls -d /boot/ /.boot/*/*/
/boot/ /.boot/ubuntu_moonstudio/boot/
[***@archlinux ~]# grep boot /mnt/moonstudio/etc/fstab
/mnt/archlinux/.boot/ubuntu_moonstudio/boot /boot none bind 0 0
[***@archlinux ~]# cat /boot/syslinux/syslinux.cfg
# http://syslinux.zytor.com/wiki/index.php/Doc/menu

PROMPT 0
TIMEOUT 80
UI menu.c32
MENU HIDDEN
MENU CLEAR
MENU COLOR screen 0;30;40
MENU COLOR border 0;30;40
MENU COLOR title 1;37;44
MENU COLOR unsel 0;37;40
MENU COLOR hotkey 1;37;40
MENU COLOR hotsel 7;37;40
MENU COLOR sel 7;37;40
MENU COLOR disabled 1;37;40
MENU COLOR scrollbar 0;30;40
MENU COLOR tabmsg 0;30;40
MENU COLOR cmdmark 0;31;40
MENU COLOR cmdline 0;37;40
MENU COLOR timeout_msg 0;37;40
MENU COLOR timeout 1;37;40

# Used hotkeys: ^A ^e ^g ^H ^L ^M ^O ^P ^Q ^R ^S ^t ^V
DEFAULT Threadirqs

MENU TITLE HAL 9000
LABEL Toolbox
MENU LABEL Toolbox
MENU DISABLE
MENU SEPARATOR


LABEL Hardware
MENU LABEL ^Hardware Detection
COM32 hdt.c32

LABEL Reset
MENU LABEL R^eset
COM32 reboot.c32

LABEL Off
MENU LABEL Power ^Off
COM32 poweroff.c32


MENU SEPARATOR
MENU SEPARATOR
LABEL Arch Menu
MENU LABEL Arch Linux
MENU DISABLE
MENU SEPARATOR


LABEL Threadirqs
MENU LABEL Arch Linux ^threadirqs
LINUX ../vmlinuz-linux
APPEND root=LABEL=archlinux ro threadirqs
INITRD ../initramfs-linux.img

LABEL Rosa
MENU LABEL Arch Linux Rt ^Rosa Pluesch
LINUX ../vmlinuz-linux-rt-rosaplüsch
APPEND root=LABEL=archlinux ro
INITRD ../initramfs-linux-rt-rosaplüsch.img

LABEL Presonus
MENU LABEL Arch Linux Rt ^Presonus
LINUX ../vmlinuz-linux-rt-presonus
APPEND root=LABEL=archlinux ro
INITRD ../initramfs-linux-rt-presonus.img

LABEL Arch
MENU LABEL ^Arch Linux
LINUX ../vmlinuz-linux
APPEND root=LABEL=archlinux ro
INITRD ../initramfs-linux.img

LABEL Rt
MENU LABEL Arch ^Linux Rt
LINUX ../vmlinuz-linux-rt
APPEND root=LABEL=archlinux ro
INITRD ../initramfs-linux-rt.img

LABEL Lts
MENU LABEL Arch Linux Rt LT^S
LINUX ../vmlinuz-linux-rt-lts
APPEND root=LABEL=archlinux ro
INITRD ../initramfs-linux-rt-lts.img


MENU SEPARATOR
MENU SEPARATOR
LABEL Other Menu
MENU LABEL Other Linux
MENU DISABLE
MENU SEPARATOR

LABEL Moonstudio
MENU LABEL Ubuntu X ^Moonstudio lowlatency
LINUX /.boot/ubuntu_moonstudio/boot/vmlinuz-lowlatency
APPEND root=LABEL=moonstudio ro vga=773
INITRD /.boot/ubuntu_moonstudio/boot/initrd.img-lowlatency

LABEL Generic
MENU LABEL Ubuntu X Moonstudio ^generic
LINUX /.boot/ubuntu_moonstudio/boot/vmlinuz-generic
APPEND root=LABEL=moonstudio ro vga=773
INITRD /.boot/ubuntu_moonstudio/boot/initrd.img-generic

#LABEL Light
# MENU LABEL Ubuntu ^Q LightScribe Rt
# LINUX /.boot/ubuntu_q/boot/vmlinuz-3.6.5-rt14
# APPEND root=LABEL=q ro
# INITRD /.boot/ubuntu_q/boot/initrd.img-3.6.5-rt14

#LABEL Suse
# MENU LABEL ^Vintage SUSE 11.2 Rt
# LINUX /.boot/suse11.2/boot/vmlinuz-2.6.31.6-rt19
# APPEND root=LABEL=suse11.2 ro
# INITRD /.boot/suse11.2/boot/initrd-2.6.31.6-rt19
Loading...