1 while this mod file is a linear model, I do not think that I need to put “steady; check;” in it. Is this right?
2 there are so many steady state parameters like lambda_ss and h_L_ss. Some of them can be calibrated using the observed data, such as y_ss, while some of them can not. However, they can be calculated indirectly using the steady state relationship between these parameters (which I have showed in “the steady state parameters” ). So in this way, the parameters like h_L_ss and lambda_ss are defined. Am I right?

No, if everything in your mod-file is correct, you don’t need steady; check.

For all parameters that are not estimated, Dynare uses the values before the model block. If these parameters cannot be computed by Dynare, the initial_estimation_checks will fail as they do in your case. All parameters can be implicitly calculated, but only by you and not by Dynare. You have to tell the program explicitly what the values are. That’s why they are called parameters. Even if you estimate them (which you don’t do) you have to provide valid initial values.

Unfortunately, I don’t understand your last point about “which I have showed in “the steady state parameters””. If you mean that the steady state ratios are functions of the deep parameters of your model which you want to estimate, you have to tell Dynare how to compute these ratios from the deep parameters. You can do this with the #-operator or a steady state file. See the discussion in [External function in dynare 4.2)