• [PATCH] [m68k/virt]: Add flavour for QEMU M68K Virtual Machine

    From Laurent Vivier@21:1/5 to All on Mon Jun 12 17:00:02 2023
    These changes to the linux package are needed to create kernel .debs
    and .udebs with all the needed modules for the QEMU m68k virt machine.

    These is also needed to create the debian-installer that will be usable
    with the virt machine.

    Signed-off-by: Laurent Vivier <[email protected]>
    ---
    debian/config/m68k/config.virt | 333 ++++++++++++++++++
    debian/config/m68k/defines | 4 +
    debian/installer/kernel-versions | 1 +
    .../installer/modules/m68k-virt/affs-modules | 1 +
    .../installer/modules/m68k-virt/btrfs-modules | 1 +
    .../modules/m68k-virt/cdrom-core-modules | 1 +
    .../installer/modules/m68k-virt/crc-modules | 1 +
    .../modules/m68k-virt/crypto-modules | 1 +
    .../installer/modules/m68k-virt/ext4-modules | 1 +
    .../installer/modules/m68k-virt/fat-modules | 1 +
    debian/installer/modules/m68k-virt/fb-modules | 2 +
    .../installer/modules/m68k-virt/fuse-modules | 1 +
    .../installer/modules/m68k-virt/hfs-modules | 1 +
    .../installer/modules/m68k-virt/input-modules | 2 +
    .../installer/modules/m68k-virt/isofs-modules | 1 +
    .../installer/modules/m68k-virt/kernel-image | 1 +
    .../installer/modules/m68k-virt/loop-modules | 1 +
    debian/installer/modules/m68k-virt/md-modules |
  • From John Paul Adrian Glaubitz@21:1/5 to Laurent Vivier on Mon Jun 12 17:20:01 2023
    Hi Laurent!

    Thanks for the patch!

    On Mon, 2023-06-12 at 16:58 +0200, Laurent Vivier wrote:
    diff --git a/debian/config/m68k/config.virt b/debian/config/m68k/config.virt new file mode 100644
    index 000000000000..68fa09ec0e37
    --- /dev/null
    +++ b/debian/config/m68k/config.virt
    @@ -0,0 +1,333 @@
    +##
    +## file: arch/m68k/Kconfig
    +##
    +# CONFIG_PM is not set
    +
    +##
    +## file: arch/m68k/Kconfig.cpu
    +##
    +CONFIG_M68040=y
    +
    +##
    +## file: arch/m68k/Kconfig.debug
    +##
    +CONFIG_EARLY_PRINTK=y
    +
    +##
    +## file: arch/m68k/Kconfig.devices
    +##
    +CONFIG_HEARTBEAT=y
    +CONFIG_PROC_HARDWARE=y
    +CONFIG_SERIAL_CONSOLE=y
    +
    +##
    +## file: arch/m68k/Kconfig.machine
    +##
    +CONFIG_VIRT=y
    +
    +##
    +## file: block/Kconfig
    +##
    +# CONFIG_BLK_DEV_INTEGRITY is not set
    +
    +##
    +## file: block/partitions/Kconfig
    +##
    +CONFIG_PARTITION_ADVANCED=y
    +CONFIG_AMIGA_PARTITION=y
    +CONFIG_ATARI_PARTITION=y
    +CONFIG_MAC_PARTITION=y
    +CONFIG_MSDOS_PARTITION=y
    +CONFIG_BSD_DISKLABEL=y
    +CONFIG_MINIX_SUBPARTITION=y
    +CONFIG_SOLARIS_X86_PARTITION=y
    +CONFIG_UNIXWARE_DISKLABEL=y
    +CONFIG_LDM_PARTITION=y
    +CONFIG_LDM_DEBUG=y
    +CONFIG_SUN_PARTITION=y
    +# CONFIG_KARMA_PARTITION is not set
    +CONFIG_SYSV68_PARTITION=y
    +
    +##
    +## file: crypto/Kconfig
    +##
    +CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y
    +
    +##
    +## file: crypto/asymmetric_keys/Kconfig
    +##
    +# CONFIG_ASYMMETRIC_KEY_TYPE is not set
    +
    +##
    +## file: drivers/accessibility/Kconfig
    +##
    +# CONFIG_ACCESSIBILITY is not set
    +
    +##
    +## file: drivers/block/Kconfig
    +##
    +CONFIG_BLK_DEV_FD=m
    +CONFIG_CDROM_PKTCDVD=m
    +CONFIG_VIRTIO_BLK=m
    +# CONFIG_BLK_DEV_RBD is not set
    +
    +##
    +## file: drivers/block/drbd/Kconfig
    +##
    +# CONFIG_BLK_DEV_DRBD is not set
    +
    +##
    +## file: drivers/char/Kconfig
    +##
    +CONFIG_PRINTER=m
    +CONFIG_VIRTIO_CONSOLE=m
    +# CONFIG_LP_CONSOLE is not set
    +# CONFIG_PPDEV is not set
    +
    +##
    +## file drivers/char/hw_random/Kconfig
    +##
    +CONFIG_HW_RANDOM_VIRTIO=m
    +
    +##
    +## file: drivers/connector/Kconfig
    +##
    +CONFIG_CONNECTOR=m
    +
    +##
    +## file: drivers/crypto/Kconfig
    +##
    +# CONFIG_CRYPTO_HW is not set
    +
    +##
    +## file: drivers/firewire/Kconfig
    +##
    +# CONFIG_FIREWIRE is not set
    +
    +##
    +## file: drivers/gpu/drm/Kconfig
    +##
    +# CONFIG_DRM is not set
    +CONFIG_DRM=m
    +CONFIG_DRM_VIRTIO_GPU=m
    +CONFIG_FB=m
    +
    +##
    +## file: drivers/input/Kconfig
    +##
    +CONFIG_INPUT_MOUSEDEV=y
    +
    +##
    +## file: drivers/input/keyboard/Kconfig
    +##
    +CONFIG_INPUT_KEYBOARD=y
    +
    +##
    +## file: drivers/input/misc/Kconfig
    +##
    +CONFIG_INPUT_MISC=y
    +CONFIG_INPUT_UINPUT=m
    +
    +##
    +## file: drivers/input/mouse/Kconfig
    +##
    +CONFIG_INPUT_MOUSE=y
    +
    +##
    +## file: drivers/input/tablet/Kconfig
    +##
    +CONFIG_INPUT_TABLET=y
    +
    +##
    +## file: drivers/rtc/Kconfig
    +##
    +CONFIG_RTC_DRV_GENERIC=y
    +
    +##
    +## file: drivers/scsi/Kconfig
    +##
    +CONFIG_SCSI=y
    +CONFIG_SCSI_VIRTIO=m
    +
    +##
    +## file: drivers/tty/Kconfig
    +##
    +CONFIG_VT=y
    +CONFIG_VT_CONSOLE=y
    +# CONFIG_SERIAL_NONSTANDARD is not set
    +# CONFIG_N_GSM is not set
    +
    +##
    +## file: drivers/video/fbdev/Kconfig
    +##
    +# CONFIG_FIRMWARE_EDID is not set
    +CONFIG_FB_FOREIGN_ENDIAN=y
    +## choice: Choice endianness support
    +CONFIG_FB_BOTH_ENDIAN=y
    +## end choice
    +# CONFIG_FB_MODE_HELPERS is not set
    +# CONFIG_FB_TILEBLITTING is not set
    +
    +##
    +## file: drivers/virtio/Kconfig
    +##
    +CONFIG_VIRTIO_INPUT=m
    +
    +##
    +## file: drivers/virt/Kconfig
    +##
    +CONFIG_VIRT_DRIVERS=m
    +
    +##
    +## file: fs/Kconfig.binfmt
    +##
    +CONFIG_BINFMT_ELF=y
    +CONFIG_BINFMT_MISC=m
    +
    +##
    +## file: fs/adfs/Kconfig
    +##
    +# CONFIG_ADFS_FS is not set
    +
    +##
    +## file: fs/afs/Kconfig
    +##
    +# CONFIG_AFS_FS is not set
    +
    +##
    +## file: fs/befs/Kconfig
    +##
    +# CONFIG_BEFS_FS is not set
    +
    +##
    +## file: fs/bfs/Kconfig
    +##
    +# CONFIG_BFS_FS is not set
    +
    +##
    +## file: fs/ceph/Kconfig
    +##
    +# CONFIG_CEPH_FS is not set
    +
    +##
    +## file: fs/dlm/Kconfig
    +##
    +# CONFIG_DLM is not set
    +
    +##
    +## file: fs/efs/Kconfig
    +##
    +# CONFIG_EFS_FS is not set
    +
    +##
    +## file: fs/f2fs/Kconfig
    +##
    +# CONFIG_F2FS_FS is not set
    +
    +##
    +## file: fs/freevxfs/Kconfig
    +##
    +# CONFIG_VXFS_FS is not set
    +
    +##
    +## file: fs/gfs2/Kconfig
    +##
    +# CONFIG_GFS2_FS is not set
    +
    +##
    +## file: fs/jfs/Kconfig
    +##
    +# CONFIG_JFS_FS is not set
    +
    +##
    +## file: fs/ocfs2/Kconfig
    +##
    +# CONFIG_OCFS2_FS is not set
    +
    +##
    +## file: fs/omfs/Kconfig
    +##
    +# CONFIG_OMFS_FS is not set
    +
    +##
    +## file: fs/qnx4/Kconfig
    +##
    +# CONFIG_QNX4FS_FS is not set
    +
    +##
    +## file: fs/reiserfs/Kconfig
    +##
    +# CONFIG_REISERFS_FS_SECURITY is not set
    +
    +##
    +## file: fs/ubifs/Kconfig
    +##
    +# CONFIG_UBIFS_FS is not set
    +
    +##
    +## file: init/Kconfig
    +##
    +CONFIG_USELIB=y
    +# CONFIG_AUDIT is not set
    +# CONFIG_IKCONFIG is not set
    +CONFIG_LOG_BUF_SHIFT=16
    +# CONFIG_SCHED_AUTOGROUP is not set
    +## choice: Compiler optimization level
    +CONFIG_CC_OPTIMIZE_FOR_SIZE=y
    +## end choice
    +CONFIG_SGETMASK_SYSCALL=y
    +CONFIG_SYSFS_SYSCALL=y
    +
    +##
    +## file: kernel/module/Kconfig
    +##
    +# CONFIG_MODULE_SIG is not set
    +
    +##
    +## file: kernel/time/Kconfig
    +##
    +## choice: Timer tick handling
    +CONFIG_HZ_PERIODIC=y
    +# CONFIG_NO_HZ_IDLE is not set
    +# CONFIG_NO_HZ_FULL is not set
    +## end choice
    +# CONFIG_NO_HZ is not set
    +# CONFIG_HIGH_RES_TIMERS is not set
    +
    +##
    +## file: lib/Kconfig.debug
    +##
    +# CONFIG_FRAME_POINTER is not set
    +# CONFIG_DEBUG_FS is not set
    +# CONFIG_SCHED_DEBUG is not set
    +
    +##
    +## file: lib/fonts/Kconfig
    +##
    +CONFIG_FONT_6x11=y
    +CONFIG_FONT_PEARL_8x8=y
    +# CONFIG_FONT_TER16x32 is not set
    +
    +##
    +## file: mm/Kconfig
    +##
    +CONFIG_COMPAT_BRK=y
    +# CONFIG_COMPACTION is not set
    +# CONFIG_MIGRATION is not set
    +# CONFIG_KSM is not set
    +
    +##
    +## file: net/9p/Kconfig
    +##
    +CONFIG_NET_9P=m
    +CONFIG_NET_9P_VIRTIO=m
    +
    +##
    +## file: net/ipv6/Kconfig
    +##
    +CONFIG_IPV6=m
    +
    +##
    +## sound/virtio/Kconfig
    +##
    +CONFIG_SND_VIRTIO=m

    I think it should be enough to provide a partial configuration only
    which overrides the CONFIG defines from the generic kernel.

    Have a look at the sparc* kernel (referenced from config/sparc64/defines) for example:

    https://salsa.debian.org/kernel-team/linux/-/tree/master/debian/config/kernelarch-sparc

    diff --git a/debian/config/m68k/defines b/debian/config/m68k/defines
    index 2f32891751c3..078df2d8bb15 100644
    --- a/debian/config/m68k/defines
    +++ b/debian/config/m68k/defines
    @@ -2,6 +2,7 @@
    cflags: -ffreestanding
    flavours:
    m68k
    + virt

    This should be "m68k-virt".

    default-flavour: m68k
    kernel-arch: m68k

    @@ -14,3 +15,6 @@ install-stem: vmlinux

    [m68k_description]
    hardware: Motorola MC68020+ family
    +
    +[virt_description]

    And this "m68k-virt_description".

    Without the additional "m68k-" prefix, the resulting kernel package would be called "linux-image-virt" which would be not unambiguous enough.

    +hardware: QEMU Virtual M68K Machine

    diff --git a/debian/installer/kernel-versions b/debian/installer/kernel-versions
    index 95dcc03035a3..69a99838bd45 100644
    --- a/debian/installer/kernel-versions
    +++ b/debian/installer/kernel-versions
    @@ -10,6 +10,7 @@ i386 - 686 - - -
    i386 - 686-pae - - -
    ia64 - itanium - - -
    m68k - m68k - y -
    +m68k - virt - y -

    Same here, "m68k-virt".

    mips - 4kc-malta - y -
    mips - mips32r2eb - y -
    mips - octeon - y -
    diff --git a/debian/installer/modules/m68k-virt/affs-modules b/debian/installer/modules/m68k-virt/affs-modules
    new file mode 100644
    index 000000000000..21d616a1cc94
    --- /dev/null
    +++ b/debian/installer/modules/m68k-virt/affs-modules
    @@ -0,0 +1 @@
    +#include <affs-modules>
    diff --git a/debian/installer/modules/m68k-virt/btrfs-modules b/debian/installer/modules/m68k-virt/btrfs-modules
    new file mode 100644
    index 000000000000..e261e1388380
    --- /dev/null
    +++ b/debian/installer/modules/m68k-virt/btrfs-modules
    @@ -0,0 +1 @@
    +#include <btrfs-modules>
    diff --git a/debian/installer/modules/m68k-virt/cdrom-core-modules b/debian/installer/modules/m68k-virt/cdrom-core-modules
    new file mode 100644
    index 000000000000..3ff69b48f4fc
    --- /dev/null
    +++ b/debian/installer/modules/m68k-virt/cdrom-core-modules
    @@ -0,0 +1 @@
    +#include <cdrom-core-modules>
    diff --git a/debian/installer/modules/m68k-virt/crc-modules b/debian/installer/modules/m68k-virt/crc-modules
    new file mode 100644
    index 000000000000..7e00de705e41
    --- /dev/null
    +++ b/debian/installer/modules/m68k-virt/crc-modules
    @@ -0,0 +1 @@
    +#include <crc-modules>
    diff --git a/debian/installer/modules/m68k-virt/crypto-modules b/debian/installer/modules/m68k-virt/crypto-modules
    new file mode 100644
    index 000000000000..3a1e862b4cc9
    --- /dev/null
    +++ b/debian/installer/modules/m68k-virt/crypto-modules
    @@ -0,0 +1 @@
    +#include <crypto-modules>
    diff --git a/debian/installer/modules/m68k-virt/ext4-modules b/debian/installer/modules/m68k-virt/ext4-modules
    new file mode 100644
    index 000000000000..394c577ce40d
    --- /dev/null
    +++ b/debian/installer/modules/m68k-virt/ext4-modules
    @@ -0,0 +1 @@
    +#include <ext4-modules>
    diff --git a/debian/installer/modules/m68k-virt/fat-modules b/debian/installer/modules/m68k-virt/fat-modules
    new file mode 100644
    index 000000000000..274584eb65fb
    --- /dev/null
    +++ b/debian/installer/modules/m68k-virt/fat-modules
    @@ -0,0 +1 @@
    +#include <fat-modules>
    diff --git a/debian/installer/modules/m68k-virt/fb-modules b/debian/installer/modules/m68k-virt/fb-modules
    new file mode 100644
    index 000000000000..b896f4429edb
    --- /dev/null
    +++ b/debian/installer/modules/m68k-virt/fb-modules
    @@ -0,0 +1,2 @@
    +#include <fb-modules>
    +virtio_gpu
    diff --git a/debian/installer/modules/m68k-virt/fuse-modules b/debian/installer/modules/m68k-virt/fuse-modules
    new file mode 100644
    index 000000000000..0b6ba0c8c8fe
    --- /dev/null
    +++ b/debian/installer/modules/m68k-virt/fuse-modules
    @@ -0,0 +1 @@
    +#include <fuse-modules>
    diff --git a/debian/installer/modules/m68k-virt/hfs-modules b/debian/installer/modules/m68k-virt/hfs-modules
    new file mode 100644
    index 000000000000..57d12f64921c
    --- /dev/null
    +++ b/debian/installer/modules/m68k-virt/hfs-modules
    @@ -0,0 +1 @@
    +#include <hfs-modules>
    diff --git a/debian/installer/modules/m68k-virt/input-modules b/debian/installer/modules/m68k-virt/input-modules
    new file mode 100644
    index 000000000000..b14c62442b0a
    --- /dev/null
    +++ b/debian/installer/modules/m68k-virt/input-modules
    @@ -0,0 +1,2 @@
    +virtio_console
    +virtio_input
    diff --git a/debian/installer/modules/m68k-virt/isofs-modules b/debian/installer/modules/m68k-virt/isofs-modules
    new file mode 100644
    index 000000000000..da4fa9a3c77d
    --- /dev/null
    +++ b/debian/installer/modules/m68k-virt/isofs-modules
    @@ -0,0 +1 @@
    +#include <isofs-modules>
    diff --git a/debian/installer/modules/m68k-virt/kernel-image b/debian/installer/modules/m68k-virt/kernel-image
    new file mode 100644
    index 000000000000..1d11b1921dae
    --- /dev/null
    +++ b/debian/installer/modules/m68k-virt/kernel-image
    @@ -0,0 +1 @@
    +#include <kernel-image>
    diff --git a/debian/installer/modules/m68k-virt/loop-modules b/debian/installer/modules/m68k-virt/loop-modules
    new file mode 100644
    index 000000000000..c1c948fa3316
    --- /dev/null
    +++ b/debian/installer/modules/m68k-virt/loop-modules
    @@ -0,0 +1 @@
    +#include <loop-modules>
    diff --git a/debian/installer/modules/m68k-virt/md-modules b/debian/installer/modules/m68k-virt/md-modules
    new file mode 100644
    index 000000000000..26115e10b800
    --- /dev/null
    +++ b/debian/installer/modules/m68k-virt/md-modules
    @@ -0,0 +1 @@
    +#include <md-modules>
    diff --git a/debian/installer/modules/m68k-virt/nbd-modules b/debian/installer/modules/m68k-virt/nbd-modules
    new file mode 100644
    index 000000000000..3c9b3e5d426d
    --- /dev/null
    +++ b/debian/installer/modules/m68k-virt/nbd-modules
    @@ -0,0 +1 @@
    +#include <nbd-modules>
    diff --git a/debian/installer/modules/m68k-virt/nic-modules b/debian/installer/modules/m68k-virt/nic-modules
    new file mode 100644
    index 000000000000..2512e83950dd
    --- /dev/null
    +++ b/debian/installer/modules/m68k-virt/nic-modules
    @@ -0,0 +1 @@
    +#include <nic-modules>
    diff --git a/debian/installer/modules/m68k-virt/nic-shared-modules b/debian/installer/modules/m68k-virt/nic-shared-modules
    new file mode 100644
    index 000000000000..cc84b14dcd10
    --- /dev/null
    +++ b/debian/installer/modules/m68k-virt/nic-shared-modules
    @@ -0,0 +1 @@
    +#include <nic-shared-modules>
    diff --git a/debian/installer/modules/m68k-virt/ppp-modules b/debian/installer/modules/m68k-virt/ppp-modules
    new file mode 100644
    index 000000000000..1f26aa1ee60e
    --- /dev/null
    +++ b/debian/installer/modules/m68k-virt/ppp-modules
    @@ -0,0 +1 @@
    +#include <ppp-modules>
    diff --git a/debian/installer/modules/m68k-virt/scsi-core-modules b/debian/installer/modules/m68k-virt/scsi-core-modules
    new file mode 100644
    index 000000000000..dd65d661433d
    --- /dev/null
    +++ b/debian/installer/modules/m68k-virt/scsi-core-modules
    @@ -0,0 +1 @@
    +#include <scsi-core-modules>
    diff --git a/debian/installer/modules/m68k-virt/scsi-modules b/debian/installer/modules/m68k-virt/scsi-modules
    new file mode 100644
    index 000000000000..16c5cb13e3cf
    --- /dev/null
    +++ b/debian/installer/modules/m68k-virt/scsi-modules
    @@ -0,0 +1,4 @@
    +sg
    +
    +virtio_scsi
    +virtio_blk
    diff --git a/debian/installer/modules/m68k-virt/squashfs-modules b/debian/installer/modules/m68k-virt/squashfs-modules
    new file mode 100644
    index 000000000000..42d77887ad3d
    --- /dev/null
    +++ b/debian/installer/modules/m68k-virt/squashfs-modules
    @@ -0,0 +1 @@
    +#include <squashfs-modules>
    diff --git a/debian/installer/modules/m68k-virt/udf-modules b/debian/installer/modules/m68k-virt/udf-modules
    new file mode 100644
    index 000000000000..b90d7ee9b52e
    --- /dev/null
    +++ b/debian/installer/modules/m68k-virt/udf-modules
    @@ -0,0 +1 @@
    +#include <udf-modules>

    I think we might not need this separate folder for d-i if we use the "kernelarch" approach
    that arm, mips, powerpc and sparc uses. See the "kernelarch-$ARCH" folders.

    Adrian

    --
    .''`. John Paul Adrian Glaubitz
    : :' : Debian Developer
    `. `' Physicist
    `- GPG: 62FF 8A75 84E0 2956 9546 0006 7426 3B37 F5B5 F913

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From John Paul Adrian Glaubitz@21:1/5 to Laurent Vivier on Mon Jul 24 11:30:02 2023
    Hi Laurent!

    On Mon, 2023-06-12 at 16:58 +0200, Laurent Vivier wrote:
    These changes to the linux package are needed to create kernel .debs
    and .udebs with all the needed modules for the QEMU m68k virt machine.

    These is also needed to create the debian-installer that will be usable
    with the virt machine.

    I played around with the Debian kernel configuration a bit yesterday and
    we actually only need a simple kernel configuration file for the -virt
    flavor:

    glaubitz@nofan:..linux/linux-6.4.4> cat debian/config/m68k/config.virt
    ##
    ## file: arch/m68k/Kconfig.machine
    ##
    CONFIG_VIRT=y
    glaubitz@nofan:..linux/linux-6.4.4>

    We should actually align the m68k kernel configuration with the one for Alpha which has one common config file as well as separate configuration files for both a generic kernel and the smp kernel [1].

    We should have the following files in the end:

    - config
    - config.m68k-generic
    - config.m68k-virt

    For editing the configuration, it's normally recommended to follow this guide [2]
    and check the configuration with the kconfigeditor2 script [3].

    However, in our case it should be enough to split the configuration items specific
    to Amiga, Atari and Mac to the config.m68k-generic configuration file, leave the
    rest in config and just add CONFIG_VIRT=y to config.m68k-virt as show above.

    Adrian

    [1] https://salsa.debian.org/kernel-team/linux/-/tree/master/debian/config/alpha
    [2] https://kernel-team.pages.debian.net/kernel-handbook/ch-common-tasks.html#id-1.6.6.4
    [3] https://salsa.debian.org/kernel-team/kernel-team/-/tree/master/utils/kconfigeditor2

    --
    .''`. John Paul Adrian Glaubitz
    : :' : Debian Developer
    `. `' Physicist
    `- GPG: 62FF 8A75 84E0 2956 9546 0006 7426 3B37 F5B5 F913

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)