|Tags||operating-system kernel posix unix|
1.0.106 Aug 2018 10:46 major feature: This new release of the Fiwix kernel comes with the following changes: - Added a basic implementation of a Pseudo-Random Number Generator using the character devices /dev/random and /dev/urandom. - Improved the mechanism in procfs_dir_readdir() to fix a memory corruption bug. - Fixed a bug in procfs_dir_readdir() that prevented from reading correctly the entire procfs root directory. - Fixed a bug in iso9660_dir_readdir() that prevented from reading correctly any directory. - Fixed to show the complete pathname in the argv 0 of the init process. - Fixed to protect INIT process from unexpected signals. It also comes with the new Fiwix Installation CDROM 1.1 which includes new packages ported and improves a lot the UNIX-like experience with full support of the System V init scripts.
1.0.023 Apr 2018 10:27 major feature: The wait is finally over! After a lot of years working on this project, I can finally offer a free UNIX-like kernel for students and OS enthusiasts out there. I really hope people will take it with the same excitement I had while writing it. The Fiwix kernel comes with a CDROM that will install a decent operating system with libraries, compilers and tools. All the user-space software in this operating system uses the Newlib C Library successfully ported to Fiwix. Since such library is not fully compatible with the GNU C Library, the amount of GNU packages ported is small. That's the reason why you'll see some tools (applets) from the Busybox. The primary file system is the Minix version 2. It's an old and feature limited file system but it's really easy to implement and is currently enough to hold all files of the operating system. It has some limitations though; the maximum size of a file system is 1GB, it can only contain 65535 inodes (files), and others. This kernel, while completely functional and self-hosting capable, is in its early stage. That is, don't expect some features you would find in the current (modern) kernels. So, no PCI devices, no USB support and no networking; to name the most impacting missing features. OK, enough reading. Download it and get your hands dirty with the Fiwix kernel. Happy hacking! ;-)
0.9.223 Mar 2018 13:05 minor bugfix: Adjusted IDE waits depending on the CPU speed. More improvements in the initialization procedure of the keyboard driver. Reorganized the IDE detection mechanism in order to a detection problem of the primary-slave device on a specific scenary. Reduced the risk of latency in timer by moving some code to bottom halves. Added clock information in the boot screen. Rewritten the iso9660_dir_readdir() function which also a long standing corruption in the dirent structure. Rewritten partially the CDROM driver ing a lot of. Rewritten reclaim_buffers() function which should improve kernel stability. Placed to check for reschedule right after checking signals. Removed the EROFS return value in sys_open() to not prevent from writting in device files on a read-only filesystem. Now such return value is in minix_create(). some while loading the BIOS memory map. some typos in send_sig() that were referencing to 'current' process. in ttys to write the escape sequences atomically. some problems in the symbolic link names of the ISO9660 filesystem. a missing buffer release in ISO9660 filesystem superblock. some in the floppy driver. Small and cosmetic changes.
0.9.111 Dec 2017 06:05 major bugfix: Added full support of Minix v2 filesystem. Improved the initialization procedure of the keyboard driver. Improved filesystem permission semantics. Improved protection checking in every single system call. Improved the hard disk ATA driver. Included the file /proc//mountinfo to support GNU coreutils. a missing acknowledgement in an spurious interrupt. a missing tty output flush at the end of console_flush_log_buf(). a in /dev/lp driver that prevented write data in parallel port. a in namei() with filenames bigger than NAME_MAX. a in namei() to return -ENOENT if filename is NULL. to include a default 0022 umask in INIT. the mask during the creation of a directory in the Minix filesystem. to not wake up a process if its pending signals are blocked. to ignore the SIGCHLD signal by default. to avoid trying to flush on disk virtual inodes (i.e. from PIPE_DEV). a missing inode_unlock() in file_read(). a bad block size assignment when sharing disk and CDROM in the same major device. to stay with 32bit addresses in bios_map_init(). a bit the buffer management. a missing inode release in sys_open() when opening an unexistent file. a missing inode release in is_pre(). in sys_open() to return ENOENT instead of ENOTDIR when O_CREAT is set. a in pipe_read() that prevented reading completely the buffer. a lot of system calls. New system calls: sys_fdatasync (as an alias of sys_fsync).
0.9.006 Aug 2017 07:05 major bugfix: Completed full support of Minix v1 filesystem. Improved the buffer cache from the new page cache. The former is now only to cache disk blocks and optimize disk I/O, and the later will cache pages of. Files to optimize file I/O. Added two new methods in the VFS (read_block and write_block) to be able to. Differentiate more elegantly between i- dev and i- rdev. Added disk change detection in floppy driver. Added the BLKFLSBUF ioctl. Added a do_sched() in the reclaim_buffers() loop to gain responsiveness. Added file locking mechanisms BSD and POSIX (whole file and advisory only). Removed an extra and useless call in some mmap()ed files. Some code in the CDROM initialization. The return value in ide_cd_read(). to be able to read a whole CDROM using direct block I/O. The number of error retries while reading IDE devices. to remember the current color attribute in consoles when erasing lines. to be able to detect the floppy drive slave only. The ioctl VT_OPENQRY to return the value according to its size. a kernel panic when reading /dev/mem and /dev/kmem. to free an inode in minix_mknod(). in elf_loader() to memcpy_b() only the blksize of the buffer instead of PAGE_SIZE. Some problems on early kernel panic. Small and cosmetic changes. New system calls: Sys_rename (write support) Sys_mmap (write support) Sys_munmap (write support) Sys_mprotect (write support) Sys_flock Sys_fsync
0.8.526 Jan 2017 15:25 minor bugfix: Rewritten some parts of the elf_load() function to be able to support up to ARG_MAX argument size. Added more protection to control the strings passed in all system calls. Improved the INIT process start up. a small in minix _dir_readdir() function. a bad offset counting in ext2 _dir_readdir() function. in printk() function to be able to print the ' ' character. a introduced in the last version while ing the infinite loops. When there are no more memory pages. The prologue and epilogue in some assembler functions. a lot of long standing problems in the namei() function which also. Forced to rewrite code in most filesystem related calls. a missing iput() of the INIT binary inode before calling sys_execve(). During the init process. a long-standing that corrupted the buffer cache when the old buffer. Was not removed (under certain circumstances) from its hash queue. Small and cosmetic changes.
0.8.403 Sep 2016 21:05 minor bugfix: Added to invalidate inodes on every sys_umount() which some. All fs _bmap() functions to return correctly the error code. to assign 'sb- dev' to 'i- rdev' during the ialloc() function. Mktime() to return correctly the current date and time. The value of st_blocks in sys_newstat(), sys_newlstat() and. Sys_newfstat() in filesystem that do not store the total blocks used by an inode (e.g. Minix). a long standing in fs _dir_readdir() functions. Infinite loops when there are no more memory pages in kernel-mode. a race condition in pipefs_write(). an uninitialized block in minix_mkdir(). to not grow the directory size when reusing directory entries. a buffer corruption during reclaim_buffers(). New system calls: Sys_creat (write support) Sys_open (write support) Sys_write (write support) Sys_truncate(write support) Sys_ftruncate(write support)
0.8.326 Jun 2016 12:45 minor bugfix: Added to include the new inode into hash in ialloc(). Sys_umount() to sync all inodes before umounting the device. to correctly write all the dirty inodes in sync_inodes(). to correctly write all the dirty buffers in sync_buffers(). in iput() to remove inode from hash if 'i_nlink == 0'. Inode counter usage in do_namei(). Some in do_namei() and get_basename(). User_syscall() assigning correctly the values to each register. Some strange behavior when compiled with -O0 flag. The file_read() function in all filesystems in order to support holes. More code cleaning. New system calls: Sys_link (write support) Sys_mknod (write support) Sys_symlink (write support) Sys_mkdir (write support)
0.8.226 Mar 2016 03:15 minor bugfix: Removed inline assembly code in the context switch mechanism. Added the ifree() method in pipefs. Reorganized more parts of the VFS code. Added a schedule check during the tty_write() loop. Included an extra argument in the bread() function. the sys_fchown() system call number. some signess comparison. the inode counter in iget(). to initialize the superblock pointer in the inode structure in iget(). sys_write() system call to prevent negative values in count. to prevent mounting a filesystem on top of another one. VFS methods for symbolic links in the procfs. a bad behavior in do_sched() caused by its call from tty_write(). More code cleaning. New system calls: sys_rmdir (write support) sys_unlink (write support).
0.8.124 Jan 2016 08:05 minor bugfix: Added support for the Minix v1 filesystem. Reorganized several parts of the filesystems code. Reorganized all kernel configurable options. Improved sys_mount() and sys_umount() system calls. The spurious interrupts treatment. Sleep() to honour uninterruptible processes. to force using get_device() in some parts of the kernel. Execution permissions in sys_execve(). a race condition in the buffer cache. More code cleaning. New system calls: Sys_chmod (write support) Sys_fchmod (write support) Sys_chown (write support) Sys_fchown (write support) Sys_utime (write support)
0.8.022 Nov 2015 15:45 major bugfix: Improved the context switch mechanism and GDT initialization. Added block level write support and buffer synchronization. Added write support to RAMDisk driver. Added write support to floppy driver. Added write support to hard disk driver. Improved floppy, hard disk and CDROM drivers. Improved the del_callout() function to compare also the argument value. a panic in do_page_fault() caused by using the V2P macro directly on a kmalloc() when running out of memory. to prevent writing on a block device beyond its size. a long standing which caused collisions in the callout table and some processes were never waked up. a race condition when using two floppy drives simultaneously. to check if kmalloc() returns NULL during ELF load interpreter. a bad calculation of free buffers in '/proc/meminfo' which confused the. 'free' command. a long standing memory corruption in proc_listdir() and proc_listfd() of the proc filesystem. the ide_delay() function which prevented detection of some IDE drives. the outport_sw() function. keyboard on certain old motherboards with Vortex86 processor. the inode count in some places. Small and cosmetic changes. New system calls: sys_ftime, sys_sync.
0.7.914 Sep 2015 03:15 minor bugfix: Improved the mechanism when kernel runs out of memory pages. Improved the ELF loader and numerous. Added support for ioctl TIOCLINUX function 12 (get console type). Removed a dollar prefrom 'need_resched' operand, treating it now as a. Direct-address operand instead of an immediate operand which caused to Continue rescheduling all the time. More improvements in the kernel panic procedure. Added numeric only left-justification capabilities to printk(). Improved and partially rewritten the system calls sys_mmap() and sys_munmap(). The expand_heap() function to be much more efficient. a bad type definition that generated a value overflow in the. Release_binary_pages() function. a lot of when kernel runs out of memory. Sys_nanosleep() system call to not block if timeout is zero. to not count the cpu quantum in the idle process. to do nothing in the default case for the SIGCHLD signal. The sys_pause system call to not return on ignored signals. to discard any pending stop signal (SIGSTOP, SIGTSTP, SIGTTIN, SIGTTOU) if SIGCONT signal is generated, and vice versa. a bad minor number generation in /dev/hd a,b,c,d devices. a kernel panic due to an offset-related in /dev/ram. a long standing memory corruption in printk() and sprintk() with. Strings longer than 1024 bytes. Some in sys_brk() system call. to not free reserved memory pages. Small and cosmetic changes.
0.7.806 Apr 2015 09:16 major bugfix: This is another release that introduces numerous bugs fixes (some of them long standing ones) and continues with memory subsystems rewrite. The buffer cache is now much more efficient and this is indeed visible on very constrained systems like an i386 with 4MB of RAM. There is still more work to do pending for the next release in the memory management, specially in the page cache and in the sys_mmap() and sys_munmap() system calls. I continue working on kernel stability to include the Minix filesystem with write support. As always, see the ChangeLog for the rest of details.
ManageYou can also help out here by:
← Update project
or flagging this entry for moderator attention.