summaryrefslogtreecommitdiff
path: root/Kernel/run
AgeCommit message (Collapse)Author
2020-02-10Meta: Fix shellcheck warnings in various scriptsShannon Booth
Warnings fixed: * SC2086: Double quote to prevent globbing and word splitting. * SC2006: Use $(...) notation instead of legacy backticked `...` * SC2039: In POSIX sh, echo flags are undefined * SC2209: Use var=$(command) to assign output (or quote to assign string) * SC2164: Use 'cd ... || exit' or 'cd ... || return' in case cd fails * SC2166: Prefer [ p ] && [ q ] as [ p -a q ] is not well defined. * SC2034: i appears unused. Verify use (or export if used externally) * SC2046: Quote this to prevent word splitting. * SC2236: Use -z instead of ! -n. There are still a lot of warnings in Kernel/run about: - SC2086: Double quote to prevent globbing and word splitting. However, splitting on space is intentional in this case, and not trivial to change. Therefore ignore the warning for now - but we should fix this in the future.
2020-02-09WebServer: Implement a very basic HTTP server :^)Andreas Kling
This server listens on port 8000 and serves HTML files from /www. It's very simple and quite naive, but I think we can start here and build our way to something pretty neat. Work towards #792.
2020-01-15run: Bump default RAM size from 128 MB to 256 MBAndreas Kling
2020-01-14Kernel: Fix run script to enable networking on Q35 machinesLiav A
Also, we enable KVM to accelerate the execution when booting with q35_cmd or qcmd options in the run script.
2020-01-02Kernel: Fixing PCI MMIO access mechanismLiav A
During initialization of PCI MMIO access mechanism we ensure that we have an allocation from the kernel virtual address space that cannot be taken by other components in the OS. Also, now we ensure that interrupts are disabled so mapping the region doesn't fail. In order to reduce overhead, map_device() will map the requested PCI address only if it's not mapped already. The run script has been changed so now we can boot a Q35 machine, that supports PCI ECAM. To ensure we will be able to load the machine, a PIIX3 IDE controller was added to the Q35 machine configuration in the run script. An AHCI controller was added to the i440fx machine configuration.
2019-12-29Kernel: Embrace the SerenityOS nameAndreas Kling
2019-12-25run: Run QEMU with "-cpu max"Andreas Kling
This should give us access to the largest set of CPU features available on the host machine.
2019-12-24Build: Meta: Allow makeall.sh and run to be called from any directoryShannon Booth
These scripts assume that they are called from within Kernel/ directory. For convenience, set the current working directory in the scripts to the path where they are located.
2019-12-23Meta: Add environment variable to specify bochs command in run scriptConrad Pankoff
2019-12-22Run: Fix broken packet logging argument to QEMU (disabled by default)Andreas Kling
2019-11-13run: Unbreak this script when running with a regular Bourne /bin/shAndreas Kling
We can't use bashisms in our scripts anymore, since we're trying to keep them POSIXy (to make them easier to run for our own shell someday)
2019-11-13Kernel: Add a kernel boot parameter to force PIO modesupercomputer7
Also added an option in the run script to force PIO operation mode with the IDE controller. In addition, we're no longer limited to PIIX3 and PIIX4 chipsets for DMA
2019-11-05run: Unbreak the run scriptAndreas Kling
2019-11-05run: Comment out qemu packet captureDan MacDonald
2019-11-04run: Only enable KVM if /dev/kvm is r/w for the current userAndreas Kling
2019-11-02Run: Don't repeat common QEMU argumentsJonathan Archer
2019-11-02Run: Properly use common memory sizeJonathan Archer
2019-10-29Kernel: Enabling Text mode debugging (#696)Liav A
Also added an option to start Serenity with text mode in QEMU in the run script.
2019-10-13Runner: Enable QEMU's KVM mode by defaultAndreas Kling
This makes QEMU run significantly faster on Linux systems with KVM.
2019-09-09Runner: Forward host TCP port 8823 to guest port 23 in QEMUAndreas Kling
This makes it easier to test TelnetServer when running in QEMU.
2019-08-29Kernel: Remove specific devices from network codeConrad Pankoff
By setting up the devices in init() and looping over the registered network adapters in NetworkTask_main, we can remove the remaining hard-coded adapter references from the network code. This also assigns IPs according to the default range supplied by QEMU in its slirp networking mode.
2019-07-13Kernel: First cut of a sb16 driverRobin Burchell
Also add an AudioServer that (right now) doesn't do much. It tries to open, parse, and play a wav file. In the future, it can do more. My general thinking here here is that /dev/audio will be "owned" by AudioServer, and we'll do mixing in software before passing buffers off to the kernel to play, but we have to start somewhere.
2019-06-16Kernel: Expose kernel command line to userspace through /proc/cmdlineRobin Burchell
2019-06-12Kernel: Use an environment variable to set the memory size in the run scriptConrad Pankoff
2019-06-04Build: Remove grub from default build processConrad Pankoff
This removes grub and all the loopback device business from the default build process. Running grub takes about a second, and it turns out it's inconsistently packaged in different distributions, which has led to at least one confusing issue so far (grub-install vs grub2-install). Removing it from the basic path will make it easier for people to try Serenity out. There are now two scripts that can be used to build a disk image: 1. `build-image-grub.sh` - this will build an image suitable for writing to the IDE hard drive of a physical machine, complete with a partition table and bootloader. This can be run in qemu with the `qgrub` target for the `run` script. 2. `build-image-qemu.sh` - this is a simpler script which creates a bare filesystem image rather than a full MBR disk. Both of these call out to `build-root-filesystem.sh` to do most of the work setting up... the root filesystem. For completeness' sake, I've retained the `sync.sh` script as a simple forwarding to `build-image-qemu.sh`. This relies on the functionality from #194 and #195. #195 allows us to use `/dev/hda` as the root device when nothing else is specified, and #194 works around a strange feature of qemu that appends a space to the kernel command line.
2019-06-02Kernel: Implement OffsetDiskDevice to prepare for partition supportConrad Pankoff
This implements a passthrough disk driver that translates the read/write block addresses by a fixed offset. This could form the basis of MBR partition support if we were to parse the MBR table at boot and create that OffsetDiskDevice dynamically, rather than seeking to a fixed offset. This also introduces a dependency in the form of grub. You'll need to have 32-bit grub binaries installed to build the project now. As a bonus, divorcing Serenity from qemu's kernel loading means we can now *technically* boot on real hardware. It just... doesn't get very far yet. If you write the `_disk_image` file to an IDE hard drive and boot it in a machine that supports all the basic PC hardware, it *will* start loading the kernel.
2019-06-02Kernel: Make better use of the multiboot info.Andreas Kling
Define the multiboot info struct properly so we don't have to grab at byte offsets in the memory access checker code. Also print kernel command line in init().
2019-05-24WindowServer: Add 2560x1440 resolution option.Andreas Kling
Also expand the QEMU VGA memory size to 64 MB, since otherwise we won't have enough memory for double-buffering the screen.
2019-05-23Always run QEMU with -debugcon stdio.Andreas Kling
If someone wants to run without this, they can disable it manually :^)
2019-05-17Run QEMU with the "guest_errors" debug flag, in case we do something wrong.Andreas Kling
2019-05-17Always dump QEMU CPU state on CPU reset.Andreas Kling
2019-05-15Kernel: Add a beep() syscall that beeps the PC speaker.Andreas Kling
Hook this up in Terminal so that the '\a' character generates a beep. Finally emit an '\a' character in the shell line editing code when backspacing at the start of the line.
2019-05-04run: Make it easy to override which qemu executable is used.Andreas Kling
Patch contributed by "pd"
2019-05-01Fix jittery mouseMustafa Ali CAN
2019-04-24Allow passing extra args to qemu via a SERENITY_EXTRA_QEMU_ARGS env var.Andreas Kling
2019-04-01Kernel: Use a multiboot header instead of a convoluted two-part bootloader.Andreas Kling
The old bootloader was hilariously complicated, requiring a floppy disk with the kernel on it, and a hard drive with the file system. This patch removes the floppy disk from the equation and replaces it with a multiboot header. This means the kernel can now be booted with qemu-system-i386 -kernel kernel
2019-03-27Give the emulator testing environments 128 MB of RAM.Andreas Kling
I'm working on porting GCC and it needs a fair bit of memory to run.
2019-03-13IPv4: Begin fleshing out TCP support.Andreas Kling
2019-03-13More work on IPv4 sockets and /bin/ping.Andreas Kling
It's now actually possible to ping other hosts on the network! :^) I've switched the "run" script over to starting QEMU with user networking since that works better for my testing needs right now.
2019-03-11Kernel: Bring up enough networking code that we can respond to ARP requests.Andreas Kling
This is all pretty rickety but we can now respond to "arping" from the host while running inside QEMU. Very cool. :^)
2019-03-11Kernel: Add a NetworkTask and a received network packet queue.Andreas Kling
It will be easier to deal with incoming packets in a separate task.
2019-03-10Kernel: Start adding support for E1000 network adapters.Andreas Kling
2018-11-29Add TIOCGWINSZ ioctl so userland can determine terminal geometry.Andreas Kling
(Don't) use this to implement short-form output in ls. I'm too tired to make a nice column formatting algorithm. I just wanted something concise when I type "ls".
2018-11-09Run QEMU with the possibility to attach gdb.Andreas Kling
2018-11-08Make it run in QEMU.Andreas Kling
Looks like the problem was the weirdly-sized floppy image file. I guess QEMU was inferring the floppy disk geometry from the image size.
2018-10-17Allow running in QEMU with "./run q"Andreas Kling
The kernel doesn't run in QEMU right now and I don't know why.
2018-10-17Integrate ext2 from VFS into Kernel.Andreas Kling
2018-10-16Import the "gerbert" kernel I worked on earlier this year.Andreas Kling
It's a lot crappier than I remembered it. It's gonna need a lot of work.