In order to model effects for categorical factors in a regression model, you have to contrast code your factors. The degrees of freedom for your categorical factor will always be k - 1, where k is the number of levels in the factor which is why you see only 1 coefficient for a 2-level categorical factor.
Dummy coding is the factory default in R and presumably what you are using here if you didn’t change anything and it compares group B, C, D etc to group A, where group A is the reference group to which all other levels of the factor are compared.
TL;DR: nothing is wrong here or missing, this is as to be expected. To read more about contrast coding, you can read here at this excellent resource: https://stats.oarc.ucla.edu/r/library/r-library-contrast-coding-systems-for-categorical-variables/
If you want to 'recover' the estimates for each group, there are a variety of options. I think this function from emmeans package should work:
emm1 = emmeans(fit1, specs = pairwise ~ OS)
You could also do the following function from ggeffects package:
ggpredict(fit1, c("OS"))
For more reading on marginal effects, this excellent digital textbook is available: https://marginaleffects.com/vignettes/predictions.html
equatiomatic
package should make this easy. $\endgroup$