Search logs:

channel logs for 2004 - 2010 are archived at http://tunes.org/~nef/logs/old/ ·· can't be searched

#osdev2 = #osdev @ Libera from 23may2021 to present

#osdev @ OPN/FreeNode from 3apr2001 to 23may2021

all other channels are on OPN/FreeNode from 2004 to present


http://bespin.org/~qz/search/?view=1&c=osdev&y=19&m=2&d=4

Monday, 4 February 2019

12:44:38 <doug16k> I love the way dn is up upside down
12:47:50 <klys> umop 3p1sdn
12:48:25 <klange> bouncing off the ceiling, inside out, stranger to this feeling~
12:48:42 <klange> got no clue, what I should do, but I'll go crazy if I can't get next to you
01:46:41 <nyc> https://www.linux-mips.org/wiki/QEMU#Memory_map <--- QEMU emulates a simple machine with ISA-like bus. ISA IO space mapped to the 0x14000000 (PHYS) and ISA memory at the 0x10000000 (PHYS, 16Mb in size). All peripherial devices are attached to this "bus" with the standard PC ISA addresses.
01:48:07 <klys> so find us a mips board with an isa slot... :.)
01:48:44 <nyc> I guess the qemu implementors were more familiar with PC peripherals.
01:49:23 <Mutabah> Probably that, and it's simpler to do it that way :)
01:49:30 <klys> that ought to happen to riscv too
01:59:10 <pounce1> if EFER.PMA = EFER.PME = 0 then am i in protected mode?
01:59:58 <bcos_> pounce1: Could be in real mode..
02:01:09 <pounce> hmm
02:01:31 <pounce> i suppose i could do another test to make sure im not in 16 bit mode, but things look like im in 32 bit mode
02:05:39 <pounce> ok gonna see if this works on actual hardware
02:13:44 <pounce> blackscreen -_- well at least it works in qemu
02:39:53 <jmp9> I accidentally burn my jacket with cigarette
02:40:11 <jmp9> so guys, never smoke
02:40:17 <jmp9> smoking can burn you alive
04:09:59 <doug16k> I suppose I should go through the full thing and make a ramdisk "controller device" that enumerates ramdisk "drives", the add a cpio partition recognizer and mount the initrd like a proper filesystem
04:11:38 <klys> doug16k, how's that feature list
04:12:05 * bcos_ starts imagining a "for(myPointer = 0; myPointer < MAX_PHYSICAL_ADDRESS; myPointer++) { is_RAMDISK_here(myPointer); }" enumeration loop
04:12:44 <klange> I expose ramdisks as /dev/ram{n}, but no block device partition enumeration at that level; root=/dev/ram0
04:13:56 <clever> doug16k: i think the old-style initrd's where just ext2 images that where mounted via /dev/ram0
04:14:17 <clever> the modern ones are like you mentioned, cpio archives, unpacked to a tmpfs
04:14:43 <klange> I have a filesystem driver for tarballs.
04:14:55 <klange> But I unpack to an in-memory tmpfs for better flexibility and write support
04:14:58 <clever> heh, but how do you write to the initrd?
04:15:05 <clever> yeah, that makes sense
04:15:48 <klange> That happens in userspace, so the ramdisk gets mounted as a read-only filesystem first, init starts, and one of the init stages unpacks and shuffles root
04:17:20 <klange> specifically this one https://github.com/klange/toaruos/blob/master/base/etc/startup.d/01_migrate.sh
04:18:03 <clever> something ive done with ipxe, but i have no idea how the bootload<->linux api works, is specify multiple initrd's
04:18:19 <clever> linux will unpack each of them to the tmpfs in order
04:18:40 <klange> I could do that...
04:18:48 <clever> ipxe also has support, to dynamically generate an initrd with 1 file
04:19:24 <clever> initrd /initscripts/deploy.sh /sbin/init mode=755
04:19:31 <klange> I have passed a static binary as a "ramdisk" to my kernel and marked it as init=/dev/ram0, 'show my "netboot" thing works
04:19:37 <clever> this will grab /initscripts/deploy.sh from whatever dir the pxe script is in
04:19:45 <clever> then generate an initrd, that has it at /sbin/init
04:19:47 <klange> s'how*
04:19:49 <clever> and add it to the list
04:28:08 <klange> https://i.imgur.com/LTvxN2X.png
05:33:52 <geist> doug16k: for initrds there's a lot of value to having an in memory memfs vs a memory based block device
05:34:20 <geist> it can be more flexible to just unpack the cpio bits or whatnot into a memfs, essentially pre-populating it
05:36:51 <doug16k> right I really don't need enumerator facilities
05:37:22 * klange has been pretty happy with their approach.
05:38:45 <doug16k> as in, enumerate storage interfaces, enumerate them for drives, enumerate them for partitions...
05:39:12 * klange wonders just how many people have them on ignore these days...
05:39:19 * klange wanders off to get something to drink
05:39:26 <doug16k> klange, not me
05:39:53 <geist> it snowed today here
05:40:00 <geist> which is rare. so it's white outside
05:40:01 <geist> yay
05:40:06 <klange> It was 18°C (64°F) today.
05:40:34 <geist> wow, is that usual this time of year?
05:40:48 <geist> i've heard the summers can be pretty hot in tokyo
05:42:06 <klange> This is fairly abnormal for January. We see highs around 31 in August, but it's mostly humidity you have to worry about.
05:42:19 <geist> yah
05:42:24 <geist> that makes sense
05:42:34 <geist> it's rainy in the summer though, right?
05:43:19 <klange> It is.
05:43:39 <klange> I appreciate the mild winters, though.
05:43:42 <geist> lots of asia's that way. rainy in the summer. opposite here west coast whereall the moisure is in the winter seasons
05:44:16 <geist> i guess that's the main thing behind 'mediterranian climate' or something
05:46:27 <klange> I have a crazy week ahead, so at least there's some good weather sprinkled into it...
05:56:18 <doug16k> klange, sorry I was distracted by bcos' insulting comment
06:14:39 <ybyourmom> What you do is you PM bcos_ and tell him what's what
06:15:00 <ybyourmom> Tell him you don't take that kinda trash talk from people hiding behind their keyboard on the internet
06:15:26 <ybyourmom> Tell him you're a real tough guy and if he doesn't watch out you'll send your goons after him, let him know whom he's dealing with early
06:15:59 <ybyourmom> Then you serve him with a notice and demand letter followed by a cease and desist letter followed by an intent to sue
06:17:32 <ybyourmom> Then you let him know you'll put him under, on the street, you'll take him for all he's got; he'll be 90 years old and still working to pay off the debt from the suit you'll file and you'll still pass by his street corner in the morning to check and see if he got even one cent from begging that day
06:18:28 <ybyourmom> and if he did so help you god (and your $10K/mon attorney) you'll file a lien on his income and collect that cent
06:19:00 <ybyourmom> Then an only then will this little cute mouthed tongue in cheek aussie kid learn his place in the picking order
06:19:47 <ybyourmom> And then when he's being lowered into the grave to make sure he doesn't forget in the afterlife you file a lien on the cufflinks on the suit they dressed the body up in.
06:20:35 <ybyourmom> Or not. Maybe you're not a tough guy. Maybe you're all talk. Kiddo.
06:25:44 <Mutabah> ... what the bacon?
06:31:06 <nyc> ... and now for bitbanging serial IO on qemu MIPS.
06:53:01 <nyc> Gang scheduling looks like a necessary thing to have.
06:54:44 <bcos_> nyc: I which way?
06:55:15 <nyc> bcos: Virtualization hosts guest kernels that busywait.
06:56:04 <bcos_> Ok
06:57:18 <nyc> Userspace may also want to use busywaiting synchronization primitives to avoid context switching overheads.
07:00:10 <bcos_> (security is another reason to want some kind of gang scheduling - e.g. harder for code in one VM to steal data from another VM using timing side channels if both VMs don't run at same time)
07:01:17 <aalm> cache_temp++;
07:01:47 <aalm> morning
07:01:57 <ybyourmom> It becomes a bit burdensome on SMP because you have to ensure two VMs in different time containers aren't scheduled to run in parallel on different CPUs
07:03:44 <nyc> It's literally only possible on SMP.
07:04:00 <nyc> It doesn't exist anywhere else to not be burdensome there.
07:06:31 <ybyourmom> No, time containers are important on UP builds because you can observe timing differences from one thread scheduled on the CPU, and use that to make inferences about what the other thread was doing
07:06:59 <nyc> Time containers are not gang scheduling.
07:07:38 <ybyourmom> Lemme make sure I got my terminology correctly: Gang scheduling is where you have a hierarchical scheduling policy where each group of threads is organized into a "gang", of subtime-slices?
07:08:13 <nyc> https://en.wikipedia.org/wiki/Gang_scheduling
07:08:18 <nyc> ybyourmom: No.
07:08:39 <nyc> ```In computer science, gang scheduling is a scheduling algorithm for parallel systems that schedules related threads or processes to run simultaneously on different processors. Usually these will be threads all belonging to the same process, but they may also be from different processes. For example, when the processes have a producer-consumer relationship, or when they all come from the same MPI program.```
07:08:47 <ybyourmom> Ah, np np I was thinking of the wrong abstraction
07:13:28 <nyc> The Wikipedia article actually has its top two links dead.
07:13:34 <nyc> http://www.cs.huji.ac.il/~feit/parsched/jsspp96/p-96-6.pdf works though.
08:07:23 <nyc> Multipath IO seems like another must-have.
08:27:58 <geist> multipath
08:28:04 <geist> leelo multipath
08:45:00 <nyc`> NFI how I could get my hands on FC hardware.
08:58:36 <kingoffrance> ebay? close to nyc == no shipping but gas
08:58:54 <nyc`> I think some TCP/IP networking is also effectively multipath IO.
08:59:58 <nyc`> kingoffrance: I don't have the space or power etc. to do anything with personally owned hardware above laptops.
09:01:54 <kingoffrance> iscsi does multipath if you are talking linux https://www.tecmint.com/setup-iscsi-target-and-initiator-on-debian-9/ seems to be you can run your own "server" on just about anything
09:02:11 <w1d3m0d3> how to implement networking 1o1: /dev/net/ipv4/127/0/0/1/80/tcp
09:02:57 <nyc`> There was some sort of scheme where per-node NIC's were treated as alternative routes to get packets out so that when a process migrated between nodes it would just do all its network IO through the node-local NIC.
09:05:56 <kingoffrance> well, i have setup multipath and linux interface "bonding" for redundancy/failover (or even speed), can be combined with multipath. but i know nothing about process migration across nodes.
09:07:12 <nyc`> The big thing it was really used for in my day was having node-local NIC's and FC adapters.
09:07:42 <kingoffrance> basically when i was an "admin" such things i never saw, only set up remotely...i didnt exactly have hardware at "home" :)
09:08:27 <nyc`> I never had such things at home. They were all in the labs at work.
09:09:56 <kingoffrance> "node local nic" doesnt make sense to me. you mean like a box running virtualization or something, with a guest-specific nic/port? or you just mean local LAN (DMZed behind firewall) and also an NIC with internet IP(s) (perhaps only selective ports) ?
09:10:08 <kingoffrance> define "node" :)
09:10:44 <nyc`> kingoffrance: A NUMA node.
09:10:45 <kingoffrance> or you talking VMS :)
09:11:05 <kingoffrance> out of my league :/
09:14:44 <nyc`> Local PCI was as fast as PCI on a PC. PCI on a remote node was faster than doing anything like network IO etc. but a great deal slower than node-local IO.
09:17:32 <clever> that reminds me of something i saw about numa a while back
09:17:55 <clever> a given cpu has 128 pcie lanes, and can either operate 128 pcie lanes directly, in a single-socket motherboard
09:17:57 <nyc`> So people would basically put node-local IO devices on every node.
09:18:18 <clever> or, the otherboard can route 64 lanes from each socket, to the other socket, and then 64 lanes from each socket, go to the pcie slots
09:18:28 <clever> so half the pcie slots go to each cpu socket
09:18:42 <clever> and internally, half the lanes on each cpu, go to the other cpu, and act as an inter-connect
09:18:54 <clever> but you still get the same total lane count on the pcie slots
09:19:12 <clever> and yeah, this is where node-local NIC's could come into play, if you know the mapping
09:19:57 <clever> i can also see such a setup leaving half the pcie slots dead if you only install 1 processor
09:20:16 <clever> but i did just have a crazy idea, a dummy "cpu" that just connects the pcie lanes up, to the other socket!
09:20:33 <clever> would have to be designed around the routing that motherboard did, but it could be done...
09:20:57 <clever> it would be an entirely passive "cpu" that just cross-connects the lanes in a socket
09:22:26 <nyc`> It was easy to tell on Sequent boxen. I think each node was a full-height in the rack.
09:23:12 <clever> ah, nice
09:24:11 <nyc`> Only four could fit in each rack, so you could have four racks of them.
09:25:03 <clever> how flexible was it in terms of node count? node hotplog?
09:26:56 <nyc`> No node hotplug, no. It could go up to 16 nodes. It was awkward because people weren't ready for NR_CPUS > BITS_PER_LONG on 32-bit.
09:27:58 <clever> nyc`: what if you ran a hypervisor that could deal with that, and then partition the machine up into smaller sections?
09:29:01 <nyc`> clever: That's basically not dealing with the problem, and there was no hypervisor anyway.
09:33:01 <nyc`> The firmware could just break it up into smaller sections while powered off.
09:46:56 <mobile_c> is a memory map related to the software/OS or the hardware
09:47:04 <nyc`> It defeats the point regardless: you simply don't have a system that size.
09:48:05 <nyc`> mobile_c: Both. It's set up by firmware but describes hardware.
09:48:42 <mobile_c> how would i interperate a memory map
09:48:46 <mobile_c> for example, https://www.amigacoding.com/index.php/Amiga_memory_map
09:51:03 <nyc`> mobile_c: I can't websurf on cellular data, but basically just maintain a set of disjoint intervals to represent physical memory.
09:51:25 <mobile_c> rip
09:52:57 <nyc`> Maintain a set of (start, length) pairs.
09:54:13 <nyc`> Or (start, end) pairs.
09:57:23 <nyc`> It's probably pretty close to what's in the memory map to begin with.
10:10:46 <kingoffrance> i thought mobile_c meant in a broad sense "what does it all mean?"
10:13:10 <nyc`> It's a disjoint union of intervals of physical addresses?
10:22:15 <kingoffrance> as in "where do i link/place my code?" which would seemingly be chip ram and/or fast ram
10:39:48 <nyc`> Is zfs the end-all be-all of fs's? I wonder.
10:42:52 <nyc`> I know more about xfs and was generally happy with its design.
10:48:03 <nyc`> If you think I'm in the dark about fs's, wait until you see how pig ignorant I am of networking.
11:02:04 <mrvn> kingoffrance: chip ram is the onboard ram with a 16bit data bus. It's shared with the gfx card and the CPU only gets every second cycle. It's slow. Linux ignores that ram alltogether except for the framebuffer.
11:06:25 <mrvn> nyc`: zfs lacks the feature to reshape raid levels and properly implemented encryption. Otherwise it's pretty good.
11:06:47 <mrvn> implementation wise the ARC cache sucks major on linux.
11:27:10 <nyc`> mrvn: I don't understand why it's using checksums instead of error-correcting codes.
11:27:43 <nyc`> Reed-Solomon and the like exist for these things.
11:28:05 <nyc`> Goppa codes, too, I think.
11:30:40 <nyc`> There are also Lagrange polynomial affairs where RAID sorts of things can ensure data survives if k or more out of n disks survive etc.
11:32:13 <nyc`> So this thing about only 3 disk failured tolerated is weird, as is the checksum weirdness.
12:04:28 <glauxosdever> Will no forum moderator delete that topic? I don't feel at ease posting in a forum where trolls misinterpreting religious texts are given room.
12:05:14 <lkurusa> do we have any moderators active at all?
12:05:28 <glauxosdever> Supposedly
12:06:11 <glauxosdever> 3 of them joined since 1st February
12:06:56 <glauxosdever> And one joined today
12:07:04 <lkurusa> Odd
12:07:24 <glauxosdever> And this topic has been there since 31st January
12:08:49 <Mutabah> ... dafuq
12:09:16 <Mutabah> I mean... it is in "General Ramblings", and there doesn't seem to be much flaming?
12:10:25 <glauxosdever> So you are actually ok with that topic there???
12:11:21 <Mutabah> I haven't read it enough to know, I just skimmed
12:11:51 <glauxosdever> I'll repeat my concerns. I don't feel at ease posting in/belonging to/reading a forum where trolls misinterpreting religious texts are given room
12:11:51 <Mutabah> Plus... I'm adverse to just deleting threads that people have posted in...
12:12:17 * lkurusa grabs lunch
12:13:12 <Mutabah> I wonder if the shadow topic will remain if I move it to a hidden forum?
12:13:31 <glauxosdever> I think not
12:13:59 <glauxosdever> But I can't guarantee it
12:14:12 <Mutabah> fuck it.
12:14:40 <Mutabah> mind refreshing "General Ramblings"?
12:15:18 <glauxosdever> Ok, it doesn't appear there
12:15:29 <Mutabah> Awww
12:15:31 <glauxosdever> But it still appears in the main page
12:15:51 <Mutabah> Huh... that's... the opposite of what I wanted
12:16:10 <Mutabah> I wanted the shadow to be there, but the "last post" to be changed
12:16:18 <Mutabah> (So people would know that it's been null-ed)
12:16:50 <glauxosdever> Did you move it to /dev/null or whatever that hidden forum is called?
12:17:28 <aalm> why not just ignore trolls?
12:20:51 <glauxosdever> aalm: Because 1) the topic is being handled now by a moderator despite being there already 4 or 5 days, 2) such topics don't make osdev look good (like the recently removed link to the discord server) and 3) the concerns I expressed two times already
12:22:27 <Mutabah> yep
12:28:56 <klange> I reported that thread when it first cropped up. I believe my report message was "wtf"
12:29:36 <glauxosdever> klange: When did you report it?
12:30:02 <klange> Given only one user can report a post, before anyone else tried to.
12:30:18 <klange> Only the first post was up.
12:30:31 <klange> I actually felt weird about posting a comment in it having reported it...
12:33:05 <glauxosdever> I tried to report it yesterday when I saw it (you had reported it already), so I asked here yesterday to have it removed (no moderators active, except a former moderator (Brendan)). I saw today it's still there, so I asked again and also posted a reply in case no one was here to respond
12:33:44 <klange> Well someone has now moved it to the mod-only forum...
12:33:48 <klange> Was that Mutabah?
12:33:55 <glauxosdever> Yes
12:34:53 <klange> I have... expressed my desire to see more active moderators on the board. Notwithstanding the reapparance of a few during that heated discussion several months ago, it seems many of the moderators are no longer active or independently contactable.
12:35:21 <lkurusa> klange: were you not like nominated a while back?
12:35:36 <lkurusa> why are you not a mod lol
12:36:24 <klange> 🤷
12:37:27 <glauxosdever> We need to tell approved moderators to resign in case they don't have time anymore, so there don't just fill up the list making us think there are lots of moderators
12:37:37 <lkurusa> glauxosdever: +1
12:39:25 <glauxosdever> Or, they should do it themselves, i.e. "Sorry, I won't have much time from now on, I started a new job and it's 9-7. It's very tiresome and it doesn't let me to do anymore moderation. Please make X a moderator instead"
12:40:12 <glauxosdever> (Last part optional and not always satisfiable)
12:40:20 <Ameisen> X the Eliminator?
12:40:24 <glauxosdever> :D
12:40:32 <glauxosdever> Eliminate the trolls!
12:40:55 <Ameisen> https://i.imgur.com/a7sPUbc.jpg
12:41:29 <lkurusa> :D
12:41:32 <glauxosdever> I don't know that one, sorry
12:41:48 <Ameisen> He's X. The Eliminator.
12:57:35 <mobile_c> how do i register a new binfmt
12:57:57 <mobile_c> as cat X > /proc/sys/binfmt/register gives error invalid argument
12:58:32 <lkurusa> => #linux or #kernel
12:59:04 <lkurusa> but it's probably giving you EINVAL because, well, the formatting of X is wrong
01:01:02 <Mutabah> klange: Yeah, I moved it to the mod forum
01:01:43 <mobile_c> specificallt i get this
01:01:45 <mobile_c> [ blackarch@root binfmt.d ]# cat ./qemu-static.conf > /proc/sys/fs/binfmt_misc/register
01:01:46 <mobile_c> cat: write error: Invalid argument
01:01:48 <mobile_c> [ blackarch@root binfmt.d ]#
01:03:40 <lkurusa> read the manual
01:03:44 <lkurusa> that's not how you use it
01:04:17 <lkurusa> :name:type:offset:magic:mask:interpreter:flags
03:58:02 <nyc`> It seems tough for me to make the connection between religion and osdev. I think someone did make a religious Linux distribution at one point, but I think it's mostly userspace, to put it kindly.
04:00:28 <pounce> does bochs work for x64?
04:07:05 <nyc`> Does it emulate it?
04:08:36 <pounce> yeah
04:08:51 <pounce> it looks like i booted up to long mode, so im assuming it does? (that or my feature checking is wrong)
04:10:03 <nyc`> I guess that answers both possible questions. The other being whether it functions as an x64 program.
04:12:23 <pounce> hmph, triple faulting here too
04:18:10 <pounce> blehhh i guess ill set up an idt
04:30:01 <nyc`> I'm trying to do some serial IO without interrupts on qemu MIPS here. Mostly I just don't remember how serial ports work. It's emulating PC serial ports on MIPS, so it would all carry over.
04:35:19 <pounce> uh oh i need to figure out my code selector
04:35:36 <pounce> i still have no idea how the gdt works
04:37:14 <mrvn> nyc: I assume the bootloader sets up serial. Then you have a data register and a status register. The status register has a bit say when you can write a byte to the data register. Then you write it and the hardware sends it out.
04:37:26 <mrvn> same for reading.
04:37:28 <lkurusa> pounce: you just set it up once and mostly forget about it until much much later
04:38:21 <mrvn> pounce: you need a null selector, 64bit kernel/code, 32bit kernel/code and a tss selector. You set them up once and never think about it again.
04:39:19 <pounce> yeah that's pretty much what i do. however it keeps coming up now that im adding a userspace
04:39:36 <pounce> also rn im trying to make an IDT in assembly to test something, so i have to figure out my code selector
04:43:42 <mrvn> s,kernel/code,kernel/user, I mean.
04:43:54 <mrvn> You need a code and data segment each.
04:50:27 <pounce> hmph, nasm doesn't like me doing bit arithmetic to labels
04:53:30 <pounce> i guess i have to set it up on runtime
05:07:27 <mrvn> the linker doesn't support that. But why would you need to?
05:11:13 <pounce> oh yeah that makes sense. im building my IDT so i have to get offsets to the interrupt handlers
05:12:03 <mrvn> offsets are just additions and subtractions
05:12:50 <pounce> sorry, i mean i need bits 16-32 and 32-64
05:13:19 <mrvn> pounce: iirc they are continous
05:15:25 <pounce> well it doesn't really matter since i can't use the shift operator
05:16:23 <mrvn> I just build the IDT in C and let the compiler worry about it.
05:17:24 <pounce> yeah im just trying to test something so i don't want all this c baggage
05:20:05 <pounce> hmm, is there any way to make bochs print interrupts instead?
05:22:32 <froggey> you can enable debug logging for the cpu through the config menu, then bochs will print out a whole bunch of info
05:33:28 <kingoffrance> glauxosdever: that "religious metaphor" post i would likely be against "bad metaphor, makes things more complex" however, the debate over illuminated man pages/docs is a known controversy. https://www.amazon.com/Starting-Forth-Introduction-Professionals-Prentice-Hall/dp/0138430799 https://en.wikipedia.org/wiki/Illuminated_manuscript
05:33:50 <kingoffrance> many ppl hated that book, for being too "kiddie" illustrations
05:34:01 <glauxosdever> Sigh.
05:37:36 <nyc> Isn't there some sort of firmware that uses Forth?
05:38:46 <clever> https://github.com/siraben/zkeme80
05:38:56 <clever> nyc: this runs forth on a ti calculator
05:39:13 <clever> an emulator can also be used to test it on a pc
05:40:00 <nyc> It's some sort of stack thing isn't it?
05:40:22 <clever> dont really know much about forth, i just helped to package the whole emulator&compiler under nix
05:44:05 <mrvn> doesn't openfirmware specs use forth?
05:44:54 <mrvn> nyc: forth is a very simple stack machine language.
05:45:37 <nyc> mrvn: That is probably the one.
05:55:42 <kingoffrance> "when you type characters at unix, a gnome deep in the system gathers them and stores them in a safe place" (buffered IO). most people dont know, theres always been a unix gnome, but ive never seen illustrated https://www.tuhs.org/Archive/Distributions/Research/Dennis_v5/v5man.pdf
05:56:04 <kingoffrance> gnome desktop broke the metaphor too :/
05:56:32 <nyc> heh
05:56:52 <mrvn> kingoffrance: It's not a gnome, it's an Imp locked in his prison cell U16650.
05:57:24 <mrvn> kingoffrance: what page?
05:57:51 <glauxosdever> kingoffrance: I want to ask you seriously. What are you doing actually with your time?
05:58:36 <glauxosdever> How much is twelve plus eight?
05:58:51 <mrvn> A-teen.
06:01:01 <glauxosdever> mrvn: :D
06:02:07 <glauxosdever> I guess we have a bot.
06:03:03 <mrvn> Life, don't ask me about Life!
06:04:40 <glauxosdever> mrvn: Actually, let's ask them
06:05:41 <glauxosdever> But they seem to be pretty bad for a bot. They don't even seem to interact
06:07:39 <glauxosdever> .theo
06:07:39 <glenda> Thanks.
06:07:48 <glauxosdever> .theo
06:07:48 <glenda> Since you don't supply diffs, you are a waste of skin.
06:07:58 <glauxosdever> That
06:08:04 <glauxosdever> 's very rude
06:09:06 <mrvn> manners - Error: failed to load module
06:10:00 <glauxosdever> mrvn: Actually, the manners module has been maliciously replaced :p
06:19:58 * geist yawns
06:20:22 <glauxosdever> ELTORITO!
06:23:26 <nyc> Yes, it's the little bull.
06:25:12 <glauxosdever> https://wiki.osdev.org/El-Torito
06:25:43 <geist> EL TORITO!
06:25:51 <glauxosdever> :D
06:27:59 <geist> also you're pretty chatty today glauxosdever, who did they replace you with?
06:31:11 <glauxosdever> geist: Nah, I'm recovering from an illness. I can't program much yet (experimenting with writing a BIOS for QEMU for fun), so I'm here and chatting
06:31:56 <geist> ah, well that'll do it
06:33:20 <glauxosdever> Amusingly, there aren't many useful resources for writing a BIOS, like for writing an OS
06:33:53 <geist> yah, nope
06:33:56 <glauxosdever> Pretty sure I'm not the only one that's crazy enough to do that for fun
06:34:15 <geist> most folks doing the bios replacement thing are more into doing something like just directly booting linux
06:34:27 <geist> there was a push for that years ago
06:35:34 <nyc> LinuxBIOS was big on reboot times.
06:36:20 <glauxosdever> Coreboot?
06:36:56 <nyc> It looks like they renamed it.
06:39:57 <mrvn> reboot - the thing you do once a year when you need to vacuum the dust out of the enclosure.
06:40:02 <glauxosdever> I also suspect that the reason there aren't many BIOSdev resources is that hardware is so vastly different that a specialised BIOS for everything would be needed. But at least the "standard" legacy stuff and emulators should be covered
06:40:56 <mrvn> glauxosdever: you need to at leats support standard bootroms.
06:41:40 <glauxosdever> E.g. VGA?
06:41:54 <mrvn> e.g. SATA controller, NICs
06:42:10 <mrvn> anything that comes with their own rom
06:42:25 <glauxosdever> Right
06:43:27 <mrvn> and they expect the standard bios calls to work so there is no much freedom for your BIOS.
06:43:55 <glauxosdever> Even so, it should be fun
06:44:14 <mrvn> if by fun you mean painfull 16 bit code then yes.
06:46:55 <glauxosdever> Well, 16-bit x86 code is painful because of its segmentation. But doing experiments and then ditching them can be fun
06:47:08 <glauxosdever> Maybe we should make a BIOSDev department?
06:48:44 <glauxosdever> (Assuming of course there are at least 3-5 people here that have tried to write a BIOS)
06:49:35 <mrvn> glauxosdever: better implement an UEFI
06:50:15 <glauxosdever> That's harder, and I don't really want to invest more than a couple of weeks
07:17:24 <kingoffrance> nyc: i did find numalink (unsure how that differs from sequent numa) in sgiland was also/formerly known as "craylink" and implementations goes back to stanford hase (add on boards for sgi machines) http://www.icsa.inf.ed.ac.uk/research/groups/hase/models/
07:17:43 <kingoffrance> alas, not reall full emulators to my knowledge, but cpu simulators. i was hoping to find an emulator :/
07:18:08 <nyc> kingoffrance: SGI had much more performant designs.
07:18:08 <kingoffrance> looks like doesnt simulate all components, but enough to run simple code
07:19:18 <kingoffrance> origin 200 or so is small 2-nodeable sgi numa system...but ebay prices dont look promising
07:20:14 <kingoffrance> 10-15 years back ebay prices might have been reasonable, looks like they are milking ppl dry nowadays
07:23:43 <nyc> kingoffrance: They're getting to be so old they're getting premiums for being among the last surviving hardware of the kind.
07:25:25 <nyc> kingoffrance: IIRC SGI had cache directories and more normal topologies. Sequent had no cache directories and a unidirectional ring topology.
07:28:05 <kingoffrance> correction : "stanford Dash cluster" was the addon board. hase simulates parts of it
07:49:12 <kingoffrance> ~10-15 years ago a more or less populated "challenge" was only ~$500. the shipping killed me. https://en.wikipedia.org/wiki/SGI_Challenge the moral is: dot com crash == time to buy used hardware
07:49:52 <kingoffrance> now its nothing, but as someone else said, smp was a server thing, 'cores" were not a desktop thing at the time
08:12:50 <mrvn> kingoffrance: it's still kind of true. Show me a desktop with 2 sockets.
10:06:40 <jmp9> Ok guys. I've decided to create simple 32-bit for my newbie learning experiments. And I got question when i write my bootloader
10:07:02 <jmp9> How I can calculate how much cylinders and cylinders per head (tracks per head) on current drive
10:07:24 <glauxosdever> Where are you booting from?
10:07:31 <mrvn> 1) skip the bootloader, 2) forget about CHS
10:07:47 <jmp9> I want write it to USB flash drive and easily run on real hardware
10:07:53 <mrvn> Use grub or uefi as starting point
10:08:00 <glauxosdever> 2) applies then
10:08:25 <jmp9> Soo I can't write my bootloader because of new standarts?
10:08:35 <glauxosdever> I'd disagree about using GRUB though
10:08:45 <mrvn> No. Just writing a bootloader is wasted effort.
10:09:28 <jmp9> Uhm
10:09:31 <glauxosdever> mrvn: Not necessarily. Sometimes you need you bootloader to do stuff that GRUB doesn't (and not do stuff that GRUB does)
10:09:36 <mrvn> glauxosdever: you can use loadlin, extlinux or lilo too.
10:09:47 <geist> glauxosdever: yes bt when just getting started i doubt you will
10:09:49 <glauxosdever> mrvn: The same point applies
10:09:50 <mrvn> glauxosdever: not as newbie
10:10:01 <geist> point is as your very first task, writing a bootloader i'd generally not recommend
10:10:12 <geist> since it's largely a bunch of specialized knowledge that isn't very helpful outside of it
10:10:19 <jmp9> but when i finish it i'll be a hero :D
10:10:22 <geist> as a filter to see if you're actually in forr the long haul? probably
10:10:24 <glauxosdever> Use UEFI
10:10:37 <jmp9> I doesn't have UEFI on my laptop
10:10:40 <geist> the general retort is 'but i want to experience the whole thing'
10:10:40 <nyc> A bare metal hello world that relies on a bootloader is probably a good choice.
10:10:46 <geist> exactly
10:11:05 <jmp9> The point that's I want to boot it from USB and this shit must load and do something
10:11:18 <jmp9> I already fucked up with old video modes and soundblaster that my laptop doesn't have
10:11:28 <geist> i'd start with grub, it'll save you the trouble with that
10:11:45 <mrvn> jmp9: existing bootloaders can load your kernel from usb, floppy, harddisk, cdrom, pxe, ... You get something to show much more quickly if you use a bootloader.
10:11:45 <jmp9> GRUB loads some GDT and does stuff that i don't know
10:11:46 <geist> and there are well known paths for getting your kernel up and running by generating a multiboot image
10:11:57 <jmp9> Can GRUB load from USB?
10:12:00 <geist> yes, and then you immediately override that. you *always* immediately load your own GDT/IDT
10:12:04 <geist> absolutely
10:12:31 <jmp9> Is there any tutorial configuring GRUB. Also i'm on linux machine right now
10:12:46 <mrvn> jmp9: I would also suggest using bochs or qemu. You can load a kernel directly in qemu bypassing the bootloader stuff as well.
10:12:48 <glauxosdever> jmp9: For GRUB, please see https://wiki.osdev.org/Bare_Bones
10:13:03 <glauxosdever> And the Multiboot specification
10:13:13 <nyc> jmp9: You can also gdb things with qemu, which helps a lot.
10:13:34 <mrvn> Once if works in qemu you can create a USB stick with grub on it.
10:13:50 <geist> yah that works nicely
10:14:37 <jmp9> Oh I remember that my friend did something like this and i have sources of his os
10:14:58 <jmp9> And the last question
10:15:01 <jmp9> I'm using FAT16 fs
10:15:29 <mrvn> again, that's the bootladers problem. No need for you to worry about.
10:16:19 <geist> yah that's oe of the reasons grub is so big, it has pretty extensive fs support
10:22:48 <eryjus> adclcarriepgaw
10:22:53 <jmp9> How to make FAT16 GRUB bootable?
10:23:04 <eryjus> wrong keyboard
10:23:09 <eryjus> sorry!
10:55:22 <kingoffrance> jmp9: im the wrong guy for hardware/kernel stuff at the moment, but "worrying about wasting your time" i have one foot in one userland, one foot slowly going native. so, the theory is if i never get to an os, i will at least have a hosted userland elsewhere
10:55:52 <kingoffrance> so that never worried me, just write clean code
10:56:59 <geist> exactly. you will waste some time, but only if actually implementing a working system is your goalpost
10:57:32 <geist> you will make mistakes and have to rewrite stuff. evn if you're doing it for real and you have a lot of experience, propping things up with scaffolding and reimplementing is a common strategy
10:57:45 <geist> most of us can't just blast out a kernel and never rewrite anything
10:57:58 <geist> furthermore making mistakes teaches you a lot more than not
11:05:47 <nyc`> There's a bunch of stuff I'm going to have to learn along the way even if I never make any mistakes.
11:14:09 <MarcinWieczorek> Hello, I'm writing my own libc using musl headers. stdin/out/err is extern, where should it actually be created?
11:18:49 <ronsor> that depends on your libc
11:18:54 <ronsor> I don't suggest you use musl headers
11:19:09 <ronsor> they're designed for musl+linux
11:19:16 <ronsor> just write your own standard headers
11:19:39 <ronsor> the 'FILE' type is internally implemented in libc, and that's also where stdin, stdout, and stderr are
11:19:44 <ronsor> you implement it the way you want to
11:21:06 <geist> yah, with C you can declare an abstract struct FILE; in a public header and then actually have an internal private implementation header that puts actual bits in it
11:21:21 <geist> so in that sense, the private header doesn't matter what you call it, the user of the library doesn't have to see it
11:22:47 <ronsor> pretty much
11:22:48 <MarcinWieczorek> I can see. I know about the struct being hidden
11:23:21 <ronsor> typedef struct __FileImpl FILE;
11:24:31 <ronsor> somewhere internally in your libc: struct __FileImpl { .... };
11:28:18 <MarcinWieczorek> Also, I'm looking for some assembler I can easily port, any recommendations?
11:34:44 <klange> yasm
11:43:30 <ronsor> if you want the whole GNU toolchain, you could try and port GCC
11:43:34 <ronsor> which is significantly harder
11:44:24 <klange> gcc was fun
11:44:39 <klange> lots of little things here and there that you need for it
11:44:41 <ronsor> I've never tried to port GCC before
11:44:45 <klange> especially if you're doign your own libc
11:44:49 <ronsor> I did tinycc once
11:44:51 <ronsor> it was fun
11:44:55 <ronsor> I always love working with it
11:46:36 <jjuran> "one foot slowly going native" reminds me of District 9
11:53:41 <MarcinWieczorek> Yeah I tried to start with something easier than gcc
11:54:01 <MarcinWieczorek> I want it to become self-hosted fairly quick
11:56:05 <ronsor> ok
11:56:10 <ronsor> is your OS written in assembly?
11:56:14 <ronsor> or are you using C? C++?
11:56:49 <MarcinWieczorek> C
11:57:41 <ronsor> ok
11:57:51 <ronsor> I suggest you port tinycc if you want the easiest to port
11:58:03 <ronsor> it includes a GNU-compatible assemblr and C99 compliant c compiler